Linux下制作.run安装包

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安装包进行安装操作了。

你可能感兴趣的:(脚本语言,linux,运维,服务器,安装包)