若当前Linux机器无法访问外网,通过yum无法获取外网的rpm包。此时,可通过配置本地rpm仓库的方式,安装所需要的软件。提前从外网下载所需要的包,然后拷贝到内网Linux机器
1. 下载需要的rpm包
1.1 通过yum下载
通过yum工具下载所需要的软件,此方式下载rpm时会自动下载依赖包!但是只会下载当前系统没有安装的依赖,如果某个依赖当前系统已安装,那么此方式是不会自动去下载该依赖的!
(前提是要保证外网机器和内网机器的内核版本是一样的,否则软件包可能会不兼容!)
查看当前系统的版本,以centos7为例
uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
yum工具一般自带了两个参数:
--downloadonly # 仅下载包而不安装
--downloaddir=/home/xxx # 指定rpm包下载的路径
yum reinstall --downloadonly --downloaddir=/home/yumLocal zlib
1.2 通过repotrack下载
该方式下载软件包会自动下载该包所有的依赖,不管该依赖有没有被安装在系统中!
#查找所有版本的zlib
yum search zlib --showduplicates
# -p 指定下载目录
repotrack -p ./ zlib-devel-1.2.7-19.el7_9.x86_64
2. 编写repo文件
进入/etc/yum.repos.d并新建repo文件,文件名自定义
[localFile]
name=localFileOfRpm
baseurl=file:///home/yumLocal
gpgcheck=0
gpgkey=
enabled=1
配置说明:
[localFile]:repositry的名字,必须是独一无二的,不能和其他源文件冲突
name=localFileOfRpm:对于[localFile]的具体描述,这个可以根据具体使用描述
baseurl:这个是非常重要的一环,表明了repositry的地址,支持ftp协议,http协议和file协议;
enabled=0/1:只有两个值,为1时表示repositry可以获取,0表示关闭
gpgcheck=0/1:有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的
gpgkey=url:后面接的是gpgkey的地址,如果前面定义gpgcheck=1的话。
3. 生成新的repomd.xml
如果只是下载了rpm包,并且编写好了repo文件,然后yum clean all最后yum makecache是会直接报错的。因为yum安装软件需要repomd.xml文件,用于描述yum源的相关信息。
解决方法是在指定的本地rpm包源目录下,创建出相应的repomd.xml文件
(前提是要编写好repo文件并放入了/etc/yum.repos.d目录下!)
createrepo /home/yumLocal/
4. 更新yum源缓存
yum clean all
yum makecache
[root@localhost yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: localFile
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
localFile | 2.9 kB 00:00:00
(1/3): localFile/primary_db | 3.5 kB 00:00:00
(2/3): localFile/other_db | 2.4 kB 00:00:00
(3/3): localFile/filelists_db | 2.7 kB 00:00:00
Metadata Cache Created
通过yum安装软件
当以上的配置都执行成功后,就可以通过本地文件yum源的方式安装软件了
yum reinstall zlib
网友评论