首页 > 技术文章 > [笔记.CentOS7]离线安装rpm包,本地yum源

fj365 2022-05-07 14:25 原文

因为项目上基本都是内网,所以存在离线安装所需包及其依赖包的问题。

一、如何获取离线的rpm包?

1. 安装光盘的 Packages 目录下
  通常是挂接成本地目录,然后做为yum源

2. 通过 yumdownloader 下载指定rmp及其依赖包
  yumdownloader 的安装  

yum install yum-utils -y

  下载包(我只验证成功前一种,--downloadonly 方式暂未成功)

yumdownloader --resolve --destdir /data/localyum/packages <包名>
yumdownloader --downloadonly --downloaddir=/data/localyum/packages/ <包名> --resolve

  注意,先创建目录:  

mkdir -p /data/localyum/packages

二、如何使用离线rpm包?

1. 方式一:创建本地yum源,用 yum 命令安装。
  好处: 自动解处理包依赖
  1.1 创建本地repo
  
  使用createrepo指令创建本地repo(加-v参数可列出执行信息)

cd /data/localyum/packages; createrepo .

  如果已经创建过,但更新了rpm包,则可以执行更新命令 

cd /data/localyum/packages; createrepo --update .

  1.2 添加本地 yum 源
    在目录 /etc/yum.repos.d 下新增文件 CentOS-fj-local.repo (文件名自己定但后缀要是.repo),内容:   

[fj-local]
name=CentOS-fj-local             #名称自定义,但要唯一
baseurl=file:///data/zlpackages  #也可以是多个地址,也可以是 ftp 地址
enabled=1                        #是否开启仓库,1为开启,0为关闭
gpgcheck=0                       #是否检查gpgkey,1为开启,0为关闭


   配置成功后可以用以下命令查看下已生效的 yum 源  

yum repolist

 

1.3 更新 yum 安装包缓存 

yum clean all; yum makecache

2. 方式二:yum localinstall 命令安装指定rpm包文件

yum localinstall -y {一个或多个包文件路径(多个包用空格分隔)} --nogpgcheck

3. 方式三:rpm 命令安装指定rpm包文件

rpm -U {一个或多个包文件路径(多个包用空格分隔)} --nodeps --force

//-U:升级软件,若未软件尚未安装,则安装软件。
//-v:表示显示详细信息。
//-h:以"#"号显示安装进度。
//--force:强制安装
//--nodeps:不考虑相依属性的关系

附一:其他常用命令

  • 删除yum.pid强行解除锁定
rm -rf /var/run/yum.pid
  • 查看包是否已安装
yum list installed | grep {包名}

附二:遇到过的问题

  • 在 centos7 上安装 libgdiplus

1) 包文件冲突

遇到安装依赖包 libpng 发生文件冲突。看错误信息应该是计算依赖时同时安装了 libpng-1.5.13 与 libpng15,导致某个/些文件冲突。尝试了下,先安装指定版本 libpng-1.5.13,然后再安装其他包,问题解决。

yum -y install libpng-1.5.13-8.el7 libpng-devel --nogpgcheck
yum -y install autoconf libtool automake libgnomeui-devel libjpeg libjpeg-devel libtiff libtiff-devel libungif libungif-devel freetype zlib freetype-devel fontconfig libXft-devel libjpeg-turbo-devel giflib-devel libexif-devel glib2-devel cairo-devel zlib-devel

2) 执行 .sh 文件无权限

cd /data/install/libgdiplus-6.0.5/; chmod 777 autogen.sh; ./autogen.sh; make; make install;

注意:chmod 777 设置文件权限后带来安全风险。但我们这里可以在执行完成后删除,所以可以这样简单处理。

推荐阅读