CentOS7搭建公网yum仓库并定制rpm包

一、服务端搭建yum仓库:

这里选择的是nginx 部署的方式(配置文件)

1、安装nginx

yum install -y nginx
systemctl enable --now nginx

 2、编写配置文件

cat /etc/nginx/conf.d/yum.openjiajun.com.conf 
server {
    listen       80;
    server_name  yum.openjiajun.com;
    root /yum/centos7; 
    access_log  /var/log/nginx/yum.access.log  main;
    error_log /var/log/nginx/yum.error.log notice;
    autoindex on;                #开启nginx目录浏览功能
    autoindex_exact_size off;    #文件大小从KB开始显示
    autoindex_localtime on;      #显示文件修改时间为服务器本地时间
    location / {
        index  index.html;
    }
   }

#重启nginx,加载配置文件
nginx -t 
nginx -s reload

3、初始化yum 仓库的目录

#安装 createrepo 软件,用于生成 yum 仓库数据库的软件
yum -y install createrepo   yum-utils

#创建目录并生成repodata索引
mkdir -p /yum/centos7 && cd /yum/centos7
createrepo -pdo /yum/centos7 /yum/centos7 

# 每加入一个rpm包就要更新一下
createrepo --update /yum/centos7/

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

#配置自动推送rpm包
简略版
cat /server/scripts/sync.sh 
#!/bin/bash
source /etc/profile #防止定时任务出问题
rsync -av  $(find  /var/cache/yum/x86_64/7/ -type f -name "*.rpm") /yum/centos7/

crontab -l
#1. sync time 
*/2 * * * * /sbin/ntpdate ntp1.aliyun.com &>/dev/null
#2.基于定时任务的增量推送rpm包
*/5 * * * * /bin/bash /server/scripts/sync.sh  &>>/dev/null



#自动化优化-思路(留坑)
sersync + rsync 
sersync或inotify 监控 /var/cache/yum/x86_64/7/ 目录,并实时同步(其实不太用的到,rpm包没有实时同步的必要性)

4、访问测试

http://yum.openjiajun.com

二、fpm定制rpm包部分 

0.两种方法


#可以直接下载的时候就下载新版的ruby
1、下载 Ruby3.3 并安装(这个方法下载好慢我用的是下面的先在下载在升级)

wget https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0.tar.gz
#这个下载非常慢我用的是第二种方法

tar -zxvf ruby-3.3.0.tar.gz

cd ruby-3.3.0

./configure 

make

make install
查看版本
ruby -v

2、服务端:安装ruby环境和gem,并编译安装cmatrix

yum -y install ruby rubygems ruby-devel

#gem命令是从rubygem仓库安装软件类似yum从yum仓库安装软件:
#查看当前源
gem source list
*** CURRENT SOURCES ***
http://rubygems.org/

#修改ruby源
#添加国内源
gem sources -a http://mirrors.aliyun.com/rubygems/
gem sources -a http://mirrors.tencent.com/rubygems/
#移除国外源
gem sources --remove https://rubygems.org/

#安装FPM工具
gem install fpm

#报错:ERROR:  Error installing fpm:
    dotenv requires Ruby version >= 3.0.

#原因:yum默认安装的是2.0版本 如果需要升级更高版本 可以使用以下方案升级(可直接复制进脚本执行)
#解决方法:
ruby -v #查看当前版本

gem sources -l
*** CURRENT SOURCES ***

http://mirrors.aliyun.com/rubygems/
#安装RAM
RVM(Ruby Version Manager )是一款RAM的命令行工具,可以使用RVM轻松安装,管理Ruby版本。RVM包含了Ruby的版本管理和Gem库管理(gemset)
#可以使用如下命令进行安装RAM:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB (失效了)
或
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
 
#温馨提示:上面的 RAM安装直接用第二个

curl -sSL https://get.rvm.io | bash -s stable
更新配置文件,使其立马生效:
source /etc/profile.d/rvm.sh
查看RVM版本信息,如果可以代表安装成功
rvm -v
接下来查看Ruby版本
rvm list known
安装Ruby
yum install -y readline-devel-6.2-11.el7.x86_64 libffi-devel-3.0.13-19.el7.x86_64 ncurses-devel-5.9-14.20130511.el7_4.x86_64 sqlite-devel-3.7.17-8.el7_7.1.x86_64

rvm install 3.1.2
#这里等了一会,这个时候可用去编译安装cmatrix

rvm docs generate-ri
#等待

验证
 ~]# ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]

安装fpm命令(ps:终于到了这一步):
gem install fpm


#编译安装cmatrix
1)上传cmatrix 压缩包
rz -E
#压缩包可以去http://yum.openjiajun.com/ 下载

2)解压
tar xf  cmatrix-1.2a.tar.gz -C /tmp
/tmp]# ls
cmatrix-1.2a         oldboy.txt    cmatrix-1.2a.tar.gz  sysinfo.txt  

3)编译安装
cd cmatrix-1.2a 
./configure  --prefix=/application/cmatrix-1.2a
make
make install
4)查看编译安装后的命令
/tmp/cmatrix-1.2a]#ls /application/cmatrix-1.2a/bin/
cmatrix
5)运行
/application/cmatrix-1.2a/bin/cmatrix

#打包cmatrix
1)编写打包脚本
/application]# ln -s /application/cmatrix-1.2a/ cmatrix

/application/cmatrix]# cat cmatrix.rpm.sh 
#!/bin/bash
ln -s ./cmatrix-1.2a/ cmatrix
cp cmatrix/bin/* /usr/local/bin

2)打包
 /application]#fpm -s dir -t rpm -n cmatrix -v 1.2a  --post-install \
 ./cmatrix/cmatrix.rpm.sh  .
Created package {:path=>"cmatrix-1.2a-1.x86_64.rpm"} #说明创建成功

3)查看包内内容
rpm -qlp cmatrix-1.2a-1.x86_64.rpm


#fpm 打包报错:
1.Need executable ‘rpmbuild’ to convert dir to rpm {:level=>:error}
#解决方法:
yum install -y rpm-build


#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


参考链接:腾讯云centos7、centos8、opencloudos8.x ruby 3.x环境配置-腾讯云开发者社区-腾讯云

参考链接: yum仓库搭建及定制rpm包_yum包制作-CSDN博客

三、测试部分

服务端:  ​

#把rpm包移动到 yum 仓库目录
/application]# mv cmatrix-1.2a-1.x86_64.rpm /yum/centos7/

 打包后移动到目录发现有一下rpm包

客服端:

#注释掉所有的yum源 
gzip /etc/yum.repos.d/*.repo 
 ​
#编写repo文件
cat /etc/yum.repos.d/cmatrix.repo 
[cmatrix]
name=this is built by myself
baseurl=http://yum.openjiajun.com/
enabled=1
gpgcheck=0

------------------------------
 #gpgcheck=1 不关闭 报错
 Package cmatrix-1.2a.rpm is not signed
 下载不了
 ​
 yum repolist #如下


 yum list 
...

 ​
 yum install -y cmatrix.x86_64
报错
 Package cmatrix-1.2a-1.x86_64.rpm is not signed
解决方法:
 /etc/yum.conf 下的 gpgcheck=1 为 gpgcheck=0
安装成功
 cmatrix

四、接下来就可以定制tengine 和 mysql 等 软件的 rpm 包,方便以后使用(留坑)


 五、未解决故障(求助)

远程yum 仓库更新了 rpm包后,发现本地不会同步

createrepo  update 未生效 ??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值