目录
Linux下制作.run安装包
------
参考:
使用appimagetool 打包制作的单一文件,无需安装,可直接绿色运行。
--------------------------------------------
.run、.Appimage各有优缺点吧?未深入比较
使用appimagetool 打包制作的单一文件,无需安装,可直接绿色运行。
利用 appimagetool 工具对开发好的项目进行打包 (***带笔记*)
https://blog.csdn.net/ken2232/article/details/131313613
思考:未验证
共同点:
应用app与依赖库的打包:将应用app及其所使用到的在操作系统上的依赖库,打包到一个文件夹,使之可以安装、或运行在一个任意的、或默认指定的可用的文件夹里。 在run进行对处理“程序文件压缩包”之前的步骤,两者的操作和目的,是类似的。
设置有关的配置文件,修改应用程序对依赖库的搜索路径,不直接或首先搜索操作系统上的依赖库。
不同点:
.run可以完成更复杂的人为指定的操作:使得安装的过程可以实时提示,依照提示来完成。
在需要读写外部文件时,则只有使用默认路径,或者需要人为指定(或由另外一个工具来完成)。
在无需读写外部可变动的文件时,.Appimage使用更简单,但其具体的操作步骤已经被appimagetool 规定了。
在需要读写外部可变动的文件时,制作良好的.run使用更简单。
综合:
各自最适用于不同的应用场景。
在需要使用到外部不确定路径下的、需要读写的文件时,或许将两者结合在一起来使用?
==========================
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 #注1:非固定。需要根据具体的文件行数来修改
#检查系统的架构是否符合
if [[ "x86_64" =~ "$(arch)" ]]
then
echo "架构相同"
else
echo "架构不同, 本机架构为$(arch)"
exit 0
fi
homepath=~
#获取安装路径
echo "输入安装路径, 按下回车确认,默认路径(${homepath})"
read -p "请输入:" installpath
if [ ! -n "$installpath" ]; then #注2:if [ -n str1 ] 当串的长度大于0时为真(串非空)
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
注1:
install.sh 文件一开头有个lines=62,这个是干啥的呢?
解释:我们形成的run文件其实是在install.sh文件后拼接了一个install.tar.gz文件,所以解压时要用lines=62告诉我们拼接的位置(就是install.tar.gz的位置),然后方便我们解压,然后拷贝到指定位置。
原文链接:https://blog.csdn.net/windxf/article/details/128674957
参考:Linux 实时查看文件 tail 命令详解
https://blog.csdn.net/ken2232/article/details/131349194
注2:
Linux shell if [ -n ] 正确使用方法 https://blog.csdn.net/haogexiaole/article/details/83472890
if [ -n str1 ] #当串的长度大于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安装包进行安装操作了。
————————————————
版权声明:本文为CSDN博主「码农飞飞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yang1fei2/article/details/128262787
参考: