CentOS将可执行程序打成rpm包
LiuSw Lv6

CentOS将可执行程序打成rpm包

使用fpm工具直接打包

1.安装ruby

fpm是ruby写的,系统环境需要ruby,且ruby版本大于2.4

1
yum -y install ruby rubygems ruby-devel

查看当前rubygem仓库

1
gem sources list

添加国内仓库

1
2
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem sources list

2.安装fpm

gem从rubygem仓库安装软件类似于yum安装。

(1)直接安装

安装成功可跳过下一步手动安装

1
2
3
4
5
6
#CentOS 6 安装方式
gem install json -v 1.8.3
gem install fpm -v 1.3.3

#CentOS 7 安装方式
gem install fpm
(2)ruby版本过低时,进行手动安装

卸载老版本ruby

1
yum remove ruby -y

下载ruby稳定版

1
2
3
cd /usr/local/

wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz

安装ruby

1
2
3
4
5
tar zxf ruby-2.5.1.tar.gz
cd ruby-2.5.1
./configure --prefix=/usr/local/ruby
make
make install

安装后查看版本

1
/usr/local/ruby/bin/ruby -v

设置环境变量

1
2
3
4
vi /etc/profile

# 最后一行添加
export PATH=$PATH:/usr/local/ruby/bin

验证

1
2
source /etc/profile
ruby -v

重新安装fpm

1
gem install fpm

3.fpm打包

fpm常见参数,详情查看man帮助。

-s 指定源类型

-t 指定目标类型,就是你想要制作什么包

-n 指定包的名字

-v 指定包的版本号

-C 指定打包的相对路径

-d 指定依赖于哪些包

打包实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#把编译好的文件按绝对路径创建相应的目录,并移动到位,如htop命令的目录结构如下
./htop/
└── usr
├── local
│ └── bin
│ └── htop

└── share
├── applications
│ └── htop.desktop
├── man
│ └── man1
│ └── htop.1
└── pixmaps
└── htop.png
1
2
3
4
5
#切换目录
[root@localhost ~]# cd htop
#执行fpm打包命令
[root@localhost htop]# fpm -s dir -t rpm -n htop -v 2.2.0 ./usr/
Created package {:path=>"htop-2.2.0-1.x86_64.rpm"}

此时会在当前目录下生成rpm包

1
2
[root@localhost htop]# ls
htop-2.2.0-1.x86_64.rpm usr

使用rpm命令在另一台服务器上安装该软件包

1
2
3
4
rpm -ivh htop-2.2.0-1.x86_64.rpm 
Preparing... ################################# [100%]
Updating / installing...
1:htop-2.2.0-1 ################################# [100%]

参考文献1

参考文献2

 评论