使用rpm管理软件

rpm介绍 

rpm 全称是redhat package manager,后来改成rpm package manager,这是根据源码包编译出来的包。先从光盘中拷贝一个包,并看它是如何命名的
先挂载光盘,然后拷贝 vsftpd这个包,命令如下。
[root@RHEL813 ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@RHEL813 ~]# cp /mnt/AppStream/Packages/vsftpd-3.0.3-34.el8.x86_64.rpm .
[root@RHEL813 ~]# 
[root@RHEL813 ~]# ls vsftpd-3.0.3-34.el8.x86_64.rpm 
vsftpd-3.0.3-34.el8.x86_64.rpm
[root@RHEL813 ~]# 

 这里字段的含义如下。

(1)vsftpd:包的名称。
(2)3.0.3:版本,即 version。
(3)33.el8:小版本号,即release,其中el8 指的是此包适用于RHEL8系统。
(4) x86_64:指的是架构,到底是32位还是64位的包,x86_64表示是64位的。
rpm的安装命令是“rpm -ivh 安装包”。安装vsftp,命令如下。
[root@RHEL813 ~]# 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%]
[root@RHEL813 ~]# 
这样就把vsftpd-3.0.3-33.el8.x86_64.rpm 安装好了。如果是第一次接触 Linux 会感觉到奇怪,怎么不像 Windows一样让我们通过浏览来指定路径,那么这个包安装到哪里了呢?
相信大家在Windows中都安装过 Chrome浏览器,基本上是秒安装,也没有指定路径,因为这个安装包中已经定义好安装路径了。同理,rpm 安装时也已经指定了安装路径,把这个rpm打开,先拷贝到/opt目录中,命令如下。
[root@RHEL813 ~]# cp vsftpd-3.0.3-34.el8.x86_64.rpm /opt/
[root@RHEL813 ~]# cd /opt/
[root@RHEL813 opt]# ls
vsftpd-3.0.3-34.el8.x86_64.rpm

 解压此包,命令如下。

[root@RHEL813 opt]# rpm2cpio vsftpd-3.0.3-34.el8.x86_64.rpm | cpio -id
714 块
[root@RHEL813 opt]# ls
etc  usr  var  vsftpd-3.0.3-34.el8.x86_64.rpm
[root@RHEL813 opt]# 
[root@RHEL813 opt]# 

 可以看到,生成了3个目录etc、usr、var,看一下它们的结构,如下所示。

