当前位置: 首页 > news >正文

linux fpm rpm,Linux系统下使用FPM制作RPM的方法

Linux系统下想要制作RPM包,可以使用FPM工具来完成。FPM工具不仅能让RPM包制作变得更简单,还能帮助用户做一些收尾的工作。下面就来介绍一下Linux系统下使用FPM制作RPM包的方法。

434e56651046da2a43dc739e328ba0d3.png

这里涉及的参数是:

--pre-install FILE:表示安装之前所要运行的脚本

--post-install FILE:表示安装之后所要运行的脚本

--pre-uninstall FILE:表示卸载之前所要运行的脚本

--post-uninstall FILE:表示卸载之后所要运行的脚本

1、fpm工具安装

# yum -y install ruby rubygems ruby-devel rpm-build

# gem sources -a http://ruby.taobao.org/

# gem sources -r https://rubygems.org/

# gem install fpm

2、打包luajit

# mkdir /tmp/luajit

# cd /usr/local/src

# wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz

# tar xvzf LuaJIT-2.0.4.tar.gz

# cd LuaJIT-2.0.4

# make PREFIX=/usr

# make install PREFIX=/usr DESTDIR=/tmp/luajit

# fpm -s dir -t rpm -n LuaJIT -v 2.0.4 --iteration 1.el7 -C /tmp/luajit/ -p /root --description ‘luajit rpm package’ --url ‘http://luajit.org’

3、打包tengine

# mkdir /tmp/tengine

# cd /usr/local/src

# wget -O lua-nginx-module-0.9.16.tar.gz https://codeload.github.com/openresty/lua-nginx-module/tar.gz/v0.9.16

# tar xvzf lua-nginx-module-0.9.16.tar.gz

# wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz

# tar xvzf tengine-2.1.0.tar.gz

# cd tengine-2.1.0

# 。/configure --prefix=/opt/share/nginx \

--sbin-path=/opt/sbin/nginx \

--conf-path=/opt/etc/nginx/nginx.conf \

--error-log-path=/opt/log/nginx/error.log \

--http-log-path=/opt/log/nginx/access.log \

--user=nginx \

--group=nginx \

--http-client-body-temp-path=/opt/lib/nginx/tmp/client_body \

--http-proxy-temp-path=/opt/lib/nginx/tmp/proxy \

--http-uwsgi-temp-path=/opt/lib/nginx/tmp/uwsgi \

--pid-path=/opt/run/nginx.pid \

--lock-path=/opt/lock/subsys/nginx \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_addition_module \

--with-http_gzip_static_module \

--with-http_gunzip_module \

--with-http_secure_link_module \

--with-http_stub_status_module \

--with-http_sysguard_module \

--with-file-aio \

--add-module=。。/lua-nginx-module-0.9.16 \

--with-cc-opt=‘-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security’ \

--with-ld-opt=‘-Wl,-Bsymbolic-functions -Wl,-z,relro’

# make

# make install DESTDIR=/tmp/tengine

# cd /tmp/tengine/opt

# mkdir -p lib/nginx/tmp/{client_body,proxy,uwsgi}

# mkdir -p lock/subsys/nginx

# cd /tmp/tengine

# mkdir etc/rc.d/init.d

# cp /etc/rc.d/init.d/nginx etc/rc.d/init.d

# mkdir etc/logrotate.d

# cp /etc/logrotate.d/nginx etc/logrotate.d

# mkdir tmp

安装之前所要运行的脚本

# vim tmp/install_before.sh

#!/bin/bash

[[ -n `ps aux|grep ngin[x]` ]] && killall -9 nginx

[[ -e /opt/etc/nginx ]] && cp -a /opt/etc/nginx/ /opt/etc/nginx_$(date +%F_%H-%M-%S)

安装之后所要运行的脚本

# vim tmp/install_after.sh

#!/bin/bash

[[ -n `getent group nginx` ]] || groupadd -r nginx

[[ -n `getent passwd nginx` ]] || useradd nginx -r -g nginx -s /sbin/nologin

