linux自学笔记——rpm程序包管理

简介:

         RPM是Redhat PackageManager(RPM程序包管理器)的缩写,这一文件格式名称虽然打上了Redhat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、Suse以及Turbo Linux的分发版本也都有采用。RPM程序包管理器可分为安装、升级、卸载、查询、校验等五种功能,以下我们将会对这五种功能的相应的用法一一说明。

 

RPM程序包:

      源代码:name-VERSION.tar.gz    源代码由RPM自动编译安装;

           VERSION: major.minor.release     主版本号.次版本号.源代码的发行版本号

RPM包的命名格式:

      name-VERSION-release.arch.rpm

           VERSION: major.minor.release

           release.arch: RPM包的发型号,同时release还包含此包适用的os

                 release.os: 2.e17.i386.rpm

                 archetcture:i386,x64,ppc,noarch

           例如:源代码经RPM编译后将会变成如下的包名:

           redis-3.0.2.tar.gz -->redis-3.0.2-1.centos.x64.rpm

RPM包的依赖关系:

      X,Y,Z

           X--? Y,Z  (X依赖于Y,Z)即要想安装X包,必须首先安装Y,Z这两个程序包;

      当然,也有一些前端工具可以自动解决依赖关系:

      yum:rhel系列系统上rpm包管理器的前端工具;

      apt-get(apt-cache):deb包管理器的前段工具;

      zypper:suse的rpm管理器的前段工具;

      dnf:Fedora 22+系统上rpm包管理器的前端工具;

程序包管理器:

      功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作:

1.     程序包的组成清单(每个程序包都单独实现)

文件清单

安装或卸载时运行的脚本

2.     数据库(公共)

程序包的名称和版本;

依赖关系;

功能说明;

安装生成的各文件的文件路径及校验码信息;

获取程序包的途径:

(1)            系统发行版的光盘或官方的文件服务器(或镜像站点):

http://mirrors.aliyun.com;

http://mirrors.sohu.com;

http://mirrors.163.com;

(2)            项目的官方站点

(3)            第三方组织

(a)            EPEL

(b)           搜索引擎

http://pkgs.org;

http://rpmfind.net;

http://rpm.phone.net;

      建议:检查其合法性

           来源的合法性;

           程序包的完整性;

Centos系统上rpm命令管理程序包:

      安装、升级、卸载、查询和校验、数据库维护

      rpm命令:rpm - RPM Package Manager

                 rpm [OPTIONS] [PACKAGE_FILE]

           安装:-i,--install;

           升级:-U,--update;-F,--freshen;

           卸载:-e,--erase;

           查询:-q,--query;

           校验: -V,--verify;

           数据库维护: --builddb,--initdb;

 

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

           rpm –ivh PACKAGES_FILE …

           GENERAL OPTIONS:

                 -v:verbose,详细信息;

                 -vv:更详细的输出;

           [install-options]

                 -h: hash marks输出进度条;每个#号表示2%的进度;

                 --test:测试安装,检查并报告依赖关系及冲突消息等;

                 --nodeps:忽略依赖关系,强烈不建议;

                 wKiom1mMH0Ly9tdeAAAT1NDnceM016.png-wh_50

                 --replacepkgs:重新安装

                 wKioL1mMH2bwYVulAAAfF8_IzHo439.png-wh_50

           注意:rpm可以自带脚本:

                 四类:--noscripts

                      preinstall:开始安装之前运行的脚本,%pre,--nopre

                      postinstall:安装过程完成之后运行的脚本,%post,--nopost

                      preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,--nopreun

                      postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun

                 --nosignature:不检查包签名信息,不检查来源合法性;

                 --nodigest:不检查包完整性信息;

                       wKiom1mMH36DZ5tWAAAjSk7XY5A715.png-wh_50

      我们将通过以下实例对rpm的安装功能的用法进行具体说明:

1.     首先我们把虚拟机的centos6.6的光盘镜像挂载至本地/media/cdrom中,挂载为只读模式,切查看是否挂载成功;

 wKiom1mMIKXAYZZsAAAyPFcKs5A409.png-wh_50

2.     进入/media/cdrom/Packages目录,安装zsh-4.3.10-7.el6.x86_64.rpm;

wKiom1mMH7qApFdHAAAYXpvhRS8310.png-wh_50

     

      查询:

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

           [select-options]

                 PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;

                 -a,--all:查询所有的已经安装过的包;

                 -f   FILE:查询指定的文件由那个程序包安装生成;

                 -p,--packagePACKAGE_FILE:用于实现对未安装的程序包执行查询操作

                 --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;

                 --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

 

           [query-options]

                 --changelog:查询rpm包的changelog;

                 -l,--list:程序安装生成的所有文件列表;

                 -i,--info:程序包的相关信息,版本号,大小,所属的组,等;

                 -c,--configfiles:查询指定的程序包提供的配置文件;

                 -d,--docfiles:查询指定的程序包提供的文档;

                 --provides:列出指定的程序包提供的所有的CAPABILITY;

                 -R,--requires:查询指定的程序包的依赖关系;

                 --scripts:查看程序包自带的脚本片段;

           用法:

                 -qi PACKAGE: 程序包的相关信息,版本号,大小,所属的组,等;

                 wKiom1mMH9zhzFkgAACBVH9HWc8269.png-wh_50

                 -qf FILE:查询指定的文件由那个程序包安装生成;

                 wKiom1mMH-nyIJ5ZAAAKXANMEeo597.png-wh_50

                 -qc PACKAGE:查询指定的程序包提供的配置文件;

                 wKiom1mMH_OSO_35AAAQAoczxTY130.png-wh_50

                 -ql PACKAGE:程序安装生成的所有文件列表;

                  wKiom1mMIMfCQTaVAAAcyfTT-u4615.png-wh_50

                 -qd PACKAGE:查询指定的程序包提供的文档;

                 wKioL1mMIBfiI4ajAACBC_zS_2E938.png-wh_50

                 -qpi  PACKAGE_FILE:对未安装的程序包的信息,版本等等进行查询操作;

                 wKiom1mMICThZD2KAABzbHfb3do064.png-wh_50

                 -qpl PACKAGE_FILE

                 -qpc PACKAGE_FILE

                 -qlf  FILE:查询指定的文件所在的安装包中文件分别被安装到哪个目录下;

                 wKiom1mMIDnyQkRdAABK7alsYPA187.png-wh_50

      升级:

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

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

                 -U:升级或安装;

                 -F:升级

           rpm -Uvh PACKAGE_FILE ...

           rpm -Fvh PACKAGE_FILE ...

                 --oldpackage:降级;

                 --force:强制升级;

           wKiom1mMIEfhvlh6AAAeALjDNHg133.png-wh_50

           可以看出,rpm –U 选项既可以升级也可以安装,而-F选项只能升级。

      卸载:                    

           rpm {-e|--erase} [--allmatches][--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

                 --allmatches:卸载所有匹配指定名称的程序包的各版本;

                 --nodeps:忽略依赖关系

                 --test:测试卸载,dry run模式

      校验:

           rpm {-V|--verify} [select-options][verify-options]

 

           S file Size differs  #文件大小

           M Mode differs (includes permissionsand file type)  #模式

           5 digest (formerly MD5 sum) differs  #MD5校验码

           D Device major/minor number mismatch    #设备号

           L readLink(2) path mismatch#路径

           U User ownership differs  #所属用户

           G Group ownership differs    #所属组

           T mTime differs   #修改时间

           P caPabilities differ           #性能

      例:

           wKiom1mMIFXDRMNHAAAqac7OQwA441.png-wh_50

      包来源合法性验证和完整性验证:

           来源合法性验证:

           完整性验证:

           获取并导入信任的包制作者的秘钥:

                 对于centos发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

           验正:

                 (1) 安装此组织签名的程序时,会自动执行验正;

                 (2) 手动验正:rpm -KPACKAGE_FILE

      数据库的重建:

           rpm管理器数据库路径:/var/lib/rpm/

           wKiom1mMIGHBmxPrAAAlJ-i3cfg724.png-wh_50

                 查询操作:通过此处的数据库进行;

           获取帮助:

                 Centos6:man rpm

                 Centos7:man rpmdb

           rpm {--initdb|--rebuilddb} [--dbpathDIRECTORY] [--root DIRECTORY]

                 --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当时有时不执行任何操作                --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

          




本文转自 claude_liu 51CTO博客,原文链接:http://blog.51cto.com/claude666/1955188,如需转载请自行联系原作者
相关文章
|
28天前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
【Shell 命令集合 网络通讯 】Linux 配置和管理网络流量的形状 shapecfg命令 使用指南
38 0
|
23天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
54 5
|
28天前
|
域名解析 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
49 1
|
28天前
|
监控 Linux Shell
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
【Shell 命令集合 网络通讯 】Linux管理终端设备的登录过程 getty命令 使用指南
32 0
|
28天前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
32 2
|
10天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
4天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
98 2
|
11天前
|
存储 缓存 监控
Linux内存和硬盘空间管理技巧
了解Linux内存和硬盘管理技巧,提升系统性能和稳定性。使用`free`, `top`, `vmstat`监控内存,通过`sync`, `echo 1 > /proc/sys/vm/drop_caches`清理缓存。利用Swap分区释放内存。借助`df`, `du`检查硬盘空间,清理无用文件,使用`clean-old`, `gzip`, `tar`压缩归档。查找大文件用`find`和`du`,确保
32 0
|
14天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
18天前
|
存储 固态存储 Unix
Linux中磁盘分区和文件系统管理
在Linux系统中,磁盘是存储数据的物理设备,如HDD或SSD,以文件形式存在于`/dev`目录下,如`sda`、`sdb`等。文件系统定义了如何在磁盘上组织和访问数据,常见的Linux文件系统有ext2、ext3、ext4、xfs等。通过虚拟机软件如VMware,用户可以向Linux虚拟机添加新的硬盘。