设为首页 收藏本站
查看: 1024|回复: 0

[经验分享] Linux之RPM

[复制链接]

尚未签到

发表于 2018-5-22 13:17:47 | 显示全部楼层 |阅读模式
  一、前言
  二、软件包及软件包管理工具
  三、安装程序的方式
  四、rpm命令及常用选项
  五、其他
  一、前言
  主流发行版的软件包管理工具
  Debian:dpt(debian package tools), ----->为了解决程序复杂的文件依赖关系,建立在dpt基础上,开发了依赖于dpt的前端工具apt-get
  RedHat:rpm,早期为Redhat Package Manager,后来做为Linux软件包管理工业标准,为RPM is Package Manager;受debian的apt-get启发,RedHat开发了基于rpm的前端管理工具----->yum(Yellowdog Updater Modified)
  

  yum源镜像网站:
  http://mirrors.sohu.com
  rpm包搜索网站:
  http://rpmfind.net/
  http://rpm.pbone.net/
  二、软件包及软件包管理工具
  1. Linux软件包的组成部分:
  二进制程序安装路径:/bin, /sbin | /usr/bin, /usr/sbin | /usr/local/bin, /usr/local/sbin
  库文件安装路径:/lib, /usr/lib, /usr/local/lib    #库文件也是可执行程序,但是其本身不能单独执行
  配置文件安装路径:/etc
  帮助文件安装路径: /usr/share/doc, /usr/share/man    #路劲中有man手册,README,INSTALL;man的配置文件/etc/man .config,可定义默认搜索路径
  2.rpm包名含义
  bash-4.1.2-15.el6_4.x86_64
  bash:程序名
  4.1.2:4为主版本号,1是次版本号,2是发行号
  15.el6:rpm包的发行号
  el6:适用的操作系统;el6为Red Hat Enterprise Linux,rehl6的缩写
  x86_64:适用的cpu架构
  注:程序有时不止一个安装包,由主包和分包组成,rpm主包命名遵循上述格式如bind-9.8.2-0.17.rc1.el6.x86_64.rpm,分包命名时则类似bind-chroot-9.8.2-0.17.rc1.el6.x86_64.rpm,
  3.软件包管理工具的功能:打包、安装、查询、升级、卸载、校验、数据库管理(重建)
  其中rpm程序的打包过程是根据spec文件来完成的
  4.软件包管理工具打包程序的管理规则:
  (1).提供文件清单
  (2).提供文件安装路径
  (3).提供程序功能说明
  (4).提供文件依赖关系
  以上规则的遵循,为程序的部署安装提供了极大的便利
  三、安装程序的方式
  1.通用二进制文件
  2.软件包管理器,例如rpm
  3.软件包管理器的前端工具,例如yum
  4.源代码编译安
  四、rpm命令及常用选项
  rpm
  -i或--install:安装
  -v:显示详细信息;-vv,-vvv,v越多,表示详细级别越高,越来越详细
  -h:以井号显示安装进度,一个井号表示2%
  -l或--list:
  -d或--docfiles:
  1.安装
  常用安装选项组合:rpm -ivh packages_name    #以下的packages_name都表示rpm安装包
  忽略依赖关系安装:rpm -ivh packages_name --nodeps    #安装、卸载程序时都可以使用--nodeps忽略依赖关系
  测试安装:rpm -ivh packages_name --test
  重新安装:rpm -ivh packages_name --replacepkgs
  
  有时安装程序时有警告信息
warning: /etc/sysconfig/named created as /etc/sysconfig/named.rpmnew  此前可能已经有同样名字的配置文件,文件也是我们需要的,这时这种机制的存在则会创建一个新的配置文件而不覆盖设定好的配置文件
  
  2.卸载rpm -e packages_name
  卸载时,可能产生警告
warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave  这是由于我们修改过程序的配置文件,这种机制的存在让我们卸载程序时保留了我们可能已经设定好的配置文件
  3.查询rpm -q packages_name 或者 rpm --quare packages_name
