fpm包安装-

简介:

####################################### centos 6.5 的环境#################


【前提需求知识】

rpm包的组成

1、RPM的命名格式:name-version-release.arch.rpm

 

1
2
3
4
5
6
7
name:这里指的是对应软件的名称,比如httpd,我们的apache服务
  
version:这里的版本主要指的是对应的源代码的版本号(这其中的version有三部分组成:主版本号、次版本号、发布号)
  
release:这个是这个RPM的修订的次数,发布商的发布版本号,与源代码的版本号无关
  
arch:这个是它所支持的硬件平台,有x86_64,i386,ppc,noarch等

 

例子:httpd-2.2.15-29.el6.x86_64.rpm

 

上面,我们以httpd服务为例,它的name就是httpd,version为2.2.15,release为29.e16(红帽或者Centos厂商修订发布的第29次,一般公司通过源码包的打包就修改这个发布号,可以yum rpm升级的),这里,还包含了此包使用的系统,即centos,arch就是x86_64。

 

 

 

说明下常见的el6是代表啥意思:

1
2
3
fcXX,elXX:表示这个软件包的发行商版本,就像这里的fc18,说明这个软件包是在Fedora
18下使用的。而openssl-1.0.0-20.el6.x86_64.rpm表示这个软件包是在RHEL 6.x(Red Hat Enterprise
Linux)/CentOS 6.x下使用。

 

 

2、RPM的打包功能及其分包机制:

 

1
2
3
4
5
6
7
8
9
10
核心包,即主包,它的命名与源程序一样(不是源代码啊)
  
例子:php-5.3.3-26.el6.x86_64.rpm,上面提到的httpd也是核心包
  
子包:它在name的后面有个子包名
  
例子:php-mysql-5.3.3-26.el6.x86_64.rpm,这里的mysql就是子包名
  
例子:mysql-devel-5.1.52-1.el6.x86_64.rpm
devel:表示这个RPM包是软件的子包开发包





fpm包安装


【我的系统环境】

centos 6.5


 

【解决依赖关系】

 

安装依赖包

1
yum -y  install  ruby rubygems ruby-devel gcc


 

 

添加国内镜像

[root@ops-rpmbuild01 ~]# gem sources -a http://ruby.taobao.org/

改用

1
gem sources -a https: //ruby .taobao.org/


 

移除默认的

1
gem sources --remove http: //rubygems .org/


 

查看源

1
gem sources -l

 

 

【安装fpm包】

gem install fpm

 

改用

1
gem  install  fpm - v  1.4.0

[root@ops-rpmbuild01 ~]# gem install fpm -v 1.4.0

Successfully installed fpm-1.4.0

1 gem installed

Installing ri documentation for fpm-1.4.0...

Installing RDoc documentation for fpm-1.4.0...

 

参考:

http://www.jianshu.com/p/df61ea673838

 

 

 

【结果】

成功安装

fpm --version

1.4.0

【错误

[root@ops-rpmbuild01 ~]# gem sources -a http://ruby.taobao.org/

Error fetching http://ruby.taobao.org/:

bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)

 

 

原因:淘宝停止基于 HTTP 协议的镜像服务 需要改用https的协议

 

 


 

【错误2

[root@ops-rpmbuild01 ~]# gem install fpm

Building native extensions.  This could take a while...

ERROR:  Error installing fpm:

ERROR: Failed to build gem native extension.

 

/usr/bin/ruby extconf.rb

creating Makefile

 

 

 

原因系统没有gcc环境 ,安装yum install gcc

 

 

 

【错误3

[root@ops-rpmbuild01 ~]# gem install fpm

Building native extensions.  This could take a while...

Building native extensions.  This could take a while...

ERROR:  Error installing fpm:

ruby-xz requires Ruby version >= 1.9.3.

 

 

默认安装的是

[root@ops-rpmbuild01 ~]# ruby -v

ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]

 

 

 

解决办法: 1 更新ruby

 

解决办法2: 安装旧版本的fpm

[root@ops-rpmbuild01 ~]# gem install fpm -v 1.4.0




【fpm参数详解之用法】

fpm 包命令参数详解


语法:

1
  fpm [OPTIONS] [ARGS] ...


选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  -t 输出类型,我们是制作rpm包,所以-t rpm
  -s 输入类型,一般是输入的目录  -s dir
  -f 强制,即使安装的时候覆盖已经存在的源文件
  -n 包名
  -v 包的版本,默认是1.0
  -d, 依赖包关系
  -C CHDIR Change directory to here before searching for files(安装所需要文件的目录)
  --iteration 1.el6 发行
  -p ~/rpmbuild/RPMS/x86_64/ rpm包制作生成后的位置
  --description 添加包的描述信息
  --category  这个软件属于系统的哪个组
  --url 包官方路径
  --license License 
  -m, --maintainer MAINTAINER  默认是主机名
  --no-rpm-sign
  --workdir WORKDIR  工作目录默认是/tmp



