Linux平台下的.run安装包,本质上就是安装脚本+安装文件压缩包。和deb、rpm安装包相比,它的优点是操作比较简单,缺点是做一些比较复杂的安装包,安装脚本的编写会很麻烦。
.run安装包的结构如下所示:
|-----------------|
| |
| 安装脚本 |
| |
|-----------------|
| |
| 程序文件压缩包|
| |
|-----------------|
文件的前N行是安装脚本install.sh,安装脚本后面紧跟着的是程序文件的压缩包。
打包脚本
通过打包脚本,我们可以将.run安装包的程序文件和安装脚本打包到一起生成.run文件。
package.sh
#!/bin/bash
#将源文件打包成压缩包
tar czvf package.tar.gz package
#创建.run的输出目录
mkdir -p output
#从外界获取输入的版本号
echo "请输入版本号,回车结束, 示例(1.0.0)"
read -p "请输入:" version
if [ ! -n "$version" ]; then
version=1.0.0.1
fi
# 打包生成.run文件
cat install.sh package.tar.gz > output/test_"$version".run
# 删除之前的文件压缩包
rm -f package.tar.gz
安装脚本
安装脚本在安装的时候被调用,负责对程序包进行解压缩,并把对应的程序文件拷贝到相应的安装目录下。最后执行一些安装处理操作。
install.sh
#!/bin/bash
#跳转行数,负责定位到压缩包所在的位置
lines=63
#检查系统的架构是否符合
if [[ "x86_64" =~ "$(arch)" ]]
then
echo "架构相同"
else
echo "架构不同, 本机架构为$(arch)"
exit 0
fi
homepath=~
#获取安装路径
echo "输入安装路径, 按下回车确认,默认路径(${homepath})"
read -p "请输入:" installpath
if [ ! -n "$installpath" ]; then
installpath=$homepath
fi
#解压对应的程序包
#根据安装脚本的行数,跳转到压缩包所在的位置
tail -n +$lines $0 > package.tar.gz
#解压缩
tar zxvf package.tar.gz
#将解压缩之后文件拷贝到对应的安装目录
mkdir -p $installpath/install/test
cp -r package $installpath/install/test
#检查用户路径,获取桌面路径
test -f ~/.config/user-dirs.dirs && . ~/.config/user-dirs.dirs
desktopDir=~/${XDG_DESKTOP_DIR##*/}
#生成快捷方式,替换快捷方式中的安装路径
sed -i "s#INSTALLPATH#${installpath}#g" $installpath/install/test/test.desktop
#applications文件夹如果不存在则创建
if [ ! -d ~/.local/share/applications ];then
mkdir -p ~/.local/share/applications
fi
#拷贝桌面快捷方式
cp $installpath/install/test/test.desktop ~/.local/share/applications
#自定义协议启动
xdg-mime default test.desktop x-scheme-handler/clerk
#快捷方式发送到桌面,并修改可执行权限
cp $installpath/install/test/test.desktop ${desktopDir}
chmod +x ${desktopDir}/test.desktop
#移除无用文件
rm -rf $installpath/install/test/test.desktop
rm -rf package
rm -rf package.tar.gz
exit 0
桌面快捷方式
为了方便程序的使用,我们会给安装包程序添加快捷方式,在安装的过程中将快捷方式发送到桌面上。对应的快捷方式的内容如下:
test.desktop
[Desktop Entry]
Type=Application
Version=1.0.9
Name=测试工具
Comment=Run test
Icon=INSTALLPATH/logo.png
Exec=INSTALLPATH/test
Terminal=false
安装的过程中会动态替换INSTALLPATH为实际的安装路径。
安装包赋权
打包好的.run文件默认是没有执行权限的,我们需要通过命令行给.run安装包赋权,对应的操作如下:
chmod +x test_1.0.9.run
赋权之后,我们就可以对run安装包进行安装操作了。