软件包中的文件分类
1、二进制文件
2、库文件
3、配置文件
4、相关帮助文档
获取程序包的途径
1、系统发行版的光盘或者官方网站
例如:mirrors.sohu.com、morrors.163.com、mirrors.tuna.tsinghua.edu.cn、
www.centos.org/download等
2、第三方组织
例如:mirrors.cloud.tencent.com/epel
3、软件项目的官方站点
例如:yum.mariadb.org/10.4/centos-amd64/rpms
4、相关搜索引擎
例如:pkgs.org、rpmfind.net等
5、自己制作
注:获取程序包时应该检查来源的合法性及程序包的完整性。
CentOS系统上使用rpm命令管理程序包
功能:包的安装、升/降级、卸载、查询、检验、数据库维护等
详细用查询帮助。
包的安装
rpm {-i|--install} [install-options] PACKAGE_NAME...
常用:
rpm -ivh PACKAGE_NAME...
-h: 以#显示程序包管理执行进度
[install-options]:
--test: 测试安装,但不真正执行安装
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
包的升/降级
rpm {-U|--upgrade} [install-options] PACKAGE_NAME...
rpm {-F|--freshen} [install-options] PACKAGE_NAME...
rpm -Uvh PACKAGE_NAME...
-U:安装有旧版程序包,则"升级",如果不存在旧版程序包,则"安装"
rpm -Fvh PACKAGE_NAME...
-F:安装有旧版程序包,则"升级", 如果不存在旧版程序包,则不执行升级操作
--oldpackage:降级
--force:强制安装
升级时注意事项:
1、内核不升级,直接安装新版本内核即可
2、 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老
版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留
包的卸载
rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME...
注:卸载包时,对应的配置文件不会删除,而是以PACKAGE_NAME.rpmsave形式保留
例:强行删除rpm包,并恢复
[root@centos7 ~]#rpm -e rpm --nodeps
#重启进入rescue模式
#mkdir /mnt/cdrom
#mount /dev/sr0 /mnt/cdrom
#rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-40.el7.x86_64.rpm --root=/mnt/sysimage
#reboot
包的查询
rpm {-q|quary} [select-options] [query-options]
[select-options]:
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile 针对尚未安装的程序包文件做查询操作
[query-options]:
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
例:
[root@17centos7 ~]# rpm -qa |wc -l
1402
[root@17centos7 ~]# rpm -qi yum
Name : yum
Version : 3.4.3
Release : 168.el7.centos
....
[root@17centos7 ~]# rpm -qf /etc/shadow
setup-2.8.71-11.el7.noarch
[root@17centos7 ~]# rpm -qc httpd
...
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd
[root@17centos7 ~]# rpm -qd httpd
/usr/share/doc/httpd-2.4.6/ABOUT_APACHE
/usr/share/doc/httpd-2.4.6/CHANGES
...
包的检验:略
数据库维护
rpm包安装时生成的信息,都放在rpm数据库中:/var/lib/rpm
重建数据库:
rpm {--initdb|--rebuilddb}
initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录