FPM制作rpm包

简介:

#软件信息

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

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


#FPM源类型与目标类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Things that should work
 
Sources:
gem (even autodownloaded  for  you)
python modules (autodownload  for  you)
pear (also downloads  for  you)
directories
tar (.gz) archives
rpm
deb
node packages (npm)
pacman (ArchLinux) packages
 
 
Targets:
deb
rpm
solaris
freebsd
tar
directories
Mac 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

1
2
3
4
5
6
7
8
9
[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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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.134
HTTP /1 .1 200 OK
Server: nginx /1 .13.0
Date: Wed, 10 May 2017 19:52:20 GMT
Content-Type: text /html
Content-Length: 612
Last-Modified: Wed, 10 May 2017 19:50:48 GMT
Connection: keep-alive
ETag:  "59136f18-264"
Accept-Ranges: bytes
 
[root@KVM_1 ~] # /usr/local/nginx/sbin/nginx -s quit


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@KVM_1 ~] # cat /root/nginx_init.sh 
#!/bin/bash
  
useradd  -s  /sbin/nologin  -M  nginx 
 
echo  '[Unit]
Description=nginx - high performance web server
Documentation=http: //nginx .org /en/docs/
After=network.target remote-fs.target nss-lookup.target
  
[Service]
Type=forking
PIDFile= /usr/local/nginx/logs/nginx .pid
ExecStartPre= /usr/local/nginx/sbin/nginx  -t -c  /usr/local/nginx/conf/nginx .conf
ExecStart= /usr/local/nginx/sbin/nginx  -c  /usr/local/nginx/conf/nginx .conf
ExecReload= /bin/kill  -s HUP $MAINPID
ExecStop= /bin/kill  -s QUIT $MAINPID
PrivateTmp= true
  
[Install]
WantedBy=multi-user.target
' >  /usr/lib/systemd/system/nginx .service
[root@KVM_1 ~] #chmod +x /root/nginx_init.sh


#打包rpm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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 ~] # ls
anaconda-ks.cfg  nginx-1.13.0. tar .gz   nginx_init.sh  nginx-1.13.0  nginx-1.13.0-1.x86_64.rpm


#测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[root@KVM_1 ~] # hostname
KVM_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 ~] # hostname
KVM_2
#配置YUM源
[root@KVM_2  ~] # cat /etc/yum.repos.d/local.repo 
[ local ]
name= local
baseurl= file : ///media/
gpgcheck=0
enabled=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 nginx
nginx.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 process
 
May 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 ok
May 11 04:00:07 KVM_2 nginx[4679]: nginx: configuration  file  /usr/local/nginx/conf/nginx .conf  test  is successful
May 11 04:00:07 KVM_2 systemd[1]: Started nginx - high performance web server.
 
[root@KVM_2 media] # netstat -lntup | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4684 /nginx : master  
 
[root@KVM_2 media] # curl -I 192.168.174.135
HTTP /1 .1 200 OK
Server: nginx /1 .13.0
Date: Wed, 10 May 2017 20:01:14 GMT
Content-Type: text /html
Content-Length: 612
Last-Modified: Wed, 10 May 2017 20:14:24 GMT
Connection: keep-alive
ETag:  "591374a0-264"
Accept-Ranges: bytes


#至此nginx FPM 打包完成











本文转自 chaunceyjiang  51CTO博客,原文链接:http://blog.51cto.com/cqwujiang/1924269,如需转载请自行联系原作者
目录
相关文章
|
安全 Linux 网络安全
openssh8.2制作rpm包
虚机openssh升级打补丁
openssh8.2制作rpm包
|
C语言
手动制作rpm包
制作RPM包的过程,简单的说,就是为制作过程提供一个“工作车间”,即一个目录,里面需要包含以下几个子目录:           BUILD        ————编译相关源码包时的工作目录;           RPMS         ————生成的二进制格式的RPM包存放的位置;     ...
1442 0
|
应用服务中间件 Linux Shell
Linux FPM制作RMP包
一.FPM的介绍: 1.FPM项目地址:("https://github.com/jordansissel/fpm") 2.FPM是一个打包工具[ruby的一个模块] 二.
1147 0
|
应用服务中间件 nginx Unix
|
JSON 应用服务中间件 nginx
|
应用服务中间件 nginx BI
|
应用服务中间件 Linux nginx
|
应用服务中间件 C语言