300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > RPM包制作及yum仓库搭建

RPM包制作及yum仓库搭建

时间:2018-06-14 01:36:15

相关推荐

RPM包制作及yum仓库搭建

RPM包制作

rpm包的制作是通过fpm软件来生成的,所以首先要安装fpm软件。又因为fpm的软件是ruby开发的,所以安装fpm的话首先要安装ruby等包

FPM功能简单说就是将一种类型的包转换成另一种类型。

FPM的github:/jordansissel/fpm

支持的源类型包:

dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包

rpm: 对rpm进行转换

gem: 对rubygem包进行转换

python: 将Python模块打包成相应的类型

1、安装fpm

fpm 是 ruby写的,因此系统环境需要ruby,且版本必须大于1.8.5

yum install ruby rubygems ruby-devel -y

查看当前ruby源:

[root@lnmp01 ~]# gem source -l*** CURRENT SOURCES ***/

添加国内源

gem sources -a /rubygems/

移除国外源

gem sources --remove /

安装制作rpm包的fpm工具

[root@lnmp01 ~]# gem install fpmBuilding native extensions. This could take a while...Building native extensions. This could take a while...ERROR: Error installing fpm:ruby-xz requires Ruby version >= 1.9.3.

安装fpm工具的时候报错,解决办法为:

#安装旧版本的fpm[root@lnmp01 ~]# gem install fpm -v 1.4.0Successfully installed clamp-0.6.5Successfully installed fpm-1.4.02 gems installedInstalling ri documentation for clamp-0.6.5...Installing ri documentation for fpm-1.4.0...Installing RDoc documentation for clamp-0.6.5...Installing RDoc documentation for fpm-1.4.0...

到此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

2、制作rpm包

比如对nginx的编译安装打包成rpm

创建一个脚本nginx-rpm.sh

[root@lnmp01 ~]# vim /server/scripts/nginx-rpm.sh#!/bin/bashuseradd nginx -s /sbin/nologin -Mln -s /application/nginx-1.6.3/ /application/nginx/application/nginx/sbin/nginxlsof -i :80

生成rpm包

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

说明:所有参数都要放在-f /application/nginx-1.6.3/之前,否则会报错,这里的nginx-rpm.sh脚本也要提前做好,在生成的rpm包中会包含这个脚本;-p指定生成的rpm包输出的路径,-d为指定客户端安装这个rpm包时要先安装这些依赖包,-f为在指定的rpm包输出路径中相同的rpm包名做覆盖,不然没有-f参数在相同路径下生成相同名字的rpm包会报错。还有在制作rpm包时最好不要对相对路径打包,因为对相对路径打包生成的rpm包是从根路径开始的,所以生产上都要用绝对路径打包。

相对路径打包的错误:所以不推荐使用相对路径打包

[root@lnmp01 nginx]# fpm -s dir -t rpm -n nginx -v 1.6.2 .[root@lnmp01 nginx]# rpm -qpl nginx-1.6.2-1.x86_64.rpm /client_body_temp/conf/extra/bbs.conf/conf/extra/blog.conf/conf/extra/status.conf/conf/extra/www.conf/conf/fastcgi.conf/conf/fastcgi.conf.default/conf/fastcgi_params/conf/fastcgi_params.default/conf/koi-utf/conf/koi-win/conf/mime.types/conf/mime.types.default/conf/nginx.conf/conf/nginx.conf.default/conf/nginx.conf.ori1/conf/scgi_params/conf/scgi_params.default/conf/uwsgi_params/conf/uwsgi_params.default/conf/win-utf/fastcgi_temp/html/50x.html/html/bbs/admin.php/html/bbs/api.php/html/bbs/api/addons/channel.htm/html/bbs/api/addons/index.htm/html/bbs/api/addons/zendcheck.php/html/bbs/api/addons/zendcheck52.php/html/bbs/api/addons/zendcheck53.php/html/bbs/api/connect/index.htm/html/bbs/api/connect/like.php/html/bbs/api/db/dbbak.php/html/bbs/api/db/index.htm/html/bbs/api/google/google.php/html/bbs/api/google/index.htm/html/bbs/api/index.htm

相对路径打包rpm

在其他服务器上安装这个制作的nginx的rpm包

[root@lnmp01 ~]# scp /tmp/nginx-1.6.2-1.x86_64.rpm 192.168.1.104:~ [root@backup ~]# rpm -ivh nginx-1.6.2-1.x86_64.rpm error: Failed dependencies:pcre-devel is needed by nginx-1.6.2-1.x86_64openssl-devel is needed by nginx-1.6.2-1.x86_64[root@backup ~]# yum localinstall -y nginx-1.6.2-1.x86_64.rpm [root@backup ~]# id nginxuid=503(nginx) gid=503(nginx) groups=503(nginx)[root@backup ~]# ll /application/total 4lrwxrwxrwx 1 root root 25 Sep 8 21:00 nginx -> /application/nginx-1.6.3/drwxr-xr-x 11 root root 4096 Sep 8 21:00 nginx-1.6.3[root@backup ~]# lsof -i :80COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 4043 root 9u IPv4 287730t0 TCP *:http (LISTEN)nginx 4045 nginx 9u IPv4 287730t0 TCP *:http (LISTEN)

这样在其他服务器上安装nginx的rpm包成功部署完成。。。

YUM仓库搭建

1、创建 yum仓库的目录

mkdir -p /application/yum/centos6.6/x86_64cd /application/yum/centos6.6/x86_64

2、安装createrepo软件(创建存储库)

yum -y install createrepo

3、初始化yum仓库

createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/

初始化完会生成一个repodata目录,代表初始化yum仓库成功

4、当有新的rpm放到/application/yum/centos6.6/x86_64/里时,执行更新

createrepo --update /application/yum/centos6.6/x86_64/

5、将上面生成的rpm包放在yum仓库指定的目录中,并下载这个nginx的rpm的依赖包

cd /application/yum/centos6.6/x86_64/cp /server/scripts/nginx-1.6.3-1.x86_64.rpm .yumdownloader openssl-devel pcre-devel

6、关掉nginx,因为下面要用python来做web服务,当然也可以用nginx自带的web服务提供浏览器打开yum仓库

用python提供web服务做客户端访问yum源的url路径

/application/nginx/sbin/nginx -s stopcd /application/yum/centos6.6/x86_64/python -m SimpleHTTPServer 80 &>/dev/null &

如果用nginx提供web服务做客户端访问yum源的url路径的话,做如下配置

cat >/application/nginx/conf/nginx.conf<<EOFworker_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 html/yumcache;autoindex on; ##开启目录index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}EOF/application/nginx/sbin/nginx -s stop/application/nginx/sbin/nginx

7、修改yum的配置文件,让平时yum安装的软件rpm包都要保存下载

vim /etc/yum.confkeepcache=1

8、客户端部署

创建本地的yum源文件

cd /etc/yum.repos.d/vim goser.repo[goser]name=Serverbaseurl=http://192.168.182.143enabled=1gpgcheck=0

清空之前的缓存yum clean all

在客户端运行如下命令,让客户端yum安装的时候只查找新建的yum源文件goser.repo

yum --enablerepo=goser --disablerepo=base,extras,updates list

或者直接将旧的yum源放到其他的目录,在/etc/yum.repos.d/目录下只有新建的yum源goser.repo

cp CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-fasttrack.repo epel.repo repobak/

不需要的源放到其他目录了,那么客户端直接运行yum install nginx -y就行了,而不需要--disablerepo,--enalberepo参数了

9、错误排查

当客户端直接进行yum安装的时候报如下错误:

yum install nginx -yError: Package: pcre-devel-7.8-7.el6.x86_64 (goser)Requires: pcre = 7.8-7.el6Installed: pcre-7.8-6.el6.x86_64 (@anaconda-CentOS-10241409.x86_64/6.6)pcre = 7.8-6.el6You could try using --skip-broken to work around the problemYou could try running: rpm -Va --nofiles --nodigest

这个错误说明yum仓库缺少pcre = 7.8-7.e16这个包,所以应该在yum仓库中添加这个包,步骤如下:

#添加缺少的包yumdownloader pcre#服务端yum仓库更新createrepo --update /application/yum/centos6.6/x86_64/

客户端重新缓存yum源

yum clean allyum makecache #这时候用list查看就有缺少的包了yum listAvailable Packagesnginx.x86_64 1.6.3-1 goseropenssl-devel.i6861.0.1e-57.el6 goserpcre.i6867.8-7.el6 goserpcre.x86_64 7.8-7.el6 goserpcre-devel.i686 7.8-7.el6 goserpcre-devel.x86_64 7.8-7.el6 goser

这时候再直接安装就没问题了 yum install nginx -y

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。