一、总结rpm和yum实现程序包的管理功能
1、RPM
rpm:RPM是RedHat Package Manager(RedHat软件包管理工具)
RPM是一个强大的软件包管理器,可用于构建,安装,查询,验证,更新和删除各个软件包。程序包由文件以及用于安装和删除的档案文件的元数据的归档。所述元数据包括辅助脚本,文件属性,和关于包的描述性信息。包有两个品种:要安装二进制软件包,用来封装软件和源代码软件包,包含源代码和必要的生产二进制包配方。 下面的一个基本模式必须选择:Query, Verify, Install/Upgrade/Freshen, Uninstall, Set Owners/Groups, Show Querytags, and Show Configuration。 |
rpm 执行安装包种类
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。 |
rpm 安装包组成部分
二进制程序:/bin, /sbin,/ /usr/bin, /usr/sbin, 库文件:/lib64, /usr/lib64 配置文件:/etc 帮助文件:manual, info, |
rpm命名机制
name-VERSION-RELEASE.ARCH.rpm | | | | | | | |_____适用的硬件平台。x86:i386,i486,i586,i686等;x86_64:x86_64等等 | | |___________rpm自身的发行号,与程序源码的发行号无关,用于标识不同制作的修订 | |______________________带有主,次和修订的软件包版本;同时,release还包含此包适用的OS |______________________________软件包名称 |
rpm包获取方式
1、发行版提供的程序包; 2、Fedora-EPEL 3、项目的官方站点 4、搜索引擎 http://rpmfind.net http://rpm.pbone.net http://pkgs.org |
rpm相关命令
1、安装 命令格式: rpm -i ( or --install) options file1.rpm ... fileN.rpm 选项: --h(or --hash) 以安装信息栏显示安装进度 --test 只对安装进行测试,并不实际安装。 --percent 以百分比的形式输出安装的进度。 --excludedocs 不安装软件包中的文档文件 --includedocs 安装文档 --replacepkgs 强制重新安装已经安装的软件包 --force 忽略软件包及文件的冲突 --prefix 将软件包安装到指定的路径下 --ignorearch 不校验软件包的结构 --ignoreos 不检查软件包运行的操作系统 --nodeps 不检查依赖性关系 [root@localhost Packages]# rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:zsh-5.0.2-7.el7 ################################# [100%] [root@localhost Packages]# //不检查依赖关系直接安装本身需要依赖的rpm包 [root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-6.el7.x86_64.rpm error: Failed dependencies: libodbc.so.2()(64bit) is needed by mysql-connector-odbc-5.2.5-6.el7.x86_64 libodbcinst.so.2()(64bit) is needed by mysql-connector-odbc-5.2.5-6.el7.x86_64 [root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-6.el7.x86_64.rpm --nodeps Preparing... ################################# [100%] Updating / installing... 1:mysql-connector-odbc-5.2.5-6.el7 ################################# [100%] [root@localhost Packages]# //强制重新安装已安装的包 [root@localhost Packages]# rpm -ivh wget-1.14-10.el7_0.1.x86_64.rpm Preparing... ################################# [100%] package wget-1.14-10.el7_0.1.x86_64 is already installed [root@localhost Packages]# rpm -ivh wget-1.14-10.el7_0.1.x86_64.rpm --replacepkgs Preparing... ################################# [100%] Updating / installing... 1:wget-1.14-10.el7_0.1 ################################# [100%] [root@localhost Packages]# 2、升级 命令格式: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -Uvh: 如果有旧版程序包,则升级之;如果没有,则安装之; -Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装; --nodeps --oldpackage:降级; --force:忽略软件包及文件的冲突 [root@localhost Packages]# rpm -Uvh zip-3.0-10.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:zip-3.0-10.el7 ################################# [100%] [root@localhost Packages]# 3、卸载 命令格式: rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 详细选项 --test 只执行删除的测试 --noscripts 不运行预安装和后安装脚本程序 --nodeps 不检查依赖性 [root@localhost Packages]# rpm -e gpgme --nodeps 4、查询 命令格式: rpm {-q|--query} [select-options] [query-options] 查询选项: -qa: 查询本机已经安装的所有程序包; -qf /PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成; -qc: 查询指定程序包安装生成的配置文件 -qd: 查询指定的程序包安装生成的文档 -qi: 查询指定的程序包的相关信息; -ql: 查询程序包安装生成的所有文件的列表; -q --scripts:查询程序包相关的脚本: preinstall: 安装前脚本 postinstall:安装后脚本 preuninstall: 卸载前脚本 postuninstall: 卸载后脚本 -p: 查询针对是未安装的程序包文件; [root@localhost Packages]# rpm -qf /sbin/ifconfig net-tools-2.0-0.17.20131004git.el7.x86_64 [root@localhost Packages]# rpm -qa grub2-2.02-0.16.el7.centos.x86_64 centos-release-7-1.1503.el7.centos.2.8.x86_64 lvm2-2.02.115-3.el7.x86_64 filesystem-3.2-18.el7.x86_64 audit-2.4.1-5.el7.x86_64 ncurses-base-5.9-13.20130511.el7.noarch tuned-2.4.1-1.el7.noarch linux-firmware-20140911-0.1.git365e80c.el7.noarch aic94xx-firmware-30-6.el7.noarch glibc-common-2.17-78.el7.x86_64 [root@localhost Packages]# rpm -qi yum Name : yum Version : 3.4.3 Release : 125.el7.centos Architecture: noarch Install Date: Sun 13 Sep 2015 11:29:37 PM EDT Group : System Environment/Base Size : 5746020 License : GPLv2+ Signature : RSA/SHA256, Sat 14 Mar 2015 04:41:36 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : yum-3.4.3-125.el7.centos.src.rpm Build Date : Mon 09 Mar 2015 04:39:21 PM EDT Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://yum.baseurl.org/ Summary : RPM package installer/updater/manager Description : Yum is a utility that can check for and automatically download and install updated RPM packages. Dependencies are obtained and downloaded automatically, prompting the user for permission as necessary. 5、校验 命令格式: rpm {-V|--verify} [select-options] [verify-options] S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ |
2、YUM
yum:Yellow dog Updater, Modified.用于添加/删除/更新RPM包,自动解决包的依赖问题以及系统更新升级
yum配置文件及定义仓库指向
/etc/yum.conf 定义全局配置:对所有仓库都适用的配置 /etc/yum.repos.d/*.repo 一个文件通常用于一个或一组功能相近或相关的仓库 定义一个仓库指向: [REPO_ID] name= baseurl= # mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE enabled={1|0} gpgcheck={1|0} gpgkey= cost= 定义仓库指向可用变量: $releasever: 引用当前系统的主版本号; $basearch: 当前系统的基本架构; i386, i486, i586, i686: i386 http://mirrors.magedu.com/CentOS/$releasever/os/$basearch //更换网络源 [root@magedu yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo [root@magedu yum.repos.d]# mv CentOS-Base.repo CentOS-Base.rep [root@magedu yum.repos.d]# vim CentOS-Base.163.repo [mirrors.163] [email protected] baseurl=http://mirrors.163.com/centos/6.7/os/x86_64/ enabled=1 gpgcheck=0 ... [root@magedu yum.repos.d]# yum repolist 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * epel: free.nchc.org.tw 仓库标识 仓库名称 状态 epel Extra Packages for Enterprise Linux 6 - x86_64 11,765 mirrors.163 [email protected] 6,575 repolist: 18,340 [root@magedu yum.repos.d]# //更换光盘源 [root@localhost ~]# mount -r /dev/cdrom /media/cdrom/ [root@localhost ~]# cd /media/cdrom/ [root@localhost cdrom]# ls CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL [root@localhost cdrom]# pwd /media/cdrom [root@localhost yum.repos.d]# vim CentOS-Base.local.repo [CentOS7local] name=CentOS 7 @ local baseurl=file:///media/cdrom enabled=1 gpgcheck=0 ... [root@localhost yum.repos.d]# yum repolist Loaded plugins: fastestmirror CentOS7local | 3.6 kB 00:00:00 (1/2): CentOS7local/group_gz | 154 kB 00:00:00 (2/2): CentOS7local/primary_db | 5.1 MB 00:00:00 Loading mirror speeds from cached hostfile * epel: mirror01.idc.hinet.net repo id repo name status CentOS7local CentOS 7 @ local 8,652 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 8,492 repolist: 17,144 |
yum命令
yum [options] [command] [package ...] 命令: 安装:install 卸载:remove 升级:update 查询:info search KEYWORD list all|installed|availiable provides /PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成 重新安装:reinstall 降级:downgrade 清理缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 生动生成缓存:makecache 包组: grouplist groupinfo "GRP_NAME" groupinstall "GRP_NAME" groupremove "GRP_NAME" 仓库: repolist [all|enabled|disabled] repoinfo [all|enabled|disabled] //安装软件 [root@magedu ~]# yum install wget 已加载插件:fastestmirror 设置安装进程 Loading mirror speeds from cached hostfile * epel: free.nchc.org.tw 解决依赖关系 --> 执行事务检查 ---> Package wget.x86_64 0:1.12-5.el6_6.1 will be 安装 --> 完成依赖关系计算 依赖关系解决 ============================================================================================================================================================= 软件包 架构 版本 仓库 大小 ============================================================================================================================================================= 正在安装: wget x86_64 1.12-5.el6_6.1 mirrors.163 483 k 事务概要 ============================================================================================================================================================= Install 1 Package(s) 总下载量:483 k Installed size: 1.8 M 确定吗?[y/N]:y 下载软件包: wget-1.12-5.el6_6.1.x86_64.rpm | 483 kB 00:00 运行 rpm_check_debug 执行事务测试 事务测试成功 执行事务 正在安装 : wget-1.12-5.el6_6.1.x86_64 1/1 Verifying : wget-1.12-5.el6_6.1.x86_64 1/1 已安装: wget.x86_64 0:1.12-5.el6_6.1 完毕! [root@magedu ~]# //卸载软件 [root@magedu ~]# yum remove wget 已加载插件:fastestmirror 设置移除进程 解决依赖关系 --> 执行事务检查 ---> Package wget.x86_64 0:1.12-5.el6_6.1 will be 删除 --> 完成依赖关系计算 依赖关系解决 ============================================================================================================================================================= 软件包 架构 版本 仓库 大小 ============================================================================================================================================================= 正在删除: wget x86_64 1.12-5.el6_6.1 @mirrors.163 1.8 M 事务概要 ============================================================================================================================================================= Remove 1 Package(s) Installed size: 1.8 M 确定吗?[y/N]:y 下载软件包: 运行 rpm_check_debug 执行事务测试 事务测试成功 执行事务 正在删除 : wget-1.12-5.el6_6.1.x86_64 1/1 Verifying : wget-1.12-5.el6_6.1.x86_64 1/1 删除: wget.x86_64 0:1.12-5.el6_6.1 完毕! [root@magedu /]# yum clean all 已加载插件:fastestmirror Cleaning repos: epel mirrors.163 清理一切 Cleaning up list of fastest mirrors [root@magedu /]# [root@magedu yum.repos.d]# yum grouplist 已加载插件:fastestmirror 设置组进程 Loading mirror speeds from cached hostfile * base: mirrors.skyshe.cn * epel: ftp.riken.jp * extras: mirrors.sina.cn * updates: mirrors.sina.cn 已安装的组: Milkymist Perl 支持 图形管理工具 字体 安全性工具 电子邮件服务器 继承 X Windows 系统的兼容性 输入法 通用桌面 Installed Language Groups: 中文支持 [zh] 有效的组: CIFS 文件服务器 Eclipse Emacs FCoE 存储客户端 FTP 服务器 Haskell Infiniband 支持 Java 平台 KDE 桌面 MySQL 数据库客户端 MySQL 数据库服务器 NFS 文件服务器 PHP 支持 PostgreSQL 数据库客户端 PostgreSQL 数据库服务器 Ruby 支持 SNMP 支持 TeX 支持 TurboGear 应用程序框架 Web 服务器程序引擎 X 窗口系统 Xfce iSCSI 存储客户端 万维网服务器 主框架访问 互联网应用程序 互联网浏览器 兼容程序库 办公套件和生产率 可扩展文件系统 ... [root@magedu yum.repos.d]# yum groupinfo "PHP 支持" 已加载插件:fastestmirror 设置组进程 Loading mirror speeds from cached hostfile * base: mirrors.yun-idc.com * epel: ftp.riken.jp * extras: mirrors.sina.cn * updates: mirrors.sina.cn 组:PHP 支持 描述:PHP web 应用程序框架。 必要的软件包: php 默认的软件包: php-gd php-pdo php-pear php-xml 可选的软件包: php-ldap php-mysql php-odbc php-pecl-apc php-pecl-memcache php-pgsql php-soap php-xmlrpc [root@magedu yum.repos.d]# yum groupinstall "PHP 支持" 已加载插件:fastestmirror 设置组进程 Loading mirror speeds from cached hostfile * base: mirrors.yun-idc.com * epel: ftp.riken.jp * extras: mirrors.sina.cn * updates: centos.ustc.edu.cn 解决依赖关系 --> 执行事务检查 ---> Package php.x86_64 0:5.3.3-46.el6_6 will be 安装 --> 处理依赖关系 php-common(x86-64) = 5.3.3-46.el6_6,它被软件包 php-5.3.3-46.el6_6.x86_64 需要 --> 处理依赖关系 php-cli(x86-64) = 5.3.3-46.el6_6,它被软件包 php-5.3.3-46.el6_6.x86_64 需要 --> 处理依赖关系 httpd-mmn = 20051115,它被软件包 php-5.3.3-46.el6_6.x86_64 需要 --> 处理依赖关系 httpd,它被软件包 php-5.3.3-46.el6_6.x86_64 需要 ... Verifying : httpd-tools-2.2.15-47.el6.centos.x86_64 10/16 Verifying : php-pdo-5.3.3-46.el6_6.x86_64 11/16 Verifying : libxslt-1.1.26-2.el6_3.1.x86_64 12/16 Verifying : mailcap-2.1.31-2.el6.noarch 13/16 Verifying : apr-1.3.9-5.el6_2.x86_64 14/16 Verifying : httpd-2.2.15-47.el6.centos.x86_64 15/16 Verifying : apr-util-1.3.9-3.el6_0.1.x86_64 16/16 已安装: php.x86_64 0:5.3.3-46.el6_6 php-gd.x86_64 0:5.3.3-46.el6_6 php-pdo.x86_64 0:5.3.3-46.el6_6 php-pear.noarch 1:1.9.4-4.el6 php-xml.x86_64 0:5.3.3-46.el6_6 作为依赖被安装: apr.x86_64 0:1.3.9-5.el6_2 apr-util.x86_64 0:1.3.9-3.el6_0.1 apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd.x86_64 0:2.2.15-47.el6.centos httpd-tools.x86_64 0:2.2.15-47.el6.centos libXpm.x86_64 0:3.5.10-2.el6 libedit.x86_64 0:2.11-4.20080712cvs.1.el6 libxslt.x86_64 0:1.1.26-2.el6_3.1 mailcap.noarch 0:2.1.31-2.el6 php-cli.x86_64 0:5.3.3-46.el6_6 php-common.x86_64 0:5.3.3-46.el6_6 完毕! [root@magedu yum.repos.d]# |