Linux系统软件包管理攻略

更新:10-29 现代故事 我要投稿 纠错 投诉

很多朋友对于Linux系统软件包管理攻略和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

如何使用RPM命令参数

上述一些参数需要组合使用。例如rpm -h package.rpm 无意义,而rpm -ih package.rpm 表示安装软件包,并使用#符号显示安装进度。

安装RPM包

rpm -ivh package.rpm

升级RPM包命令

rpm -Uvh package.rpm

卸载RPM 包命令

rpm -ev package

查询rpm包命令包含的文件列表

rpm -qlp package

查询rpm包命令包含的文件列表

rpm -qlp package

查询RPM包命令包含的内容信息

rpm -qip package

查询系统中所有已安装的RPM包

rpm -qa

RPM包管理示例

以下步骤介绍了普通用户安装IBM Lotus Notes V85(以下简称Notes)的典型操作流程。 Notes 的RPM 软件包名称为ibm_lotus_notes-8.5.i586.rpm。

首先检查系统中是否已经存在该软件# rpm -qa | grep ibm_lotus_notes

如果返回信息为空,则说明该软件尚未安装。

查询Notes 软件包的内容: # rpm -qip ibm_lotus_notes-8.5.i586.rpm Name : ibm_lotus_notes Relocations: /opt/ibm/lotus/notes Version : 8.5 Vendor: IBM Release : 20081211.1925 Build Date: Sat 13 2008 09:38:55 AM CST 安装日期: (未安装) Build Host: dithers.notesdev.ibm.com 组: 应用程序/Office 源RPM: ibm_lotus_notes-8.5-20081211.1925.src.rpm 大小: 603779427 License: 商业签名: DSA/SHA1,200 年12 月13 日星期六0 9:43:02 AM CST,钥匙ID 314c8c6534f9ae75 摘要: IBM Lotus Notes 描述: IBM Lotus Notes 软件提供了强大的.

安装Notes:# rpm -ivh ibm_lotus_notes-8.5.i586.rpm

返回信息:

正在准备. ########################################### [100% ] 1:ibm_lotus_notes ########################################[100%]

升级注意事项:如果以后需要升级到基于此版本的更高版本的Notes(slit.0 - ibm_lotus_notes-9.0.i586.rpm),请使用-U 参数:

rpm -Uvh ibm_lotus_notes-8.5.i586.rpm

如果这一步使用-i,系统通常会报文件冲突错误,无法正常安装。

卸载注意事项请注意,卸载软件时,请使用软件名称,而不是软件包文件名:

rpm -ev ibm_lotus_notes

返回顶部

DEB包安装/升级/查询/卸载

DEB 包包含一组压缩的软件文件和有关软件内容的信息(保存在头文件中),通常由以.deb 扩展名结尾的文件表示,例如package.deb。要对其进行操作,需要使用dpkg命令。下面介绍dpkg工具的参数和使用方法,并以在UBUNTU 904上安装IBM Lotus Notes为例进行详细说明。

DPKG命令常用参数

DPKG的一般用法是dpkg -?软件包(.rpm),在哪里-?是安装参数(更多信息请查阅帮助$man rpm):

-l 查询系统中软件内容信息

--info 查询系统中的软件或查询指定rpm包的内容信息

-i 在系统上安装/升级软件

-r 从系统中卸载软件而不删除配置文件

-P 从系统中卸载软件及其配置文件

如何使用DPKG命令参数

安装DEB包命令

$ sudo dpkg -i package.deb

升级DEB包命令

$ sudo dpkg -i package.deb (与安装命令相同)

卸载DEB包命令

$ sudo dpkg -r package.deb # 不卸载配置文件或$ sudo dpkg -P package.deb # 卸载配置文件

查询DEB包命令包含的文件列表

$ sudo dpkg-deb -c package.deb

查询DEB包命令包含的内容信息

$ dpkg --info package.deb

查询系统中所有已安装的DEB包

$dpkg -l 软件包

DEB包管理示例

以下步骤介绍了普通用户安装IBM Lotus Notes V85(以下简称Notes)的典型操作流程。 Notes 的DEB 软件包名称为ibm_lotus_notes-8.5.i586.deb。

首先检查系统中是否已经存在该软件$ dpkg -l ibm-lotus-*

如果系统上从未安装过Lotus 产品,则返回消息为:

未找到与ibm-lotus-* 匹配的pakcages

如果系统上已安装Lotus产品但已被删除,则返回信息为:

pn ibm-lotus-notes 无(无可用描述)

查询Notes包的内容: $ dpkg --info ibm_lotus_notes-8.5-i586.deb

