Linux下制作.run安装包

目录

Linux下制作.run安装包

------

参考:

使用appimagetool 打包制作的单一文件,无需安装,可直接绿色运行。

--------------------------------------------

.run、.Appimage各有优缺点吧?未深入比较

使用appimagetool 打包制作的单一文件,无需安装,可直接绿色运行。

利用 appimagetool 工具对开发好的项目进行打包 (***带笔记*)

https://blog.csdn.net/ken2232/article/details/131313613

思考:未验证

共同点:
  1. 应用app与依赖库的打包:将应用app及其所使用到的在操作系统上的依赖库,打包到一个文件夹,使之可以安装、或运行在一个任意的、或默认指定的可用的文件夹里。    在run进行对处理“程序文件压缩包”之前的步骤,两者的操作和目的,是类似的。

  1. 设置有关的配置文件,修改应用程序对依赖库的搜索路径,不直接或首先搜索操作系统上的依赖库。

不同点:
  1. .run可以完成更复杂的人为指定的操作:使得安装的过程可以实时提示,依照提示来完成。

  1. 在需要读写外部文件时,则只有使用默认路径,或者需要人为指定(或由另外一个工具来完成)。

  1. 在无需读写外部可变动的文件时,.Appimage使用更简单,但其具体的操作步骤已经被appimagetool 规定了。

  1. 在需要读写外部可变动的文件时,制作良好的.run使用更简单。

综合:
  1. 各自最适用于不同的应用场景。

  1. 在需要使用到外部不确定路径下的、需要读写的文件时,或许将两者结合在一起来使用?

==========================

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

参考:

原文链接:https://blog.csdn.net/windxf/article/details/128674957

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值