快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

万博max官网手机版_酒文化网进入



概述

在本文中,进修若何在 Linux 系统上应用 RPM 和 YUM 担保理对象治理包。进修:

应用 RPM 和 YUM 安装、卸载、进级和删除包

获取版本、状态、依附关系、完备性和署名等 RPM 包相关信息

判断一个包供给哪些文件,查明某个文件来自哪个包

本文赞助您筹备 Linux Professional Institute's Junior Level Administration (LPIC-1) 考试 101 中主题 102 下的目标 102.5。该目标的权值为 3。

先决前提

为了最有效地使用本系列中的文章,您应该具有基础的 Linux 常识,并必要筹备一个 Linux 系统,用于演习本文先容的敕令。无意偶尔候不合版本的法度榜样输出款式不合,是以您所获得的结果未必老是与这里所示的清单和图相同。分外是,许多输出高度依附于系统上已经安装的包。您自己的输出可能很不一样,然则应该能够看出紧张的合营点。

担保理简介

以前,许多 Linux 法度榜样以源代码的形式发行,用户把源代码构建为所需的法度榜样或法度榜样集;源代码还附带必需的手书页、设置设置设备摆设摆设文件等等。现在,大年夜多半 Linux 发行商应用称为包 的预构建的法度榜样或法度榜样集,包便于在发行版上安装。在本文中,进修赞助安装、更新和删除包的担保理 对象。本文主要关注 Red Hat 开拓的 Red Hat Package Manager (RPM),以及 Duke University 物理系最初为治理 Red Hat Linux 系统开拓的 Yellowdog Updater Modified (YUM)。本系列中的另一篇文章 “进修 Linux,101:Debian 担保理” 评论争论 Debian 系统上应用的担保理对象。

从用户的角度来说,基础的担保理功能由敕令供给。Linux 开拓职员不停致力于让 Linux 更轻易应用,他们开拓了其他对象(包括 GUI 对象)来弥补基础对象,这对终极用户暗藏了基础对象的一部分繁杂性。在本文和 进修 Linux,101:Debian 担保理 中,我们主要评论争论基础对象,然则也会提到一些其他对象,让您能够继承钻研它们。

RPM、YUM 和 APT(适用于 Debian 系统)有许多相似之处。它们都可以安装和删除包。关于安装的包的信息保存在数据库中。它们都有基础的敕令行功能,同时经由过程其他对象供给对用户更友好的界面。它们都可以从 Internet 获取包。

在安装 Linux 系统时,平日会安装许多包。这个聚拢可能是根据系统的用途定制的,比如办事器、桌面或开拓事情站。无意偶尔候,可能必要安装新的包以添加新功能,更新现有的包,以致删除不再必要或已经被新的包取代的包。我们来看看若何完成这些义务以及若何办理一些相关的难题,比如探求包孕某一敕令的包。

RPM

Red Hat 于 1995 年引入了 RPM。RPM 现在是 Linux Standard Base (LSB) 中采纳的担保理系统。rpm 敕令选项分为三组:

用于查询和反省包

用于安装、进级和删除包

用于履行其他功能

在本文中,我们主要关注前两组敕令选项。在 RPM 的手书页中可以找到其他功能的相关信息。

还应该留意 rpm 是操作 RPM 的主要敕令,而 .rpm 是 RPM 文件应用的扩展名。以是 “一个 rpm” 或 “某某 rpm” 一样平常是指 RPM 文件,而 rpm 平日指敕令。

YUM

YUM 在 RPM 系统中增添了自动更新和担保理,包括依附关系治理。与 Debian Advanced Packaging Tool (APT) 一样,除了懂得系统上安装的包之外,YUM 还应用存储库。存储库是包的聚拢,平日可以经由过程收集连接造访它们。万博max官网手机版

安装 RPM 包

假设您想学 Lisp,一位同事让您应用 gcl 敕令。您试着输入 gcl --help、which gcl 或 type gcl。然则,假如系统无法找到 gcl,您可能会看到与清单 1 相似的输出。

清单 1. 没有找到 gcl 敕令

