发布于 2016-01-01 21:47:57 | 176 次阅读 | 评论: 0 | 来源: PHPERZ
fpm 软件包管理器
fpm 是一个该死的软件包管理器,极大的缓解了多个平台构建软件包(deb,rpm,等)的痛苦。
环境:Fedora 20 X86_64
一 fpm工具安装
#yum install ruby-devel
# gem install fpm
二 编译打包
安装libav
1. 先安装libav的依赖库
yasm-1.2.0-5.fc20.x86_64
yasm-devel-1.2.0-5.fc20.x86_64
libvpx-devel-1.3.0-4.fc20.x86_64
lame-devel-3.99.5-2.fc19.x86_64
glib2-devel-2.38.2-2.fc20.x86_64
pulseaudio-libs-devel-4.0-13.gitf81e3.fc20.x86_64
x264-devel-0.138-2.20131030gitc628e3b.fc20.x86_64
xvidcore-devel-1.3.2-5.fc20.x86_64
xorg-x11-proto-devel-7.7-9.fc20.noarch
libXau-devel-1.0.8-2.fc20.x86_64
libxcb-devel-1.9.1-3.fc20.x86_64
libX11-devel-1.6.1-1.fc20.x86_64
libXext-devel-1.3.2-2.fc20.x86_64
libXfixes-devel-5.0.1-2.fc20.x86_64
alsa-lib-devel-1.0.27.2-2.fc20.x86_64
2 通过编译安装到 /opt/libav
$ ./configure --prefix=/usr --enable-libxvid --enable-libx264 --enable-libvpx --enable-x11grab --enable-nonfree --enable-gpl --enable-version3 --enable-libpulse --enable-libmp3lame --enable-shared --arch=x86_64
# make
#make DESTDIR= /opt/libav install
3 通过fpm打包
#fpm -t rpm -s dir --prefix=/ -C /opt/libav -n libav -v 10.1 --iteration 1 --after-install postinstall -d yasm -d libvpx -d 'lame-libs >= 3.98.3' -d pulseaudio-libs -d 'x264-libs >= 0.118' -d xvidcore -d libXfixes -d libXext -d alsa-lib $(ls /opt/libav)
参数解说
-t target 包格式
-s 源格式
--prefix 安装根目录
-C chroot的目录
-n 软件包的名字
-v 软件包版本
--iteration 第几次release
-d 依赖
--after-install Files :安装后的操作 (我这里主要时重新生成lib库缓存,文件包含命令ldconfig,文件可执行)
--after-install File :安装后的操作脚本 (我这里主要时重新生成lib库缓存,文件包含命令ldconfig,文件可执行)
--after-remove File :删除后的操作脚本
--before-install File :安装前的操作脚本
$(): 要打包的文件列表;也可以在此列出要打包的文件或目录路径,空格分开,路径时相对与-C 路径的相对路径
# 关于info文件处理
postinstall scriptlet (using /bin/sh):
/sbin/install-info //usr/share/info/cvs.info.gz //usr/share/info/dir &> /dev/null
/sbin/install-info //usr/share/info/cvsclient.info.gz //usr/share/info/dir &> /dev/null
:
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
/sbin/install-info --delete //usr/share/info/cvs.info.gz //usr/share/info/dir &> /dev/null
/sbin/install-info --delete //usr/share/info/cvsclient.info.gz //usr/share/info/dir &> /dev/null
fi
参考
https://github.com/jordansissel/fpm
http://www.puppetfans.com/thread-629-1-1.html