支持的源类型包:python
支持的目标类型包:nginx
将源码包打成rpm包:
开启yum缓存c++
[root@db02 ~]# vim /etc/yum.conf keepcache=1
安装fpmvim
fpm-1.3.3.x86_64.tar.gz
有epel源缓存
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装fpm的依赖(ruby环境和gem命令)ruby
[root@db04 ~]# yum install -y ruby-devel rubygems
查看当前源app
[root@db04~]# gem source list *** CURRENT SOURCES *** http://rubygems.org/
添加华为的ruby源工具
[root@db04 ~]# gem sources --add https://mirrors.huaweicloud.com/repository/rubygems/ [root@db04 ~]# gem source --list *** CURRENT SOURCES *** https://rubygems.org/ https://mirrors.huaweicloud.com/repository/rubygems/
移除国外源post
[root@db04 ~]# gem source --remove https://rubygems.org/ https://rubygems.org/ removed from sources
移动fpm安装包,解压ui
[root@db04 ~]# mv fpm-1.3.3.x86_64.tar.gz /server/tools/ [root@db04 ~]# cd /server/tools/ [root@db04 tools]# tar xf fpm-1.3.3.x86_64.tar.gz
安装gem,以及依赖
[root@db04 tools]# gem install *.gem 11 gems installed [root@db04 tools]# yum install -y gcc-c++ gcc glibc zlib-devel pcre-devel openssl-devel automake
安装遇到问题:
1.Need executable 'rpmbuild' to convert dir to rpm {:level=>:error} 解决方法: [root@localhost]``# yum install -y rpm-build 2.若是里面有gcc make的错误. 解决方法: yum install -y gcc
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打包Nginx
[root@localhost opt]# fpm -s dir -t rpm -n nginx -v 1.6.1 -d 'pcre-devel,openssl-devel' --post-install /opt/nginx_rpm.sh -f /opt/nginx/ <br> 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.6.1-1.x86_64.rpm"}
fpm相对路径打包
[root@localhost~]# fpm -s dir -t rpm -n opt -v 1.1.1.1 -d 'gcc,gcc+' -C ../opt/ 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=>"opt-1.1.1.1-1.x86_64.rpm"}
保存nignx的依赖包
[root@db04 tools]# mkdir /nginx [root@db04 tools]# find /var/cache/yum/ -name '*.rpm'|grep -v ruby|xargs cp -t /nginx/
解压
[root@db04 ~]# tar xf nginx-1.16.0.tar.gz [root@db04 ~]# mkdir /app -p [root@db04 nginx-1.16.0]# ./configure --prefix=/app/nginx-1.16.0 [root@db04 nginx-1.16.0]# echo $? 0 [root@db04 nginx-1.16.0]# make && make install make[1]: Leaving directory `/root/nginx-1.16.0'