[ian@echidna ~]$ gcl --help

bash: gcl: command not found

[ian@echidna ~]$ which gcl

/usr/bin/which: no gcl in (/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerber

os/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/

sbin:/home/ian/bin)

[ian@echidna ~]$ type gcl

bash: type: gcl: not found

您可能会问同事要安装哪个包,也可能猜想 gcl 敕令应该在 gcl 包中。这种预测经常是对的,然则也不老是。我们稍后会看到若何探求精确的包。在这里,必要 gcl 包。假设您已经下载或以其他要领得到了这个包的拷贝,可以应用带 -i(代表安装)选项的 rpm 敕令安装它,见清单 2。

清单 2. 用 rpm 安装 gcl —— 第一次考试测验

[root@echidna ~]# rpm -i gcl-2.6.8-0.6.20090701cvs.fc12.x86_64.rpm

error: Failed dependencies:

gcl-selinux is needed by gcl-2.6.8-0.6.20090701cvs.fc12.x86_64

rpm 敕令知道这个包有一个依附包,然则它并不赞助您办理依附问题。您必要自己获取依附包,然后再次考试测验,看看是否还有其他依附包 — 重复这个历程,直到满意所有依附关系为止。好消息是,可以向 rpm 敕令供给要安装的包的列表,假如满意所有依附关系,它会以精确的序次安装所有包。是以,您至少不必以精确的序次手工安装每个包。

假如您应用过 Debian 的 APT,可能盼望有像 apt-get 敕令一样的功能,apt-get 敕令会探求必要的器械(包括依附包)并安装它们。对付基于 RPM 的系统,YUM (Yellowdog Updater Modified) 供给这种功能。清单 3 阐明若何应用带 install 选项的 yum 敕令安装 gcl 和必需的 gcl-selinux 包。

清单 3. 应用 yum 安装 gcl

[root@echidna ~]# yum install gcl

Loaded plugins: presto, refresh-packagekit

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be updated

--> Processing Dependency: gcl-selinux for package: gcl-2.6.8-0.7.20100201cvs.fc12.x86_64

--> Running transaction check

---> Package gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be updated

--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================

Package      Arch     Version             Repository   Size

=====================================================================================

Installing:

gcl        x86_64    2.6.8-0.7.20100201cvs.fc12    updates    6.3 M

Installing for dependencies:

gcl-selinux    x86_64    2.6.8-0.7.20100201cvs.fc12    updates    17 k

Transaction Summary

=====================================================================================

Install    2 Package(s)

Upgrade    0 Package(s)

Total download size: 6.4 M

Installed size: 40 M

Is this ok [y/N]: y

Downloading Packages:

Setting up and reading Presto delta metadata

updates/prestodelta                      | 964 kB   00:01

Processing delta metadata

Package(s) data still to download: 6.4 M

(1/2): gcl-2.6.8-0.7.20100201cvs.fc12.x86_64.rpm       | 6.3 MB   00:12

(2/2): gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64.rpm   | 17 kB   00:00

-------------------------------万博max官网手机版------------------------------------------------------

Total                        398 kB/s | 6.4 MB   00:16

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Installing   : gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64         1/2

Installing   : gcl-2.6.8-0.7.20100201cvs.fc12.x86_64             2/2

Installed:

gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12

Dependency Installed:

gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12

Complete!

清单 3 中的输出注解,YUM 在名为 “updates” 的存储库中找到了 gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 和 gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12(稍后具体评论争论),并判断出总下载大年夜小。按 “y” 批准之后,它下载这两个包,然后安装依附包,着末安装 gcl。在本文后面会进一步评论争论依附关系。

包的位置

在前一节中,进修了若何安装 RPM 包。然则,包来自什么地方呢?yum 若何知道从哪里下载包?动身点是 /etc/yum.repos.d/ 目录,这个目录经常包孕几个 repo 文件。这是 repo 的默认位置,然则可以在 YUM 设置设置设备摆设摆设文件(平日是 /etc/yum.conf)中指定其他位置。清单 4 给出 fedora-updates.repo,我们从它所对应的位置获取 gcl 并安装在我的 Fedora 12 系统上。

