@Mr-13
2018-04-04T09:16:18.000000Z
字数 4106
阅读 89
Linux
yum
这里不讨论除了yum之外的其他软件安装方法,因为yum足够好用,也足够强大,专注就好。
yum 命令是基于rpm的软件包管理器,能够从 指定的 服务器自动下载RPM包并且安装,并且 自动处理依赖关系 一次安装当前软件所有的依赖包。
在Linux下,有yum其实已经不需要在头疼软件安装和各种各样的依赖包问题了,整理笔记的背景:需要配合浙江信产搭建短信平台,并且在未完成系统、应用服务搭建,并通过网安部门的审查之前,不予开放外网。
所以,在无网络的情况下,只能在本机上想办法。背景交代完了,开干!
查了一下,yum支持从本地源(简单理解为本机目录的安装包)安装软件。
1、先用yum把所需的软件、以及所需的依赖包全部下载好,并拷贝到目标主机
2、配置部署本地安装源。
3、清除yum缓存,并建立新的缓存。
bingo ~ ~
下载软件及依赖包可以参考:怎样在 CentOS 里下载 RPM 包及其所有依赖包
- yumdownloader:yum自带的下载工具,但不同的服务器环境下yum的安装可能不带有这些扩展项,需要单独下载
可以通过:rpm -qa | grep yum-utils 命令来查看是否已经安装;
可以通过: rpm -ql yum-utils 查看所有的扩展项目。
没安装的话:yum install yum-utils 装一下吧。
# 查看是否已经安装了yum扩展
[root@st-centos68 /]# rpm -qa |grep yum-utils
yum-utils-1.1.30-40.el6.noarch
# 查看yum的详细扩展内容
[root@st-centos68 /]# rpm -ql yum-utils
/etc/bash_completion.d
/etc/bash_completion.d/yum-utils.bash
......
/usr/share/man/man1/yumdownloader.1.gz
/usr/share/man/man8/yum-complete-transaction.8.gz
/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/[软件名]: 同上;
下载过程不赘述。
软件及其依赖包下载好了,下一步开始在目标服务器(没有外网)配置本地源安装环境了。
- 安装createrepo包;
- 新建本地源目录并创建源
1. mkdir /opt/soft_rpm;创建本地源路径
2. 将下载好的软件及其依赖包上传到/opt/soft_rpm/
3. createrepo /opt/soft_rpm/;创建一个源;- 配置yum本地源
在 /etc/yum.repos.d/ 目录下创建文件:localfile.repo
按照步骤,一步一步设置一下。
创建本地源需要软件:createrepo,没外网环境,本地源还没做,先rpm安装一下。
安装包及需要的依赖项:
#以下部分是在执行:yum install createrepo时列出的,仅作参考依赖项
Dependencies Resolved
================================================================================================
Package Arch Version Repository Size
================================================================================================
Installing:
createrepo noarch 0.9.9-27.el6_9 updates 97 k
Installing for dependencies:
deltarpm x86_64 3.5-0.5.20090913git.el6 base 71 k
python-deltarpm x86_64 3.5-0.5.20090913git.el6 base 27 k
Transaction Summary
================================================================================================
Install 3 Package(s)
- 把这三个包先上传到目标服务器/opt/soft_rpm/;
- 把这仨装一下(放弃治疗了,也不管啥依赖关系了)
rpm -ivh *.rpm
- 看见这儿就算OK了
我们将本地源目录定为:/opt/soft_rpm,这个目录是我们本地rpm包的上传位置,也是所创建的本地安装源的所在位置。
这里需要说明两点:
- 在创建源之前,必须先包所有rpm包上传到指定的目录下(这个路径会在配置源文件的时候指定)。创建源的时候会检索路径下包含的rpm及依赖项生成本地源目录。
- 配置本地源的目的是安装软件,但是如果所需的软件已经系统集成,个人的建议是:卸载!重新自己安装,尤其是阿里云,坑过。
这里以安装crontabs(Linux的计划任务)为例,需要上传:
这里就需要用到createrepo了,也是实际上执行创建源的步骤,之前都是在安装所需环境和上传rpm。
[root@st-centos68 /]# createrepo /opt/soft_rpm/
# 以下是输出内容
Spawning worker 0 with 4 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
在这一步createrepo会将rpm目录中所包含的软件并生成软件仓库目录 repodata ,包含数据源xml。
其中最主要的是repomd.xml文件。一般出现的找不到repodata目录或文件的错误的原因通常有三个:一是路径问题;二是没有生成repodate目录;三是*.repo配置文件冲突(这个需要特意注意)。
到这里,本地源创建完成,下面继续配置yum,让它从我们指定的本地源执行安装。
进入路径 /etc/yum.repos.d/ 这是yum的安装源配置文件目录;我们可以在现有的文件基础上增加配置内容,也可以直接创建一个新的源配置文件。
以下,以创建新的源配置文件方式进行;这里需要补充说明一点,如果以后可以连接外网,我们想要恢复从其他网络源安装软件,我们新建的源配置文件(或者在已有文件追加的部分配置内容)一定要剪切到其他路径/移除,否则在执行清空并建立新的yum缓存时,会提示报错。
# /etc/yum.repos.d/localfile.repo
# 创建文件直接 vi localfile.repo 编辑就好,最后wq!文件就存在了
[localfile]
name=localfile
baseurl=file:///opt/soft_rpm
enable=1
gbgcheck=0
# 以下是说明,不要粘贴进.repo文件里:
# 本地源/库的名字,必须是唯一的
[localfile]
# 本地源/库说明,没太大实际意义,只是一个说名字段
name=localfile
# 说明什么方式传输,具体路径在哪里
# 可以使用的方式有:file://,ftp://,http://
baseurl=file:///opt/soft_rpm
# 说明启用这个源,0表示不启用
enable=1
# 表示使用gpg文件来检查软件包的签名
gbgcheck=0
#表示gpg文件所存放的位置,此处也可以有http方式的位置。
# gpgkey=
这里就把本地源配置文件设置好了,下面 很重要 的一步:
- 把其他所有的原配置文件中enable改为0:enable=0。
- 清空yum缓存:yum clean all
- 重新建立缓存:yum makecache
这样,yum的本地源就安装配置完成了。当前现在的本地源只能安装crontabs,因为库目录下只有这一个软件及依赖的rpm。
用本地源安装时,可能会提示安装校验错误,添加命令:--nogpgcheck,不做校验就可以了
yum --nogpgcheck install xxxx
用刚刚配置好的本地源,安装一下crontabs。如下:
- 先检查一下当前是否已经安装crontabs;
- 安装crontabs,如图:
在安装时,检查安装来源是“localfile”,在localfile.repo中指定的库名。
本地源安装、配置成功!