返回信息:

新的Debian 软件包,版本2.0。大小335012296 字节: 控制归档=231821 字节。 Package: ibm-lotus-notes Version: 8.5-20081211.1925 Section: IBM Priority: extra Architecture: i386 Installed-Size: 6194 44 Maintenanceer: IBM Lotus 产品描述: IBM Lotus Notes IBM Lotus Notes 软件提供了强大的.

安装Notes:$ sudo dpkg -i ibm_lotus_notes-8.5.i586.deb

返回信息:

(正在读取数据库.当前安装的151150 个文件和目录。)准备替换ibm-lotus-notes 8.5-20081211.1925(使用ibm-lotus-notes-higher-version.i586.deb).拆包替换ibm-lotus- Notes .设置ibm-lotus-notes(更高版本).

升级说明: $ sudo dpkg -i ibm_lotus_notes-8.5.i586.deb

返回信息:

(正在读取数据库.当前安装的151150 个文件和目录。)准备替换ibm-lotus-notes 8.5-20081211.1925(使用ibm-lotus-notes-higher-version.i586.deb).拆包替换ibm-lotus- Notes .设置ibm-lotus-notes(更高版本).

卸载注意事项请注意,卸载软件时,请使用软件名称,而不是软件包文件名:

$ sudo dpkg -P ibm-lotus-notes

返回顶部

包依赖项

由于开源的多态性,处理Linux操作系统中软件之间的依赖关系一直是令用户头疼的问题。如果package_a依赖于package_b,那么在没有安装package_b的系统中,不建议系统安装package_a。强制安装很可能会导致软件无法正常使用。基于上述package_a和package_b之间的关系,在干净的系统中(未安装package_a或package_b),当尝试安装package_a时,错误通常会出现为:

RHEL 5.2

rpm -ivh package_a.rpm error: Failed dependencies: pacakge_b = version info is needed by package_a

Ubuntu 904

$ sudo dpkg -i package_a.deb dpkg: 关于包含包的package_a.deb,预依赖问题lm: package_a 预依赖于package_b (版本信息) dpkg: 处理package_a.deb 时出错(--install): 预依赖问题- 未安装package_a处理: package_a.deb时遇到错误

查询软件包依赖关系

查询rpm包的依赖关系,使用rpm -qRp:

rpm -qRp package_a.rpm package_b = version_info 或 package_b = version_info 或 package_b= version_info

表示package_a.rpm 依赖于package_b 的version_info,或以上任何版本的package_b(包括version_info),或以下任何版本的package_b(包括version_info)。所以package_b.rpm必须在package_a之前安装在系统中。

要查询DEB包的依赖关系,可以解释dpkg --info结果中的Pre-Depends字段:

$ dpkg --info package_a.deb Pre-depends: package_b (=version_info) Depends: package_b (=version_info) 或Pre-depends: package_b (=version_info) Depends: package_b (=version_info) 或Pre-depends: package_b (=version_info) Depends: package_b (=版本信息)

指示package_a.deb 依赖于package_b 的version_info 版本,或者package_b 高于且包含package_b 的version_info 或低于或包含package_b 的version_info 的任何版本。因此package_b.deb 必须在package_a 之前安装在系统上。

所以正确的安装方法如下一节所示。

安装方法

对于package_a,正确的安装方法应该是:

RPM # rpm -ivh package_b.rpm # rpm -ivh package_a.rpm ##DEB $ sudo dpkg -i package_b.deb $ sudo dpkg -i package_a.deb

嵌套依赖项

上面的例子是最理想的依赖关系。实际应用中,用户最麻烦的就是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。

更友好的包管理软件——YUM

百胜餐饮集团

YUM 是基于RPM 的包管理工具。它可以自动从指定的源空间(服务器、本地目录等)下载并安装目标RPM包。它可以自动处理依赖关系并下载和安装。无需每次需要都手动下载并安装。依赖包。另外,YUM的另一个功能是升级系统中的所有软件。上面提到,YUM 的RPM 包来自源码空间,在RHEL 中通过/etc/yum.repos.d/目录下的.repo 文件配置来指定,如rhel-debuginfo.repo 的内容:

rhel-debuginfo.repo

[rhel-debuginfo] name=Red Hat Enterprise Linux 5Client - i386 - 调试baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/i386/Debuginfo/enabled=0 gpgcheck=1 gpgkey=file: ///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

YUM的系统配置文件位于/etc/yum.conf,内容如下:

[主要]cachedir=/var/cache/yum keepcache=1 debuglevel=2 pkgpolicy=最新日志文件=/var/log/yum.log distroverpkg=redhat-release 宽容=1 exactarch=1 obsoletes=1 gpgcheck=1 plugins=1排除=火狐gftp

