轻松实现源码打包安装[原创]

通常我们在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

#!/bin/sh  
#  
# ---------------------------------------------------  
# A python&func install shell  
# ---------------------------------------------------  
#   
#       Writed by Liu  tiansi  
#       Mail:liutiansi@gmail.com  
#       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

三、打包

#cd /home
#wget http://megastep.org/makeself/makeself-2.1.5.run
#chmod +x makeself-2.1.5.run
#./makeself-2.1.5.run
#cd makeself-2.1.5

开始打包!

#./makeself.sh  --notemp ../FuncPack1.0/ FuncPack1.0.bin "system start install ..." ./install.sh

运行结果:

Header is 402 lines long
About to compress 11280 KB of data...
Adding files to archive named "FuncPack1.0.bin"...
./
./func-0.25.tar.gz
./Python-2.5.1.tgz
./pyOpenSSL-0.9.tar.gz
./install.sh
./minion.conf
./certmaster.conf
./certmaster-0.25.tar.gz
CRC: 853861468
MD5: 14463177b627f0e85f3591e88fb02b1d
Self-extractible archive "FuncPack1.0.bin" successfully created.

命令说明:
1、–notemp 不生成临时目录,在当前目录下创建一新的目录(推荐)
2、../FuncPack1.0/ 打包的源目录
3、FuncPack1.0.bin 生成自运行解压文件
4、"system start install …" 安装提示信息
5、./install.sh 解压后所要执行的安装脚本
6、CRC、MD5(防止被篡改)

更多说明见官方http://megastep.org/makeself/

四、运行包
1、将生成的FuncPack1.0.bin文件scp到其它主机
2、运行FuncPack1.0.bin即可

如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu

转自:http://blog.liuts.com/post/212/#entrymore

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/1744

(0)
s19930811s19930811
上一篇 2015-03-27 17:07
下一篇 2015-03-27 17:15

相关推荐

  • centos 7.2 安装pyenv多版本管理工具和虚拟环境pyenv-virtualenv

    软件简介: pyenv + pyenv-virtualenv pyenv,是一款特别好用的Python版本管理器,程序员可以建立不同的目录,在不同的目录里分别运行不同版本的Python, 并且互不影响,安装的包也互不影响。github项目地址:https://github.com/yyuu/pyenv pyenv-virtualenv, 是pyenv的一个p…

    Linux干货 2016-07-04
  • 8月20日软件包管理

    软件包管理 本章内容 软件运行环境 软件包基础 Rpm包管理 yum管理 定制yum仓库 编译安装 软件运行环境 API:Application Programming Interface     POSIX:Portable OS 程序源代码–>预处理–>编译–>…

    Linux干货 2016-08-21
  • python基础_1

    变量/常量 常量:一旦赋值,就不能对它从新复制。python不存在常量 字面常量:一个单独出现的量,未赋值给任何变量或者常量 变量:就是一个名字,在固执符号的左边,这个名字可以指复制符号右边的内容。 变量列子: i = 3 print(i)  注:python 是强类型语言,是动态类型语言。(强类型指类型之间不能相互计算/动态类型是指变量是可以赋值…

    Linux干货 2017-10-10
  • 计算机的组成部分

    运算器:负责数据的运算和逻辑运算。 存储器:实现记忆功能的部件用来存放计算程序及参与运算的各种数据。 控制器:负责对程序规定的控制信息进行分析,控制并协调输入,输出操作或内存访问。 输入设备:实现计算程序和原始数据的输入。 输出设备:实现计算结果输出。

    Linux干货 2017-08-19
  • DNS和openssl

    本文主要讲述ssl以及使用openssl创建CA,DNS服务器的搭建  一.数据在互联网上传输存在各种各样的分险,数据在传输的过程中可能会被篡改,被截取等,于是就不得不解决这些安全问题,为了解决这些问题,ssl协议也就诞生了,ssl(Secure Socket Layer),首先,它是一中协议,专用于对数据进行加密与解密,是一个应用层协议,该协议提…

    Linux干货 2016-12-11
  • linux第五周小结

    不知不觉已经第五周了,好快啊!这周我们主要讲了读命令,查找命令,压缩,解压缩,安装等命令,今天我总结一下查找命令 查找命令主要有:locate和find命令,但我们经常用到的也最实用的当属find,下面我重点总结一下find命令 有时可能需要在系统中查找具有某一特征的文件(例如文件权限、文件属主、文件长度、文件类型等等)。这样做可能有很多原因。可能出于安全性…

    2017-08-13