使用工具打包

CheckInstall

Checkinstall 是一个能从 tar.gz 类的源代码自动生成 RPM/Debian 或Slackware 安装包的程序。 该工具最初的目的是能够轻松的移除通过源代码编译安装的软件,以及在其他机器上安装相同的软件包不必一次次的编译。

使用比较简单, 具体可参照Linux 的源码安装工具 CheckInstall的示例: 生成 squid-2.6.STABLE12 的 rpm 安装包:

# tar jxvf squid-2.6.STABLE12.tar.bz2 
# cd squid-2.6.STABLE12 
squid-2.6.STABLE12# ./configure --prefix=/usr/local/squid  --sysconfdir=/etc   \
--enable-arp-acl  --enable-linux-netfilter  -enable-err-language="Simplify_Chinese"  \
--enable-storeio=ufs  --enable-default-err-language="Simplify_Chinese"  \
--enable-auth="basic"  --enable-baisc-auth-helpers="NCSA"  --enable-underscore  
squid-2.6.STABLE12# make
squid-2.6.STABLE12# checkinstall


后面即可通过rpm -ivhrpm -e来安装、卸载软件包。

FPM

另一个比较常见的打包工具,使用过程中比 Checkinstall 出现问题少。 Checkinstall 不能处理静态链接的程序。

安装 FPM

yum -y install ruby rubygems ruby-devel rpm-build
gem sources -a http://ruby.taobao.org/ 
gem sources --remove http://rubygems.org/ 
gem install fpm

打包示例

打包 memcached

wget http://www.memcached.org/files/memcached-1.4.24.tar.gz
tar -xvzf memcached-1.4.24.tar.gz -C /tmp
cd /tmp/memcached-1.4.24/
./configure --prefix=/opt/memcached-1.4.24
make
 
mkdir /tmp/installdir
make install DESTDIR=/tmp/installdir

通过 fpm 创建 rpm 包:

fpm -s dir -t rpm -n memcached -v 1.4.24  -d "libevent" \
-m "vimxiang@gmail.com"  \
--url "http://www.memcached.org/" \
--license BSD --vendor noc \
--description  "High Performance, Distributed Memory Object Cache" \
-C /tmp/installdir .

在当前目录下查看 rpm 包信息:

# rpm -qpi memcached-1.4.24-1.x86_64.rpm
Name        : memcached                    Relocations: /
Version     : 1.4.24                            Vendor: noc
Release     : 1                             Build Date: 2015年05月19日 星期日 174456秒
Install Date: (not installed)               Build Host: localhost
Group       : default                       Source RPM: memcached-1.4.24-1.src.rpm
Size        : 380846                           License: BSD
Signature   : (none)
Packager    : vimxiang@gmail.com
URL         : http://www.memcached.org/
Summary     : High Performance, Distributed Memory Object Cache
Description :
High Performance, Distributed Memory Object Cache

打包 nrpe

准备好安装前脚本nrpe-pre.sh:

#! /bin/bash
 
[ -z `grep 'nagios' /etc/passwd` ] && useradd nagios -s /sbin/nologin -M
exit 0

及安装后脚本nrpe-post.sh:

#! /bin/bash
 
INSTALL_DIR=/opt/nagios
COLLECTOR=10.0.0.10
 
sed -i "/allowed_hosts/s/allowed_hosts=127.0.*/allowed_hosts=127.0.0.1,${COLLECTOR}/" ${INSTALL_DIR}/etc/nrpe.cfg
sed -i '/dont_blame_nrpe/s/dont_blame_nrpe=0/dont_blame_nrpe=1/' ${INSTALL_DIR}/etc/nrpe.cfg
sed -i '/^command\[/s/^/#/' ${INSTALL_DIR}/etc/nrpe.cfg
sed -i '/\$$/s/^#//' ${INSTALL_DIR}/etc/nrpe.cfg
 
 
echo "${INSTALL_DIR}/bin/nrpe -d -c ${INSTALL_DIR}/etc/nrpe.cfg" >> /etc/rc.local
 
echo 'starting nrpe ......'
${INSTALL_DIR}/bin/nrpe -d -c ${INSTALL_DIR}/etc/nrpe.cfg

编译(略)之后开始打包:

fpm -s dir -t rpm -n nrpe -v 2.15 -m "vimxiang@gmail.com" \
--url "http://www.nagios.org" \
--license GPLv2 --vendor noc \
--description "Host/service/network monitoring agent for Nagios" \
-d 'openssl' \
--before-install nrpe-pre.sh \
--after-install nrpe-post.sh \
--verbose \
-C /tmp/installdir .

对于像 MySQL 的包建议还是通过标准方法打包,或者脚本编译。

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 70 queries in 0.417 seconds