四川建设工程网站,网站内置多语言,唐山百度快速排名提升,苏州网站建设学费本章主要介绍使用rpm对软件包进行管理
使用rpm查询软件的信息使用rpm安装及卸载软件使用rpm对软件进行更新使用rpm对软件进行验证 rpm 全称是redhat package manager#xff0c;后来改成rpm package manager#xff0c;这是根据源码包编译出来的包。先从光盘中拷贝一个包后来改成rpm package manager这是根据源码包编译出来的包。先从光盘中拷贝一个包并看它是如何命名的。‘ 先挂载光盘然后拷贝 vsftpd这个包命令如下。 [rootnode01 ~]# mount /dev/cdrom /mnt/ //挂载光盘
mount: /mnt: WARNING: device write-protected, mounted read-only.
[rootnode01 ~]# cp /mnt/AppStream/Packages/vsftpd-3.0.3-34.el8.x86_64.rpm . //拷贝软件包到当前目录
[rootnode01 ~]# ls vsftpd-3.0.3-34.el8.x86_64.rpm //查看软件包
vsftpd-3.0.3-34.el8.x86_64.rpm
[rootnode01 ~]# 这里字段的含义如下: vsftpd包的名称3.0.3版本及version 34.el8小版本号即release其中el8 指的是此包适用于RHEL8系统 x86_64指的是架构到底是32位还是64位的包x86_64表示是64位的。 rpm的安装命令是“rpm -ivh 安装包”。安装rpm命令如下。 [rootnode01 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm
警告vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8 ################################# [100%]
[rootnode01 ~]# 这样就把vsftpd-3.0.3-34.el8.x86_64.rpm 安装好了。如果是第一次接触 Linux 会感觉到奇怪怎么不像 Windows一样让我们通过浏览来指定路径那么这个包安装到哪里了呢? 相信大家在Windows中都安装过 Chrome浏览器基本上是秒安装也没有指定路径,因为这个安装包中已经定义好安装路径了。同理rpm 安装时也已经指定了安装路径把这个rpm打开先拷贝到/opt目录中,命令如下 [rootnode01 ~]# cp vsftpd-3.0.3-34.el8.x86_64.rpm /opt/
[rootnode01 ~]# cd /opt/
[rootnode01 opt]# ls
vsftpd-3.0.3-34.el8.x86_64.rpm
[rootnode01 opt]# 解压此包命令如下。 [rootnode01 opt]# rpm2cpio vsftpd-3.0.3-34.el8.x86_64.rpm | cpio -id
714 块
[rootnode01 opt]# ls
etc usr var vsftpd-3.0.3-34.el8.x86_64.rpm
[rootnode01 opt]# 可以看到生成了3个目录etc、usr、var看一下它们的结构如下所示。 [rootnode01 opt]# tree
.
├── etc
│ ├── logrotate.d
│ │ └── vsftpd
│ ├── pam.d
│ │ └── vsftpd
│ └── vsftpd
│ ├── ftpusers
│ ├── user_list
│ ├── vsftpd.conf
│ └── vsftpd_conf_migrate.sh
├── usr
│ ├── lib
│ │ └── systemd
│ │ ├── system
│ │ │ ├── vsftpd.service
│ │ │ ├── vsftpd.service
│ │ │ └── vsftpd.target
│ │ └── system-generators
│ │ └── vsftpd-generator
│ ├── sbin
│ │ └── vsftpd
│ └── share
│ ├── doc
│ │ └── vsftpd
│ │ ├── AUDIT
│ │ ├── BENCHMARKS
│ │ ├── BUGS
│ │ ├── Changelog
│ │ ├── COPYING
│ │ ├── EXAMPLE
│ │ │ ├── INTERNET_SITE
│ │ │ │ ├── README
│ │ │ │ ├── vsftpd.conf
│ │ │ │ └── vsftpd.xinetd
│ │ │ ├── INTERNET_SITE_NOINETD
│ │ │ │ ├── README
│ │ │ │ └── vsftpd.conf
│ │ │ ├── PER_IP_CONFIG
│ │ │ │ ├── hosts.allow
│ │ │ │ └── README
│ │ │ ├── README
│ │ │ ├── VIRTUAL_HOSTS
│ │ │ │ └── README
│ │ │ ├── VIRTUAL_USERS
│ │ │ │ ├── logins.txt
│ │ │ │ ├── README
│ │ │ │ ├── vsftpd.conf
│ │ │ │ └── vsftpd.pam
│ │ │ └── VIRTUAL_USERS_2
│ │ │ └── README
│ │ ├── FAQ
│ │ ├── INSTALL
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── README.security
│ │ ├── REWARD
│ │ ├── SECURITY
│ │ │ ├── DESIGN
│ │ │ ├── IMPLEMENTATION
│ │ │ ├── OVERVIEW
│ │ │ └── TRUST
│ │ ├── SIZE
│ │ ├── SPEED
│ │ ├── TODO
│ │ ├── TUNING
│ │ └── vsftpd.xinetd
│ └── man
│ ├── man5
│ │ └── vsftpd.conf.5.gz
│ └── man8
│ └── vsftpd.8.gz
├── var
│ └── ftp
│ └── pub
└── vsftpd-3.0.3-34.el8.x86_64.rpm27 directories, 48 files
[rootnode01 opt]# 可以看到当我们安装rpm包时它就会把包中的内容按照这个结构拷贝到系统所以安装的路径都是安排好了的。 1.rpm查询
1如果要查询已经安装过的软件包的信息, rpm的第一个选项需要使用-q表示查询的意思。查询系统安装的所有软件包用 rpm-qa命令命令如下。 [rootnode01 ~]# rpm -qa2查询系统是否安装了某个软件包用“rpm -qa 包名”命令。例如要查询是否安装了vsftpd,命令如下。 [rootnode01 ~]# rpm -qa vsftpd
vsftpd-3.0.3-34.el8.x86_64
[rootnode01 ~]# 3但是这种用法在写包名时多一个或少一个字符都查询不出来如下所示。 [rootnode01 ~]# rpm -qa vsftp
[rootnode01 ~]# 4所以,更建议用管道和grep进行过滤如下所示。 [rootnode01 ~]# rpm -qa | grep vsft
vsftpd-3.0.3-34.el8.x86_64
[rootnode01 ~]# 5查询安装某软件包之后所生成的文件用“rpm -ql 包名”命令这里q后面是字母l。例如,要查询vsftpd所生成的文件命令如下这样就可以看到 vsftpd安装到哪里了。 [rootnode01 ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd6查看软件包生成的配置文件用“rpm -qc包名”命令命令如下。 [rootnode01 ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[rootnode01 ~]# 7查看包的信息用“rpm-qi包名”命令命令如下。 [rootnode01 ~]# rpm -qi vsftpd
Name : vsftpd
Version : 3.0.3
Release : 34.el8
Architecture: x86_64
Install Date: 2023年12月11日 星期一 10时18分30秒
Group : System Environment/Daemons
Size : 355692
License : GPLv2 with exceptions
Signature : RSA/SHA256, 2021年04月21日 星期三 20时42分12秒, Key ID 199e2f91fd431d51
Source RPM : vsftpd-3.0.3-34.el8.src.rpm
Build Date : 2021年04月20日 星期二 22时28分24秒
Build Host : x86-vm-15.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager : Red Hat, Inc. http://bugzilla.redhat.com/bugzilla
Vendor : Red Hat, Inc.
URL : https://security.appspot.com/vsftpd.html
Summary : Very Secure Ftp Daemon
Description :
vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.
[rootnode01 ~]# 8当我们安装软件包时会产生许多文件反过来想查询某个文件是由哪个软件包安装出来的用rpm -qf /path/file命令命令如下。 [rootnode01 ~]# rpm -qf /etc/vsftpd/vsftpd.conf
vsftpd-3.0.3-34.el8.x86_64
[rootnode01 ~]# 可以看到/etc/vsfipd/vsfipd.conf是由 vsftpd这个包产生的。 9可以看到,/etc/passwd是由setup这个包生成的。 [rootnode01 ~]# rpm -qf /etc/passwd
setup-2.12.2-6.el8.noarch
[rootnode01 ~]# 10以上这些都是针对已经安装了的软件包进行查询如果要查询安装包则需要加上p选项命令如下。 [rootnode01 ~]# rpm -qcp vsftpd-3.0.3-34.el8.x86_64.rpm
警告vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[rootnode01 ~]# 注意在RHEL8/CentOS8中不加p选项也可以之前的系统是不行的。 2.rpm安装及卸载 前面已经介绍了用“rpm -ivh 安装包”命令安装软件且 vsftpd已经安装完成,如下所示。 1卸载软件包的命令是“rpm -e 软件包”现在要把vsftpd卸载掉命令如下。 [rootnode01 ~]# rpm -e vsftpd
[rootnode01 ~]# rpm -qa | grep vsftpd
[rootnode01 ~]# 2可以看到现在vsftpd已经不存在了再次把这个包安装上去。 [rootnode01 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm
警告vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8 ################################# [100%]
[rootnode01 ~]# 3有时需要强制安装软件例如某个包已经安装过了现在想重新安装命令如下。 [rootnode01 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm
警告vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]软件包 vsftpd-3.0.3-34.el8.x86_64 已经安装
[rootnode01 ~]# 这里提示包已经安装过了无法再次安装。此时加上--force选项强制安装即可。 4般情况下用于某个文件丢失了想通过强制重新安装来找回此文件命令如下。 [rootnode01 ~]# rm -rf /etc/vsftpd/vsftpd.conf
[rootnode01 ~]# ls /etc/vsftpd/
ftpusers user_list vsftpd_conf_migrate.sh
[rootnode01 ~]# 5这里把/etc/vsftpd/vsftpd.conf删除然后开始强制安装命令如下。 [rootnode01 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm --force
警告vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8 ################################# [100%]
[rootnode01 ~]# 6然后再次查看文件。 [rootnode01 ~]# ls /etc/vsftpd/
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[rootnode01 ~]# 这里又重新生成了被删除的文件其他文件原来即使做了修改也不会被覆盖替换。 3.软件包的更新 所谓更新就是卸载旧版本的软件包然后安装新版本的软件包。假设原来系统已经安装了1.0版本的软件包现在要安装2.0版本的软件包如果两个版本的包安装路径不一样则可以共存如果两个版本的包安装路径一样则会产生冲突。 1先卸载已经安装了的vsftpd命令如下。 [rootnode01 ~]# rpm -e vsftpd
[rootnode01 ~]# 2然后从RHEL8.0的系统上烤贝一个版本稍低的 vsftpd的安装包命令如下。 [rootnode01 ~]# ls | grep vsft
vsftpd-3.0.3-28.el8.x86_64.rpm
vsftpd-3.0.3-34.el8.x86_64.rpm
[rootnode01 ~]# 上面ls后面的选项是数字1不是字母l这里一个版本稍低一个版本稍高。 3先把低版本的包安装上去,命令如下。 [rootnode01 ~]# rpm -ivh vsftpd-3.0.3-28.el8.x86_64.rpm
警告vsftpd-3.0.3-28.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-28.el8 ################################# [100%]
[rootnode01 ~]# 4这里已经安装了一个3.0.3-28的包然后安装一个更高版本的3.0.3-34包命令如下。 [rootnode01 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm
警告vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]file /etc/vsftpd/vsftpd.conf from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/lib/systemd/system/vsftpd.service from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/lib/systemd/system/vsftpd.target from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/lib/systemd/system/vsftpd.service from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/sbin/vsftpd from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/share/man/man5/vsftpd.conf.5.gz from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64
[rootnode01 ~]# 5因为安装路径一样所以这里提醒产生了冲突导致没有安装成功。如果用更新的方法来安装是可以的更新的用法是“rpm -Uvh安装包”。下面更新vsftpd,命令如下。 [rootnode01 ~]# rpm -Uvh vsftpd-3.0.3-34.el8.x86_64.rpm
警告vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8 ################################# [ 50%]
正在清理/删除...2:vsftpd-3.0.3-28.el8 ################################# [100%]
[rootnode01 ~]# 6可以看到,现在已经更新成功。查看命令如下。 [rootnode01 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.3-34.el8.x86_64
[rootnode01 ~]# 可以看到,这里安装的是3.0.3-34版本的包。 对于内核来说不同版本的安装路径是不一样的所以可以同时安装多个版本的不会产生冲突。因此更新内核时建议使用rpm -ivh命令而不是rpm -Uvh命令。因为rpm -Uvh命令会卸载旧版本的内核,如果新版本的内核有问题就无法正常进入系统了。如果使用rpm -ivh 命令包括旧版本的内核同时存在先用新版本的内核引导系统如果没问题再卸载旧版本的内核也不迟如果有问题还可以使用旧版本的内核引导系统。 4.rpm验证
1当我们安装了一个软件包之后会产生许多文件要是想判断这些文件是否被修改过可以用rpm -V(大写字母V)命令例如我们刚刚安装了vsftpd并没有修改任何配置文件 [rootnode01 ~]# rpm -V vsftpd
[rootnode01 ~]# 没有任何输出说明此vsftpd所生成的文件没有被修改。 2现在用vim 编辑器修改一下/etc/vsfipd/vsftpd.conf随便增添删减一些内容最好是修改注释后面的内容否则影响vsftpd启动)然后再次判断,命令如下。 [rootnode01 vsftpd]# vim vsftpd.conf //编辑文件
[rootnode01 vsftpd]#
[rootnode01 vsftpd]# cd //切换到家目录
[rootnode01 ~]# rpm -V vsftpd //查看是否修改
S.5....T. c /etc/vsftpd/vsftpd.conf
[rootnode01 ~]# 再次检查可以看到/etc/vsftpd/vsftpd.conf被修改过。 S指的是大小5指的是MD5值T指的是时间c指的是此文件时vsftpd的配置文件 3这样就可以看到哪些文件被修改过了。只修改时间命令如下 [rootnode01 ~]# touch /etc/vsftpd/ftpusers //更新文件时间
[rootnode01 ~]# rpm -V vsftpd //查看修改
.......T. c /etc/vsftpd/ftpusers
S.5....T. c /etc/vsftpd/vsftpd.conf
[rootnode01 ~]# 可以看到/etc/vsftpd/ftpusers的时间发生了改变。 4红帽发行的每一个数据包都对它做了数据签名以证明这个包是红帽官方的。需要在本机用红帽的公钥来进行验证。首先验证机器上是否安装了红帽的公钥。 [rootnode01 ~]# rpm -qa | grep pubkey
[rootnode01 ~]# 没有任何输出,说明没有导人红帽的公钥。 5使用如下命令导入公钥 [rootnode01 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rootnode01 ~]# 或者导入存储在光盘中的公钥。 [rootnode01 ~]# rpm --import /mnt/RPM-GPG-KEY-redhat-release
[rootnode01 ~]# 再次检查公钥的信息,命令如下。 [rootnode01 ~]# rpm -qa | grep pubkey
gpg-pubkey-fd431d51-4ae0493b
gpg-pubkey-d4082792-5b32db75
[rootnode01 ~]# 可以看到已经成功导入了。 下面验证如下两个vsftpd包命令如下。 [rootnode01 ~]# rpm -K vsftpd-3.0.3-34.el8.x86_64.rpm
vsftpd-3.0.3-34.el8.x86_64.rpm: digests signatures 确定
[rootnode01 ~]# 这个包是一开始从光盘中拷贝过来的可以看到验证通过。 [rootnode01 ~]# rpm -K vsftpd-3.0.3-28.el8.x86_64.rpm
vsftpd-3.0.3-28.el8.x86_64.rpm: digests signatures 确定
[rootnode01 ~]# 这个包也是从光盘中拷贝过来的只是其他版本的光盘所以可以看到也是验证通过的。