一、rpm包管理器
1、介绍rpm
在linux系统中,服务是要通过程序来提供的,通过调用API接口编写好之后的源码包文件对于普通用户来说,安装起来较为繁琐。于是人们将源码在编译安装的环境下制作了更加高级的rpm包,它的最大特点是避免了对原软件包的编译安装,以更加简便的安装方式提供给用户。可以使用rpm(RedhatPackage Manager)管理器来进行安装.
rpm包格式
2、rpm包管理器
<1>安装
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm -i FILE..
-i:表示安装 -v:输出详细过程 -h:以进度条的方式显示安装过程
常用选项
--test:测试安装,不进行实际安装 --nodeps:忽略依赖关系安装 --replacepkgs:重新安装 --force:强制安装
<2>升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm -U FILE..
-U:安装或者升级 -F:仅升级 -v:输出详细过程 -h:以进度条的方式显示安装过程
常用选项
--oldpackage:降级成旧版本 --force:强制升级到新版本
<3>卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
rpm -e FILE..
常用选项
-allmatches:卸载所有匹配指定程序包名称的程序包的各版本 --nodeps:忽略依赖关系卸载程序包 --test:测试卸载程序包
<4>查询
rpm {-q|--query} [select-options] [query-options] [FILE..]
-q file.rpm:查询指定的rpm包是否安装
[select-options]
-p:查询未安装的包的信息 -a,--all:查询已安装的所有程序包 -f FILE:查询指定的文件由哪个程序包安装生成 [root@centos7~]#rpm -qf `which --skip-alias ls` # rpm -qf可以找到 coreutils-8.22-15.el7.x86_64 [root@centos7~]#rpm -q ls # rpm -q找不到 package ls is not installed --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供 --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
[query-options]
-c: 查询程序的配置文件 -d: 查询程序的文档 -i: 查询程序的详细信息 -l: 查看指定的程序包安装后生成的所有文件; --scripts:程序包自带的脚本片断 -R: 查询指定的程序包所依赖的CAPABILITY; --provides: 列出指定程序包所提供的CAPABILITY;
*这里注释一下rpm的特殊用法
示例:如果删除了一个rpm包的程序文件,而又不想重新安装时还原原有的配置文件,可以选择只安装rpm包中的程序文件。
步骤1、查看rpm安装包的文件列表
[root@centos6 Packages]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -t ./usr/bin/tree ./usr/share/doc/tree-1.5.3 ./usr/share/doc/tree-1.5.3/LICENSE ./usr/share/doc/tree-1.5.3/README ./usr/share/man/man1/tree.1.gz 132 blocks
步骤2、解压包内文件
[root@centos6 ~]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -id 132 blocks
步骤3、移动程序文件
[root@centos6 ~]# cp usr/bin/tree /usr/bin
<5>包校验
rpm {-V|--verify} [select-options] FILE..
注:[select-options]与上不同,不予列出
下面介绍俩个常用的检查机制
▲合法性校验:rpm --import Public_key
[root@localhost ~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [root@localhost ~]#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:zsh-5.0.2-14.el7 ################################# [100%]
安装过程不提示警告
补充:导入密钥之后,如果再删除之,再安装就会提示警告信息
[root@localhost ~]#rpm -qa gpg* gpg-pubkey-f4a80eb5-53a7ff4b gpgme-1.3.2-5.el7.x86_64 [root@localhost ~]#rpm -e gpg-pubkey-f4a80eb5-53a7ff4b [root@localhost ~]#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm warning: zsh-5.0.2-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:zsh-5.0.2-14.el7 ################################# [100%]
▲完整性校验rpm -K file.rpm
[root@localhost ~]#echo ' ' > zsh-5.0.2-14.el7.x86_64.rpm [root@localhost ~]#rpm -K zsh-5.0.2-14.el7.x86_64.rpm error: zsh-5.0.2-14.el7.x86_64.rpm: not an rpm package
检查出现错误
<6>数据库维护
系统上的rpm包依靠一个数据库(var/lib/rpm/)来维护,一旦rpm数据库删除,系统上关于包的任何操作都将无法进行,因为程序包的操作都是由数据库来维护的。
rpm --initdb: 创建数据库
rpm --rebuilddb:创建数据库索引
[root@localhost /var/lib/rpm]#rm -rf * [root@localhost /var/lib/rpm]#rpm -q bash package bash is not installed [root@localhost /var/lib/rpm]#rpm --initdb [root@localhost /var/lib/rpm]#ls Basenames __db.001 __db.003 Group Name Packages Requirename Sigmd5 Conflictname __db.002 Dirnames Installtid Obsoletename Providename Sha1header Triggername [root@localhost /var/lib/rpm]#rpm -q bash package bash is not installed
上面例子证明:即使使用rpm --initdb恢复数据库,也是无济于事,因为其中并没有rpm包的数据息。友情提示:危险操作,切勿模仿
3、yum机制及其使用
二、yum包管理器
1、介绍yum
前面提到rpm的安装,但是因为库调用的原因,各个软件包之间会存在依赖条件,为了解决这个问题,出现了yum(Yellow dog Updter, Modified),作为rpm的前端程序,可自动处理依赖性关系(即当一个包依赖到另一个包时,自动安装对应的包)
2、yum工作原理
yum的工作模式分为俩部分:yum服务器端,client的yum工具。
◆yum服务器端存放着全部rpm包,以及特定的数据库文件来索引rpm包和记录rpm包之间的依赖关系。
◆client端每次调用yum命令的时候,通过解析/etc/yum.repos.d配置文件中的URL找到yum服务器。并且yum会定期去更新yum服务器上的rpm包的元数据和依赖关系信息到本地(/var/cache/yum/),每次使用yum操作rpm包时,根据数据库里信息确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器实现操作。
工作原理示例图
3、配置yum源
yum源配置格式
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
URL书写格式
ftp://
http://
file:///
可用的变量
$releasever: 当前OS的发行版的主版本号
$basearch:基础平台;i386
$YUM0-$YUM9:自定义变量
示例:
[epel]
#baseurl=ftp://10.1.1.100/epel/7Server/x86_64/
baseurl=ftp://10.1.1.100/epel/$releaserver/$basearch/
gpgcheck=0
enabled=1
<1>本地光盘
###新建cdrom目录 [root@localhost ~]#mkdir /media/cdrom ####挂载光盘文件到目录下 [root@localhost ~]#mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 is write-protected, mounting read-only ####包文件就在Packages中,repodata父目录即为yum源目录 [root@localhost ~]#cd /media/cdrom/ [root@localhost /media/cdrom]#ls CentOS_BuildTag EULA p_w_picpaths LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL ####新建yum配置文件 [root@localhost /media/cdrom]#cd /etc/yum.repos.d/ [root@localhost /etc/yum.repos.d]#ls CentOS-Base.repo.bak CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-Base.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo [root@localhost /etc/yum.repos.d]#vim base.repo ###注意:要先移除原来的repo文件 [base] name=Local yum repository baseurl=file:///media/cdrom gpgcheck=1 ####此处如果gpgcheck=0的话,可以不写gpgkey enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
<2>远端Server
如果虚拟机支持联网的话,可以直接使用网络上的yum源
####直接在/etc/yum.repo下建立配置文件即可 [root@localhost /etc/yum.repos.d]#vim base2.repo ####此处给出示例 [base2] name=Server yum repository baseurl=http://10.1.0.1/cobbler/ks_mirror/7/ gpgcheck=1 enabled=1 gpgkey=http://10.1.0.1/cobbler/ks_mirror/7/RPM-GPG-KEY-CentOS-7
<3>自制yum源
**复制rpm包到目录
**在目录下生成repodata文件
**为目录配置repo文件
**配置成功
<3>还有一种超级简单的方式,直接使用yum-config-manager工具
用法:yum-config-manager [options] [section]
[options]
--add-repo
[root@centos7~]#yum-config-manager --add-repo=new_yum # 创建new_yum的repositoryID Loaded plugins: fastestmirror, fs-snapshot, langpacks adding repo from: new_yum [new_yum] name=added from: new_yum # 这三行是自动生成的 baseurl=new_yum enabled=1 [root@centos7~]#cd /etc/yum.repos.d/ [root@centos7/etc/yum.repos.d]#ls base.repo dir make.repo new_yum.repo # 新添加的repo文件
4、yum命令
yum [options] [command] [package ...]
[options]
-y:自动回答为yes
-q:静默模式
[command]
<1>显示仓库列表
yum repolist [all]
<2>显示程序包
yum list {available|installed|updates}
<3>安装升级
yum install package...
yum apdate package...
yum downgrade package..
<4>查看包的详细信息
yum info package...
<5>删除程序包
yum remove package...
<6>构建缓存
yum makecache
<7>清理缓存
yum clean [ metadata | all ]
<8>搜索
yum search Key_word
<9>查看yum事务历史
yum history
yum history undo # :可以撤销某个事物历史的所有安装包,类同卸载 (不适用包组)
<10>包组的查看
yum gruplist
<11>包组的安装
yum groupinstall group...
<12>包组的升级
yum groupupdate group..
<13>包组的卸载
yum groupremove group...
推荐几个rpm包的获取方法:
1、自带光盘镜像
2、项目官方站点
3、第三方组织
EPEL
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.fedoraproject.org
4、自己制作
转载于:https://blog.51cto.com/dmwing/1841038