linux FPM制作RPM包

作者: admin 分类: linux 发布时间: 2018-07-17 10:28

  

1 、 支持的源类型包

  ➢ dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包

  ➢ rpm: 对 rpm 进行转换

  ➢ gem: 对 rubygem 包进行转换

  ➢ python: 将 Python 模块打包成相应的类型

 

 2 2 、 支持目标类型包

  ➢ rpm: 转换为 rpm 包

  ➢ deb: 转换为 deb 包

  ➢ solaris: 转换为 solaris 包

  ➢ puppet: 转换为 puppet 包

  

3 3 、 FPM 常用参数

  -s:指定源类型

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

  -n:指定包的名字

  -v:指定包的版本号

  -C:指定打包的相对路径

  -d:指定依赖于哪些包

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

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

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

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

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

  --pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove

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

 

 4 、于 基于 FPM 制作 RPM 包

  

4.1、云搭建阿里云 Yum 源

  [root@Crushlinux ~]# cd /etc/yum.repos.d/

  [root@Crushlinux yum.repos.d]# curl -O http://mirrors.aliyun.com/repo/Centos-6.repo

  // -O: 将浏览到的文件写入到当前路径下,名称为目标文件文件名

  [root@Crushlinux yum.repos.d]# yum -y install epel-release // 安装扩展源

  [root@Crushlinux yum.repos.d]# yum clean all && yum makecache

  

4.2、 安装 ruby 环境和 gem 命令 FPM

  gem 命令是从 rubygem 仓库安装软件类似 yum 从 yum 仓库安装软件

  [root@Crushlinux ~]# yum install -y ruby rubygems ruby-devel

  [root@Crushlinux ~]# gem update --system // 升级 rubygems 版本

  [root@Crushlinux ~]# gem sources -a http://mirrors.aliyun.com/rubygems/ // 添加国内源

  [root@Crushlinux ~]# gem sources --remove https://rubygems.org/ // 移除国外源:

  [root@Crushlinux ~]# gem sources -l // 查看当前源:

  NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be

  removed on or after 2018-12-01.

  Gem::Specification#default_executable= called from

  /usr/lib/ruby/gems/1.8/specifications/rubygems-update-2.7.7.gemspec:10.

  YAML safe loading is not available. Please upgrade psych to a version that supports safe loading

  (>= 2.0).

  *** CURRENT SOURCES ***

  http://mirrors.aliyun.com/rubygems/

  [root@Crushlinux ~]# gem install fpm // 安装 FPM 工具

  

4.2.1 、 FPM 安装 错误解决方法

  [root@localhost ~]# gem install fpm

  NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be

  removed on or after 2018-12-01.

  Gem::Specification#default_executable= called from

  /usr/lib/ruby/gems/1.8/specifications/rubygems-update-2.7.7.gemspec:10.

  YAML safe loading is not available. Please upgrade psych to a version that supports safe loading

  (>= 2.0).

  NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be

  removed on or after 2018-12-01.

  Gem::Specification#default_executable= called from

  /usr/lib/ruby/gems/1.8/specifications/rubygems-update-2.7.7.gemspec:10.

  如果在 gem sources --add过程中出现相关 SSL的问题,修改~/.gemrc文件来,使 rubygems

  忽略 SSL 证书错误

  [root@Crushlinux ~]# vim .gemrc

  ---

  :sources:

  - https://gems.ruby-china.org

  :ssl_verify_mode: 0

  

4.2.2 、 Ruby版本较低解决方法

  如果在 gem install fpm 时出现:

  ERROR: Error installing fpm:

  ffi requires Ruby version >= 1.9.

  原因是由于是采用阿里云 yum 源安装的 ruby ,而 yum 源中 ruby 的版本是 1.8.x,FPM

  需要的是大于 1.9 版本的 ruby 所以使用 rvm 来升级 ruby。

  [root@Crushlinux ~]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 // 安装 rvm 所需要的 key

  gpg: 下载密钥‘D39DC0E3 ’,从 hkp 服务器 keys.gnupg.net

  gpg: 密钥 D39DC0E3 :公钥“Michal Papis (RVM signing) ”已导入

  gpg: 没有找到任何绝对信任的密钥

  gpg: 合计被处理的数量:1

  gpg: 已导入:1 (RSA: 1)

  [root@Crushlinux ~]# curl -sSL https://get.rvm.io | bash -s stable
 

安装 RVM


 

  [root@Crushlinux ~]# source ~/.bashrc

  [root@Crushlinux ~]# source ~/.bash_profile

  [root@Crushlinux ~]# source /etc/profile.d/rvm.sh // 初始化 rvm

  [root@Crushlinux ~]# rvm list known // 显示可以安装哪些版本的 ruby
 

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.7]
[ruby-]2.4[.4]
[ruby-]2.5[.1]
[ruby-]2.6[.0-preview2]
.................省略............

  [root@Crushlinux ~]# rvm install 2.3.0 // 升级 ruby 到 2.3.0 版
 

升级 ruby 2.3.0 失败
升级 ruby 2.3.0 失败界面

升级 ruby 2.3.0版成功界面
升级 ruby 2.3.0版成功界面 
 

  [root@Crushlinux ~]# ruby -v

  ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

 

 4.3、译编译 Nginx

  [root@Crushlinux ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/

  [root@Crushlinux nginx-1.10.2]# yum -y install pcre-devel zlib-devel

  [root@Crushlinux nginx-1.10.2]# ./configure  --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install

  

 

4.4、包打包 Nginx 生成RPM包

  [root@Crushlinux fpm]# fpm -s dir -t rpm -n nginx -v 1.10.2 -d 'pcre-devel,zlib-devel' -f /usr/local/nginx // 会在当前目录下生成一个 rpm 包

运行这个的时候出现了一个错误 Need executable ‘rpmbuild‘ to convert dir to rpm {:level=>:error}

解决办法是yum install rpm-build  安装完成之后再次执行上面的命令出现下面这个即为正常

 

创建完成rpm包
 

  [root@Crushlinux fpm]# rpm -ivh nginx-1.10.2-1.x86_64.rpm

  [root@Crushlinux fpm]# rpm -qi nginx

  Name : nginx Relocations: /

  Version : 1.10.2 Vendor: root@master

  Release : 1 Build Date: Fri 06 Apr 2018 10:09:39 AM

  EDT

  Install Date: Fri 06 Apr 2018 10:10:21 AM EDT Build Host: master

  Group : default Source RPM: nginx-1.10.2-1.src.rpm

  Size : 3467318 License: unknown

  Signature : (none)

  Packager :

  URL : http://example.com/no-uri-given

  Summary : no description given

  Description :

  no description given

 

Linux 命令大全

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!