注意:

关于组categroy: 查看linux(centos)上所有软件的分组情况可以查看文件

1
cat  /usr/share/doc/rpm-4 .8.0 /GROUPS

License: 软件授权方式,通常就是GPL


【小试牛刀】

参考github的说明 nodejs的rpm包制作(和官网有一定的修改看个人习惯和使用的包种类,我使用rpm包)

https://github.com/jordansissel/fpm/wiki/PackageMakeInstall



步骤:

1
2
3
4
5
6
cd  /usr/local/src
wget http: //nodejs .org /dist/v0 .6.0 /node-v0 .6.0. tar .gz
  tar  xzf node-v0.6.0. tar .gz
cd  node-v0.6.0
. /configure  --prefix= /usr/local
make



This requires your 'make install' obey DESTDIR or otherwise allows you to install to a specific target directory.

1
2
mkdir  /data/installdir
make  install  DESTDIR= /data/installdir



此时在/data/installdir这个目录下胡会生成很多目录文件

wKioL1c7zGuBv0fxAAAMXRkol2o197.png



开始使用fpm制作

# Create a nodejs deb with only bin and lib directories:

# The 'VERSION' and 'ARCH' strings are automatically filled in for you

# based on the other arguments given.

1
2
3
4
5
6
7
8
9
10
11
12
13
fpm -s  dir  -t rpm -n nodejs - v  0.6.0 -C  /data/installdir  \
   -n nodejs \
   -p  /root  \
   --epoch 0 \
   -d  "libssl0.9.8 > 0"  \
   -d  "libstdc++6 >= 4.4.3"  \
   --verbose \
   --iteration 1.el6 \
   --category  'Development/Languages'  \
   --description  'Node.js real-time applications'  \
   --url  'nodejs.org'  \
   --license GPL \
   usr /local/bin  usr /local/lib




错误1:

Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}


解决: yum install yum install -y rpm-build



查看制作好的包的结果:

rpm -qpi /root/nodejs-0.6.0-1.el6.x86_64.rpm


wKiom1c7zEHgg5WVAAA_3WDr_DI091.png



可以使用 rpm -qpi /root/nodejs-0.6.0-1.el6.x86_64.rpm 可以看到包中含有的文件





########################centos 7 的环境 #############

# cat /etc/redhat-release 

CentOS Linux release 7.2.1511 (Core)


yum -y install ruby rubygems ruby-devel gcc


gem sources -l

gem sources -a https://ruby.taobao.org/

gem sources --remove https://rubygems.org/



得到的版本

#ruby -v

ruby 2.0.0p598 (2014-11-13) [x86_64-linux]

# fpm -v

1.6.3



工作正常,安装都是默认的。fpm没有指定特殊版本。fpm是最新版本应该。

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1774475如需转载请自行联系原作者


cuizhiliang


相关文章
|
8月前
|
缓存 Linux PHP
yum安装PHP
yum安装PHP
531 3
|
8月前
|
应用服务中间件 Linux PHP
Linux下安装php环境并且配置Nginx支持php-fpm模块
Linux下安装php环境并且配置Nginx支持php-fpm模块
701 0
|
8月前
|
Ubuntu 网络协议 应用服务中间件
Ubuntu安装PHP和NGINX环境
PHP-FPM 是 PHP FastCGI Process Manager 的缩写,是 FastCGI 进程管理器。 PHP-FPM 是基于 master/worker 的多进程架构模式,与 nginx 的设计风格类似。master 进程主要负责 CGI、PHP 环境初始化,事件监听、子进程状态,worker 进程负责处理 PHP 请求。 FPM 的 master 通过共享内存获取 worker 进程的信息,包括 worker 进程当前状态、已处理请求数等,当 master 进程要杀掉一个 worker 进程时则通过发送信号的方式通知 worker 进程。
117 0
|
应用服务中间件 PHP nginx
yum安装PHP7.2和rpm如何一次性删除包
yum安装PHP7.2和rpm如何一次性删除包
264 0
yum安装PHP7.2和rpm如何一次性删除包
|
应用服务中间件 PHP nginx
|
关系型数据库 MySQL PHP
|
Web App开发 监控 应用服务中间件
|
Web App开发 Ruby Python