RPM软件包管理机制最早由Red Hat公司提出,后来随着版本的升级逐渐融入更多的优秀特性,成为众多linux发行版本中公认的软件包管理标准,其官方站点http://www.rpm.org,可以了解到关于RPM包管理机制的详细资料。
使用RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用“软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm”的文件形式。如
2.4.6 ,是软件的版本号。版本号的格式通常为“主版本号.次版本号.修正号”。
80,是发布版本号(发布次数),表示这个RPM包是第几次编译生成的。
硬件平台通常为“i386”或“i686”、x86_64、noarch等,表示适用的硬件平台,x86_64表示适用于64位的系统,如果是noarch表示不区分硬件架构
Centos的DVD安装光盘携带的软件包都在Packages目录中。一般情况下(指的是启动到桌面环境),Centos启动后安装光盘会自动挂载到系统的/run/media/root/CentOS 7 x86_64/目录下
若是启动到字符终端,需要手动挂载光驱设备,先将centos的光盘镜像放入光驱设备中,执行df命令或mount命令查看光驱设备是否挂载:
上图显示光驱设备未挂载。下面开始执行mount命令挂载挂光盘设备
mount命令功能是挂载一个文件系统
mount命令语法格式:mount [选项] device dir
其中device是要挂载的文件系统或设备,dir是挂载点目录
其中光驱设备名是/dev/sr0或/dev/cdrom(/dev/cdrom是/dev/sr0的链接文件),/mnt就是挂载点目录。
卸除已挂载的文件系统:
umount命令用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。
umount [选项] device或挂载点
[root@localhost ~]# umount /dev/sr0 #卸载设备
或
[root@localhost ~]# umount /mnt/cdrom/ #卸载挂载点(推荐)
# rpm -qa #查看系统中已经安装的rpm软件包列表
# rpm -qa | wc -l #统计已经安装的rpm软件包的个数
查看指定软件包的详细信息可以使用如下命令
[root@l ~]# rpm -qi vim-common-7.4.160-4.el7.x86_64
Name : vim-common
Epoch : 2
Version : 7.4.160
Release : 4.el7
Architecture: x86_64
Install Date: Fri 06 Aug 2021 07:44:14 PM CST
Group : Applications/Editors
Size : 22145972
License : Vim
Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:33 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : vim-7.4.160-4.el7.src.rpm
Build Date : Wed 11 Apr 2018 07:55:09 AM CST
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.vim.org/
Summary : The common files needed by any version of the VIM editor
Description :
VIM (VIsual editor iMproved) is an updated and improved version of the
vi editor. Vi was the first real screen-based editor for UNIX, and is
still very popular. VIM improves on vi by adding new features:
multiple windows, multi-level undo, block highlighting and more. The
vim-common package contains files which every VIM binary will need in
order to run.
If you are installing vim-enhanced or vim-X11, you'll also need
to install the vim-common package.
[root@l ~]# rpm -ql vim-common-7.4.160-4.el7.x86_64
使用这条命令可以查看指定软件包的安装目录及文件列表
[root@l ~]# rpm -qc vim-common-7.4.160-4.el7.x86_64
/etc/vimrc
使用如上命令表示仅查看指定软件包安装的配置文件
[root@l ~]# rpm -qd vim-common-7.4.160-4.el7.x86_64
[root@l ~]# rpm -qf `which vim`
vim-enhanced-7.4.160-4.el7.x86_64
首先查询时需要进入到存放软件包的目录中
[root@l ~]# cd /mnt/cdrom/Packages/
在使用rpm -qp[子选项] RPM软件包
[root@l Packages]# rpm -qpi amanda-server-3.3.3-20.el7.x86_64.rpm
warning: amanda-server-3.3.3-20.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Name : amanda-server
Version : 3.3.3
Release : 20.el7
Architecture: x86_64
Install Date: (not installed)
Group : Applications/System
Size : 686275
License : BSD and GPLv3+ and GPLv2+ and GPLv2
Signature : RSA/SHA256, Wed 25 Apr 2018 06:52:46 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : amanda-3.3.3-20.el7.src.rpm
Build Date : Wed 11 Apr 2018 01:56:24 PM CST
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.amanda.org
Summary : The server side of the AMANDA tape backup system
Description :
The amanda-server package should be installed on the AMANDA server,
the machine attached to the device(s) (such as a tape drive) where backups
will be written. You will also need to install the amanda package on
the AMANDA server machine. And, if the server is also to be backed up, the
server also needs to have the amanda-client package installed.
[root@l Packages]# rpm -qpl amanda-server-3.3.3-20.el7.x86_64.rpm
[root@l Packages]# rpm -qpc amanda-server-3.3.3-20.el7.x86_64.rpm
warning: amanda-server-3.3.3-20.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
/etc/amanda/DailySet1/amanda.conf
/etc/amanda/DailySet1/chg-multi.conf
/etc/amanda/DailySet1/chg-scsi.conf
/etc/amanda/DailySet1/disklist
/etc/amanda/DailySet1/label-templates/3hole.ps
/etc/amanda/DailySet1/label-templates/8.5x11.ps
/etc/amanda/DailySet1/label-templates/DIN-A4.ps
/etc/amanda/DailySet1/label-templates/DLT-A4.ps
/etc/amanda/DailySet1/label-templates/DLT.ps
/etc/amanda/DailySet1/label-templates/EXB-8500.ps
/etc/amanda/DailySet1/label-templates/HP-DAT.ps
/etc/amanda/crontab.sample
/var/lib/amanda/template.d/README
/var/lib/amanda/template.d/advanced.conf
/var/lib/amanda/template.d/amanda-S3.conf
/var/lib/amanda/template.d/amanda-harddisk.conf
/var/lib/amanda/template.d/amanda-single-tape.conf
/var/lib/amanda/template.d/amanda-tape-changer.conf
/var/lib/amanda/template.d/chg-manual.conf
/var/lib/amanda/template.d/dumptypes
/var/lib/amanda/template.d/tapetypes
[root@l Packages]# rpm -qpd amanda-server-3.3.3-20.el7.x86_64.rpm
格式:
rpm [选项] RPM包文件
用法:
不同选项适用于不同情况
-i:安装一个新的rpm软件包
-U:升级某个rpm软件,若原本未装,则进行安装
-F:更新某个rpm软件,若原本未装,则放弃安装
-v:显示软件安装过程中的详细信息
-h:在安装或升级软件包的过程中,以“#”号显示安装进度
-e:卸载指定的RPM软件,格式:rpm -e 软件名
–force:强制安装所指定的rpm软件包
–nodeps:安装、升级或卸载软件时,忽略依赖关系(一般不建议使用)
[root@l Packages]# yum -y remove vim
使用remove卸载软件的时候加入-y表示采用取消人机交互适的卸载
[root@l Packages]# rpm -ivh vim-common-7.4.160-4.el7.x86_64.rpm
warning: vim-common-7.4.160-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
package vim-common-2:7.4.160-4.el7.x86_64 is already installed
RPM数据库(/var/lib/rpm目录下)用于记录在Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预。当RPM数据库发生损坏(误删文件、非法关机、病毒破坏等导致),且Linux系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包,这时可以使用–rebuilddb或–initdb重建RPM数据库。
可以通过下面简单几个步骤
来恢复
首先进入数据库
[root@l ~]# cd /var/lib/rpm
修改数据库内容
[root@l rpm]# echo "123" > __db.001
此时数库已经损坏,在用rpm命令时会报错。
[root@l rpm]# rpm -qa | grep vim
error: db5 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db5 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
error: db5 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages database in /var/lib/rpm
此时需要用–rebuilddb或–initdb重建RPM数据库。
[root@l rpm]# rpm --rebuilddb
或者
[root@l rpm]# rpm --initdb
使用rpm命令进行安装软件包时需要验证公钥。
(前提是要先进入到/mnt/cdrom/Packages目录中)
[root@l rpm]# cd /mnt/cdrom/Packages/
[root@l Packages]# rpm -ivh lynx-2.8.8-0.3.dev15.el7.x86_64.rpm
warning: lynx-2.8.8-0.3.dev15.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
redhat-indexhtml is needed by lynx-2.8.8-0.3.dev15.el7.x86_64
此时显示需要验证公钥。
可以使用光盘中的验证公钥,将公钥导入即可。
[root@l Packages]# rpm --import /mnt/cdrom/RPM-GPG-KEY-CentOS-7
此时使用rpm安装命令时就不会产生需要密钥
[root@l Packages]# rpm -ivh vim-common-7.4.160-4.el7.x86_64.rpm
Preparing... ################################# [100%]
package vim-common-2:7.4.160-4.el7.x86_64 is already installed
RPM包依赖关系:
树形依赖:A-B-C-D
安装时要从后往前安装先从D包开始、然后是C包…最后到A包。
环形依赖:A-B-C-D-A
安装时要可以一条命令直接装完如:rpm -ivh A B C D
总结:安装有依赖关系的多个软件时,被依赖的软件包需要先安装,同时指定多个.rpm包文件进行安装
使用yum命令安装的时候是直接自动解决依赖关系
使用rpm命令安装时需要解决依赖关系。
[root@l ~]# cd /etc/yum.repos.d/
[root@l yum.repos.d]# ls
backup centos7.repo
[centos7]
name=centos7
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root@l ~]# mkdir -p /mnt/cdrom
注意:这里创建的目录需要和之前后缀为.repo文件内的目录相同
打开/etc/fstab文件进行挂载
#
# /etc/fstab
# Created by anaconda on Fri Aug 6 19:19:20 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=d403b099-664e-470d-9618-4552885cc391 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sr0 /mnt/cdrom iso9660 defaults 0 0
添加最后一行内容。
[root@l ~]# mount -a
此时yum源仓库配置完成。
使用命令查看是否挂载成功。
[root@l ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 98G 1.1G 97G 2% /
devtmpfs devtmpfs 476M 0 476M 0% /dev
tmpfs tmpfs 488M 0 488M 0% /dev/shm
tmpfs tmpfs 488M 7.7M 480M 2% /run
tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sr0 iso9660 4.2G 4.2G 0 100% /mnt/cdrom
/dev/sda1 xfs 497M 123M 375M 25% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
此时显示已经挂载成功。及表示yum源仓库就可以使用了。