linux程序包管理命令rpm使用

目录

1、linux程序包的介绍
2、rpm的使用

一、linux程序包的介绍

1、程序包的功能:
    将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作。
2、程序包的组成:
    (1)RPM包内的文件
    (2)RPM的元数据,如名称,版本,依赖性,描述等
    (3)安装或卸载时运行的脚本
3、数据库:
    对于rpm包来说,/var/lib/rpm这个文件是非常重要的。如果删除这个文件,rpm的命令都不能正常的使用。可以进入救援模式修复。不过重新运行rpm可以自动生成其中的文件。但是与此前安装的不兼容。所以说这个文件非常重要。
            程序包名称及版本
            依赖关系
            功能说明
            包安装后声称的各文件路径及校验码信息
    二进制应用程序的组成部分:库文件、配置文件、二进制文件、帮助文件。
4、获取程序包的途径
    (1)系统发版的光盘或官方的服务器;
            CentOS镜像:
            https://www.centos.org/download/
            http://mirrors.aliyun.com
            http://mirrors.sohu.com
            http://mirrors.163.com
    (2)项目官方站点
    (3) 第三方组织:
            Fedora-EPEL:
            Extra Packages for Enterprise Linux
            Rpmforge:RHEL推荐,包很全
            搜索引擎:
            http://pkgs.org
            http://rpmfind.net
            http://rpm.pbone.net
            https://sourceforge.net/
    (4) 自己制作
    注意:如果第三方程序包要检查其的安全性,并且判断其的完整性。如果恶意添加脚本,可以使用命令rpm --test 检查。建议;以后生产环境中药安装一个程序包是先检查其的合法性,避免不必要的损失。

二、rpm

1、rpm的介绍
    rpm(简称RPM,全称为The RPM Package Manager)是在Linux下广泛使用的软件包管理器。RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身的软件包管理器(RPM Package Manager)。最早由Red Hat研制,现在也由开源社区开发。RPM通常随附于Linux发行版,但也有单独将RPM作为应用软件发行的发行版(例如Gentoo)。RPM仅适用于安装用RPM来打包的软件,目前是GNU/Linux下软件包资源最丰富的软件包类型之一。
2、rpm包的命令规则
    NAME-VERSION-RELEASE.arch.rpm
        VERSION:major.minor.release
    常见的arc:x86: i386, i486, i586, i686,x86_64: x64, x86_64, amd64
    noarch跟架构无任何联系;
    示例:zziplib - utils - 0.13.62 - 5.el7.x86_64.rpm
3、rpm包的类型说明
    Application-VERSION-ARCH.rpm:           主包 
    Application-devel-VERSION-ARCH.rpm      开发包
    Application-utils-VERSION-ARHC.rpm      工具包
    Application-libs-VERSION-ARHC.rpm       库包
4、 rpm命令的使用

(1)安装:

usage: rpm {-i|--install} [install-options] PACKAGE_FILE ...

-i ,–install :安装
-v ,–verbose:显示安装过程;
-vv:显示更详细的信息;利用这个选项可以查看安装过程出现错误的地方。
-h:以#显示程序包管理执行进度;

示例:
[root@centos7 ~]#rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
warning: /run/media/root/CentOS 7 x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:tree-1.6.0-10.el7 ################################# [100%]

[install-options]选项:

    --test :测试安装,不真正的安装程序包。
    --nodeps:忽略依赖关系;
    --nosignature:忽略签名;
    --replacepkgs:替代安装,如果安装过后误删除此包中的某个文件可以使用这个命令修复。
    --nodigest:不检查包的完整性;
    --noscripts:不运行程序包中的脚本; 
            %pre: 安装前脚本; --nopre
            %post: 安装后脚本; --nopost
            %preun: 卸载前脚本; --nopreun
            %postun: 卸载后脚本; --nopostun

(2)升级:在linux中不建议升级;

rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

update:安装有旧的程序包,则升级;如果没有旧的程序包,则安装;

rpm {-F|–freshen} [install-options] PACKAGE_FILE…

freshen:安装有旧的程序包,则升级;如果没有安装,则不执行操作;
–oldpackage:降级;
–force:强制安装;