范例的 repo 文件分为三个部分,一个用于一样平常的包,一个用于调试包,着末一个用于源代码包。经常可以从不合的位置(即镜像)获取发行版的包拷贝。以是 repo 文件奉告 yum 在哪里可以找到每个部分的最新镜像列表。留意,发行版的宣布级别和机械架构表示为参数,以是对付我的 x86_64 Fedora 12 系统,yum 会从 https://mirrors.fedoraproject.org/metalink?repo=updates-released-f12&arch=x86_64 下载列表。

除了存储库位置之外,repo 文件还指出某个存储库是否启用了,以及是否应该应用 GPG 署名反省下载的包。

清单 4. fedora-updates.repo

[ian@echidna ~]$ cat /etc/yum.repos.d/fedora-updates.repo

[updates]

name=Fedora $releasever - $basearch - Updates

failovermethod=priority

#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever

/$basearch/

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$r

eleasever&arch=$basearch

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[updates-debuginfo]

name=Fedora $releasever - $basearch - Updates - Debug

failovermethod=priority

#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever

/$basearch/debug/

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-deb

ug万博max官网手机版-f$releasever&arch=$basearch

enabled=0

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[updates-source]

name=Fedora $releasever - Updates Source

failovermethod=priority

#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever

/SRPMS/

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-sou

rce-f$releasever&arch=$basearch

enabled=0

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

YUM 和 RPM 应用本地数据库判断安装的包。本地数据库中存储的包元数据是从启用的存储库获取的。只管很少必要为本地数据库费神,然则可以应用 yum clean 敕令清除本地存储的信息的不合部分,应用 yum makecache 在本地数据库中为启用的 repo 创建信息。例如,假如改动了 repo 设置设置设备摆设摆设,就可能必要这么做。

删除 RPM 包

假如要删除包,可以应用 yum 的 remove 选项或 rpm 的 -e 选项。应用 rpm -e 删除 gcl 的试运行见清单 5。假如可以删除这个包,就不会有输出。

清单 5. 试删除 gcl

[root@echidna ~]# rpm -e --test gcl

与应用 apt-get 模拟删除 Debian 包不合,RPM 系统并不掩护自动安装的包的相关信息,以是无法经由过程试删除查明哪些依附包也可以删除。然则,假如在单一敕令中指定多个要删除的包,那么没有依附关系的包会先于有依附关系的包删除。

与安装包不合,当应用 rpm 删除包时,在删除包之前没有提示。然则,假如试图删除其他包必要的包,它不会履行删除操作,您会看到清单 6万博max官网手机版 所示的差错消息。

清单 6. 用 rpm 删除依附包

[root@echidna ~]# rpm -e gcl-selinux

error: Failed dependencies:

gcl-selinux is needed by (installed) gcl-2.6.8-0.7.20100201cvs.fc12.x86_64

假如应用 yum remove,在履行事务测试之后会显示提示。假如试图删除的包是其他已安装包的依附包,YUM 会发起删除这些包和依附包,见清单 7。

清单 7. 用 yum 删除依附包

[root@echidna ~]# yum remove gcl-selinux

Loaded plugins: presto, r万博max官网手机版efresh-packagekit

Setting up Remove Process

Resolving Dependencies

--> Running transaction check

---> Package gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be erased

--> Processing Dependency: gcl-selinux for package: gcl-2.6.8-0.7.20100201cvs.fc12.x86_64

--> Running transaction check

---> Package gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be erased

--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================

Package     Arch    Version              Repository   Size

=====================================================================================

Removing:

gcl-selinux   x86_64   2.6.8-0.7.20100201cvs.fc12     @updates    90 k

Removing for dependencies:

gcl       x86_64   2.6.8-0.7.20100201cvs.fc12     @updates    40 M

Transaction Summary

=====================================================================================

Remove    2 Package(s)

Reinstall   0 Package(s)

Downgrade   0 Package(s)

Is this ok [y/N]: n

Exiting on user Command

Complete!

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: