[笔记.CentOS7]离线安装rpm包,本地yum源

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

一、如何获取离线的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 设置文件权限后带来安全风险。但我们这里可以在执行完成后删除,所以可以这样简单处理。

经验分享 程序员 微信小程序 职场和发展