软件包管理

在 Linux(GNU/Linux)操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本。程序包管理器的只要功能是将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作。
RPM软件包分为二进制包(Binary)、源代码包(Source)。二进制包(由二进制文件、库文件、配置文件、帮助文件组成)可以直接安装在计算机中,而源代码包将会由软件包管理器自动编译、安装。

RPM包管理

RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统的既定软件标准,软件包是rpm文件。

RPM包特点

RPM是将你要安装的软件预先编译,打包成为RPM软件包,并把这个软件要安装的时候相关参数信息和依赖关系等记录在软件包里默认的数据库中。当安装时,RPM首先会检查软件安装环境,避免错误安装。然后按照软件包软件包里面的数据查询依赖关系是否满足,满足则安装否则不安装。而且安装的时候就将该软件的信息整个写入系统RPM的数据库中,以便未来的查询、验证与卸载。

RPM包命名格式

rpm包的命名格式:Name-Version-Relase.Arch.rpm (bash-4.2.3-3.centos5.x86_64.rpm)
Name:软件的名称
Version: 源代码版本
Release:发行版本号,通常是编译的次数。与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS
Arch硬件平台:
x86: i386, i486, i586, i686等32位CPU等;
x86_64: 64位的CPU
powerpc: IBM的PPC
noarch:通用的, 没有任何硬件等级上的限制。

RPM包获取途径

1、发行的光盘或站点服务器
2、项目的官网
3、通过搜索引擎搜索很多第三方机构或个人制作并公开发布的许多rpm包(要注意rpm的合法性和安全性)
RPM搜索引擎 :http://pkgs.orghttp://rpmfind.nethttp://rpm.pbone.nethttps://sourceforge.net/
4、可靠的途径:EPEL

rpm命令使用方法

RPM软件包的安装、删除、升级、查看和验证等所有的操作都由rpm这一命令来进行的。
rpm[模式][选项][参数]

模式

安装模式:rpm {-i |--install} [install-options] PACKAGE_File …
升级模式:rpm {-U|--upgrade} [install-options] PACKAGE_File …
卸载模式:rpm {-e|--erase} [erase-options]PACKAGE_Name …
查询模式:rpm {-q |--query } [select-options] [query-options]
验证模式:rpm {-V |--verify} [select-options] [verify-options]

选项

一般选项
选项 含义
-a 查询所有软件包;
-h或--hash 显示进度条;
-i 显示软件包的相关信息;
-l 显示软件包的文件列表;
-p (RPM包) 查询指定的RPM软件包;
-q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-s 显示文件状态,本参数需配合"-l"参数使用;
-v 显示指令执行过程;
-vv 详细显示指令执行过程,便于排错。

选择选项

select-options,用于查询和验证模式

选项 含义
-a 查询所有安装的软件包。
-f,--file FILE 查询拥有<文件>的软件包,即是哪一个软件包安装的<解文件>。
查询选项

query-options,可用于查询和验证模式

选项 含义
-i,--info 显示软件包的信息,包括名称、版本、描述信息。
-l,--list 列出这个软件包内所包含的文件。
--provides 显示这个软件包所提供的功能。
-R,--requires 查询安装该软件包所需要的其他软件包。
-s,--state 列出软件包中所有文件的状态。
验证选项

verify-options,只能用于验证模式

选项 含义
--nodeps 不验证依赖的软件包。
--nofiles 不验证软件包文件的属性。
安装选项

install-options,用于安装模式和升级模式

选项 含义
--replacepkgs 替换安装整个软件包
--replacefiles 不同包有相同的文件且在同一个路径下后面安装的包则替换安装相同文件
--force 强制覆盖安装
--nodeps 忽略软件包所依赖的其他软件强制安装
--test 模拟安装,软件包并不会实际安装到系统中,只是检查并显示可能存在的冲突。
删除选项

erase-options,只能用于删除模式。

选项 含义
--nodeps 忽略其他依赖该软件包的软件,强制删除该软件包。
--test 模拟删除

数据库管理

通过rpm 命令查询一个rpm 包是否安装了,也是通过rpm 数据库来完成的;有时rpm 系统出了问题,不能安装和查询,可能会是数据库出现问题,可以使用下面命令重建;
RPM包数据库目录:/var/lib/rpm
rpm --initdb:初始化数据库(如果事先没有库,会新建一个;如果有,则不新建;)
rpm --rebuilddb: 重建数据库(直接重建,覆盖原有的数据库)

YUM

YUM 基于 RPM 包管理工具,能够从指定的源空间(服务器,本地目录等)自动下载目标 RPM 包并且安装,可以自动处理依赖性关系并进行下载、安装,无须繁琐地手动下载、安装每一个需要的依赖包。此外,YUM 的另一个功能是进行系统中所有软件的升级。
YUM服务器存储了众多rpm 包,以及包的相关的元数据文件(放置于特定目录repodata 下)
YUM服务器常用文件传输协议:http://、https://、ftp://、file://

YUM命令使用方法

yum命令:yum [options] [command] [package ...]
[command]为所要进行的操作
[package ...]是操作的对象

选项 含义
-h 显示帮助信息;
-y 对所有的提问都回答“yes”;
-c 指定配置文件;
-q 安静模式;
-v 详细模式;
-d 设置调试等级(0-10);
-e 设置错误等级(0-10);
-R 设置yum处理一个命令的最大等待时间;
-C 完全从缓存中运行,而不去下载或者更新任何头文件。

参数选项