配置文件用于定义用户期望的yum 行为。例如gpgcheck表示安装时不进行gpg验证,exclusion=firefox gftp表示全系统软件升级时不升级firefox和gftp。

YUM常用命令

安装指定软件:

yum -y install package-name

列出系统中已安装的软件

yum list

列出系统中所有可以升级的软件

yum check-update

升级系统中所有可升级的软件

yum update

升级指定软件

yum update package-name

接收升级过程中的所有互动问答

yum -y update

卸载指定软件

yum remove package-name

有关YUM 的更多信息,请参阅http://fedoraproject.org/wiki/Tools/yum。

更友好的包管理软件——APT

易于

APT的全称是Advanced Packaging Tools。对应YUM,最初被设计为DPKG的前端软件,现在也支持通过apt-rpm进行rpm管理。本节我们将介绍使用APT作为DPKG的前端。 APT的主要包管理工具是APT-GET,它可以满足类似于上述YUM的功能需求。

APT的软件源定义来自于/etc/apt/sources.list文件:

Seehttp://help.ubuntu.com/community/UpgradeNotesfor how to upgrade to # newer versions of the distribution. debhttp://cn.archive.ubuntu.com/ubuntu/hardy main restricted deb-srchttp://cn.archive.ubuntu.com/ubuntu/hardy main restricted

注意,每次手动修改上述文件时,都需要使用sudo apt-get update 来更新系统的源,以便新的源数据能够被当前系统识别。

UBUNTU中APT的配置文件位于/etc/apt/apt.conf.d,多个配置文件按功能分类。

APT常用命令

更新源索引

$ sudo apt-get 更新

安装指定软件

$ sudo apt-get install 软件包名称

下载指定软件的源文件

$ sudo apt-get 源包名称

将系统中所有软件升级到最新版本

$ sudo apt-get 升级

将操作系统以及所有软件升级到最新版本

$ sudo apt-get dist-upgrade

卸载指定软件

$ sudo apt-get 删除包名

有关APT 的更多信息,请参阅http://www.debian.org/doc/manuals/apt-howto/index.en.html。

返回顶部

RPM 和DEB 兼容性- Alien

Alien 工具可以将RPM 包转换为DEB 包,或将DEB 包转换为RPM 包,以满足兼容性需求。注意,请先在系统中安装alien。

在UBUNTU中使用alien将rpm转换为deb并安装:

$ sudo Alien -d package.rpm $ sudo dpkg -i package.deb

在RHEL中使用alien将deb转换为rpm并安装:

alien -r package.deb # rpm -ivh package.rpm

更多关于alien的信息请参考http://linux.die.net/man/1/alien

返回顶部

总结

本文以RHEL 5.2和Ubuntu 904为例,基于命令行操作,介绍Linux系统中两种常用的软件包管理工具——RPM和DPKG。首先从最底层的rpm/dpkg命令操作开始,列出了它们的基本使用方法,然后指出了软件的依赖关系以及由此带来的问题,而这个问题的解决方案也是前面最流行的YUM和APT结束。介绍了软件管理系统的操作。最后,本文简要介绍了当前RPM/DEB 兼容性问题的常见解决方案。

返回顶部

常见问题列表

是否可以手动强制RPM/DEB 不进行依赖项检查?

转速确实如此。使用--nodeps辅助参数,安装过程会忽略依赖限制,强制安装目标包,如:

rpm -i --nodeps package_a.rpm

DEB 好的。使用--force-depends辅助参数,如:

$ sudo dpkg -i --force-depends package_a.deb

RPM 中的--force 有何用途?

RPM 中的默认安装规则不允许多次安装同一软件包,也不允许降级安装。使用--force辅助参数将强制安装RPM包,而不管上述因素。但是,--force 无法强制安装不满足系统依赖关系的包(在这种情况下,需要使用--nodeps 参数)。使用方法:

rpm -i --force package_a.rpm

RPM/DPKG 是否支持远程安装?

转速是。 RPM 支持HTTP 和FTP 协议,例如:

rpm -Uvhftp://user:pass@ftpserver/package.rpm

DPKG 在基于DEB软件包的最新系统中,远程安装通常被更高级的APT所取代。

可以从RPM/DPKG 中提取单个文件吗?

转速是。可以使用rpm2cpio 工具提取该文件:http://www.rpm.org/max-rpm/s1-rpm-miscellania-rpm2cpio.html

DPKG 是。可以使用dpkg-deb 工具提取文件:

