23 Linux软件管理

178次阅读
没有评论

共计 6630 个字符,预计需要花费 17 分钟才能阅读完成。

sza 一.RPM 基本介绍

1. 什么是 rpm 包

  • RPM 全称 RPM Package Manager 的缩写 ( 软件包管理器), 由红帽开发
  • 在主流的 Linux 系统上, 多数软件的 安装, 升级, 移除及维护 工作都是有 RPM 软件包管理程序来完成的

2.rpm 包格式

23 Linux 软件管理

3. 软件包分类

分类 安装 特点
二进制包 编译好的, 解压即可使用, 直接可执行 不能修改源代码
rpm 包 预编译的软件包, 安装程序 通常是稳定版本的软件被做成 RPM, 版本较低
源码包 需要手动编译打包, 安装比较繁琐 软件版本丰富, 可选择性强

4. 查看操作系统版本

🌵通常使用的平台
#(redhat, centos, suse, Fedora...)

🌵查看操作系统版本
# cat /etc/redhat-release

🌵查看内核版本
# uname -r
# uname -a

5. 管理 rpm 包的两种方式

  • rpm命令
🌵需要自己找到 "rpm" 包
🌵并且手动解决依赖性关系
  • yum命令
🌵"rpm" 包都放置在一个库里面
🌵库里面包含了所有的依赖关系

5.rpm 包的来源

  • 网络
🌵通过 "wget" 或者 "curl" 下载
# wget -O httts://xxxxxxxxxx.x86_64.rpm
# curl -o httts://xxxxxxxxxx.x86_64.rpm
  • 镜像文件
🌵挂载本地的 "ISO" 镜像文件(三种方式)
1.# mount /dev/sr0 /opt
2.# mount /dev/cdrom /mnt
3. 从别人的光盘或者 U 盘上拷一个现成的文件, 再或者在自己机器上插一块系统盘, 将其内容做成一个镜像文件
    # dd if=/dev/sr0 of=/root/iso/centos7.iso
    # mount -o loop /root/iso/contos7.iso /opt (用一个光盘文件虚拟成设备来挂载)

🌵取消挂载
# umount [挂载点 / 源]
# umount -l [挂载点 / 源]

二.RPM 命令使用

1. 安装 rpm 包

  • 常用选项
-i 安装 rpm 包
-v 显示安装详细信息
-h 显示安装进度
--force 强制重新安装
--nodeps 忽略依赖关系
  • 命令示例
🌵安装一个软件, 需要指定软件包的路径
[root@shawn etc]# rpm -ivh /opt/Packages/zip-3.0-11.el7.x86_64.rpm 

🌵如果软件包存在,"--force" 会强制再次安装(会显示升级)(不推荐, 可能会造成不兼容)
[root@shawn etc]# rpm -ivh --force /opt/Packages/zip-3.0-11.el7.x86_64.rpm

🌵安装一个软件包往往需要依赖包,"--nodeps" 可以忽略依赖包(不推荐, 会造成命令无法运行)
[root@shawn etc]# rpm -ivh --nodeps /opt/Packages/zsh-5.0.2-28.el7.x86_64.rpm

2. 卸载 rpm 包

  • 卸载注意事项
卸载软件包时会有许多的依赖包需要卸载, 如果依赖包是系统所必须的就不推荐卸载, 会造成系统崩溃
当然也可以忽略依赖包, "--nodeps" 选项就可以, 但不推荐
  • 命令
# rpm -e [软件包名]
[root@shawn etc]# rpm -e zip

3. 升级 rpm 包

  • 选项描述
"-U" : 如果老版本不存在直接全新安装, 老版本存在就用新版本替代
  • 命令示例
🌵先到网上下载一个软件包的两个版本,(new and old)
# wget  https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
# wget  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm

🌵先安装低版本
[root@shawn etc]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm

🌵再安装高版本会报错无法成功!
[root@shawn etc]# rpm -ivh zabbix-agent-4.2.9-1.el7.x86_64.rpm