注意:
1、不要对内核执行升级操作;linux内核中支持多内核并存,因此对内核直接安装先的内核即可;
2、如果原来程序包文件安装后被修改,升级时,新版本并不会覆盖原文件,而是直接创建新文件命名为.rpmnew。

(3)查询:

rpm {-q|–query} [select-options] [query-options]

-a:列出所有的包
-f:查看指定的文件由哪些程序包安装声称;
注意:查询的内容是数据库中的内容,与路径删除无关。

示例:
[root@centos7 ~]#rpm -qf /usr/bin/tree #查询这个文件是由哪个包声称;
tree-1.6.0-10.el7.x86_64

-p:针对尚未安装的程序包文件做查询 ;后面跟完整路径;
–whatrequires CAPABLITY:查询指定的XAPABILTY由哪个包所提供;

示例:
[root@centos7 ~]#rpm -q --whatprovides bash #后面跟能力
bash-4.2.46-20.el7_2.x86_64

–whatrequires CAPABLITY :查询执行的CAPABILTY被哪个包所依赖;

示例:
[root@centos7 ~]#rpm -q --whatrequires bash
jline-1.0-8.el7.noarch
dracut-033-463.el7.x86_64
initscripts-9.49.37-1.el7.x86_64
lvm2-2.02.166-1.el7.x86_64
rsyslog-7.4.7-16.el7.x86_64
PackageKit-command-not-found-1.0.7-6.el7.centos.x86_64
kpatch-0.3.2-1.el7.noarch
bash-completion-2.1-6.el7.noarch

[query-options]
–chagelog:查询rpm包的修改的日志信息;
-c :查询程序的配置文件;
-d:查询程序的配置文档;

示例:
[root@centos7 ~]#rpm -qc bash
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc

-i:查看程序包的信息;
-l:查看指定的程序包安正后生成的所有文件;
–scripts:程序包自带脚本;
–provides:列出执行程序包所提供的CAPABLTIY;

示例:
` [root@centos7 ~]#rpm -qp –provides /run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
warning: /run/media/root/CentOS 7 x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
tree = 1.6.0-10.el7

-R:查询指定的程序包所依赖的包(capability);

(4)卸载:

-e,–erase:卸载

示例
[root@centos7 ~]#rpm -e tree 直接加包名

(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 differ
    T mTime differs
    P capabilities differ

示例:
[root@centos7 ~]#chown wang /usr/bin/tree
[root@centos7 ~]#ll /usr/bin/tree
-rwxr-xr-x. 1 wang root 62768 Jun 10 2014 /usr/bin/tree
[root@centos7 ~]#rpm -V tree
.....U... /usr/bin/tree

安装时rpm会自动检测是否程序包合法。它工作是根据一个秘钥实现的。RPM-GPG-KEY-CentOS-NUMBER
如果没有导入秘钥会出现,下面情况:
[root@centos7 ~]#rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm 
warning: /run/media/root/CentOS 7 x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY   #显示没有密钥,警告!
Preparing...                          ################################# [100%]
Updating / installing...1:tree-1.6.0-10.el7                ################################# [100%]
导入公钥:
[root@centos7 ~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    或
[root@centos7 CentOS 7 x86_64]#ls
CentOS_BuildTag  GPL  LiveOS    RPM-GPG-KEY-CentOS-7
EFI images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA  isolinux  repodata  TRANS.TBL
[root@centos7 CentOS 7 x86_64]#rpm --import RPM-GPG-KEY-CentOS-7

-K |checksig :检测包的完整性和签名;

示例:
[root@centos7 ~]#rpm -K /run/media/root/CentOS\ 7\ x86_64/Packages/zziplib-utils-0.13.62-5.el7.x86_64.rpm
/run/media/root/CentOS 7 x86_64/Packages/zziplib-utils-0.13.62-5.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

(6)rpm数据库 /var/lib/rpm

–initdb 如果实现不存在数据库,则新建,否则,不执行;
–rebuilddb 重建已经安装的包头的数据库索引目录;

5、 rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包名  |cpio -iv 指定路径
这种安装有问题,可能所有主、所属组、权限不一样。
rpm2cpio 包文件|cpio –id  “*.conf” 释放包内文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值