搭建本地yum仓库及自制rpm包

为方便本地 yum 的管理,建本地 yum 仓库,实现局域网内部快速安装常用软件
实验环境
VMware:12版本
系统版本:CentOS Linux release 7.6.1810
网络ip段:内网:172.16.1.0/24,外网:10.0.0.0/24
实验步骤
1、搭建要实现本地 yum 管理的软件,测试该软件搭建成功与否;
2、定制 rpm 包及其相关依赖;
3、搭建本地 yum 源
4、配置客户端 yum ,实现局域网取包安装。
实验过程
1、安装nginx,测试安装是否成功
先保留平常下载下来的 rpm 包

sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf

这样当我们yum安装软件的时候,文件就是被保存到/var/cache/yum/
安装依赖包

yum install -y pcre-devel openssl-devel

检查安装成功与否

rpm -qa pcre-devel openssl-devel

创建安装包所存放的目录

mkdir -p /server/tools

进入安装包所存放的目录

cd /server/tools

下载 /nginx-1.16.0 压缩包

wget http://nginx.org/download/nginx-1.16.0.tar.gz

解压 nginx-1.16.0.tar.gz

tar xf nginx-1.16.0.tar.gz

进入 nginx-1.16.0 目录

cd nginx-1.16.0/

创建软件存放目录

mkdir -p /application

配置 nginx

./configure --user=nginx --group=nginx --prefix=/application/nginx-1.16.0 --with-http_stub_status_module --with-http_ssl_module --with-pcre

编译安装

make && make install

做软连接

ln -s /application/nginx-1.16.0/ /application/nginx

添加 nginx 用户

useradd  -u 1010 -s /sbin/nologin  -M nginx

启动 nginx 进行测试

/application/nginx/sbin/nginx

检查是否启动成功

netstat -lntup|grep nginx
or
lsof -i:80

关闭 nginx 为定制 rpm 包做准备:

pkill nginx

2、定制rpm包
安装 ruby 模块

yum -y install ruby rubygems ruby-devel

检查安装成功与否

rpm -qa ruby rubygems ruby-devel

查看当前源:

gem source list
*** CURRENT SOURCES ***

https://rubygems.org/

添加国内源

gem sources -a http://mirrors.aliyun.com/rubygems/

移除国外源

gem sources --remove https://rubygems.org/

再次查看当前源:

gem source list
*** CURRENT SOURCES ***

http://mirrors.aliyun.com/rubygems/

安装 FPM 工具

gem install fpm 

FPM 常用参数如下表所示

搭建本地yum仓库及自制rpm包_第1张图片
image.png

安装可能遇到的问题
1、遇到以下语法报错:

Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}

解决方法:

yum install -y rpm-build 

2、如果里面有gcc make的错误
解决方法:

yum install -y gcc 

创建 nginx 的 rpm 包要执行的脚本

cat >/server/scripts/nginx_rpm.sh <

通过 fpm 命令打包 rpm

fpm -s dir -t rpm -n nginx -v 1.16.0 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh  -f /application/nginx-1.16.0/

打包 rpm 遇到问题:

No such file (for after_install): "/server/scripts/nginx_rpm.sh  " {:level=>:error}

解决方法:对不起,请你手动敲一遍吧,它生气了,不让你复制粘贴
查看 rpm 包信息

rpm -qpi nginx-1.16.0-1.x86_64.rpm

查看 rpm 包内容

rpm -qpl nginx-1.16.0-1.x86_64.rpm

查看 rpm 的包依赖

rpm -qpR nginx-1.16.0-1.x86_64.rpm

查看 rpm 自带的执行脚本,执行脚本不是以文件的形式存在 rpm 包中

rpm -qp --scripts nginx-1.16.0-1.x86_64.rpm

3、搭建本地yum源
创建仓库目录

mkdir /application/yum/centos7/x86_64 -p

将生成的 nginx rpm 包放到该目录

mv nginx-1.16.0-1.x86_64.rpm /application/yum/centos7/x86_64/

安装 createrepo

yum -y install createrepo

初始化 repodata 索引文件

createrepo -pdo /application/yum/centos7/x86_64/ /application/yum/centos7/x86_64/

修改 nginx 配置文件,让它默认访问浏览器找到 /application/yum/centos7/x86_64/ 目录

cat  >/application/nginx/conf/nginx.conf<

检查 nginx 配置文件

/application/nginx/sbin/nginx -t

启动 nginx

/application/nginx/sbin/nginx

将我们之前下载的所有的 rpm 包都复制到本地 yum 仓库里

find /var/cache/yum/x86_64/7 -type f -name "*.rpm"|xargs -i cp {} /application/yum/centos7/x86_64
提示:每加入一个 rpm 包就要执行一下如下命令,用来更新索引
createrepo --update /application/yum/centos7/x86_64/

4、配置客户端 yum ,实现局域网取包安装
配置客户端

cat >  /etc/yum.repos.d/local.repo  << eof
[local]
name=Server
baseurl=http://10.0.0.61
enable=1
gpgcheck=0
eof

yum 操作、清除缓存、重新建立缓存

yum clean all

指定指定使用 local 源,此命令重启 linux 系统失效, 这条命令中的 local 名称一定要对应 local.repo 中的 [local]!

yum --enablerepo=local --disablerepo=base,extras,updates,epel list

安装 nginx ,进行测试

yum install -y nginx

你可能感兴趣的:(搭建本地yum仓库及自制rpm包)