[关闭]
@Mr-13 2018-04-04T09:16:18.000000Z 字数 4106 阅读 89

YUM设置本地源安装软件(无网络环境)

Linux yum


前言

这里不讨论除了yum之外的其他软件安装方法,因为yum足够好用,也足够强大,专注就好。
yum 命令是基于rpm的软件包管理器,能够从 指定的 服务器自动下载RPM包并且安装,并且 自动处理依赖关系 一次安装当前软件所有的依赖包。

背景

在Linux下,有yum其实已经不需要在头疼软件安装和各种各样的依赖包问题了,整理笔记的背景:需要配合浙江信产搭建短信平台,并且在未完成系统、应用服务搭建,并通过网安部门的审查之前,不予开放外网。

所以,在无网络的情况下,只能在本机上想办法。背景交代完了,开干!


思路整理

查了一下,yum支持从本地源(简单理解为本机目录的安装包)安装软件。
1、先用yum把所需的软件、以及所需的依赖包全部下载好,并拷贝到目标主机
2、配置部署本地安装源。
3、清除yum缓存,并建立新的缓存。

bingo ~ ~

1. 下载软件、依赖包

下载软件及依赖包可以参考:怎样在 CentOS 里下载 RPM 包及其所有依赖包

  • yumdownloader:yum自带的下载工具,但不同的服务器环境下yum的安装可能不带有这些扩展项,需要单独下载

    可以通过:rpm -qa | grep yum-utils 命令来查看是否已经安装;
    可以通过: rpm -ql yum-utils 查看所有的扩展项目。
    没安装的话:yum install yum-utils 装一下吧。
  1. # 查看是否已经安装了yum扩展
  2. [root@st-centos68 /]# rpm -qa |grep yum-utils
  3. yum-utils-1.1.30-40.el6.noarch
  1. # 查看yum的详细扩展内容
  2. [root@st-centos68 /]# rpm -ql yum-utils
  3. /etc/bash_completion.d
  4. /etc/bash_completion.d/yum-utils.bash
  5. ......
  6. /usr/share/man/man1/yumdownloader.1.gz
  7. /usr/share/man/man8/yum-complete-transaction.8.gz
  8. /usr/share/man/man8/yumdb.8.gz

PS:这里备注一下,刚说了这次施工没外网,怎么就直接yum install上了?下载软件当然是在有外网的电脑上了,比如阿里云/自己的电脑上,干嘛死耗在那个没外网的机器上。

然后就可以愉快的下载所需的各种软件及其依赖包了:

  • yumdownloader [软件名]: 直接下载RPM包到当前目录;
  • yumdownloader --resolve [软件名]: 下载包含所有依赖在内的RPM包到当前目录下;
  • yumdownloader --resolve --destdir /opt/soft_file/ [软件名]: 下载到指定目录里;
  • yumdownloader --resolve --destdir=/opt/soft_file/[软件名]: 同上;

下载过程不赘述。


2. 目标服务器本地源环境配置

软件及其依赖包下载好了,下一步开始在目标服务器(没有外网)配置本地源安装环境了。

创建本地源步骤:

  • 安装createrepo包;
  • 新建本地源目录并创建源
    1. mkdir /opt/soft_rpm;创建本地源路径
    2. 将下载好的软件及其依赖包上传到/opt/soft_rpm/
    3. createrepo /opt/soft_rpm/;创建一个源;
  • 配置yum本地源
    /etc/yum.repos.d/ 目录下创建文件:localfile.repo

按照步骤,一步一步设置一下。

2.1 安装createrepo

创建本地源需要软件:createrepo,没外网环境,本地源还没做,先rpm安装一下。

安装包及需要的依赖项:

  1. #以下部分是在执行:yum install createrepo时列出的,仅作参考依赖项
  2. Dependencies Resolved
  3. ================================================================================================
  4. Package Arch Version Repository Size
  5. ================================================================================================
  6. Installing:
  7. createrepo noarch 0.9.9-27.el6_9 updates 97 k
  8. Installing for dependencies:
  9. deltarpm x86_64 3.5-0.5.20090913git.el6 base 71 k
  10. python-deltarpm x86_64 3.5-0.5.20090913git.el6 base 27 k
  11. Transaction Summary
  12. ================================================================================================
  13. Install 3 Package(s)
  • 把这三个包先上传到目标服务器/opt/soft_rpm/;
    image_1ca5en28qui21rb019qg1decmc9.png-7.1kB

  • 把这仨装一下(放弃治疗了,也不管啥依赖关系了)
    rpm -ivh *.rpm
    image_1ca5f5v1oh9eke11ufl1ghg6uhm.png-11kB

  • 看见这儿就算OK了
    image_1ca5famdg9cr1jp217b2198o1asr13.png-8.9kB