参数 含义
install 安装rpm软件包;
update 更新rpm软件包;
check-update 检查是否有可用的更新rpm软件包;
remove 删除指定的rpm软件包;
list 显示软件包的信息;
search 检查软件包的信息;
info 显示指定的rpm软件包的描述信息和概要信息;
clean 清理yum过期的缓存;
shell 进入yum的shell提示符;
resolvedep 显示rpm软件包的依赖关系;
localinstall 安装本地的rpm软件包;
localupdate 显示本地rpm软件包进行更新;
deplist 显示rpm软件包的所有依赖关系。

示例:

安装

yum install #全部安装
yum install package1 #安装指定的安装包package1
yum groupinsall group1 #安装程序组group1

更新和升级

yum update #全部更新
yum update package1 #更新指定程序包package1
yum check-update #检查可更新的程序
yum upgrade package1 #升级指定程序包package1
yum groupupdate group1 #升级程序组group1

查找和显示

yum info package1 #显示安装包信息package1
yum list #显示所有已经安装和可以安装的程序包
yum list package1 #显示指定程序包安装情况package1
yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包

删除程序

yum remove | erase package1 #删除程序包package1
yum groupremove group1 #删除程序组group1
yum deplist package1 #查看程序package1依赖情况

清除缓存

yum clean packages #清除缓存目录下的软件包
yum clean headers #清除缓存目录下的 headers
yum clean oldheaders #清除缓存目录下旧的 headers

包组管理的相关命令:

yum groupinstall group1 [group2] [...](安装包组)
yum groupupdate group1 [group2] [...](升级包组)
yum grouplist [hidden] [groupwildcard] [...](列出包组)
yum groupremove group1 [group2] [...](卸载包组)
yum groupinfo group1 [...](查看包组信息)

DPKG包管理

DPKG,全称为 Debian Package,最早是由Debian Linux社区所开发的,通过dpkg的机制,debian提供的软件就能简单的安装起来了,同时还能提供安装后的软件升级维护等,主要应用在debian和基于debian的发行版上。软件包是deb文件。
一个 DEB 包包含了已压缩的软件文件集以及该软件的内容信息(在头文件中保存),通常表现为以 .deb 扩展名结尾的文件,例如 package.deb 。对其操作,需要使用 dpkg 命令。
DPKG 命令常用参数
DPKG 的常规使用方法为 dpkg [options] Package

选项 含义
-i 安装软件包;
-r 删除软件包;
-P 删除软件包的同时删除其配置文件;
-L 显示于软件包关联的文件;
-l 显示已安装软件包列表;
--unpack 解开软件包;
-c 显示软件包内文件列表;
--confiugre 配置软件包。

示例:

dpkg -i package.deb 安装包
dpkg -r package删除包
dpkg -P package 删除包(包括配置文件)
dpkg -L package 列出与该包关联的文件
dpkg -l package 显示该包的版本
dpkg --unpack package.deb 解开deb包的内容
dpkg -S keyword #搜索所属的包内容
dpkg -l #列出当前已安装的包
dpkg -c package.deb #列出deb包的内容
dpkg --configure package 配置包

APT

APT 的全称为 Advanced Packaging Tools 。与 YUM 对应,它最早被设计成 DPKG 的前端软件,现在通过 apt-rpm 也支持 rpm 管理。而本节本节将介绍 APT 作为 DPKG 前端的使用。 APT 的主要包管理工具为 APT-GET,通过此工具可满足和上述 YUM 相似的功能要求。
APT 常用命令
apt-get update(更新源索引)
apt-get install package-name(安装指定软件)
apt-get source package-name(下载指定软件的源文件)
apt-get upgrade(将系统中所有软件升级到最新版本)
apt-get dist-upgrade(将操作系统连同所有软件升级到最新版本)
apt-get remove package-name(卸载指定软件)

软件包依赖关系

由于开源的多态性,Linux 操作系统中的软件之间的依赖性关系处理一直很头疼。如果 package_a 依赖于 package_b,那么在一个没有安装 package_b 的系统中,package_a 是不被系统推荐安装的,强制安装很可能会导致软件无法正常工作。而且实际应用中往往最头疼的是 package_a 依赖于 package_b/c/d/e/f 等多个包 , 而 package_b/c/d/e/f 等包又依赖与package_b1,b2,b3/c1,c2/d1,d2/e1,e2/f1,f2 等等 , 为保证软件的正常使用,必须找到所有依赖包以及子依赖包并且安装。过多的依赖关系大大降低了 Linux 软件安装的用户友好性。所以我们应该使用了更高级的包管理策略YUM/APT去解决

RPM↔DEB

Alien 工具可以将 RPM 软件包转换成 DEB 软件包,或把 DEB 软件包转换成 RPM 软件包,以此适应兼容性的需要。注意首先请在系统中安装 alien 。
在 UBUNTU 中使用 alien 将 rpm 转换为 deb 并安装 :
alien -d package.rpm ;dpkg -i package.deb
在 RHEL 中使用 alien 将 deb 转换为 rpm 并安装 :
alien -r package.deb ;rpm -ivh package.rpm

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 各大Linux发行版软件包管理参考(http://www.freeoa.net/osuport/botinstal...
    IRONYT阅读 7,267评论 0 12
  • RPM/DPKG 两大阵营简介在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG ...
    空语阅读 1,418评论 0 4
  • 目录:软件运行环境介绍包管理器rpm 包管理器的使用yum rpm包管理器前端工具的使用编译安装 一、软件运行环境...
    哈喽别样阅读 577评论 0 0
  • 软件运行和编译 链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接,分为静态链接和动...
    尘曦的雨阅读 229评论 0 0
  • 1、软件包基础:2、rpm包管理:3、移动lib64库文件修复过程:4、卸载内核修复过程 1、软件包基础 软件运行...
    ALuckyLive阅读 1,684评论 0 0