Linux之rpm软件管理

一、软件包管理器

  软件包管理器就是将二进制程序,库文件,配置文件,帮助文件打包成一个文件

    1.制作软件包

    2.安装、卸载、升级、查询、校验

  主流三大发行版 redhat,suse,debian

  redhat、suse:RPM(redhat package manager)      前端工具:yum

  debian:dpt         前端工具:dpt-get

  软件包之间存在依赖关系,解决依赖关系需要前端工具 yum 和 dpt-get

二、rpm命令简介

  rpm包含一个数据库:/var/lib/rpm

  重建数据库命令:rpm --rebuilddb

  rpm命名:安装、查询、卸载、升级、校验、数据库的重建等工作

三、rpm包的组成:

  主包:

    bind-9.7.1-1.i586.e15.rpm

  子包:

    bind-libs-9.7.1-1.i586.e15.rpm

    bind-utils-9.7.1-1.i586.e15.rpm

包名格式:

   name-version-release.arch.rpm

   bind-marjor.minor.release-release.arch.rpm   第一个release是软件开发者的版本号,release是rpm制作作者的编译版本号

主版本号:重大改进

次版本号:某个子功能发生重大变化

发行号:修正了部分bug,调整了一点儿功能

 

rpm包两种格式:

  二进制格式         源码格式:还需要进行单独的编译

    rpm包编译配置完成后,制作成rpm包

    bind-9.7.1-1.ppc.rpm ppc等于powerpc平台

uname -r当前系统版本号 or uname -a

 

四、rpm命令

1.rpm包安装

  rpm -i /PATH/TO/PACKAGE_FILE           

    -h用50个#号显示安装进度

    -v显示详细信息

[root@localhost Packages]# rpm -i zsh-4.3.11-4.el6_7.2.x86_64.rpm 

  rpm -ivh /path/to/package_file

    --nodeps: 忽略依赖关系,装了也用不了
    --replacepkg:从新安装,替换原有的安装
    --force:强行安装,实现重装或降级
[root@localhost Packages]# rpm -ivh zsh-4.3.11-4.el6_7.2.x86_64.rpm 
Preparing...                ########################################### [100%]
package zsh-4.3.11-4.el6_7.2.x86_64 is already installed

2.包查询

rpm -q PACEAGE_NAME
  -qa:查询已经安装了所有包
rpm -qi : package_name : 查询指定包的说明信息    i=information
  -ql 查看指定安装后生成的文件列表
rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的。
rpm -qc PACKAGE_NAME:查询指定包安装的配置文件
rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件
rpm -q --scripts PACKAGE_NAME: 查询指定包中安装的脚本
 
[root@localhost Packages]# rpm -q zsh
zsh-4.3.11-4.el6_7.2.x86_64

[root@localhost Packages]# rpm -qi zsh
Name        : zsh                          Relocations: (not relocatable)
Version     : 4.3.11                            Vendor: Red Hat, Inc.
Release     : 4.el6_7.2                     Build Date: Fri 11 Mar 2016 06:31:49 AM PST
Install Date: Thu 31 May 2018 03:20:06 AM PDT      Build Host: x86-029.build.eng.bos.redhat.com
Group       : System Environment/Shells     Source RPM: zsh-4.3.11-4.el6_7.2.src.rpm
Size        : 5298977                          License: BSD
Signature   : RSA/8, Mon 14 Mar 2016 03:32:00 AM PDT, Key ID 199e2f91fd431d51
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL         : http://zsh.sunsite.dk/
Summary     : A powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

[root@localhost Packages]# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
.....

[root@localhost Packages]# rpm -qf /usr/share/zsh/site-functions/
zsh-4.3.11-4.el6_7.2.x86_64

[root@localhost Packages]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

[root@localhost Packages]# rpm -qd zsh
/usr/share/doc/zsh-4.3.11/BUGS
/usr/share/doc/zsh-4.3.11/CONTRIBUTORS
/usr/share/doc/zsh-4.3.11/FAQ
......

[root@localhost Packages]# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
    echo "/bin/zsh" > /etc/shells
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi


if [ -f /usr/share/info/zsh.info.gz ]; then
# This is needed so that --excludedocs works.
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \
  --entry="* zsh: (zsh).   An enhanced bourne shell."
fi

......

 如果某个rpm包尚未安装,我们需要查询其说明信息,安装以后会生成的文件

rpm -qpi /path/to/package_file
rpm -qpl 查看软件包列表
[root@localhost Packages]# rpm -qpl zlib-devel-1.2.3-29.el6.x86_64.rpm 
/usr/include/zconf.h
/usr/include/zlib.h
/usr/lib64/libz.so
/usr/lib64/pkgconfig/zlib.pc
/usr/share/doc/zlib-devel-1.2.3
/usr/share/doc/zlib-devel-1.2.3/README
/usr/share/doc/zlib-devel-1.2.3/algorithm.txt
/usr/share/doc/zlib-devel-1.2.3/example.c
/usr/share/doc/zlib-devel-1.2.3/minigzip.c
/usr/share/man/man3/zlib.3.gz

3.软件包升级

  rpm -Uvh /path/to/new_package_file 如果有老板本的,则升级,否则,安装
  rpm -Fvh /path/to/new_package_file : 如果装有老版本的,则升级,否则退出
    --oldpackage安装低版本的(降级)
4.卸载
  rpm -e pacage_name
    --nodeps 忽略依赖关系
5.校验
  rpm -V package_name
6.重建数据库
  rpm
    --rebuilddb 在已有的数据库之上,重建数据库
    --initdb 初始化数据库 ,没有才建立,有就不建立(如果你删除了数据库,应该用这个命令进行创建,大部分的论坛会文档都是说使用rebuilddb,这是一个坑,请留意
7.检验来源合法性,及软件完整性
  加密类型
  对称 加密解密使用同一种加密算法
  公钥 一对密钥----公钥、私钥
  单向 单向加密又称为不可逆加密算法,在加密过程中不使用密钥,明文由系统加密处理成密文,密文无法解密。一般适合于验证,在验证过程中,重新输入明文,并经过同样的加密算法处理,得到相同的密文并被系统重新认证。广泛使用于口令加密。
  /etc/pki/rpm-gpg/中有加密算法文件
  导入密钥:rpm --import  /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  验证来源:rpm -K zsh***.rpm
    查看rpm密钥文件 #ls /etc/pki/rpm-gpg/
[root@localhost Packages]# rpm -K zsh-4.3.11-4.el6_7.2.x86_64.rpm 
zsh-4.3.11-4.el6_7.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

 

  

posted @ 2018-05-30 14:56  悠然书生  阅读(737)  评论(0)    收藏  举报