[[ -n `getent group www-data` ]] || groupadd -r www-data

[[ -n `getent passwd www-data` ]] || useradd www-data -r -g www-data -s /sbin/nologin

mkdir -p /data/log/nginx

if [[ -e /var/log/nginx ]]; then

if [[ -L /var/log/nginx ]]; then

rm -f /var/log/nginx && ln -s /data/log/nginx /var/log/nginx

else

mv /var/log/nginx/* /data/log/nginx/

rm -rf /var/log/nginx && ln -s /data/log/nginx /var/log/nginx

fi

else

ln -s /data/log/nginx /var/log/nginx

fi

/opt/sbin/nginx -c /opt/etc/nginx/nginx.conf

打包tengine

# chmod +x tmp/*.sh

# fpm -s dir -t rpm -n tengine -v 2.1.0 --iteration 1.waf.el7 -C /tmp/tengine/ -p /root --description ‘tengine rpm package’ --url ‘http://tengine.taobao.org’ --pre-install /tmp/tengine/tmp/install_before.sh --post-install /tmp/tengine/tmp/install_after.sh

rpm软件包信息查看

# rpm -qp --scripts /root/tengine-2.1.0-1.waf.ele.el7.x86_64.rpm

最终的安装步骤

# yum -y install pcre pcre-devel openssl openssl-devel

# rpm -Uvh LuaJIT-2.0.4-1.el7.x86_64.rpm

# rpm -Uvh tengine-2.1.0-1.waf.el7.x86_64.rpm

以上就是Linux系统下使用FPM制作RPM包的方法了,这样一来就可以用RPM包来打包和安装网络上的软件了,还不赶快去试一下。

相关文章:

  • linux文件下脚本权限,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  • c语言程序设计逗号作用,关于c语言逗号表达式的运算规则知识点
  • C语言开发动态内存的方法,C语言动态内存分配的详解
  • C语言中99 0,C语言中 \0 代表什么?
  • c语言数字星期几,计算任何一天是星期几的C语言源代码.
  • 图片c语言是输出矩阵吗,蛇形矩阵输出是要怎么写代码,感觉没有眉目啊,大佬能说一下思想吗...
  • ubuntu nfs linux,Ubuntu 14.04下NFS安装配置
  • i686-pc linux gnu,交叉编译: --host --build --target到底什么意思?
  • android 字母好友,如何获取android手机联系人并按字母展示(二)
  • sony 播放器 android,Hi-Res Audio Player
  • adb更新android分区,Android adb升级OTA
  • android 反射执行方法,Android中怎么通过反射调用setUsbTethering()方法
  • iphone没有android安全,Android安全性与iPhone一样吗
  • android listview checkbox 选中状态,Android ListView专题之十  checkbox选中的值在翻屏时会跳来跳去...
  • 鸿蒙系统翻车了,鸿蒙系统翻车了?任正非承认忽视了关键问题,称华为犯下大错误...
  • 【EOS】Cleos基础
  • 2019年如何成为全栈工程师?
  • JS实现简单的MVC模式开发小游戏
  • Kibana配置logstash,报表一体化
  • Less 日常用法
  • magento2项目上线注意事项
  • Python实现BT种子转化为磁力链接【实战】
  • Python学习之路13-记分
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Webpack 4 学习01(基础配置)
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 回顾2016
  • 聊聊flink的TableFactory
  • 算法系列——算法入门之递归分而治之思想的实现
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 写代码的正确姿势
  • 优秀架构师必须掌握的架构思维
  • 最简单的无缝轮播
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • postgresql行列转换函数
  • 回归生活:清理微信公众号
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • ${ }的特别功能
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (a /b)*c的值
  • (AngularJS)Angular 控制器之间通信初探
  • (C++17) optional的使用
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (ZT)出版业改革:该死的死,该生的生
  • (zt)最盛行的警世狂言(爆笑)
  • (二)Eureka服务搭建,服务注册,服务发现
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET Core WebAPI中封装Swagger配置
  • .net framework profiles /.net framework 配置
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET Micro Framework 4.2 beta 源码探析