day12 软件包管理
软件包定义
以redhat系为例:
rpm包(Red Package Manager)
源码包(手动编译运行)
二进制文件(根据平台编辑)
本地安装软件包
mount 挂载光盘
mount /dev/sr0 /opt/
将光驱分区/dev/sr0 挂载到 /opt/
挂载ios文件
mount -o loop /xxx.iso /opt/
rpm
rpm -ivh xxx.rpm
安装xxx软件包(i 安装 v显示详细信息 h显示进度条)
rpm -qa 查看已经安装的软件包 q查询 a所有
rpm -q xxx 查询xxx软件包
rpm -qi xxx 查询xxx软件包详细信息
rpm -ql xxx 查询xxx软件包的安装位置
rpm -qc xxx 查询xxx软件包配置文件的位置
rpm -qd xxx 查询xxx软件包说明文档
rpm -qf xxx 反查xxx文件的所属软件包
rpm -Uvh xxx 升级xxx软件包
rpm -e xxx 卸载xxx软件包 (--nodeps忽略依赖性)
rpm安装软件包,安装所需的依赖包无法自动安装
yum
which yum
执行文件在 /usr/bin/yum
centos9以后是dnf-3命令
yum配置文件 /etc/yum.conf
keepcache=1
可以通过拷贝缓存的rpm包,来制作成一个本地yum源,以达到软件包版本一致的效果
yum的repos包
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim local.repo # 文件名自定义,必须以.repo结尾
[local] # 仓库的实际名字,任意
name=local # 仓库的描述,任意
baseurl=file:///opt # 仓库位置,可以是 http:// https:// ftp:// file://
enabled=1 # 启用仓库,默认就是启用的
gpgcheck=0 # 检查安装的rpm是否是合法的,0表示不检验
opt目录下需要有一个repodata文件记录软件包在Package内的关系
yum的网络源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
EPEL扩展源
可以直接下载
[root@egon ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
也可以安装一个软件包来生成
[root@egon ~]# yum install epel-release -y
EPEL的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。
RHEL以及他的衍生发行版如CentOS、Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题。
yum命令
常用选项说明:
仓库
yum repolist # 查询可用仓库
yum repolist all #查看包括已启用或禁用的所有仓库状态
(centos7.9)关闭与启用仓库:本质:都是在修改repo文件中的enable的值 0 不启用 1 启用
查看
yum list #列出可用仓库中所有的软件包
yum list | less
yum grouplist #列出可用仓库中的软件组
yum provides /usr/sbin/ifconfig #查询命令所属的软件包,可以不加路径,只写命令名字
与rpm -qf的区别在于yum provides后可以只跟命名名
安装
yum install httpd httpd-tools #加上-y选项可以变成非交互
yum group install "开发工具" -y #安装软件组,一个软件组中包含了多个软件包
yum groups install "开发工具" -y #同上
卸载
yum remove httpd httpd-tools http* #卸载软件包
yum group remove "开发工具" -y. #卸载软件组
yum groups remove "开发工具" -y #同上
重装
yum reinstall httpd #不小心删除了配置文件的时,可以reinstall一下
更新
yum check-update #检查可以更新的软件包
yum update -y #更新所有软件包,包括内核,通常只在刚装完系统时执行
yum update httpd -y #更新某个软件包
在 CentOS 7 中,yum update 和 yum upgrade
1、相同点:都会更新所有包(包括软件与内核)
2、不同点
yum update更新的时候会保留过时的包,这对依赖老包的应用很友好
yum upgrade更新的时候会删除过时的包,如果你系统中所有的应用全都为rpm包,那upgrade倒是不会对你有影响,因为都会一起跟着更新。但是如果你安装的包里有自己编译安装的,而编译安装的包会依赖某个特定版本的rpm包那upgrade升级之后,很有可能会造成你编译安装包的不可用
综上,如果是刚装系统,那就用upgrade,否则还是用update靠谱些
在rockylinux中,yum命令都链接到了dnf-3上
而在 DNF 中,,在dnf-3中,dnf update 与 dnf upgrade 是没有区别的。
具体而言,两者都是用于更新系统上已经安装的软件包到最新可用版本
缓存
yum makecache #制作元数据缓存,并不会下载包
yum clean all #清理缓存,你如果在yum.conf配置的keepcache,之前缓存的包都会清空
vim /etc/yum.conf #默认软件包下载安装后会自动删除
设置keepcache=1 即开启了软件包缓存
缓存目录为配置文件中指定的cachedir
历史记录
yum history # 查看执行过的yum命令历史记录
yum history info ID号 # 查看具体某一条yum命令的详细信息
yum history undo ID号 # 撤销执行过的历史命令
关于安装需要注意:
无论yum安装的软件来自何方,yum时刻以自己仓库中的repodata存储的依赖关系为准,如果有多个仓库,就依次检索
1、yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系
yum install https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/samba-4.10.16-5.el7.x86_64.rpm
2、Yum直接安装本地的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
rpm下载
yum install --downloadonly --downloaddir=/my_rpms/ httpd -y
编译安装
wget下载源码(以Nginx为例)
定制安装信息
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module
预先安装gcc
yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
或者
LANG=C yum -y groupinstall "Development tools"
编译
make && make install
make -j 4
如果只使用 -j 而不指定具体的任务数量,make 会尽可能多地并行执行任务,通常会根据系统的 CPU 核心数量来决定并行任务的数量。例如,在一个具有 8 核 CPU 的系统上,make -j 可能会同时启动 8 个编译任务。

浙公网安备 33010602011771号