[笔记.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 设置文件权限后带来安全风险。但我们这里可以在执行完成后删除,所以可以这样简单处理。