FPM (Effing Package Management) 是 Ruby 寫的通用打包工具,支援 dir → rpm/deb、gem → rpm、npm → rpm 等多種來源與目標格式,讓 RPM 打包不再需要撰寫複雜的 Spec 檔。
yum -y install ruby rubygems ruby-devel
gem sources -a https://gems.ruby-china.com/ # 國內鏡像
gem sources --remove https://rubygems.org/
gem install fpm
# 1. 下載並編譯 Node.js
wget https://nodejs.org/dist/v0.10.12/node-v0.10.12.tar.gz
tar zxvf node-v0.10.12.tar.gz -C /dev/shm/
cd /dev/shm/node-v0.10.12/
./configure --prefix=/usr --dest-cpu=x64 --dest-os=linux
make -j24
mkdir /dev/shm/node-root
make -j24 install DESTDIR=/dev/shm/node-root
# 2. 使用 FPM 打包
fpm -f -s dir -t rpm -n nodejs --epoch 0 -v 0.10.12 --iteration 1.el6 \
-C /dev/shm/node-root \
-p ~/rpmbuild/RPMS/x86_64/ \
-d 'openssl >= 0.9.8' -d 'libstdc++ >= 4.4.3' \
--verbose --category 'Development/Languages' \
--description 'Node.js real-time applications' \
--url 'nodejs.org' --license 'BSD' -m 'higkoo' \
--no-rpm-sign --workdir /dev/shm \
usr/bin usr/lib usr/share
rpm -qpi ~/rpmbuild/RPMS/x86_64/nodejs-0.10.12-1.el6.x86_64.rpm


技巧: 加上 -e 參數可在打包前手動修改 FPM 自動產生的 Spec 檔。注意 CentOS 5/6/7 之間的 RPM 不可混用,因 glibc 版本不同導致動態連結失敗。
修復 /etc/rc.local 開機不自動執行:重建 rc3.d 軟連結
Linux fuser 工具實戰:查詢檔案/目錄/連接埠/檔案系統佔用進程並一鍵殺掉
XFS「No space left on device」誤報真相:inode64 參數解決大分區 inode 耗盡假象
Linux dmidecode 指令詳解:跨機房查詢硬體資訊(CPU、記憶體、主機板、BIOS)
使用 BFO (boot.fedoraproject.org) 透過網路快速安裝 Fedora Linux
Ubuntu 軟體中心出現 Debconf 視窗導致安裝失敗:oracle-java7-installer 衝突完整解決