[root@RHEL813 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.rpm

27 directories, 48 files
[root@RHEL813 opt]# 
可以看到,当我们安装rpm包时,它就会把包中的内容按照这个结构拷贝到系统,所以安装的路径都是安排好了的。 

rpm查询 

如果要查询已经安装过的软件包的信息, rpm的第一个选项需要使用-q,表示查询的意
思。查询系统安装的所有软件包用 rpm-qa命令,命令如下。
[root@RHEL813 ~]# rpm -qa
查询系统是否安装了某个软件包用“rpm -qa 包名”命令。例如,要查询是否安装了
vsftpd,命令如下
[root@RHEL813 ~]# rpm -qa vsftpd
vsftpd-3.0.3-34.el8.x86_64
[root@RHEL813 ~]# 

 但是这种用法,在写包名时多一个或少一个字符都查询不出来,如下所示。

[root@RHEL813 ~]# rpm -qa vsft
[root@RHEL813 ~]# 

 所以,更建议用管道和grep进行过滤,如下所示。

[root@RHEL813 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.3-34.el8.x86_64
[root@RHEL813 ~]#
查询安装某软件包之后所生成的文件用“rpm -ql 包名”命令,这里q后面是字母l。例如,要查询vsftpd所生成的文件,命令如下。
[root@RHEL813 ~]# rpm -ql vsftpd 
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/lib/.build-id
/usr/lib/.build-id/8d
这样就可以看到 vsftpd安装到哪里了。

查看软件包生成的配置文件用“rpm -qc包名”命令,命令如下。 

[root@RHEL813 ~]# rpm -qc vsftpd 
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[root@RHEL813 ~]# 

 查看包的信息用“rpm-qi包名”命令,命令如下。

[root@RHEL813 ~]# rpm -qi vsftpd 
Name        : vsftpd
Version     : 3.0.3
Release     : 34.el8
Architecture: x86_64
Install Date: 2023年12月10日 星期日 22时41分25秒
Group       : System Environment/Daemons
Size        : 355692
License     : GPLv2 with exceptions
Signature   : RSA/SHA256, 2021年04月21日 星期三 08时42分12秒, Key ID 199e2f91fd431d51
Source RPM  : vsftpd-3.0.3-34.el8.src.rpm
Build Date  : 2021年04月20日 星期二 10时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.
[root@RHEL813 ~]# 
当我们安装软件包时会产生许多文件,反过来想查询某个文件是由哪个软件包安装出来的用rpm -qf /path/file命令,命令如下。
[root@RHEL813 ~]# rpm -qf /etc/vsftpd/vsftpd.conf 
vsftpd-3.0.3-34.el8.x86_64
[root@RHEL813 ~]# 

 可以看到,/etc/vsfipd/vsfipd.conf是由 vsftpd这个包产生的。

[root@RHEL813 ~]# rpm -qf /etc/passwd
setup-2.12.2-6.el8.noarch
[root@RHEL813 ~]# 

 可以看到,/etc/passwd是由setup这个包生成的

以上这些都是针对已经安装了的软件包进行查询,如果要查询安装包,则需要加上p选项,命令如下。
[root@RHEL813 ~]# 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
[root@RHEL813 ~]# 
当然,在RHEL8/CentOS8中不加p选项也可以,之前的系统是不行的

rpm安装及卸载 


前面已经介绍了用“rpm -ivh 安装包”命令安装软件,且 vsftpd已经安装完成,如下所

卸载软件包的命令是“rpm -e 软件包”,现在要把vsftpd卸载掉,命令如下。 

[root@RHEL813 ~]# rpm -e vsftpd 
[root@RHEL813 ~]# rpm -qa | grep vsftpd-3.0.3-34.el8.x86_64.rpm 
[root@RHEL813 ~]# 
可以看到,现在vsftpd已经不存在了,再次把这个包安装上去
[root@RHEL813 ~]# 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%]
[root@RHEL813 ~]# 

 有时需要强制安装软件,例如,某个包已经安装过了,现在想重新安装,命令如下。

[root@RHEL813 ~]# 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 已经安装
[root@RHEL813 ~]# 

 这里提示包已经安装过了,无法再次安装。此时加上--force选项强制安装即可。

一般情况下,用于某个文件丢失了,想通过强制重新安装来找回此文件,命令如下。 

[root@RHEL813 ~]# rm -rf /etc/vsftpd/vsftpd.conf 
[root@RHEL813 ~]# ls /etc/vsftpd/
ftpusers  user_list  vsftpd_conf_migrate.sh
[root@RHEL813 ~]# 

 这里把/etc/vsftpd/vsftpd.conf删除,然后开始强制安装,命令如下。

[root@RHEL813 ~]# 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%]
[root@RHEL813 ~]# 

 然后再次查看文件。

[root@RHEL813 ~]# ls /etc/vsftpd/
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@RHEL813 ~]# 

 这里又重新生成了被删除的文件,其他文件原来即使做了修改也不会被覆盖替换。

软件包的更新 

所谓更新,就是卸载旧版本的软件包,然后安装新版本的软件包。假设原来系统已经安装 了1.0版本的软件包,现在要安装2.0版本的软件包,如果两个版本的包安装路径不一样,则可以共存;如果两个版本的包安装路径一样,则会产生冲突。

先卸载已经安装了的vsftpd,命令如下 

[root@RHEL813 ~]# rpm -e vsftpd 
[root@RHEL813 ~]# rpm -qa | grep vsftpd
[root@RHEL813 ~]# 

 然后从RHEL8.0的系统上烤贝一个版本稍低的 vsftpd的安装包,命令如下。

[root@RHEL813 ~]# ls -l vsftpd*
-rw-r--r-- 1 root root 183844 12月 10 21:58 vsftpd-3.0.3-28.el8.x86_64.rpm
-r--r--r-- 1 root root 185184 12月 10 22:27 vsftpd-3.0.3-34.el8.x86_64.rpm
[root@RHEL813 ~]# 
上面ls后面的选项不是数字1,是字母l,这里一个版本稍低,一个版本稍高。先把低版本的包安装上去,命令如下
[root@RHEL813 ~]# rpm -ivh vsftpd-3.0.3-28.el8.x86_64.rpm 
警告:rpmdb: BDB2053 Freeing read locks for locker 0xed: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xef: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xf0: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xf1: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xf2: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xf3: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xf4: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xf5: 1856/140279702849280
警告:rpmdb: BDB2053 Freeing read locks for locker 0xf6: 1856/140279702849280

 这里已经安装了一个3.0.3-28的包,然后安装一个更高版本的3.0.3-33包,命令如下。

[root@RHEL813 ~]# 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_64
	file /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_64
	file /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_64
	file /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_64
	file /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_64
	file /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
[root@RHEL813 ~]# 
因为安装路径一样,所以这里提醒产生了冲突导致没有安装成功。如果用更新的方法来安装是可以的,更新的用法是“rpm -Uvh安装包”。下面更新vsftpd,命令如下。
[root@RHEL813 ~]# 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%]
[root@RHEL813 ~]# 

 可以看到,现在已经更新成功。查看,命令如下。

[root@RHEL813 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.3-34.el8.x86_64
[root@RHEL813 ~]# 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值