🌵使用选项 "--force" 强制进行安装, 会出现两个版本, 不可取
[root@shawn etc]# rpm -ivh --force zabbix-agent-4.2.9-1.el7.x86_64.rpm

🌵通过 "-U" 选项, 自动把低版本的软件包卸载, 再安装新版本
[root@shawn etc]# rpm -Uvh zabbix-agent-4.2.9-1.el7.x86_64.rpm

4. 查询 rpm 包

  • 常用选项
-q 查看指定软件包是否安装
-qa 查看系统中已安装的 rpm 软件包列表
-qi 查看指定软件的详细信息
-ql 查看指定软件包安装产生的目录, 文件列表
-qc 查询指定软件包的配置文件
-qf 查看文件或目录属于哪个 rpm 软件
  • "-p" 表示查看一些未安装的软件包信息, 与以上选项连用, 示例:
-qip 查询未安装的 rpm 软件包的详细信息
-qlp 查询未安装的软件包安装后会产生哪些文件
  • 命令示例
🌵查看 "zlib" 是否安装
[root@shawn ~]# rpm -q zlib

🌵通过 "grep" 过滤出已经安装的软件包中的某几个
[root@shawn ~]# rpm -qa | grep "htt*"

🌵查看一个已安装 "zlib 的软件的详细信息
[root@shawn ~]# rpm -qi zlib

🌵查看一个已安装软件 "zlib" 的产生的文件及目录
[root@shawn ~]# rpm -ql zlib

🌵查看已安装软件 "httpd" 的配置信息
[root@shawn ~]# rpm -qc httpd

🌵查看一个文件或目录属于那一个软件包
[root@shawn ~]# rpm -qf /usr/bin/vim
[root@shawn ~]# rpm -qf /etc/httpd/conf.d/welcome.conf

🌵查看一个未安装的软件会产生的目录和文件
[root@shawn etc]# rpm -qlp /opt/Packages/zip-3.0-11.el7.x86_64.rpm 

🌵查看一个未安装软件的相关信息
[root@shawn etc]# rpm -qip /opt/Packages/zip-3.0-11.el7.x86_64.rpm 

三.YUM 基本介绍

1. 什么是 yum

YUM (全称为 Yellow dog Updater, Modified) 
是一个在 Fedora 和 RedHat 以及 Centos 中的 Shell 前端软件包管理器
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装
可以 " 自动处理依赖性关系 ",并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

2. 什么是 yum 源

  • yum 源就是一个软件仓库, 存放了所有软件包的一个文件夹
  • yum 源必须具备的两个条件
1. 文件下涵盖所有的软件包
2. 该文件夹下必须要有一个记录了本文件夹下所包含软件的依赖关系的文件

3.yum 源种类

  • 网络源

1."base" 基础源
2."epel" 扩展源
3. 某一个软件包它官网提供的源
  • 本地源

将一个文件夹做成 yum 源(两种方式)

🌵方式一:1. 采集一系列的软件包放入一个本地目录
        2. 使用命令 "createrepo [目录路径]" 制作软件包的依赖关系

🌵方式二: 挂载已经有的镜像或者光盘:
        1.# mount /dev/sr0 /opt
        2.# mount /dev/cdrom /mnt
        3.# mount -o loop xxx.iso /opt   (将一个镜像文件直接 u, 与 "cp" 类似)

四.YUM 常用命令

1. 查看 yum 源(软件仓库)

yum repolist         #查询可用 yum 源(软件仓库)
yum repolist all     #查看所有仓库及状态(包括禁用和启用的)

🌵使用命令关闭某个仓库(也可以直接修改 ".repo" 结尾文件里的 "enable" 值,"0" 不启用,"1" 启用)
yum-config-manager --disable epel       #关闭仓库 epel
yum-config-manager --enable epel        #启用仓库 epel

2. 查看软件包

