上面那篇是今天打算用一种更好的方法模式来代替目前的RPM机制,但是成熟的RPM有很多种选项参数供你选择,比如是否包含源码包,是否去掉符号表,是否仅仅二进制,而今天做的SHELL脚本做的BIN包目前是携带源代码的,这对于一个需要release出去的软件来说应该是不合格的,
1:install.sh
Linux系统一切皆文件,所以这个脚本实际上是将自身的shell脚本命令和源代码的tar包给拼凑起来了,实际上最后生成的run包结构如下:
——————————————–
安装脚本install.sh的内容 <==前多少行
——————————————–
源代码tar.gz,编辑器乱码 <==后部分
——————————————–
所以实际上执行最后的hello.run实际上就是通过执行install.sh来源代码安装,而最后有一句exit 0,从而后面乱码(对编辑器来这么说)就执行不到了
2:源代码
既然这种方法还包含源代码,那根直接做一个tar包,然后将源代码和编译安装脚本塞进去,安装就解压执行脚本没啥差别呀,只不过名字高大上一点,显得有些鸡肋,但是这种包给内部使用比较方便,当然想不携带源代码也很容易,先将源代码编译好,将需要的可执行程序以及配置文件都copy到脚本的hello文件夹,然后在install.sh里写出install的命令,这样,shell包里永远就只有一些二进制和一些公开的内容了,比如去掉gcc编译过程,如下:
#!/bin/bash
now_dir=`pwd`
tmp_dir=/tmp
module=hello
sed -n -e ‘1,/^exit 0$/!p’ $0 > $tmp_dir/$module.tar.gz 2>/dev/null
tar zxvf $tmp_dir/$module.tar.gz
cd $module
cp a.out /usr/local/bin
rm -f $tmp_dir/$module.tar.gz
cd $now_dir
rm -f $module.tar.gz
rm -rf $module
exit 0
3:makeself
据说这是一个不错的工具,也是shell脚本,选项也不少,有空研究一下,看能否有更多选择