制作linux安装程序,Linux安装包制作

本文介绍了一种自制Linux安装程序的方法,通过编写shell脚本和tar包实现个性化安装流程。该方法能够灵活应对不同项目的安装需求。

Linux下制作安装程序有很多第三方工具,还有RPM包这种规范形式;然而要做很多适合项目要求的个性安装设置,还是自己动手用sh制作更合适。这种方法借鉴了其它一些产品的安装,增添了一些新的部分。也许有点笨,但用惯了觉得还算可以。

这种作法基本道理是生成一个大的文件,由一段sh脚本加上一个tar包组成。sh脚本负责把tar包解开并完成一些必要操作,实现安装的拷贝和设置。这样一个大的文件加上执行权限就可以当安装程序使用,不得不佩服Linux的文件系统。

制作这样的安装程序,一般需要这样的的发布结构:一个脚本文件负责解开安装文件中tar包,它也将作为安装文件的头部,在下面例子中是inst.sh;产品基本目录结构,包括可执行文件等,它将被tar成tar形式作为安装文件中数据部分,在下面例子中是product及其子目录;一个脚本用于把前两者合成安装文件,在下面例子中是mkinst.sh。

下面举例说明:

install/

install/inst.sh

install/mkinst.sh

install/product/bin/start.tmpl

install/product/bin/a.exe

install/product/lib/libb.so.0.9

install/product/work/product-inst.sh

制作product的安装文件,要安装到用户指定路径,并且安装后start.sh执行a.exe时候调用libb.so.0.9。下面分步骤说明详细过程。

1,inst.sh,内容如下。它将作为安装文件的控制部分,占据安装文件的头部。为了可重用,只让它做解开安装文件中tar包和清除临时文件、目录工作,具体安装控制语句调用'cd product/work'和'sh product-inst.sh'完成。细节处是'tail +49 $0 > data.tar',这是这个文件的行数加上1,可以用命令自动统计。

#!/bin/sh

## 协议

more <

License Agreement

.............

EOF

## 是否同意协议内容

agreed=

while [ x$agreed = x ]

do

echo "Do you agree to the above license terms? [yes or no] "

read reply leftover

case $reply in

y* | Y*)

agreed=1

;;

n* | N*)

echo "you can't install this sofware";

exit 1

;;

esac

done

## 从安装文件尾部取出tar包并在当前路径解开

echo "Unpacking..."

tail +49 $0 > data.tar

tar xf data.tar 2>/dev/null

if [ $? != 0 ]

then

echo "There is error when unpacking files."

rm -rf data.tar product

exit 1

fi

echo "Done."

## 删除临时文件tar

rm -f data.tar

## 执行具体安装操作

cd product/work

sh product-inst.sh

cd ../..

## 删除临时目录

rm -rf product

exit 0

2,product目录。这个目录中需要说明的是'install/product/bin/start.tmpl'和'install/product/work/product-inst.sh'文件。

start.tmpl内容如下。其中@INSTALLPATH@是个变量,要根据用户输入置换。置换操作在product-inst.sh中完成,置换后生成真正的启动脚本start.sh。

#!/bin/sh

export LD_LIBRARY_PATH="@INSTALLPATH@/lib"

"@INSTALLPATH@/bin/a.exe"

product-inst.sh内容如下。它完成具体安装操作。

#!/bin/sh

## 得到安装路径

echo "set installing path:"

read INPUT

INST_PATH=$INPUT

## 置换start.tmpl中变量

cat ../bin/start.tmpl | sed "s/@INSTALLPATH@/${INST_PATH}/"  >         ../bin/start.sh

chmod +x ../bin/start.sh

## 复制文件到安装路径下

mkdir -p "${INST_PATH}"

mkdir -p "${INST_PATH}/bin"

cp -R ../lib "${INST_PATH}"

cp ../bin/start.sh "${INST_PATH}/bin"

cp ../bin/a.exe "${INST_PATH}/bin"

3,mkinst.sh,内容如下。

#!/bin/sh

tar cvf a.tar product

cat inst.sh a.tar > product-setup.sh

chmod +x product-setup.sh

echo "success!"

exit 0

执行以上三个步骤,生成了product-setup.sh安装文件。这样product可以安装到任何地方。所有个性安装设置都可以在product-inst.sh中考虑用shell脚本实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值