$ dpkg-deb --extract ibm_lotus_notes-8.5.i586.deb $dir(目标目录)

RPM/DPKG 是否提供了成功安装包的验证机制?

转速是。这可以使用-V 参数进行验证。

DPKGDebian 系统通常使用debsums 工具参数进行验证。

RPM/DPKG 是否提供包安全签名?

转速是。可以使用--import导入与软件同时发布的GPG KEY,然后使用-K命令验证包的安全性,如:

rpm --import pub_ibm_lotus_notes.gpg # rpm -K ibm_lotus_notes-8.5.i586.rpm 返回信息 : ibm_lotus_notes-8.5.i586.rpm: (sha1) dsa sha1 md5 gpg OK

DPKGDPKG 不提供本机密钥验证机制。您可以使用debsigs 和debsigs-verify。详情参见:http://man.ddvip.com/os/debiansecuring-howto/ch7.zh-cn.html

如果RPM 的底层数据库损坏了,还可以使用吗?

如果底层数据库损坏,RPM 将无法正常运行。此时最常见的解决方案就是重建数据库:

rm -f /var/lib/rpm/__* ; rpm -vv --rebuilddb

RPMDPKG 本身不提供底层数据库恢复机制。其数据库保存为/var/lib/dpkg 目录中的文件。及时备份该目录是防止数据库损坏的最佳方法。

能否查询系统已安装的文件属于哪个RPM包?

转速确实如此。使用-qf参数,比如在安装了Notes8.5的系统中:

rpm -qf /opt/ibm/lotus/notes/notes 返回信息 : Ibm_lotus_notes-8.5-20081211.1920

DPKG 好的。使用--search参数,比如在安装了Notes8.5的系统中:

$ dpkg --search /opt/ibm/lotus/notes/notes 返回信息: ibm-lotus-notes: /opt/ibm/lotus/notes/notes

我可以查看RPM包的安装时间吗?

转速确实如此。可以使用--last进行查询。喜欢:

rpm -qa --last 返回信息: 系统中所有软件的安装时间。

用户评论

你很爱吃凉皮

linux 用的软件怎么安装啊?

    有10位网友表示赞同!

苏莫晨

学习软件包管理能提高效率挺厉害的

    有14位网友表示赞同!

未来未必来

不同发行版的包管理器好像不太一样啊,难上手捏!

    有15位网友表示赞同!

珠穆郎马疯@

dpkg, yum, pacman 听说都是很常用的吗?

    有11位网友表示赞同!

淡抹丶悲伤

使用 apt 快捷安装软件真方便,比其他方式省时多了。

    有10位网友表示赞同!

咆哮

搞清楚软件包管理对新手来说确实挺重要的,可以省很多时间呀!

    有17位网友表示赞同!

还未走i

最近想学习下 Debian 的系统,听说它有个叫 APT 的包管理器吧?

    有19位网友表示赞同!

拥抱

玩服务器的时候用到 Red Hat 的 yum,感觉蛮顺手的。

    有8位网友表示赞同!

。婞褔vīp

我想试一下 Arch Linux ,听说它的 pacman 包管理工具很强大啊!

    有20位网友表示赞同!

旧爱剩女

软件包管理这个东西挺重要的,能让人更轻松地维护系统。

    有9位网友表示赞同!

为爱放弃

如果对软件包管理一无所知,那Linux使用起来一定会很吃力吧!

    有12位网友表示赞同!

权诈

听说有些软件包管理器可以自动更新,是不是很棒呀?

    有6位网友表示赞同!

陌上蔷薇

有时候想升级某个软件,就需要用到 软件包管理工具才能搞定吗?

    有20位网友表示赞同!

■□丶一切都无所谓

学习 Linux, 必须先学好软件包管理!

    有13位网友表示赞同!

桃洛憬

感觉不同的包管理器使用习惯也不太一样。

    有5位网友表示赞同!

红玫瑰。

linux 的包管理方法很多样,还挺有学习价值的。

    有18位网友表示赞同!

最怕挣扎

Linux 上软件包管理工具挺方便的,比手动下载安装要高效多了。

    有18位网友表示赞同!

花菲

想用 Linux 做开发,应该提前了解一下主流的软件包管理器吧?

    有17位网友表示赞同!

追忆思域。

软件包管理这个东西,是不是越来越重要了呢?

    有20位网友表示赞同!

今非昔比'

linux 的生态系统很完善,有专门的包管理器是优势之一!

    有12位网友表示赞同!

【Linux系统软件包管理攻略】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界

上一篇:探寻普通人改变命运之路:三十集深度解析 下一篇:春日絮语:二傻的温馨时光