yum list               #查看可用仓库中所有的软件包(可以使用管道查看一些你想要的软件)
yum grouplist          #查看可用仓库中的所有软件组
yum provides ifconfig  #查看命令所属的软件包(可以使用绝对路径)(与 "rpm -qf" 类似, 但 rpm 必须使用绝对路径)

3. 安装软件包

yum install httpd zip -y          #可以同时安装多个软件包,"-y" 是非交互式
yum install http* -y              #安装所有以 "http" 开头的软件包

yum groupinstall " 开发工具 " -y     #安装软件组, 一个软件组里包含了多个软件
yum groups install " 开发工具 " -y   #与上面效果一样

4. 卸载软件包

yum remove http* -y               #卸载以 "http" 开头的软件

yum groupremove " 开发工具 " -y    #卸载这个软件组
yum groups remove " 开发工具 " -y  #同上

5. 重装

yum reinstall http* -y           #不小心删掉了配置文件是可以使用

6. 更新

yum check-update            #查看可以更新的软件包
yum updtae -y               #更新所有软件包, 包括内核(一般用于刚安装完后, 以后更新会造成不稳定)
yum update http* -y         #更新指定的软件包

7. 源数据缓存(yum 拓展知识)

🌵yum 元数据缓存:
        1. 指的将 yum 仓库的元数据缓存下来,下次安装时省去了检索过程,安装速度可以加快
         2.yum makecache             #制作软件元数据缓存(就是一个检索表, 加快检索速度)
        3.yum clean all             #清除软件元数据缓存
🌵yum 软件包缓存:
        1. 开启软件包缓存, 从网络源下载安装完的安装包不在删除, 而是缓存到本地
         2. 缓存软件包配置文件 "/etc/yum.conf"
         3. 默认软件包安装过后会自动删除, 在配置文件中设置 "keepcache=1" 则会自动缓存软件包
         4. 缓存的目录在配置文件中 "cachedir" 进行指定

8.yum 命令历史记录

yum history               #查看执行过的 yum 历史命令
yum history info [ID 号]   #查看指定一条 yum 命令的详细信息
yum history undo [ID 号]   #撤销执行过的命令

五. 源码包编译安装

1. 什么是源码包

  • 源码包指的是开发编写好的程序源代码, 但并没有将其编译为一个能正常使用的工具

2. 为什么要使用源码包

  • 版本丰富, 可选择性强
  • 部分软件官网只提供源码包, 需要自行编译并安装

3. 源码包优 / 缺点

  • 优: 可以自行修改源代码, 定制自己需要的相关功能(并且新版本优先更新的就是源码包)
  • 缺: 相对 rpm 和 yum 安装比较复杂, 标准化实施比较困难

4. 编译安装过程

  • 下载源代码安装包文件(一般是 .tar.gz 文件)
  • 预先安装好编译安装依赖的库
  • 使用 tar 进行解包
  • 使用 --prefix 进行指定安装目录, 模块, 生成 makefile
  • 使用 make && make install 进行编译安装
  • 安装完成后可以设置一个软连接, 然后测试一下

5. 源码编译安装示例

  • 下载好源码包
1. 可以通过浏览器下载传到虚拟机
2. 也可以直接使用 "wget" 命令
# wget http://nginx.org/download/nginx-1.18.0.tar.gz
  • 准备基础环境(依赖库)
# yum groupinstall " 开发工具 " -y
# yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
# yum install gcc gcc-c++ autoconf automake make
  • 把下载好的源码包解压到一个文件夹下
# tar -xvf nginx-1.18.0.tar.gz -C /tmp
  • 进入该文件夹下的 nginx-1.18.0 目录
# cd /tmp/nginx-1.18.0
🌵使用 "--prefix" 指定安装目录, 并生成 "maskfile"
# ./configure --prefix=/usr/local/nginx-1.18.0
  • "makefile" 文件编译成可执行的二进制的文件, 并安装到对应目录
