linux_软件包管理

举报
Smy1121 发表于 2018/12/31 23:57:32 2018/12/31
【摘要】 Linux基本软件包管理---RPM和DPKG在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本。软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。RPM 全称为 Red...

Linux基本软件包管理---RPM和DPKG


在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本。软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。

RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。与 RPM 进行竞争的是基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,功能方面与 RPM 相似。二者之具体比较不在本文范围之内。

RPM

一个 RPM 包包含了已压缩的软件文件集以及该软件的内容信息(在头文件中保存),通常表现为以 .rpm 扩展名结尾的文件,例如 package.rpm 。对其操作,需要使用 rpm 命令。

RPM 命令常用参数:

RPM 的常规使用方法为 rpm -? package.rpm,其中 -? 为操作参数 ( 更多信息,请查阅帮助 $man rpm):

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

-i 在系统中安装软件

-U 在系统中升级软件

-e 在系统中卸载软件

-h 用 #(hash) 符显示 rpm 安装过程

-v 详述安装过程

-p 表明对 RPM 包进行查询,通常和其它参数同时使用,如:

-qlp 查询某个 RPM 包中的所有文件列表

-qip 查询某个 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 -qa | grep PackageName

安装Java的RPM包(例子)

1. 成为超级用户,方法是运行 su 并输入超级用户口令。

2. 卸载 Java 程序包的任何早期安装。

rpm -e <package_name>

3. 切换到所需的安装目录。键入:cd <目录路径名>

例如,要在 /usr/java/ 目录中安装软件,请键入:

cd /usr/java

4. 安装程序包。

rpm -ivh jre-7u7-linux-i586.rpm

5. 要升级程序包,请键入:

rpm -Uvh jre-7u7-linux-i586.rpm

6. 如果要节省磁盘空间,请删除 .rpm 文件。

7. 退出 root shell。不需要重新启动。

DPKG

一个 DPKG 包包含了已压缩的软件文件集以及该软件的内容信息(在头文件中保存),通常表现为以 .deb 扩展名结尾的文件,例如 package.deb 。对其操作,需要使用 dpkg 命令。

DPKG 命令常用参数

DPKG 的常规使用方法为 dpkg -? Package(.deb), 其中 -? 为安装参数 ( 更多信息,请查阅帮助 $man deb):

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

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

-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 package

软件包依赖性关系(那么问题来了)

由于开源的多态性,Linux 操作系统中的软件之间的依赖性关系处理一直令用户感到头疼。如果 package_a 依赖于 package_b,那么在一个没有安装 package_b 的系统中,package_a 是不被系统推荐安装的,强制安装很可能会导致软件无法正常工作。

这跟我们Windows系统安装软件是一样的,比如我们想学习Java开发,网上一听有个Eclipse开发工具特别好用,于是我下载下来发现我竟然打不开,提示的是我没有安装Java环境,当然现在的Eclipse有的已经集成了Java环境,但是这个简单的例子说明我们在安装软件的时候有些软件确实是有相关的依赖,比如Windows系统的某些软件就要求我们安装.Net环境等等.都是这方面的原因,所以如果我们并不了解情况的话,很容易出错.

Linux人性化软件管理----yum和apt

那么问题来了,我们怎么更好的解决依赖的问题呢,难不成我们安装一个软件就需要网上搜一下,安装个软件非要弄个详细的流程图出来吧.其实大可不必,大家使用Windows的时候都知道什么360软件管家啊,电脑管家也有个软件管理啊,我们想安装个软件点击一下,直接就一键安装了,多方便啊.其实Linux也有类似于这样的人性化软件,他们支持一键安装,中途也解决了这些软件依赖的问题.看看多棒啊,是吧.

Yum

YUM 基于 RPM 包管理工具,能够从指定的源空间(服务器,本地目录等)自动下载目标 RPM 包并且安装,可以自动处理依赖性关系并进行下载、安装,无须繁琐地手动下载、安装每一个需要的依赖包。此外,YUM 的另一个功能是进行系统中所有软件的升级。如上所述,YUM 的 RPM 包来源于源空间,在 RHEL 中由 /etc/yum.repos.d/ 目录中的 .repo 文件配置指定.

blob.png

我们之前也用这个工具进行过软件的安装比如:Lrzsz,openssh等工具,那么在这里就不再给大家进行详细的介绍.

YUM 常用命令

安装指定软件

# yum -y install package-name

列出系统中已安装软件

# yum list

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

Yum list | grep Package-Name 进行指定文件的指定.

# yum check-update

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

# yum update

升级指定软件

# yum update package-name

在升级过程中接受所有互动问答

# yum -y update

卸载指定软件

# yum remove package-name

APT

APT 的全称为 Advanced Packaging Tools 。与 YUM 对应,它最早被设计成 DPKG 的前端软件,现在通过 apt-rpm 也支持 rpm 管理。而本节本节将介绍 APT 作为 DPKG 前端的使用。 APT 的主要包管理工具为 APT-GET,通过此工具可满足和上述 YUM 相似的功能要求。

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

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to

# newer versions of the distribution.

deb http://cn.archive.ubuntu.com/ubuntu/ hardy main restricted

deb-src http://cn.archive.ubuntu.com/ubuntu/ hardy main restricted

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

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

APT 常用命令

更新源索引

$ sudo apt-get update

安装指定软件

$ sudo apt-get install package-name

下载指定软件的源文件

$ sudo apt-get source package-name

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

$ sudo apt-get upgrade

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

$ sudo apt-get dist-upgrade

卸载指定软件

$ sudo apt-get remove package-name


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200