linux包管理工具 - jerry

Welcome to Aiiyx !

linux包管理工具

1、linux平台软件包管理:

在 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 相似。二者之具体比较不在本文范围之内。

2、 RPM包的使用

一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。Linux 的分发版本都有采用(suse,redhat, centos  等等),可以算是公认的行业标准了。

2.1、rpm 包的简单查询指令

查询已安装的 rpm 列表  rpm    –qa|grep xxx

一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm 名称:firefox

  1. 版本号:45.0.1-1
  2. 适用操作系统: el6.centos.x86_64
  3. 表示 centos6.x 的 64 位系统 如果是 i686、i386 表示 32 位系统,noarch 表示通用。

2.2、rpm 包的其它查询指令:

rpm -qa :查询所安装的所有 rpm 软件包
rpm -qa | more [分页显示]

rpm -qi  软件包名 :查询软件包信息

rpm -ql  软件包名 :查询软件包都安到哪里去了

rpm -qf 文件全路径名:查询文件所属的软件包

  1. rpm -qf /etc/passwd
  2. rpm -qf /root/install.log
blob.png

2.3、卸载 rpm 包

基本语法 rpm -e RPM包的名称 ,例如:

rpm -e firefox

细节讨论:

(1) 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息

如: $ rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1

(2) 如果我们就是要删除 foo这个rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行 如:$ rpm -e --nodeps foo 

2.4、安装rpm包

基本语法: rpm -ivh  RPM包全路径名称

参数说明:

  1. i=install 安装
  2. v=verbose 提示
  3. h=hash  进度条

举例: 

(1)安装firefox浏览器

① 先要找到安装包,需要先挂载上我们之前安装CentOS的iso文件,点击虚拟机设置使用iso文件,那么在系统中会多出一个光驱,打开命令行终端进入到/media/CentOS_6.8_final/package/(所有的rpm包都在这里) 点击然后拷贝到/opt目录下

 cp firefox( rpm包的文件名) 需要拷贝到的目录 (可以输入rpm包名字的前几个字母然后使用Tab键补全)

② 安装,切换到/opt目录下找到刚才拷贝的文件然后使用:
rpm ivh + 火狐rpm软件安装包的名字就可以了

(2) 以下步骤描述了一个普通用户安装 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 Dec 2008 09:38:55 AM CST
Install Date: (not installed) Build Host: dithers.notesdev.ibm.com
Group : Applications/Office
Source RPM: ibm_lotus_notes-8.5-20081211.1925.src.rpm
Size : 603779427 License: Commercial
Signature : DSA/SHA1, Sat 13 Dec 2008 09:43:02 AM CST, Key ID 314c8c6534f9ae75
Summary : IBM Lotus Notes
Description :
IBM Lotus Notes software provides a robust …

③安装 Notes:

rpm -ivh ibm_lotus_notes-8.5.i586.rpm

Preparing… ########################################### [100%]
1:ibm_lotus_notes ########################################### [100%]

④升级 Notes:

若今后需要基于该版本升级至更高版本的 Notes( 缝 .0 - ibm_lotus_notes-9.0.i586.rpm),则使用 -U 参数:

# rpm -Uvh ibm_lotus_notes-8.5.i586.rpm

在该步骤中如果使用 -i 则系统通常会报文件冲突错误,无法正常安装。

卸载 Notes:

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

# rpm -ev ibm_lotus_notes

3、YUM

YUM 基于 RPM 包管理工具,能够从指定的源空间(服务器,本地目录等)自动下载目标 RPM 包并且安装,可以自动处理依赖性关系并进行下载、安装,无须繁琐地手动下载、安装每一个需要的依赖包。此外,YUM 的另一个功能是进行系统中所有软件的升级。使用 yum 的前提是可以联网。

如上所述,YUM 的 RPM 包来源于源空间,在 RHEL 中由 /etc/yum.repos.d/ 目录中的 .repo 文件配置指定,如 rhel-debuginfo.repo 的内容:

name=Red Hat Enterprise Linux 5Client - i386 - Debug
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

cachedir=/var/cache/yum
keepcache=1
debuglevel=2
pkgpolicy=newest
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
exclude= firefox gftp

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

3.1 yum 的基本指令

查询 yum 服务器是否有需要安装的软件:yum list|grep xx 软件列表

安装指定的 yum 包:yum install xxx    下载安装

例: 使用 yum 的方式来安装 firefox

(1) 先查看一下  firefox  rpm 在 yum 服务器有没有

(2)安装

yum install firefox

3.2 yum源配置(阿里云源)

1) 安装wget

yum install -y wget

2) 备份/etc/yum.repos.d/CentOS-Base.repo文件

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back

3) 下载阿里云的Centos-6.repo文件

wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

4) 重新加载yum

yum clean all
yum makecache

4、 DEB包使用:

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

DPKG 的常规使用方法为:dpkg -? Package(.rpm), 其中 -? 为安装参数

  1. -l 在系统中查询软件内容信息
  2. --info 在系统中查询软件或查询指定 rpm 包的内容信息
  3. -i 在系统中安装 / 升级软件
  4. -r 在系统中卸载软件 , 不删除配置文件
  5. -P 在系统中卸载软件以及其配置文件

$ sudo dpkg -i package.deb
$ sudo dpkg -i package.deb ( 和安装命令相同)
$ sudo dpkg -r package.deb # 不卸载配置文件
$ sudo dpkg -P package.deb # 卸载配置文件
$ sudo dpkg-deb -c package.deb
$ dpkg --info package.deb
$ dpkg -l package

......

为保证软件的正常使用,必须找到所有依赖包以及子依赖包并且安装。过多的依赖关系大大降低了 Linux 软件安装的用户友好性。所以针对此类问题,使用了更高级的包管理策略去解决 - Yum/APT 。

5、APT

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

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

# 默认注释了源码仓库,如有需要可自行取消注释 deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

更改完 sources.list 文件后请运行 sudo apt-get update 更新索引以生效。

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

  • 1. 安装软件:$ sudo apt install 软件包
  • 2. 卸载软件:$ sudo apt remove 软件名
  • 3. 更新已安装的包:$ sudo apt upgrade
分享