千家信息网

FPM制作rpm包

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,#软件信息#FPM github :https://github.com/jordansissel/fpm#FPM documentation :https://fpm.readthedocs.io/
千家信息网最后更新 2025年12月03日FPM制作rpm包


#软件信息

#FPM github :https://github.com/jordansissel/fpm

#FPM documentation :https://fpm.readthedocs.io/en/latest/


#FPM源类型与目标类型

Things that should workSources:gem (even autodownloaded for you)python modules (autodownload for you)pear (also downloads for you)directoriestar(.gz) archivesrpmdebnode packages (npm)pacman (ArchLinux) packagesTargets:debrpmsolarisfreebsdtardirectoriesMac OS X .pkg files (osxpkg)pacman (ArchLinux) packages


FPM常用参数:

-s 指定源类型

-t 指定目标类型

-n 指定包的名字

-v 指定包的版本号

-C 指定打包的相对路径

-d 指定依赖于哪些包

--url URI 给该包添加URL (default: "http://example.com/no-uri-given")

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

-p :制作的rpm安装包存放路径,不想放在当前目录下就需要指定;

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

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

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

--pre-uninstall FILE 软件包卸载完成之前所要运行的脚本;

--prefix: 制作好的rpm包默认安装路径;

--after-remove FILE 软件包卸载完成后要运行的脚本

--before-remove FILE 软件包卸载完成前要卸载的脚本


#安装FPM

[root@KVM_1 ~]# yum install -y ruby rubygems ruby-devel[root@KVM_1 ~]# gem sources --add http://gems.ruby-china.org/ --remove https://gems.ruby-china.org/[root@KVM_1 ~]# gem sources -l*** CURRENT SOURCES ***http://gems.ruby-china.org/[root@KVM_1 ~]#[root@KVM_1 ~]# gem install fpm[root@KVM_1 ~]# yum install -y rpm-build


#编译安装Nginx

[root@KVM_1 ~]# wget http://mirrors.sohu.com/nginx/nginx-1.13.0.tar.gz[root@KVM_1 ~]# tar -xf nginx-1.13.0.tar.gz [root@KVM_1 ~]# cd nginx-1.13.0/[root@KVM_1 nginx-1.13.0]# yum install -y pcre pcre-devel openssl openssl-devel gcc-c++[root@KVM_1 nginx-1.13.0]# useradd -s /usr/sbin/nologin -M nginx[root@KVM_1 nginx-1.13.0]# ./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/usr/local/nginx  --user=nginx --group=nginx[root@KVM_1 nginx-1.13.0]# make && make install[root@KVM_1 nginx-1.13.0]# cd[root@KVM_1 ~]# /usr/local/nginx/sbin/nginx [root@KVM_1 ~]# curl -I 192.168.174.134HTTP/1.1 200 OKServer: nginx/1.13.0Date: Wed, 10 May 2017 19:52:20 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Wed, 10 May 2017 19:50:48 GMTConnection: keep-aliveETag: "59136f18-264"Accept-Ranges: bytes[root@KVM_1 ~]# /usr/local/nginx/sbin/nginx -s quit


#编写软件包安装后要执行的命令的脚本

[root@KVM_1 ~]# cat /root/nginx_init.sh #!/bin/bash useradd -s /sbin/nologin -M  nginx echo '[Unit]Description=nginx - high performance web serverDocumentation=http://nginx.org/en/docs/After=network.target remote-fs.target nss-lookup.target [Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true [Install]WantedBy=multi-user.target' > /usr/lib/systemd/system/nginx.service[root@KVM_1 ~]#chmod +x /root/nginx_init.sh


#打包rpm

[root@KVM_1 ~]# fpm -s dir -t rpm -n nginx -v 1.13.0 -d 'pcre,pcre-devel,openssl,openssl-devel' --post-install /root/nginx_init.sh -f /usr/local/nginx#参数解释-s 源类型 此处为 目录-t 目标类型 此处为 rpm-n 软件包名  此处为 nginx-v 版本号   此处为 1.13.0-d 依赖包  此处为 pcre,pcre-devel,openssl,openssl-devel--post-install 安装软件包后要执行的脚本 此处为 /root/nginx_init.sh-f 强制覆盖/usr/local/nginx 要被打包的目录##打包完成后会在当前目录生成 rpm包[root@KVM_1 ~]# lsanaconda-ks.cfg  nginx-1.13.0.tar.gz   nginx_init.sh  nginx-1.13.0  nginx-1.13.0-1.x86_64.rpm


#测试

[root@KVM_1 ~]# hostnameKVM_1[root@KVM_1 ~]# scp nginx-1.13.0-1.x86_64.rpm 192.168.174.135:/media/[root@KVM_1 ~]# ssh 192.168.174.135[root@KVM_2 ~]# hostnameKVM_2#配置YUM源[root@KVM_2  ~]# cat /etc/yum.repos.d/local.repo [local]name=localbaseurl=file:///media/gpgcheck=0enabled=1[root@KVM_2 ~]# mount /dev/cdrom /mnt/[root@KVM_2 ~]# cp /mnt/* /media/[root@KVM_2 ~]# cd /media/#更新YUM仓库[root@KVM_2 media]# createrepo -v ./[root@KVM_2 media]# yum makecache[root@KVM_2 media]# yum list | grep nginxnginx.x86_64                               1.13.0-1                    local   pcp-pmda-nginx.x86_64                      3.10.6-2.el7                local    #安装nginx[root@KVM_2 media]# yum install -y nginx[root@KVM_2 media]# systemctl start nginx[root@KVM_2 media]# systemctl status nginx● nginx.service - nginx - high performance web server   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)   Active: active (running) since Thu 2017-05-11 04:00:07 CST; 12s ago     Docs: http://nginx.org/en/docs/  Process: 4681 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)  Process: 4679 ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 4684 (nginx)   CGroup: /system.slice/nginx.service           ├─4684 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf           └─4685 nginx: worker processMay 11 04:00:07 KVM_2 systemd[1]: Starting nginx - high performance web server...May 11 04:00:07 KVM_2 nginx[4679]: nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is okMay 11 04:00:07 KVM_2 nginx[4679]: nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfulMay 11 04:00:07 KVM_2 systemd[1]: Started nginx - high performance web server.[root@KVM_2 media]# netstat -lntup | grep 80tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4684/nginx: master  [root@KVM_2 media]# curl -I 192.168.174.135HTTP/1.1 200 OKServer: nginx/1.13.0Date: Wed, 10 May 2017 20:01:14 GMTContent-Type: text/htmlContent-Length: 612Last-Modified: Wed, 10 May 2017 20:14:24 GMTConnection: keep-aliveETag: "591374a0-264"Accept-Ranges: bytes


#至此nginx FPM 打包完成



0