# make
# make install
🌵以上可以合成一步来操作
# make && make install
  • 将程序设定一个软连接, 方便后期进行升级
# ln -s /usr/local/nginx-1.18.0/* /soft/nginx
🌵启动 "nginx" 服务
# /soft/nginx/sbin/nginx  
  • 总结问题
1."./configure --prefix=xx 路径 "
    --prefix=/Path : 指定安装路径
    --enable-ssl, --disable-filter, --with-http_ssl_module : 启用或禁用某项功能
    --with-pcre=/root/pcre-8.31 : 和其他软件关联
2. 如果在编译安装这个环节出现错误, 一般是因为所需要的支持库缺失
    先使用 "make clean" 命令清理以前编译产生的 " 垃圾 "(*.o 目标文件)
    在安装好所需要的依赖库, 安装好后再从新操作一遍, 从解压后面开始

六. 制作本地 yum 源

1.yum 源配文件路径

# /etc/yum.repos.d/   

2. 先下载好制作依赖关系文件 "repodata" 的工具 "createrepo"

# yum createrepo -y

3. 将收集好的一堆 rpm 软件包放置在一个文件夹下 "/root/cccc"

4. 使用 "createrepo" 命令制作一个 "repodata"

# createrepo /root/cccc
🌵制作好的文件也会放在 "/root/cccc" 里面

3. 进入 yun 源配置文件路径将原先存在的系统默认的源备份一下

4. 创建一个仓库文件并写入信息就完成了

# cd /etc/yum.repos.d/
# mkdir /bak
# mv *.repo bak/
# vim local.repo                 (文件名自定义, 但必须以 "repo 结尾 ")
[local]                          #仓库名
name="This is a local repo"      #描述信息
baseurl=file:///root/cccc        #依赖关系指定路径, 也可以是网络源(http://, ftp:// 共享文件)
enabled=1       #设置开机启动
gpgcheck=0      #检查安装的 rpm 是否合法,"0" 表示不检测

七. 制作共享源

将自己的 yum 源共享给别人

1. 服务端配置

  • 准备好环境
# systemctl stop firewalld        (关闭防火墙)
# systemctl disable firewalld     (开机不启动)
# vim /etc/selinux/config         (关闭 selinux, 设置完重启)
修改 "SELINUX=disabled" 设置开机不启动
  • 安装 ftp 服务
# yum install vsftpd -y     (安装)
# systemctl start vsftpd    (开启)
# systemctl enable vsftpd   (开机启动)
# systemctl status vsftpd   (查看状态)
  • 制作 yum 源
🌵可以使用网络源以及本地源, 这里不做赘述
🌵为了方便, 我使用本地镜像里的 yum 源, 创建好文件将其挂载
# mkdir /var/ftp/centos7
# mount /dev/sr0 /var/ftp/centos7

23 Linux 软件管理

2. 客户端配置

  • 准备环境
# systemctl stop firewalld        (关闭防火墙)
# systemctl disable firewalld     (开机不启动)
# vim /etc/selinux/config         (关闭 selinux, 设置完重启)
修改 "SELINUX=disabled" 设置开机不启动
🌵重启后 "ping" 一下服务端的 IP 地址
# ping 192.168.12.178             (保证能通信)
  • 配置 yum 源
🌵先将本地的 yum 源备份一下放到 "bak" 文件夹
# cd /etc/yum.repos.d/     (先进入到 yum 源目录下)
# mkdir ./bak              (创建一个系统 yum 源备份文件夹)
# mv ./*.repo ./bak        (将所有系统 yum 源移入 bak)

🌵制作配置文件
# vim ftp.repo                        (必须以 "repo" 结尾)        
[ftp_repo]                            #源名
name="This is a ftp_repo"             #描述信息
baseurl=ftp://192.168.12.178/centos7  #指定服务端地址及共享目录
enable=1                              #设置开机启动
gpgcheck=0                            #不检查签名
  • 测试

23 Linux 软件管理

正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计6630字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)