通常我們在Linux/Unix下安裝一平台時往往需要十幾甚至更多安裝包,這些源碼包來源於網絡、本地硬盤、移動設備。有時碰到網絡不暢通或下載地址失效會帶來很多麻煩,一個好方法便是將常用的軟件包下載到本地硬盤存放。問題是久而久之連自己都不曉得哪些包才是適用的。現用makeself來實現自解壓倒安裝倒是一個很好的解決方案,下面以制作Func客戶端安裝包為例。
一、整理軟件包
引用
#cd /home
#mkdir FuncPack1.0
將所需的軟件包都往FuncPack1.0目錄丟:)
#ls FuncPack1.0
-rw-r--r-- 1 root root 50878 Sep 28 2009 certmaster-0.25.tar.gz
-rw-r--r-- 1 root root 249 Oct 8 2009 certmaster.conf
-rw-r--r-- 1 root root 152871 Sep 28 2009 func-0.25.tar.gz
-rw-r--r-- 1 root root 137 Oct 8 2009 minion.conf
-rw-r--r-- 1 root root 197981 Sep 28 2009 pyOpenSSL-0.9.tar.gz
-rw-r--r-- 1 root root 11060830 May 22 2008 Python-2.5.1.tgz
二、編寫安裝shell#cd FuncPack1.0
#vi install.sh
view plaincopy to clipboardprint?
- #!/bin/sh
- #
- # ---------------------------------------------------
- # A python&func install shell
- # ---------------------------------------------------
- #
- # Writed by Liu tiansi
- # Mail:[email protected]
- # Blog:http://blog.liuts.com
- # QQ groups:106651547
- # ---------------------------------------------------
-
-
- _pwd=$(pwd)
- cd $_pwd/FuncPack1.0
-
- echo "==================*install python2.5*============================"
- /bin/tar -zxvf Python-2.5.1.tgz
- cd Python-2.5.1
- ./configure && make && make install
- echo "export PATH=\$PATH:/usr/local/bin" >> /etc/profile
- source /etc/profile
- cd ..
-
- echo "=================*install Func/certmaster/pyOpenSSL*================="
-
- /bin/tar -zxvf pyOpenSSL-0.9.tar.gz
- cd pyOpenSSL-0.9
- /usr/local/bin/python setup.py install
- cd ..
-
- /bin/tar -zxvf certmaster-0.25.tar.gz
- cd certmaster-0.25
- /usr/local/bin/python setup.py install
- cd ..
-
- /bin/tar -zxvf func-0.25.tar.gz
- cd func-0.25
- /usr/local/bin/python setup.py install
- cd ..
-
- /bin/ln -s /usr/local/bin/certmaster /usr/bin/certmaster
- /bin/ln -s /usr/local/bin/funcd /usr/bin/funcd
-
- /bin/sed -i 's/'`hostname`'//g' /etc/hosts
-
- /bin/rm -rf /etc/certmaster/certmaster.conf
- /bin/rm -rf /etc/certmaster/minion.conf
- /bin/cp certmaster.conf /etc/certmaster
- /bin/cp minion.conf /etc/certmaster
-
- /bin/sed -i -e '/^listen_port/{ s/51234/1999/; }' /etc/func/minion.conf
- /bin/sed -i -e "/^minion_name/{ s@=@= `hostname`@; }" /etc/func/minion.conf
-
- /sbin/chkconfig --level 345 certmaster on
- /sbin/service certmaster start
-
- /sbin/chkconfig --level 345 funcd on
- /sbin/service funcd start
-
- echo "Install over!"
#chmod +x install.sh