2.2 新建本地目录并创建于源

我们将本地源目录定为:/opt/soft_rpm,这个目录是我们本地rpm包的上传位置,也是所创建的本地安装源的所在位置。

A. 创建目录

image_1ca71lq69158g10o21vut1ibe1pt79.png-8.6kB

B. 上传软件及依赖项的rpm文件

这里需要说明两点:

  • 在创建源之前,必须先包所有rpm包上传到指定的目录下(这个路径会在配置源文件的时候指定)。创建源的时候会检索路径下包含的rpm及依赖项生成本地源目录。
  • 配置本地源的目的是安装软件,但是如果所需的软件已经系统集成,个人的建议是:卸载!重新自己安装,尤其是阿里云,坑过。

这里以安装crontabs(Linux的计划任务)为例,需要上传:
image_1ca7b59rhh2bigp1fs7146i1mncm.png-7.6kB

C. 创建本地源

这里就需要用到createrepo了,也是实际上执行创建源的步骤,之前都是在安装所需环境和上传rpm。

  1. [root@st-centos68 /]# createrepo /opt/soft_rpm/
  2. # 以下是输出内容
  3. Spawning worker 0 with 4 pkgs
  4. Workers Finished
  5. Gathering worker results
  6. Saving Primary metadata
  7. Saving file lists metadata
  8. Saving other metadata
  9. Generating sqlite DBs
  10. Sqlite DBs complete

在这一步createrepo会将rpm目录中所包含的软件并生成软件仓库目录 repodata ,包含数据源xml。
image_1ca7evlaa183m1bm31n2sjga107b1g.png-48.2kB

其中最主要的是repomd.xml文件。一般出现的找不到repodata目录或文件的错误的原因通常有三个:一是路径问题;二是没有生成repodate目录;三是*.repo配置文件冲突(这个需要特意注意)。

到这里,本地源创建完成,下面继续配置yum,让它从我们指定的本地源执行安装。


2.3 配置yum本地源

进入路径 /etc/yum.repos.d/ 这是yum的安装源配置文件目录;我们可以在现有的文件基础上增加配置内容,也可以直接创建一个新的源配置文件。

以下,以创建新的源配置文件方式进行;这里需要补充说明一点,如果以后可以连接外网,我们想要恢复从其他网络源安装软件,我们新建的源配置文件(或者在已有文件追加的部分配置内容)一定要剪切到其他路径/移除,否则在执行清空并建立新的yum缓存时,会提示报错。

  1. # /etc/yum.repos.d/localfile.repo
  2. # 创建文件直接 vi localfile.repo 编辑就好,最后wq!文件就存在了
  3. [localfile]
  4. name=localfile
  5. baseurl=file:///opt/soft_rpm
  6. enable=1
  7. gbgcheck=0
  8. # 以下是说明,不要粘贴进.repo文件里:
  9. # 本地源/库的名字,必须是唯一的
  10. [localfile]
  11. # 本地源/库说明,没太大实际意义,只是一个说名字段
  12. name=localfile
  13. # 说明什么方式传输,具体路径在哪里
  14. # 可以使用的方式有:file://,ftp://,http://
  15. baseurl=file:///opt/soft_rpm
  16. # 说明启用这个源,0表示不启用
  17. enable=1
  18. # 表示使用gpg文件来检查软件包的签名
  19. gbgcheck=0
  20. #表示gpg文件所存放的位置,此处也可以有http方式的位置。
  21. # gpgkey=

这里就把本地源配置文件设置好了,下面 很重要 的一步:

  • 把其他所有的原配置文件中enable改为0:enable=0

image_1ca7iqr1a15dafje43h1tru701t.png-74.1kB


3. 清除并更新yum的缓存

  • 清空yum缓存:yum clean all
  • 重新建立缓存:yum makecache

image_1ca7op8401rd31vqu1thh1ets177h2a.png-31.3kB

这样,yum的本地源就安装配置完成了。当前现在的本地源只能安装crontabs,因为库目录下只有这一个软件及依赖的rpm。


4. 测试安装crontabs

用本地源安装时,可能会提示安装校验错误,添加命令:--nogpgcheck,不做校验就可以了

yum --nogpgcheck install xxxx

用刚刚配置好的本地源,安装一下crontabs。如下:

  • 先检查一下当前是否已经安装crontabs;
    image_1ca7pvrleg7uuhl4l71jr019me2n.png-4kB

  • 安装crontabs,如图:
    在安装时,检查安装来源是“localfile”,在localfile.repo中指定的库名。
    image_1ca7q6qt51ei71qce1a5g8if11iq10.png-53.1kB

本地源安装、配置成功!


附录A:引用链接及其他资源

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注