您的位置:首页 > 产品设计 > 产品经理

fpm包安装-

2016-05-17 20:19 393 查看
【前提需求知识】rpm包的组成1、RPM的命名格式:name-version-release.arch.rpm
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次),这里,还包含了此包使用的系统,即centos,arch就是x86_64。 说明下常见的el6是代表啥意思:
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的打包功能及其分包机制:
核心包,即主包,它的命名与源程序一样(不是源代码啊)

例子: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
【解决依赖关系】 安装依赖包
yum -y install ruby rubygems ruby-devel gcc

添加国内镜像[root@ops-rpmbuild01
~]# gem sources -a http://ruby.taobao.org/改用
gem sources -a https://ruby.taobao.org/[/code] href="https://ruby.taobao.org/" target=_blank>
移除默认的
gem sources --remove http://rubygems.org/[/code] href="http://rubygems.org/" target=_blank>
查看源
gem sources -l
【安装fpm包】gem install fpm 改用
gem install fpm -v 1.4.0
[root@ops-rpmbuild01
~]# gem install fpm -v 1.4.0Successfully
installed fpm-1.4.01 gem installedInstalling ri
documentation for fpm-1.4.0...Installing RDoc
documentation for fpm-1.4.0... 参考:http://www.jianshu.com/p/df61ea673838 【结果】成功安装fpm --version1.4.0【错误1 】[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 fpmBuilding native
extensions. This could take a while...ERROR: Error installing fpm:ERROR:
Failed to build gem native extension. /usr/bin/ruby
extconf.rbcreating Makefile 原因: 系统没有gcc环境 ,安装yum install
gcc 【错误3】[root@ops-rpmbuild01
~]# gem install fpmBuilding 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 -vruby 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 包命令参数详解

语法:
fpm [OPTIONS] [ARGS] ...


选项:
-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)上所有软件的分组情况可以查看文件
cat /usr/share/doc/rpm-4.8.0/GROUPS
License: 软件授权方式,通常就是GPL

【小试牛刀】
参考github的说明 nodejs的rpm包制作(和官网有一定的修改看个人习惯和使用的包种类,我使用rpm包) https://github.com/jordansissel/fpm/wiki/PackageMakeInstall
步骤:
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.
mkdir /data/installdir
make install DESTDIR=/data/installdir


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




开始使用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.
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


查看制作好的包的结果:

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





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

本文出自 “崔德华运维打工从业路” 博客,请务必保留此出处http://cuidehua.blog.51cto.com/5449828/1774475
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: