搭建本地yum仓库及自制rpm包(无需镜像)
搭建本地yum仓库及自制rpm包(无需镜像)
0、专属图床
点此快速打开文章【搭建本地yum仓库及自制rpm包(无需镜像)】
1、实验目的
为方便本地
yum
的管理,建本地yum
仓库,实现局域网内部快速安装常用软件
2、实验环境
物理机系统:
Windows 10 企业版
使用软件的版本:
VMware 12 Pro
虚拟机配置:
CentOS 7.6
网络配置:
- 主机名:MineGi;外网 IP:10.0.0.99;内网 IP :172.16.1.99
- 主机名:TrueLv;外网 IP:10.0.0.199;内网 IP :172.16.1.199
3、实验过程
3.1 服务端 MineGi 主机操作
3.1.1 安装nginx
3.1.1.1 设置保留下载的包
sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf grep keepcache /etc/yum.conf
这样当我们yum安装软件的时候,文件就是被保存到/var/cache/yum/
3.1.1.2 安装环境依赖的包
yum install -y pcre-devel openssl-devel &>/dev/null echo $? rpm -qa pcre-devel openssl-devel
3.1.1.3 创建所存放的目录
mkdir -p /server/tools cd /server/tools
3.1.1.4 下载实验所需的包
wget http://nginx.org/download/nginx-1.16.1.tar.gz ll
3.1.1.5 解压并进入其目录
tar xf nginx-1.16.1.tar.gz cd nginx-1.16.1/
3.1.1.6 创建其用户和授权
useradd -s /sbin/nologin -M nginx mkdir -p /application chown -R nginx. /application ls -ld /application/
3.1.1.7 进行软件的预编译
./configure --user=nginx --group=nginx --prefix=/application/nginx-1.16.1 \ --with-http_stub_status_module --with-http_ssl_module --with-pcre \ &>/dev/null
3.1.1.8 进行其编译和安装
make &>/dev/null && make install &>/dev/null
3.1.1.9 进行以下操作测试
cd ln -s /application/nginx-1.16.1/ /application/nginx /application/nginx/sbin/nginx netstat -lntup|grep nginx pkill nginx !netstat
3.1.2 定制rpm包
3.1.2.1 安装 ruby
模块
yum -y install ruby rubygems ruby-devel &>/dev/null rpm -qa ruby rubygems ruby-devel
3.1.2.2 更换国内的源
gem source list -->查看当前源 gem sources -a https://gems.ruby-china.com/ -->添加国内源 gem sources --remove https://rubygems.org/ -->移除国外源 gem source list
3.1.2.3 安装 FPM
工具
gem install fpm
FPM
常用参数如下表所示
FPM常用参数 说明 -s 指定源类型 -t 指定目标类型,即想要制作为什么包 -n 指定包的名字 -v 指定包的版本号 -C 指定打包的相对路径 -d 指定依赖于哪些包 -f 第二次包时目录下如果有同名安装包存在,则覆盖它 -p 输出的安装包的目录,不想放在当前目录下就需要指定 --post-install 软件包安装完成之后所要运行的脚本;同--offer-install --pre-install 软件包安装完成之前所要运行的脚本;同--before-install --post-uninstall 软件包卸载完成之后所要运行的脚本;同--offer-remove --pre-uninstall 软件包卸载完成之前所要运行的脚本;同—before-remove
安装可能遇到的问题
1、遇到以下语法报错:
Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}
解决方法:
yum install -y rpm-build
2、如果里面有
gcc make
的错误解决方法:
yum install -y gcc
3.1.2.4 创建 nginx
的 rpm
包要执行的脚本
mkdir -p /server/scripts cat >/server/scripts/nginx_rpm.sh <<EOF #!/bin/bash useradd -M -s /sbin/nologin nginx ln -s /application/nginx-1.16.1/ /application/nginx chown -R nginx. /application EOF
3.1.2.5 通过 fpm
命令打包 rpm
fpm -s dir -t rpm -n nginx -v 1.16.1 -d 'pcre-devel,openssl-devel' \ --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.16.1/ ll
打包
rpm
遇到问题:No such file (for after_install): "/server/scripts/nginx_rpm.sh " {:level=>:error}
解决方法
对不起,请你手动敲一遍吧,它生气了,不让你复制粘贴
3.1.2.6 一些查看信息的操作
查看
rpm
包信息rpm -qpi nginx-1.16.1-1.x86_64.rpm
查看
rpm
包内容rpm -qpl nginx-1.16.1-1.x86_64.rpm
查看
rpm
的包依赖rpm -qpR nginx-1.16.1-1.x86_64.rpm
查看
rpm
自带的执行脚本,执行脚本不是以文件的形式存在rpm
包中rpm -qp --scripts nginx-1.16.1-1.x86_64.rpm
3.1.3 搭建yum源
3.1.3.1 创建仓库目录并移动RPM包
mkdir /application/yum/centos7/x86_64 -p mv nginx-1.16.1-1.x86_64.rpm /application/yum/centos7/x86_64/
3.1.3.2 安装 createrepo
服务
yum -y install createrepo &>/dev/null echo $?
3.1.3.3 初始化 repodata
索引文件
createrepo -pdo /application/yum/centos7/x86_64/ /application/yum/centos7/x86_64/
3.1.3.4 修改 nginx
配置文件
修改
nginx
配置文件,让它默认访问浏览器找到/application/yum/centos7/x86_64/
目录cat >/application/nginx/conf/nginx.conf<<'EOF' worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /application/yum/centos7/x86_64/; autoindex on; ##开启目录 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } EOF
3.1.3.5 检查 nginx
配置文件
/application/nginx/sbin/nginx -t
3.1.3.6 启动 nginx
/application/nginx/sbin/nginx netstat -lntup|grep nginx
3.1.3.7 将所需 rpm 包移到仓库中
将我们之前下载的所有的
rpm
包都复制到本地yum
仓库里find /var/cache/yum/x86_64/7 -type f -name "*.rpm" \ |xargs mv -t /application/yum/centos7/x86_64 ls /application/yum/centos7/x86_64 |wc -l
3.1.3.8 进行更新索引
每加入一个新的
rpm
包就要执行一下如下命令,用来更新索引createrepo --update /application/yum/centos7/x86_64/
3.2 客服端 TrueLv 主机操作
3.2.1 移走配置文件
mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/*repo* /etc/yum.repos.d/bak ls /etc/yum.repos.d/
3.2.2 本地配置文件
cat > /etc/yum.repos.d/local.repo <<'EOF' [local] name=Server baseurl=http://10.0.0.99 enable=1 gpgcheck=0 EOF cat /etc/yum.repos.d/local.repo
3.2.3 进行以下操作
yum
操作、清除缓存、重新建立缓存yum clean all
指定指定使用
local
源,此命令重启linux
系统失效, 这条命令中的local
名称一定要对应local.repo
中的[local]!
(这步不做好像也没影响)yum makecache or yum --enablerepo=local --disablerepo=base,extras,updates,epel list
安装
nginx
,进行测试ll /application/ rpm -qa nginx yum install -y nginx &>/dev/null ll /application/ /application/nginx/sbin/nginx netstat -lntup |grep nginx
『MineGi有话说』:快来扫一扫下面链接的二维码,加入我们吧!
您的资助是我最大的动力!
金额随意,欢迎来赏!