新西兰服务器

Centos定制rpm包、搭建yum仓库的方法


Centos定制rpm包、搭建yum仓库的方法

发布时间:2022-05-07 17:06:49 来源:高防服务器网 阅读:96 作者:iii 栏目:大数据

本文小编为大家详细介绍“Centos定制rpm包、搭建yum仓库的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Centos定制rpm包、搭建yum仓库的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1 保留yum安装软件时下载下来的rpm包

只需修改yum配置文件即可。下载下来的rpm包会自动保存在/var/cache/yum/目录下

[root@swag ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf  [root@swag ~]# yum install sl -y  [root@swag ~]# tree /var/cache/yum/x86_64/6/epel/  /var/cache/yum/x86_64/6/epel/  ├── 83f14a3d88054141092be5da12eb18cb1baabd7d52e1ae38bfc98d3d5005490c-primary.sqlite  ├── cachecookie  ├── packages  │  └── sl-5.02-1.el6.x86_64.rpm  └── repomd.xml    1 directory, 4 files

2 编译安装nginx

# download tar.gz package  cd /home/oldboy/tools  wget -q http://nginx.org/download/nginx-1.6.3.tar.gz  # yum install dependent package  yum install openssl openssl-devel -y  yum install pcre pcre-devel -y  rpm -qa pcre pcre-devel  # useradd www  useradd www -s /sbin/nologin -m  # compile and install  tar -xf nginx-1.6.3.tar.gz  cd nginx-1.6.3  ./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --prefix=/application/nginx-1.6.3/  make && make install  # create a soft link  ln -s /application/nginx-1.6.3/ /application/nginx  # start nginx  /application/nginx/sbin/nginx  # check port 80  lsof -i :80

3 安装fpm工具

首先安装依赖包

yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel

下载ruby,fpm是ruby写的,因此系统环境需要ruby。不推荐yum安装ruby,在测试的时候会出现一些问题。

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz  [root@swag tools]# tar -xf ruby-2.3.0.tar.gz  [root@swag tools]# cd ruby-2.3.0  [root@swag ruby-2.3.0]# ./configure  [root@swag ruby-2.3.0]# make && make install  [root@swag ruby-2.3.0]# ruby -v  ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]  [root@swag ~]# whereis gem  gem: /usr/local/bin/gem  [root@swag ~]# /usr/local/bin/gem install fpm  [root@swag ~]# fpm -v  1.9.3  # 添加阿里云的rubygems仓库,默认的源为外国源,访问下载速度比较慢,在添加之前先移除原生的ruby仓库  [root@swag ~]# gem sources  *** current sources ***  https://rubygems.org/   [root@swag ~]# gem sources --remove https://rubygems.org/  https://rubygems.org/ removed from sources  # 添加阿里仓库  [root@swag ~]# gem sources -a http://mirrors.aliyun.com/rubygems/  http://mirrors.aliyun.com/rubygems/ added to sources  [root@swag ~]# gem sources  *** current sources ***

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

fpm支持的源类型包
dir:将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm:对rpm进行转换
gem:对rubygem包进行转换
python:将python模块打包成相应的类型

fpm支持的目标类型包
rpm:转换为rpm包
deb:转换为deb包
solaris:转换为solaris包
puppet:转换为puppet包

4 将nginx打包

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz  [root@swag tools]# tar -xf ruby-2.3.0.tar.gz  [root@swag tools]# cd ruby-2.3.0  [root@swag ruby-2.3.0]# ./configure  [root@swag ruby-2.3.0]# make && make install  [root@swag ruby-2.3.0]# ruby -v  ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]  [root@swag ~]# whereis gem  gem: /usr/local/bin/gem  [root@swag ~]# /usr/local/bin/gem install fpm  [root@swag ~]# fpm -v  1.9.3  # 添加阿里云的rubygems仓库,默认的源为外国源,访问下载速度比较慢,在添加之前先移除原生的ruby仓库  [root@swag ~]# gem sources  *** current sources ***  https://rubygems.org/   [root@swag ~]# gem sources --remove https://rubygems.org/  https://rubygems.org/ removed from sources  # 添加阿里仓库  [root@swag ~]# gem sources -a http://mirrors.aliyun.com/rubygems/  http://mirrors.aliyun.com/rubygems/ added to sources  [root@swag ~]# gem sources  *** current sources ***    [root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz  [root@swag tools]# tar -xf ruby-2.3.0.tar.gz  [root@swag tools]# cd ruby-2.3.0  [root@swag ruby-2.3.0]# ./configure  [root@swag ruby-2.3.0]# make && make install  [root@swag ruby-2.3.0]# ruby -v  ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]  [root@swag ~]# whereis gem  gem: /usr/local/bin/gem  [root@swag ~]# /usr/local/bin/gem install fpm  [root@swag ~]# fpm -v  1.9.3  # 添加阿里云的rubygems仓库,默认的源为外国源,访问下载速度比较慢,在添加之前先移除原生的ruby仓库  [root@swag ~]# gem sources  *** current sources ***  https://rubygems.org/   [root@swag ~]# gem sources --remove https://rubygems.org/  https://rubygems.org/ removed from sources  # 添加阿里仓库  [root@swag ~]# gem sources -a http://mirrors.aliyun.com/rubygems/  http://mirrors.aliyun.com/rubygems/ added to sources  [root@swag ~]# gem sources  *** current sources ***

5 其它机器测试

# scp把rpm包传送过去  [root@swag ~]# scp nginx-1.6.3-1.x86_64.rpm root@10.0.0.5:/home/oldboy/tools    # 测试  [root@swag3 tools]# yum localinstall nginx-1.6.3-1.x86_64.rpm -y

6 yum仓库搭建

安装createrepo

[root@swag2 ~]# yum install createrepo -y

创建yum仓库目录并初始化repodata索引文件

[root@swag2 ~]# mkdir -p /application/yum/centos6.9/x86_64/  [root@swag2 ~]# cd /application/yum/centos6.9/x86_64/  # 拷贝定制的rpm包到此目录下  [root@swag2 x86_64]# createrepo -pdo /application/yum/centos6.9/x86_64/ /application/yum/centos6.9/x86_64/

提供yum服务

# 这里用python来提供web服务,也可用apache或nginx来提供web服务  [root@swag2 x86_64]# python -m simplehttpserver 80 &>/dev/null &  # python的httpd模块  [root@swag2 x86_64]# lsof -i :80  command  pid user  fd  type device size/off node name  python 24680 root  3u ipv4 32493   0t0 tcp *:http (listen)

如果有新的rpm包放入必须更新

[root@swag2 x86_64]# createrepo --update /application/yum/centos6.9/x86_64/

客户端修改yum源

cat >>/etc/yum.repo.d/<<eof  [only]  name=server  baseurl=http://10.0.0.7      # baseurl指定yum仓库ip,如果不是80端口需要加端口  enabled=1  gpgcheck=0  eof  # 客户端以安装nginx为例  # 清除本地缓存  [root@swag4 ~]# yum clean all  # 显示本地yum源列表  [root@swag4 ~]# yum --enablerepo=only --disablerepo=base,extras,updates,epel list    # 这里需要注意--enablerepo为local.repo文件中定义的only  # 安装nginx为例#  yum --enablerepo=local --disablerepo=base,extras,updates,epel install nginx -y

yum的一些用法

# 只下载包不安装包
1、yumdownloader pcre-devel openssl-devel
2、yum –downloadonly pcre-devel openssl-devel

# yum本地安装rpm包  yum localinstall pcre-devel openssl-devel  # yum开启某些个源,关闭某些源安装软件包  yum --enablerepo=local --disablerepo=base,extras,updates,epel install pcre-devel openssl-devel  # yum安装不做gpg-check  yum install --nogpgcheck pcre-devel openssl-devel  # 查看yum历史记录  yum history  # 列出启用的软件库  yum repolist  yum repolist all # 列出所有的软件库,包括禁用的也列出

错误排查

# 若在客户端安装nginx的时候报以下错误是因为缺少依赖包的缘故,把其下载下来并更新yum仓库即可。
yum仓库:createrepo –update /application/yum/centos6.9/x86_64/
客户端:yum clean all

error: package: nginx-1.6.3-1.x86_64 (only)
           requires: pcre-devel
error: package: nginx-1.6.3-1.x86_64 (only)
           requires: openssl-devel

# 需要注意配置文件书写是否有误

7 镜像同步公网yum源

上面只是将自己制作的rpm包,放入yum源。但还有一种需求,平时安装软件都是从公网下载的,占用带宽,因此可以直接使用公网yum源的repodata。

上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。

# centos官方标准源:rsync://mirrors.ustc.edu.cn/centos/  # epel源:rsync://mirrors.ustc.edu.cn/epel/  # 同步命令:  # 使用rsync同步yum源,为了节省带宽、磁盘和下载时间,这里只同步了centos6的rpm包,这样所有的rpm包只占用了21g,全部同步需要300g左右。  # 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3g,这些就不用重新下载。  /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/  /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/  /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/  # epel源  /usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/  # 使用内网yum源方法  # 可以自建一个内网dns,如果没有,可使用hosts解析。  echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts  # 结果展示  [root@swag5 data]# du -sh yum_data    21g   yum_data  [root@swag5 data]# tree -l 3 yum_data/  yum_data/  ├── centos  │  ├── 6  │  │  ├── extras  │  │  ├── os  │  │  └── updates  │  └── rpm-gpg-key-centos-6  ├── epel  │  └── 6  │    └── x86_64

读到这里,这篇“Centos定制rpm包、搭建yum仓库的方法”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注高防服务器网行业资讯频道。

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[