使用通过yum安装过的软件作为yum源

在不通外网,或没有内网yum源的情况下,怎么用yum装软件?

yum管理了rpm包的依赖关系。
我们用yum安装软件时,其实它是为我们下载了一堆rpm包,并按序安装。
所以,我们可以拷贝这一堆rpm包到其它一个没有网络的机器上,手工按序一个个安装它们,或者更方便的作法是再次借助yum管理这一堆rpm的依赖关系,帮我们自动安装。

一, 收集yum安装软件时所下载的rpm包

找一台可连接外网或者内网yum源的机器,用yum在线安装软件(以安装httpd为例)

修改/etc/yum.conf以让yum安装完软件后不删除rpm包(keepcache=1):
(默认情况下rpm会在安装完软件后自动删除所下载的rpm包)

cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
...

删除yum以前缓存的文件(/var/cache/yum/$basearch/$releasever):
(此举是为接下来我们要安装的软件提供一个干净的初始缓存)

[root@localhost 7]# pwd
/var/cache/yum/x86_64/7
[root@localhost 7]# ll
total 12
drwxr-xr-x 4 root root  256 Nov 28 16:12 base
drwxr-xr-x 4 root root 4096 Nov 28 11:12 epel
drwxr-xr-x 4 root root  161 Nov 28 11:12 extras
drwxr-xr-x 4 root root  137 Nov 28 11:12 mongodb-org-3.4
-rw-r--r-- 1 root root  129 Nov 28 11:16 timedhosts
-rw-r--r-- 1 root root 1673 Nov 27 14:27 timedhosts.txt
drwxr-xr-x 4 root root  161 Nov 28 11:12 updates
[root@localhost 7]# rm -rf *

通过yum安装httpd

yum -y install httpd

安装完成后,到缓存目录里查找下载的所有rpm包:

[root@localhost 7]# pwd
/var/cache/yum/x86_64/7
[root@localhost 7]# find . -type f -name "*.rpm"
./updates/packages/httpd-2.4.6-99.el7.centos.1.x86_64.rpm
./updates/packages/httpd-tools-2.4.6-99.el7.centos.1.x86_64.rpm
./base/packages/mailcap-2.1.41-2.el7.noarch.rpm

这些rpm包就是这台机器上安装httpd所需包。把它们打包压缩为如:httpd.tar.gz。 今后我们只要有这个文件,就可以离线用yum安装httpd到其它配置相同的机器上了。

二, 在另外一台机器上安装

我们要做的是,把httpd.tar.gz拷到目标机上并解压到如/root/firefox_rpms/的目录中,使用createrepo命令把该目录创建成一个yum源,再将该源加入到CentOS-Media.repo中,就可以用yum来从本地安装httpd了。

1、安装createrepo命令
如果机器上没有createrepo命令,可以提前用yum在线安装(yum -y install createrepo)

2、用createrepo命令创建本地yum源

[root@localhost firefox_rpms]# createrepo /root/firefox_rpms/
Spawning worker 0 with 17 pkgs
Spawning worker 1 with 17 pkgs
Spawning worker 2 with 16 pkgs
Spawning worker 3 with 16 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost firefox_rpms]# 

目录中会生成一个repodata目录,其中有所有rpm文件信息,以及它们的依赖关系信息,这是作为一个yum源所需要的。
配置CentOS-Media.repo让yum从本地安装软件
备份/etc/yum.repos.d目录的内容。删除其中除了CentOS-Media.repo之外的所有文件。修改CentOS-Media.repo内容如下:

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///root/firefox_rpms/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

其中baseurl=file:///root/firefox_rpms/ 指定我们的目录。gpgcheck=0表示取消gpg验证。enabled=1表示启动此repo。

三, 从本地安装httpd

先清理yum缓存:yum clean all,再安装httpd:

yum -y install httpd

发表评论