- rpm -i -e -qi -ql -qf -qa --scripts。
- yum install remove info list repolist provides。
- 配置系统源。
- 搭建私有仓库服务器。
- 源码编译安装。
- ubuntu dpkg apt /etc/apt/sources.list。
rpm {-i|--install} [install-options] PACKAGE_FILE…
rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm
rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm
- 通常我们更倾向于使用 Yum 软件包管理器。这是因为 Yum 可以自动处理软件包之间的依赖关系,使得安装过程更加简单和可靠。在使用 Yum 安装软件时,系统会自动检测所需的依赖项并将其一并安装,减少了手动解决依赖的烦恼。
- 除非是那种 已经完整打包好的 rpm 软件包,如:WPS,OnlyOffice,drawio,它们通常包含了所需的所有依赖关系。这意味着我们可以直接使用 rpm 安装它们,而不必担心缺少的依赖问题。< 不过这些包往往无法自定义安装路径 >
- 此外,对于一些特定情况,如某些软件包没有官方的 rpm 软件包或您需要定制编译选项,您可以选择下载源代码并手动编译安装。尽管这可能需要更多的步骤,但它可以为您提供更大的灵活性和定制性。
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
- 不要对内核做升级操作;Linux 支持多内核版本并存,因此可以直接安装新版本内核。
- 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留。
rpm {-q|--query} [select-options] [query-options]
-ql PACKAGE 查询'已安装软件包产生的文件存放在哪些目录'
Source RPM 软件包是从源码构建而来, 这里会显示源 RPM 的名称。
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test]
注意:当包卸载时,对应的配置文件不会删除, 以 FILENAME.rpmsave 形式保留。
rpm -e rpm-4.11.3-45.el7.x86_64
rpm -ivh /run/install/repo/Packages/rpm-4.14.3-4.el8.x86_64.rpm --root=/mnt/sysimage
// 准备使用 rpm 命令安装回该软件 [ '但貌似无法成功安装' ]
rpm -ich /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm
rpm -ich /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm --force
rpm -K tree-1.6.0-10.el7.x86_64.rpm
echo xx >> tree-1.6.0-10.el7.x86_64.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
软件在安装时,会将包里的每个文件的元数据,如:大小,权限,所有者,时间等 记录至 rpm 相关的数据库中,可以用来检查包中的文件是否和当初安装时有所变化。
这种方法可以帮助系统管理员检测文件是否被篡改或损坏,以保持系统的安全性和稳定性。
[00:25:13 root@blog ~]# rpm -V tree
[00:32:51 root@blog ~]# rpm -ql tree
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
[00:32:56 root@blog ~]# echo 123 >> /usr/share/doc/tree-1.6.0/README
[00:33:26 root@blog ~]# rpm -V tree
S.5....T. d /usr/share/doc/tree-1.6.0/README
通常情况下,你不需要频繁运行这些命令,除非你遇到了 RPM 数据库的问题,比如软件包信息不同步、依赖关系出错等情况。
先在 yum 服务器上创建 yum repository(仓库),在仓库中事先存储了 众多 rpm 包,以及 包相关的元数据文件(放置于特定目录 repodata 下),
当 yum 客户端利用 yum 工具进行安装时包时,会自动下载 repodata 中的元数据,查询源数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
由于系统自动的 repo 配置文件指向的仓库在国外,下载速率可能会受到影响。
因此我们一般就是就近指向仓库,比如系统的本地光盘仓库,比如自己企业内部网下的仓库地址,比如互联网上的阿里仓库等等。
/etc/yum.conf // '一般默认即可', 不用管
name=Some name for this repository
baseurl=url://path/to/repository/
failovermethod={roundrobin|priority}
[ 这有助于防止恶意软件包的注入和损坏软件包的安装,从而增加了系统的安全性。 ]
vim /etc/yum.repos.d/CentOS-Base.repo
name=CentOS-$releasever - Base // '仓库名称' $releasever: 当前 OS 的发行版的主版本号, 如: 8, 7, 6 [ 如: CentOS7.9 `主版本就是 7` ]
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ // '仓库路径' $basearch: 系统基础平台; `i386, x86_64`
gpgcheck=1 // '启用 GPG 签名验证' `Yum 在从仓库下载软件包时会检查软件包的数字签名, 以确保软件包的完整性和来源的可信性。`
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 // '指定 GPG 密钥的位置' `得以验证下载的软件包的数字签名`
https://mirrors.aliyun.com/centos/7/os/x86_64/
https://mirrors.aliyun.com/centos/$releasever/os/$basearch
https://mirrors.cloud.tencent.com/
https://mirrors.cloud.tencent.com/centos/7/os/x86_64/
https://mirrors.cloud.tencent.com/centos/$releasever/os/$basearch
找到多层级目录下的 repodata。才算真正的找到了软件仓库哟!
https://repo.huaweicloud.com/centos/
https://repo.huaweicloud.com/centos/7/os/x86_64/
https://repo.huaweicloud.com/centos/$releasever/os/$basearch
https://mirrors.tuna.tsinghua.edu.cn
https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch
注意:yum 仓库指向的路径一定必须是 repodata 目录所在目录
$releasever: 当前OS的发行版的主版本号, 如: 8, 7, 6
$arch: CPU架构, 如: aarch64, i586, i686, x86_64 等
$basearch: 系统基础平台; i386, x86_64
$contentdir: 表示目录, 比如: centos-8, centos-7
[ 我们可以在一个 repo 编写多个仓库地址,也可以每个 repo 编写单独的仓库地址 ]
cd /etc/yum.repos.d && mkdir bak && mv ./*.repo bak/
https://mirrors.cloud.tencent.com/centos/$releasever/os/$basearch
https://repo.huaweicloud.com/centos/$releasever/os/$basearch
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch
https://mirrors.cloud.tencent.com/centos/$releasever/extras/$basearch
https://repo.huaweicloud.com/centos/$releasever/extras/$basearch
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch
https://mirrors.cloud.tencent.com/epel/$releasever/$basearch
https://repo.huaweicloud.com/epel/$releasever/$basearch
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch
[ 我们可以在一个 repo 编写多个仓库地址,也可以每个 repo 编写单独的仓库地址 ]
systemctl enable --now autofs.service && mount /dev/sr0 /misc/cd
https://mirrors.cloud.tencent.com/centos/$releasever/os/$basearch
https://repo.huaweicloud.com/centos/$releasever/os/$basearch
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch
baseurl=https://mirrors.cloud.tencent.com/centos/$releasever/extras/$basearch
https://repo.huaweicloud.com/centos/$releasever/extras/$basearch
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch
baseurl=https://mirrors.cloud.tencent.com/epel/$releasever/$basearch
https://repo.huaweicloud.com/epel/$releasever/$basearch
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPG-KEY-EPEL-7
mv /etc/yum.repos.d/*.* /etc/yum.repos.d/backup
cat > /etc/yum.repos.d/yum.repo <<EOF
https://mirrors.cloud.tencent.com/centos/\$releasever/os/\$basearch
https://repo.huaweicloud.com/centos/\$releasever/os/\$basearch
https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/os/\$basearch
baseurl=https://mirrors.cloud.tencent.com/centos/\$releasever/extras/\$basearch
https://repo.huaweicloud.com/centos/\$releasever/extras/\$basearch
https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/extras/\$basearch
baseurl=https://mirrors.cloud.tencent.com/epel/\$releasever/\$basearch
https://repo.huaweicloud.com/epel/\$releasever/\$basearch
https://mirrors.tuna.tsinghua.edu.cn/epel/\$releasever/\$basearch
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPG-KEY-EPEL-7
yum install epel-release.noarch -y
[ 目录下,已自动生成 epel.repo 仓库配置信息 ]
[ 如上,epel 源 baseurl 指向国外,不建议使用。]
yum remove epel-release.noarch -y
rpm -ql cowsay | grep bin // 过滤出命令文件