Linux 下的自解压工具

使用下面的工具就可以做一个简单的自解压程序。

http://stephanepeter.com/makeself/

用法小览:

# ./makeself.sh /tmp/helloworld test.sh "test" make
Header is 505 lines long

WARNING: Overwriting existing file: test.sh
About to compress 12 KB of data...
Adding files to archive named "test.sh"...
./
./helloworld.c
./Makefile
CRC: 1386344463
MD5: 20aad1a40ab571d2309f11112a153a3d

Self-extractable archive "test.sh" successfully created.

直接用 makeself.sh 生成一个 test.sh 的自解压脚本,

这个脚本里包含 /tmp/helloworld 里的内容,执行 test.sh 会执行 /tmp/helloworld 的 make 命令来生成 helloworld,

结果如下:

# ./test.sh
Verifying archive integrity... 100% All good.
Uncompressing test 100%
cc -g -o helloworld helloworld.c

当然 makeself.sh 这个脚本有许多的选项,这个就不在这里赘述了。

至于makeself.sh 的内部是怎么实现的?

可以参考下面:

http://blog.csdn.net/ispeller/article/details/45268511

其实也很简单,就是使用 makeself.sh 生成的自解压脚本里的最后一部分是打包的binary,

自解压脚本执行时会把最后一部分的内容提取出来解压,然后再执行对应的命令。

找了一个网上最简单的示例,makeself.sh的原理就是如下这段内容。

#!/bin/bash
line=`wc -l $0|awk '{print $1}'`
line=`expr $line - 10` 
tail -n $line $0 |tar zx -C /tmp
cd /tmp/web
./install_web.sh
ret=$?
#
#
exit $ret


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值