linux_软件包管理
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 文件配置指定.
我们之前也用这个工具进行过软件的安装比如: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
- 点赞
- 收藏
- 关注作者
评论(0)