• rpm软件包以及rmp命令


    Linux下的软件包分为源码包和二进制包

    源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。安装时会进行编译,比较耗时,容易出错。

    二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小。

    二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包。目前主要有以下 2 大主流的二进制包管理系统:

    • RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
    • DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。

    以下是使用rpm命令管理apm二进制软件包的说明。

    RPM包默认安装路径

    通常情况下,RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散安装到表 1 所示的目录中。

    表 1 RPM 包默认安装路径
    安装路径含 义
    /etc/ 配置文件安装目录
    /usr/bin/ 可执行的命令安装目录
    /usr/lib/ 程序所使用的函数库保存位置
    /usr/share/doc/ 基本的软件使用手册保存位置
    /usr/share/man/ 帮助文件保存位置


    RPM 包的默认安装路径可以通过命令查询的。

    除此之外,RPM 包也支持手动指定安装路径,但此方式并不推荐。因为一旦手动指定安装路径,所有的安装文件会集中安装到指定位置,且系统中用来查询安装路径的命令也无法使用(需要进行手工配置才能被系统识别),得不偿失。

    RPM 包的安装

    rpm -ivh 包全名

    注意一定是包全名。涉及到包全名的命令,一定要注意路径,可能软件包在光盘中,因此需提前做好设备的挂载工作。

    此命令中各选项参数的含义为:

      • -i:安装(install);
      • -v:显示更详细的信息(verbose);
      • -h:打印 #,显示安装进度(hash);

    一次性安装多个软件包,仅需将包全名用空格分开即可

    rpm -ivh a.rpm b.rpm c.rpm

    RPM包的升级

    rpm -Uvh 包全名

    -U(大写)选项的含义是:如果该软件没安装过则直接安装;若没安装则升级至最新版本。

     rpm -Fvh 包全名

    -F(大写)选项的含义是:如果该软件没有安装,则不会安装,必须安装有较低版本才能升级。

    RPM包的卸载

     rpm -e 包名

    RPM 软件包的卸载要考虑包之间的依赖性。例如,我们先安装的 httpd 软件包,后安装 httpd 的功能模块 mod_ssl 包,那么在卸载时,就必须先卸载 mod_ssl,然后卸载 httpd,否则会报错。

    查询软件包是否安装

    rpm -q 包名

    -q 表示查询,是 query 的首字母。

    如果已经安装直接返回包全名, 如果没有安装则提示没有安装。注意使用此命令 包名必须完全正确

    [root@localhost vagrant]# rpm -q httpd 
    httpd-2.4.6-89.el7.centos.1.x86_64
    [root@localhost vagrant]# rpm -q httpddd 
    package httpddd is not installed

    查询系统中所有安装的软件包

    rpm -qa

    此命令列出所有已经安装的软件包,通常配合grep一起使用,可以查询已经安装的包含某些关键字的软件包。如下

    [root@localhost ~]# rpm -qa | grep httpd
    httpd-devel-2.2.15-15.el6.centos.1.i686
    httpd-tools-2.2.15-15.el6.centos.1.i686
    httpd-manual-2.2.15-15.el6.centos.1.noarch
    httpd-2.2.15-15.el6.centos.1.i686

    查询已经安装软件包的详细信息

    rpm -qi 包名

    -i 选项表示查询软件信息,是 information 的首字母。

    只使用 -q 只返回包全名, 使用 -qi 可以返回软件包的详细信息。 如果软件未安装,则提示未安装。查询的包名必须完全正确。

    [root@localhost vagrant]# rpm -qi httpd
    Name        : httpd
    Version     : 2.4.6
    Release     : 89.el7.centos.1
    Architecture: x86_64
    Install Date: Thu 12 Sep 2019 06:17:11 AM UTC
    Group       : System Environment/Daemons
    Size        : 9817317
    License     : ASL 2.0
    Signature   : RSA/SHA256, Wed 31 Jul 2019 03:37:23 AM UTC, Key ID 24c6a8a7f4a80eb5
    Source RPM  : httpd-2.4.6-89.el7.centos.1.src.rpm
    Build Date  : Mon 29 Jul 2019 05:21:18 PM UTC
    Build Host  : x86-02.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://httpd.apache.org/
    Summary     : Apache HTTP Server
    Description :
    The Apache HTTP Server is a powerful, efficient, and extensible
    web server.
    [root@localhost vagrant]# rpm -qi http
    package http is not installed

    查询已经下载的软件包的详细信息

    rpm -qip 绝对路径+包全名

    -p 选项表示查询下载好的软件包,是 package 的首字母。

    如果软件包已经下载了,但还没有安装时,要查询相关信息,可以使用此命令

    注意,这里用的是包全名,且未安装的软件包需使用“绝对路径+包全名”的方式才能确定包。

    查询已安装的软件包的文件列表

    rpm -ql 包名

    -l 选项表示列出软件包所有文件的安装目录

    查询下载的未安装软件包的文件列表

    rpm -qlp 绝对路径+包全名

    -p 选项表示查询未安装的软件包信息,是 package 的首字母。

    如果想要看一下某个软件包包含哪些文件,但此软件包还没有安装时可以使用此命令。如果已经安装了使用-ql会更加简洁。

    由于软件包还未安装,因此需要使用“绝对路径+包全名”的方式才能确定包。

    [root@localhost ~]# rpm -qlp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
    /etc/NetworkManager/dispatcher.d/13-named
    /etc/logrotate.d/named
    /etc/named
    /etc/named.conf
    /etc/named.iscdlv.key
    /etc/named.rfc1912.zones
    …省略部分输出…

    查询系统文件属于哪个RPM包

    rpm -ql 命令是通过软件包查询所含文件的安装路径,rpm 还支持反向查询,即查询某系统文件所属哪个 RPM 软件包。其命令格式如下

    rpm -qf 系统文件名

    -f 选项的含义是查询系统文件所属哪个软件包,是 file 的首字母。

    注意,只有使用 RPM 包安装的文件才能使用该命令,手动方式建立的文件无法使用此命令。

    [root@localhost etc]# rpm -qf /etc/php.ini
    php-common-7.3.9-1.el7.remi.x86_64

    查询已安装的软件包的依赖关系

    使用 rpm 命令安装 RPM 包,需考虑与其他 RPM 包的依赖关系。rpm -qR 命令就用来查询某已安装软件包依赖的其他包,该命令的格式为:

    rpm -qR 包名

    -R(大写)选项的含义是查询软件包的依赖性,是 requires 的首字母。

    查询未安装的软件包的依赖关系

    rpm -qRp 绝对路径+包全名

    如下

    rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm

    p 指的是下载好的软件包(package),这个软件包可能已经安装了,也可能没有安装。后面跟的已下载的软件包的保存路径

    注意,前面说的包名和包全名不是一回事。包名是包全名的一部分。

    包全名的命名规则

    包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名

    用户通过名称就可以直接获取这类包的版本、适用平台等信息。

    例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中:

      • httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的,在某些 Linux 命令中,有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)使用的是包名,一不小心就会弄错。
      • 2.2.15:包的版本号,版本号的格式通常为主版本号.次版本号.修正号
      • 15:二进制包发布的次数,表示此 RPM 包是第几次编程生成的。
      • el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
      • centos:表示此包适用于 CentOS 系统。
      • i686:表示此包使用的硬件平台,目前的 RPM 包支持的平台如表 1 所示:

        表 1 RPM 包适用的硬件平台
        平台名称适用平台信息
        i386 386 以上的计算机都可以安装
        i586 686 以上的计算机都可以安装
        i686 奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,所以这个软件版本居多
        x86_64 64 位 CPU 可以安装
        noarch 没有硬件限制
  • 相关阅读:
    解决淘淘第三天无法显示图片
    包名与工程名
    明明有这个类却提示出错
    出错,网页显示不出内容
    配置域名
    本地jar包添加到maven仓库
    POJ1704 Georgia and Bob 博弈论 尼姆博弈 阶梯博弈
    POJ 2960 S-Nim 博弈论 sg函数
    sg函数总结
    POJ 2425 A Chess Game 博弈论 sg函数
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/11655563.html
Copyright © 2020-2023  润新知