[root@TESTHOST ~]# rpm -q apache
package apache is not installed    #显示未安装
[root@TESTHOST ~]# rpm -q bash
bash-4.1.2-15.el6_4.x86_64    #显示程序版本等信息                rpm -qa    查询所有已安装的包
[root@TESTHOST ~]# rpm -qa | grep "^bas"    #支持grep,但不支持globbing
basesystem-10.0-4.el6.noarch
bash-4.1.2-15.el6_4.x86_64
[root@TESTHOST ~]# rpm -qa | grep "^bin"
binutils-2.20.51.0.2-5.42.el6.x86_64
[root@TESTHOST ~]#  rpm -qi packages_name    查询软件包摘要信息    #此处的i亦可为--info
[root@TESTHOST ~]# rpm -qi bash
Name        : bash                         Relocations: (not relocatable)
Version     : 4.1.2                             Vendor: CentOS
Release     : 15.el6_4                      Build Date: 2013年07月18日 星期四 21时21分24秒
Install Date: 2015年04月10日 星期五 04时49分29秒      Build Host: c6b10.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: bash-4.1.2-15.el6_4.src.rpm
Size        : 3139291                          License: GPLv3+
Signature   : RSA/SHA1, 2013年07月18日 星期四 21时46分10秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.gnu.org/software/bash
Summary     : The GNU Bourne Again shell
Description :
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification.  查询包安装生成的文件清单:rpm -ql packages_name
  查询某文件是由哪个rpm安装生成的:rpm -qf /path/to/some_file
  查询包安装生成的配置文件:rpm -qc packages_name
  查询包安装生成的帮助文档 :rpm -qd packages_name
  -------------------------------------------------------------
  查询包相关的脚本:rpm –q --scripts packages_name
[root@TESTHOST ~]# rpm -q --scripts bash
postinstall scriptlet (using <lua>):
bashfound = false;
shfound = false;
f = io.open("/etc/shells", "r");
if f == nil
then
  f = io.open("/etc/shells", "w");
else
  repeat
    t = f:read();
    if t == "/bin/bash"
    then
      bashfound = true;
    end
    if t == "/bin/sh"
    then
      shfound = true;
    end
  until t == nil;
end
f:close()
f = io.open("/etc/shells", "a");
if not bashfound
then
  f:write("/bin/bash\n")
end
if not shfound
then
  f:write("/bin/sh\n")
end
f:close()
postuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ]; then
    /bin/grep -v '^/bin/bash$' < /etc/shells | \
      /bin/grep -v '^/bin/sh$' > /etc/shells.new
    /bin/mv /etc/shells.new /etc/shells
fi  以上脚本信息中关键词意思如下
  preinstall:安装前脚本
  postinstall:安装后脚本
  preuninstall:卸载前脚本
  postuninstall:卸载后脚本
  -------------------------------------------------------------
  查询尚未安装的包的相关信息:
  rpm -qpi /path/to/rpm_file
  4.升级
  -U:升级+安装,常用-Uvh
  -F:升级,常用-Fvh,与Uvh不同的是,如果不存在早期版本,程序将不会安装
      rpm -Uvh packages_name
  rpm -Fvh packages_name
  强行升级、安装时可加如下选项
  --force 强行升级
  --nodeps    忽略依赖关系
  注意:内核不应该升级,应该尽可能安装,它允许多版本并存
  5.校验rpm -V packages_name    或者--verify
[root@TESTHOST ~]# rpm -V zsh    #程序相关文件未修改时,执行命令后没有任何提示
[root@TESTHOST ~]# vim /etc/zlogin    #修改文件
[root@TESTHOST ~]# rpm -V zsh
S.5....T.  c /etc/zlogin    #执行命令后,出现相关提示信息,提示程序被改变过  提示信息能提示管理员,程序被改变的一些相关信息
  S file Size differs:文件大小改变  
      M Mode differs (includes permissions and file type):权限改变  
      5 digest (formerly MD5 sum) differs:MD5码改变  
      D Device major/minor number mismatch:设备的主次号改变  
      L readLink(2) path mismatch:readlink路径不匹配  
      U User ownership differs:属主改变  
      G Group ownership differs:属组改变  
      T mTime differs:最近一次的修改时间改变  
      P caPabilities differ:能力改变
  6.rpm数据库重建
  --initdb:新建,旧档不会被覆盖
  --rebuilddb:重建,旧档不会保存    #此选项常用
[root@TESTHOST ~]# rpm --rebuilddb  rpm包的数据库文件路径:/var/lib/rpm/
  五、其他
  
  rpm –K zsh-4.3.10-5.el6.x86_64.rpm    #检测来源合法和文件完整性    或者使用--checksig
  --nodigest    #不检测完整性
  --nosignature    #不检测合法性
  -------------------------------------------------------------
  rpm --improt /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6    #导入公共秘钥,RedHat系列官方公钥路径/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  -------------------------------------------------------------
  :有时用yum安装程序时,会产生如下警告
  warning: rpmts_HdrFromFdno: Header V3RSA/SHA1 Signature, key ID c105b9de: NOKEY
  Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  解决办法:
  1.添加参数 --nogpgcheck    #如果确认安装文件无问题,可以忽略检测来源合法性
  2.到yum源网站更新gpg-key后导入,例如
  [root@TESTHOST rpm-gpg]# wget http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-6
  [root@TESTHOST rpm-gpg]# rpm --improt /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-479128-1-1.html 上篇帖子: 对Linux 目录的认识 下篇帖子: linux的基本管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表