Linux学习教程(第七章 Linux系统软件安装)二

第七章 Linux系统软件安装(二)

六、Linux提取RPM包文件(cpio命令)详解

在讲解如何从 RPM 包中提取文件之前,先来系统学习一下 cpio 命令。

cpio 命令用于从归档包中存入和读取文件,换句话说,cpio 命令可以从归档包中提取文件(或目录),也可以将文件(或目录)复制到归档包中。

归档包,也可称为文件库,其实就是 cpio 或 tar 格式的文件,该文件中包含其他文件以及一些相关信息(文件名、访问权限等)。归档包既可以是磁盘中的文件,也可以是磁带或管道。

cpio 命令可以看做是备份或还原命令,因为它可以将数据(文件)备份到 cpio 归档库,也可以利用 cpio 文档库对数据进行恢复。

使用 cpio 命令备份或恢复数据,需注意以下几点:

  • 使用 cpio 备份数据时如果使用的是绝对路径,那么还原数据时会自动恢复到绝对路径下;同理,如果备份数据使用的是相对路径,那么数据会还原到相对路径下。
  • cpio 命令无法自行指定备份(或还原)的文件,需要目标文件(或目录)的完整路径才能成功读取,因此此命令常与 find 命令配合使用。
  • cpio 命令恢复数据时不会自动覆盖同名文件,也不会创建目录(直接解压到当前文件夹)

cpio 命令主要有以下 3 种基本模式:

1. "-o" 模式:指的是 copy-out 模式,就是把数据备份到文件库中,命令格式如下:

[root@localhost ~]# cpio -o[vcB] > [文件丨设备]

各选项含义如下:

  • -o:copy-out模式,备份;
  • -v:显示备份过程;
  • -c:使用较新的portable format存储方式;
  • -B:设定输入/输出块为 5120Bytes,而不是模式的 512Bytes;

比如,使用 cpio 备份数据的命令如下:

[root@localhost ~]#find /etc -print | cpio -ocvB > /root/etc.cpio
#利用find命令指定要备份/etc/目录,使用>导出到etc.cpio文件
[root@localhost ~]# II -h etc.cpio
-rw--r--r--.1 root root 21M 6月5 12:29 etc.cpio
#etc.cpio文件生成

2. "-i" 模式:指的是 copy-in 模式,就是把数据从文件库中恢复,命令格式如下:

[root@localhost ~]# cpio -i[vcdu] < [文件|设备]

各选项的含义为:

  • -i:copy-in 模式,还原;
  • -v:显示还原过程;
  • -c:较新的 portable format 存储方式;
  • -d:还原时自动新建目录;
  • -u:自动使用较新的文件覆盖较旧的文件;

比如,使用 cpio 恢复之前备份的数据,命令如下:

[root@localhost ~]# cpio -idvcu < /root/etc.cpio
#还原etc的备份
#如果大家査看一下当前目录/root/,就会发现没有生成/etc/目录。这是因为备份时/etc/目录使用的是绝对路径,所以数据直接恢复到/etc/系统目录中,而没有生成在/root/etc/目录中

3. "-p" 模式:指的是复制模式,使用 -p 模式可以从某个目录读取所有文件,但并不将其备份到 cpio 库中,而是直接复制为其他文件

例如,使用 -p 将 /boot/ 复制到 /test/boot 目录中可以执行如下命令:

[root@localhost ~]# cd /tmp/
#进入/tmp/目录
[root@localhost tmp]#rm -rf*
#删除/tmp/目录中的所有数据
[root@localhost tmp]# mkdir test
#建立备份目录
[root@localhost tmp]# find /boot/ -print | cpio -p /tmp/test
#备份/boot/目录到/tmp/test/目录中
[root@localhost tmp]# ls test/boot
#在/tmp/test/目录中备份出了/boot/目录

使用 cpio 命令提取 RPM 包中指定文件

在服务器使用过程,如果系统文件被误修改或误删除,可以考虑使用 cpio 命令提取出原 RPM 包中所需的系统文件,从而修复被误操作的源文件。

RPM 包允许逐个提取包中文件,使用的命令格式如下:

[root@localhost ~]# rpm2cpio 包全名|cpio -idv .文件绝对路径

该命令中,rpm2cpio 就是将 RPM 包转换为 cpio 格式的命令,通过 cpio 命令即可从 cpio 文件库中提取出指定文件。

举个例子,假设我们不小心把 /bin/ls 命令删除了,通常有以下 2 种方式修复:

  1. 将 coreutils-8.4-19.el6.i686 包(包含 ls 命令的 RPM 包)通过 -force 选项再安装一遍;
  2. 使用 cpio 命令从 coreutils-8.4-19.el6.i686 包中提取出 /bin/ls 文件,然后将其复制到相应位置;

这里我们选择第 2 种方式。有读者可能会问如何知道 ls 命令隶属于那个 RPM 包呢?很简单,使用 rpm -qf 命令即可,如下所示:

[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.4-19.el6.i686
#查看ls文件属于哪个软件包

在此基础上,我们只需从此 RPM 包使用 cpio 命令提取出 ls 命令文件,然后将其复制到对应位置即可,实现命令如下:

[root@localhost ~]# mv /bin/ls /root/
#把/bin/ls命令移动到/root/目录下,造成误删除的假象
[root@localhost ~]# ls
-bash: ls: command not found
#这时执行ls命令,系统会报"命令没有找到"错误
[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm
|cpio -idv ./bin/ls
#提取ls命令文件到当前目录下
[root@localhost ~]# cp /root/bin/ls /bin/
#把提取出来的ls命令文件复制到/bin/目录下
[root@localhost ~]#ls
anaconda-ks.cfg bin inittab install.log install.log.syslog ls
#可以看到,ls命令又可以正常使用了

七、Linux SRPM源码包安装(两种方式)

前面章节我们介绍了如何使用 RPM 包安装软件,本节学习使用另一种 RPM 包,即 SRPM 源码包安装软件。

SRPM 包,比 RPM 包多了一个“S”,是“Source”的首字母,所以 SRPM 可直译为“源代码形式的 RPM 包”。也就是说,SRPM 包中不再是经过编译的二进制文件,都是源代码文件。可以这样理解,SRPM 包是软件以源码形式发布后直接封装成 RPM 包的产物。

表 1 列出了 RPM 包与 SRPM 包的几点不同。

表 1 RPM与SRPM对比

文件格式 文件名格式 直接安装与否 内含程序类型 可否修改参数并编译
RPM  xxx.rpm 可  已编译 不可
SRPM xxx.src.rpm 不可 未编译的源代码

从表中可以看到,SRPM 包的命名与 RPM 包基本类似,唯一区别在于 SRPM 包多了“src”标志,即 SRPM 包采用“包名-版本号-发布次数-发行商-src.rpm”的方式进行命名,比如“MySQL-5.5.29-2.el6.src.rpm”。

此外,SRPM 包是未经编译的源码包,无法直接用来安装软件,需要经过以下 2 步:

  1. 将 SRPM 包编译成二进制的 RPM 包;
  2. 使用编译完成的 RPM 包安装软件;

前面章节已经介绍了如何使用 RPM 包安装软件,因此使用 SRPM 包安装软件的关键在于第一步,也就是如何将 SRPM 包编译为 RPM 包。

本节依然以安装 apache 为例,使用 SRPM 包安装软件(编译 SRPM 包)的方式有以下 2 种:

  1. 利用 rpmbuild 命令可以直接使用 SRPM 包安装软件,也可以先将 SRPM 包编译成 RPM 包,再使用 RPM 包安装软件;
  2. 利用 *.spec 文件可实现将 SRPM 包编译成 RPM 包,再使用 RPM 包安装软件;

1、rpmbuild 命令的安装

rpmbuild 命令也是一个程序,但是这个程序不会默认安装,所以要想使用 rpmbuild 命令就必须提前安装。这里我们使用 rpm 命令来安装 rpmbuild 命令,如下所示:

[root@localhost~]#rpm -ivh /mnt/cdroin/Packages/rpm-build-4.8.0-27.el6.i686.rpm
Preparing...
###################
[100%]
1:rpm-build
###################
[100%]

出现两个 100% 才证明 rpmbuild 安装成功。

2、rpmbuild命令安装SRPM包

如果我们只想安装 SRPM 包,而不用修改源代码,那么直接使用 rpmbuild 命令即可。使用 rpmbuild 安装 SRPM 包的命令格式如下:

[root@localhost ~]# rpmbuild [选项] 包全名

可使用如下 2 个选项:

  • -rebuild:编译 SRPM 包生成 RPM 二进制包;
  • -recompile:编译 SRPM 包,同时安装。

需要注意的是,SRPM 本质上仍属于 RPM 包,所以安装时仍需考虑包之间的依赖性,要先安装它的依赖包,才能正确安装。

这里我们选择使用 -rebuild 选项先将 SRPM 包编译成 RPM 二进制包,命令如下所示:

[root@localhost ~]# rpmbuild -rebuild httpd-2.2.15-5.el6.src.rpm
warning: InstallSourcePackage at: psm.c:244: Header V3 RSA/SHA256 Signature, key
ID fd431d51: NOKEY
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
#警告为mockbuild用户不存在,使用root代替。这里不是报错,不用紧张
…省略部分输出…
Wrote: /root/rpmbuild/RPMS/i386/ httpd-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/i386/httpd-devel-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/noarch/httpd-manual-2.2.15-5.el6.noarch.rpm
Wrote: /root/rpmbuild/RPMS/i386/httpd-tools-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/i386/ mod_ssl-2.2.15-5.el6.i386.rpm
#写入RPM包的位置,只要看到,就说明编译成功
Executing(%clean): /bin/sh -e/var/tmp/rpm-tmp.Wb8TKa
+ umask 022
+ cd/root/rpmbuild/BUILD
+ cd httpd-2.2.15
+ rm -rf /root/rpmbuild/BUILDROOT/httpd-2.2.15-5.el6.i386
+ exit 0
Executing(-clean): /bin/sh -e/var/tmp/rpm-tmp.3UBWql
+ umask 022
+ cd/root/rpmbuild/BUILD
+ rm-rf httpd-2.2.15
+ exit 0

exit 0 是编译成功的标志,此编译过程产生的临时文件会自动删除。SRPM 包编译完成后,会在当前目录生成 rpmbuild 目录,整个编译过程生成的文件(软件包)都存在这里。

[root@localhost ~]# ls /root/rpmbuild/
BUILD RPMS SOURCES SPECS SRPMS

通过 ls 命令可以看到,rpmbuild 目录下有几个子目录,其各自保存的文件类别如表 2 所示。

表 2 子目录的作用

文件名 文件内容
BUILD 编译过程中产生的数据保存位置
RPMS 编译成功后,生成的 RPM 包保存位置
SOURCES 从 SRPM 包中解压出来的源码包(*.tar.gz)保存位置
SPECS 生成的设置文件的安装位置。第二种安装方法就是利用这个文件进行安装的
SRPMS 放置 SRPM 包的位置

可以看到,编译好的 RPM 包保存在 /root/rpmbuild/RPMS/ 目录下,可以使用如下命令进行验证:

[root@localhost ~]#ll /root/rpmbuild/RPMS/i386/
-rw--r--r-- 1 root root 3039035 11月19 06:30 httpd-2.2.15-5.el6.i386.rpm
-rw--r--r-- 1 root root 154371 11月19 06:30 httpd-devel-2.2.15-5.el6.i386.rpm
-rw--r--r-- 1 root root 124403 11月19 06:30 httpd-tools-2.2.15-5.el6.i386.rpm
-rw--r--r-- 1 root root 383539 11月19 06:30 mod_ssl-2.2.15-5.el6.i386.rpm

如此,我们就得到可直接安装软件的 RPM 包。实际上,使用 rpmbuild命令编译 SRPM 包经历了以下 3 个过程:

  1. 先把 SRPM 包解开,得到源码包;
  2. 对源码包进行编译,生成二进制文件;
  3. 把二进制文件重新打包生成 RPM 包。

3、利用 *.spec 文件安装

想利用 .spec 文件安装软件,需先将 SRPM 包解开。当然,我们可以使用 rpmbuild 命令解开 SRPM 包,但这里选择另一种方式,即使用 rpm -i 命令,如下所示:

[root@localhost ~]# rpm -i httpd-2.2.15-5.el6.src.rpm

-i 选项用于安装 rpm 包时表示安装,但对于 SRPM 包的安装来说,这里只会将 .src.rpm 包解开后将个文件放置在当前目录下的 rpmbuild 目录中,并不涉及安装操作。

通过此命令,也可以在当前目录下生成 rpmbuild 目录,但与表 2 不同,此 rpmbuild 目录中仅有 SOURCES 和 SPECS 两个子目录。其中,SOURCES 目录中放置的是源码,SPECS 目录中放置的是设置文件。

接下来使用 SPECS 目录中的设置文件生成 RPM 包,命令如下:

[root@localhost ~]# rpmbuild -ba /root/rpmbuild/SPECS/httpd.spec

其中,-ba 选项的含义是编译,会同时生成 RPM 二进制包和 SRPM 源码包。这里还可以使用 -bb 选项用来仅生成 RPM 二进制包。

命令执行完成,会在 /root/rpmbuild/ 目录下生成 BUILD、RPMS、SOURCES、SPECS 和 SRPMS 目录,RPM 包放在 RPMS 目录中,SRPM 包生成在 SRPMS 目录中。

以上两种方式都可实现将 SRPM 包编译为 RPM 二进制包,剩下的工作就是使用 RPM 包安装软件,这部分内容已在前面章节中讲过,因此不再赘述。

八、Linux重建RPM数据库(修复损坏的RPM数据库)

我们知道,RPM 包是很多 Linux 发行版(Fefora、RedHat、SuSE 等)采用的软件包管理方式,安装到系统中的各 RPM 包,其必要信息都会保存到 RPM 数据库中,以便用户使用 rpm 命令对软件包执行查询、安装和卸载等操作。

但并非所有的用户操作都“按常理出牌”,例如 RPM 包在升级过程被强行退出、RPM 包安装意外中断等误操作,都可能使 RPM 数据库出现故障,后果是当安装、删除、査询软件包时,请求无法执行,如图 1 所示:

Linux学习教程(第七章 Linux系统软件安装)二_第1张图片

图 1 RPM数据库出现故障

这时就需要重建 RPM 数据库,执行如下 2 步操作:

  1. 删除当前系统中已损坏的RPM数据库,执行如下命令:

    [root@localhost ~]# rm -f /var/lib/rpm/_db.*

  2. 重建 RPM 数据库,执行如下命令:

    [root@localhost -]# rpm -rebuilddb

    这一步需花费一定时间才能完成。

除了用户误操作导致 RPM 数据库崩溃,有些黑客入侵系统后,为避免系统管理员通过 RPM 包校验功能检测出问题,会更改 RPM 数据库。

理论上,系统一旦被黑客“光顾”,则做的任何操作都将不可信。

对于这种情况,我们可以按照以下步骤对文件进行检测:

  1. 对于要校验的文件或命令,找到它属于哪个软件包,如下命令所示:

    [root@localhost ~]# rpm -qf/etc/rc.d/init.d/smb
    samba-3.0.23c-2

  2. 使用 -dump 选项查看每个文件的信息,使用 grep 命令提取对应文件信息:

    [root@localhost ~]# rpm -ql -dump samba|grep /etc/rc.d/init.d/smb
    /etc/rc.d/init.d/smb 2087 1157165946 b1c26e5292157a83cadabe851bf9b2f9 0100755 root root 1 0 0X

    此信息中,“2087”表示 smb 文件最初的字符数,“b1c26e5292157a83cadabe851bf9b2f9”表示 smb 文件的 MD5 校验值,“0755 root root”表示文件权限及所有者、所属组。
  3. 查看实际的文件,通过对比文件大小,所有人、所属组、权限、MD5 校验值等数据,判断文件是否被改动过:

    [root@localhost ~]# ls -l /etc/rc.d/init.d/smb
    -rwxr-xr-x 1 root root 2087 Sep 2 2006/etc/rc.d/init.d/smb
    [root@localhost ~]# md5sum /etc/rc.d/init.d/smb
    b1c26e5292157a83cadabe851bf9b2f9 /etc/rc.d/init.d/smb

    以上校验结果显示,系统的 /etc/rc.d/init.d/smb 文件的信息和通过 rpm-ql-dump Samba 命令获取的信息一致,因此可以断定此文件没有被入侵或更改。

注意,如果确信 RPM 数据库遭到了修改,就要基于从光盘或者其他值得信赖的来源处获得的 Samba RPM 文件进行检査。

[root@localhost~]# rpm -ql --dump -p /mnt/cdrom/Fedora/RPMS/samba-3.0.23c-2.i386.rpm | grep /etc/rc.d/init.d/smb
warning: samba-3.0.23c-2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 412a&62
/etc/rc.d/init.d/smb 2087 1157165946 b1c26e5292157a83cadabe851 bf9b2f9 0100755 root root 1 0 0 X

得到的结果如果和基于 RPM 数据库运行的命令结果不同,说明 RPM 数据库已被更改,就需要修正文件错误和系统漏洞,重建 RPM 数据库。

九、RPM包的依赖性及其解决方案

RPM 软件包(包含 SRPM 包)的依赖性主要体现在 RPM 包安装与卸载的过程中。

例如,如果采用最基础的方式(基础服务器方式)安装 Linux 系统,则 gcc 这个软件是没有安装的,需要自己手工安装。当你使用 rpm 命令安装 gcc 软件的 RPM 包,就会发生依赖性错误,错误提示信息如下所示:

[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ gcc-4.4.6-4.el6.i686.rpm
error: Failed dependencies: <―依赖性错误
cloog-ppi >= 0.15 is needed by gcc-4.4.6-4.el6.i686
cpp = 4.4.6-4.el6 is needed by gcc-4.4.6-4.el6.i686
glibc-devel >= 2.2.90-12 is needed by gcc-4.4.6-4.el6.i686

报错信息提示我们,如果要安装 gcc,需要先安装 cloog-ppl、cpp 和 glibc-devel 三个软件,这体现的就是 RPM 包的依赖性。

除此之外,报错信息中还会明确给出各个依赖软件的版本要求:

  • ">=":表示版本要大于或等于所显示版本;
  • "<=":表示版本要小于或等于所显示版本;
  • "=":表示版本要等于所显示版本;

Linux 系统中,RPM 包之间的依赖关系大致可分为以下 3 种:

  1. 树形依赖(A-B-C-D):要想安装软件 A,必须先安装 B,而安装 B 需要先安装 C…….解决此类型依赖的方法是从后往前安装,即先安装 D,再安装 C,然后安装 B,最后安装软件 A。
  2. 环形依赖(A-B-C-D-A):各个软件安装的依赖关系构成“环状”。解决此类型依赖的方法是用一条命令同时安装所有软件包,即使用 rpm -ivh 软件包A 软件包B ...
  3. 模型依赖:软件包的安装需要借助其他软件包的某些文件(比如库文件),解决模块依赖最直接的方式是通过 http://www.rpmfind.net 网站找到包含此文件的软件包,安装即可。

以上 3 种 RPM 包的依赖关系,给出的解决方案都是手动安装,比较麻烦。在后续的章节中,我们将系统学习使用 yum 命令查询、安装、升级和卸载软件包的方法。

yum,全称"Yellow dog Updater,Modified",CentOS 系统上的软件包管理器,它能够自动下载 RPM 包并安装,更重要的是,它可以自动处理软件包之间的依赖性关系,一次性安装所有依赖的软件包,无需一个个安装。

十、Linux yum是什么,yum源配置(网络yum源和本地yum源)

前面分别介绍了使用 SRPM 源码包和 RPM 二进制包安装软件,这两种方法都比较繁琐,需要手动解决包之间具有依赖性的问题,尤其是库文件依赖,需要自行去 http://www.rpmfind.net 网站上查找相关的 RPM 包。本节介绍一种可自动安装软件包(自动解决包之间依赖关系)的安装方式。

yum,全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上可以通过 360 软件管家实现软件的一键安装、升级和卸载,Linux 系统也提供有这样的工具,就是 yum。

可以这么说,yum 是改进型的 RPM 软件管理器,它很好的解决了 RPM 所面临的软件包依赖问题。yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装。

yum 软件可以用 rpm 命令安装,安装之前可以通过如下命令查看 yum 是否已安装:

[root@localhost ~]# rpm -qa | grep yum
yum-metadata-parser-1.1.2-16.el6.i686
yum-3.2.29-30.el6.centos.noarch
yum-utils-1.1.30-14.el6.noarch
yum-plugin-fastestmirror-1.1.30-14.el6.noarch
yum-plugin-security-1.1.30-14.el6.noarch

可以看到,系统上已经安装了 yum。

使用 rpm 命令安装 yum 的具体方式可查看《Linux怎么安装yum》一节。

使用 yum 安装软件包之前,需指定好 yum 下载 RPM 包的位置,此位置称为 yum 源。换句话说,yum 源指的就是软件安装包的来源。

使用 yum 安装软件时至少需要一个 yum 源。yum 源既可以使用网络 yum 源,也可以将本地光盘作为 yum 源。接下来就给大家介绍这两种 yum 源的搭建方式。

1、网络 yum 源搭建

一般情况下,只要你的主机网络正常,可以直接使用网络 yum 源,不需要对配置文件做任何修改,这里对 yum 源配置文件做一下简单介绍。

网络 yum 源配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名为"*.repo"(只要扩展名为 "*.repo" 的文件都是 yum 源的配置文件)。

[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo
CentOS-Media.repo
CentOS-Debuginfo.repo.bak
CentOS-Vault.repo

可以看到,该目录下有 4 个 yum 配置文件,通常情况下 CentOS-Base.repo 文件生效。我们可以尝试打开此文件,命令如下:

[root@localhost yum.repos.d]# vim /etc/yum.repos.d/ CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/? release= $releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
…省略部分输出…

此文件中含有 5 个 yum 源容器,这里只列出了 base 容器,其他容器和 base 容器类似。base 容器中各参数的含义分别为:

  • [base]:容器名称,一定要放在[]中。
  • name:容器说明,可以自己随便写。
  • mirrorlist:镜像站点,这个可以注释掉。
  • baseurl:我们的 yum 源服务器的地址。默认是 CentOS 官方的 yum 源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的 yum 源地址。
  • enabled:此容器是否生效,如果不写或写成 enabled 则表示此容器生效,写成 enable=0 则表示此容器不生效。
  • gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。
  • gpgkey:数字证书的公钥文件保存位置。不用修改。

2、本地 yum 源

在无法联网的情况下,yum 可以考虑用本地光盘(或安装映像文件)作为 yum 源。

Linux 系统安装映像文件中就含有常用的 RPM 包,我们可以使用压缩文件打开映像文件(iso文件),进入其 Packages 子目录,如图 1 所示:

Linux学习教程(第七章 Linux系统软件安装)二_第2张图片

图 1 安装映像文件的 Packages 子目录

可以看到,该子目录下含有几乎所有常用的 RPM 包,因此使用系统安装映像作为本地 yum 源没有任何问题。

在 /etc/yum.repos.d/ 目录下有一个 CentOS-Media.repo 文件,此文件就是以本地光盘作为 yum 源的模板文件,只需进行简单的修改即可,步骤如下:

  1. 放入 CentOS 安装光盘,并挂载光盘到指定位置。命令如下:

    [root@localhost ~]# mkdir /mnt/cdrom
    #创建cdrom目录,作为光盘的挂载点
    [root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
    mount: block device/dev/srO is write-protected, mounting read-only
    #挂载光盘到/mnt/cdrom目录下

  2. 修改其他几个 yum 源配置文件的扩展名,让它们失效,因为只有扩展名是"*.repo"的文件才能作为 yum 源配置文件。当也可以删除其他几个 yum 源配置文件,但是如果删除了,当又想用网络作为 yum 源时,就没有了参考文件,所以最好还是修改扩展名。 命令如下:

    [root@localhost ~]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# mv CentOS-Base, repo CentOS-Base.repo.bak
    [root@localhost yum.repos.d]#mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
    [root@localhost yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak

  3. 修改光盘 yum 源配置文件 CentOS-Media.repo,参照以下方修改:

    [root@localhost yum.repos.d]# vim CentOS-Media.repo
    [c6-media]
    name=CentOS-$releasever - Media
    baseurl=file:///mnt/cdrom
    #地址为你自己的光盘挂载地址
    #file:///media/cdrom/
    #file:///media/cdrecorder/
    #注释这两个的不存在地址
    gpgcheck=1
    enabled=1
    #把enabled=0改为enabled=1, 让这个yum源配置文件生效
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

如此,本地 yum 源就配置完成了。

你可能感兴趣的:(Linux,linux,学习,服务器)