rpm一键封包

第一步:搭建公网源Yum仓库 cd /etc/yum.repos.d/ ls wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #aliyun源 wget -O /etc/yum.repo

第一步:搭建公网源Yum仓库

cd /etc/yum.repos.d/

ls

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #aliyun源

wget -O /etc/yum.repos.d/163.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo #163源

yum -y clean all

yum makecache

第二步:开启yum配置文件/etc/yum.conf的keepcache功能

由于默认情况下,通过yum方式安装软件包之后,会默认清空掉下载过的软件包。因

此,如果我们想要窃取到软件包就必须打开yum的keepcache功能。如此就不会再清空

下载后的软件包。


#awk '/keepcache/{print NR,$0}' /etc/yum.conf

#3 keepcache=0

#sed -i '3 s#0#1#' /etc/yum.conf

#sed -n '3p' /etc/yum.conf

#keepcache=1 #开启yum的缓存保持功能(不清空下载的包)

#yum -y clean all

#yum makecache

第二步:通过Yum方式安装gem软件仓库,窃取rpm安装包

[root@localhost cache]# yum -y install ruby rubygems ruby-devel

#ls /var/cache/yum/x86_64/6/base/packages

第三步:通过Gem方式安装FPM软件,窃取gem安装包

1. # 查看当前使用的rubygems仓库

2. gem sources list 



3. # 添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库

4. gem sources --add http://gems.ruby-china.org/ --remove http://rubygems.

org/

5. # 安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的jso

n,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。

6. gem install json -v 1.8.3

     gem install ffi -v 1.9.18

7. gem install fpm -v 1.3.3

8. # 上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm

将如下目录下的gem安装包切取走

[root@localhost cache]# ls /usr/lib/ruby/gems/1.8/cache

arr-pm-0.0.10.gem

backports-3.8.0.gem

cabin-0.9.0.gem

clamp-0.6.5.gem

childprocess-0.7.1.gem

ffi-1.9.18.gem

fpm-1.3.3.gem

 json-1.8.3.gem

#有可能在这个目录下

[root@localhost usr]# find / -name cabin-0.9.0.gem

/usr/local/share/gems/cache/cabin-0.9.0.gem

二,本地化安装gem软件仓库及FPM软件gem安装包(如果没有网络可本地安装!!)

第一步:搭建企业定制化FTP方式的Yum仓库 

[root@localhost yum.repos.d]# yum -y install createrepo

######################createrepo -v ./

第二步:本地化Yum安装gem软件仓库

yum -y install ruby rubygems ruby-devel

第三步:本地化gem安装FPM软件的gem安装包

[root@localhost gem]# ls

 arr-pm-0.0.10.gem cabin-0.9.0.gem clamp-0.6.5.gem fpm-1.3.3.gem

backports-3.8.0.gem childprocess-0.7.1.gem ffi-1.9.18.gem json-1.8.3.gem

[root@localhost gem]# gem install -l json-1.8.3.gem #先安装json

[root@localhost gem]# gem install -l fpm-1.3.3.gem #直接安装fpm(会自动安装依赖)

[root@localhost ~]# which fpm

/usr/bin/fpm

四、制作企业定制化rpm包

第一步:编写定制化rpm包所需安装脚本

1. [root@localhost ~]# cat /server/scripts/nginx_rpm.sh

2. #!/bin/bash

3. # nginx_rpm.sh

5. useradd -s /sbin/nologin -M www

6. ln -s /application/nginx-1.10.2 /application/nginx

7. /application/nginx/sbin/nginx

8. if [ $? -eq 0 ]

9. then

10. echo "OK!"

11. else

12. echo "error!"

13. fi

第二步:Yum安装rpm-build软件包

[root@localhost ~]# yum -y install rpm-build

第三步:制作定制化nginx的rpm安装包

[root@localhost ~]# fpm -s dir -t rpm -n nginx -v 1.10.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.10.2/

no value for epoch is set, defaulting to nil {:level=>:warn}

no value for epoch is set, defaulting to nil {:level=>:warn}

Created package {:path=>"nginx-1.10.2-1.x86_64.rpm"}

[root@localhost ~]# ll nginx-1.10.2-1.x86_64.rpm

-rw-r--r--. 1 root root 2470490 Jun 30 00:10 nginx-1.10.2-1.x86_64.rpm

#fpm相关参数说明:

-s                    指定源类型

-t                      指定目标类型,即想要制作为什么包

-n                   指定包的名字

-v                  指定包的版本号

-C                   指定打包的相对路径,安装文件夹

-d                      指定依赖于哪些包

-f                          第二次打包时目录下如果有同名安装包存在,则覆盖它 

-p                         输出的安装包的目录,不想放在当前目录下就需要指定

--post-install         软件包安装完成之后所要运行的脚本;同--after-install

--pre-install           软件包安装完成之前所要运行的脚本;同--before-install

--post-uninstall     软件包卸载完成之后所要运行的脚本;同--after-remove


LICENSED UNDER CC BY-NC-SA 4.0
Comment