Loading

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 个编译任务。

posted @ 2025-02-19 21:00  xbule  阅读(20)  评论(0)    收藏  举报