Linux 二进制安装程序 (.bin、.sh) 如何工作?
- 2024-10-29 08:34:00
- admin 原创
- 50
问题描述:
某些软件(例如NetBeans IDE)将 Linux 安装程序放在 .sh 文件中。我很好奇他们究竟是如何将整个 IDE “打包”成“shell 脚本”的,于是我使用编辑器打开了该文件。我看到了一些纯文本 shell 脚本代码,然后是一些随机的乱码,我认为这些乱码是“二进制”或非纯文本。
我想知道他们如何混合普通的 shell 脚本,然后可能调用“不可读”的东西,即二进制文件。
对此有什么见解吗?
解决方案 1:
基本上,它是附加到某种压缩档案(例如 tar 档案)前面的 shell 脚本。您可以使用tail
orsed
命令($0
Bourne shell 中的变量)来剥离前面的 shell 脚本,并将其余部分传递给解压程序。
例如,创建以下脚本self-extracting
:
#!/bin/sh -e
sed -e '1,/^exit$/d' "$0" | tar xzf - && ./project/Setup
exit
上述命令sed
会删除文件第一行到以“exit”开头的第一行之间的所有行,然后将其余行传递下去。如果“exit”行后面紧接着的内容是 tar 文件,则该tar
命令会将其提取出来。如果提取成功,./project/Setup
则将执行该文件(可能是从 tarball 中提取出来的)。
然后:
mkdir project
echo "#!/bin/sh" > project/Setup
echo "echo This is the setup script!" >> project/Setup
chmod +x project/Setup
tar czf - project >> self-extracting
现在,如果您摆脱了旧project
目录,您可以运行self-extracting
,它将提取该 tar 文件并运行安装脚本。
解决方案 2:
你可能想看看makeself.sh
摘自作者笔记。
makeself.sh是一个小型 shell 脚本,它从目录中生成一个可自解压的 tar.gz 存档。生成的文件显示为 shell 脚本(其中许多脚本带有 .run 后缀),可以按原样启动。然后,存档将自行解压到临时目录中,并执行可选的任意命令(例如安装脚本)。
Makeself 档案还包括完整性自验证的校验和(CRC 和/或 MD5 校验和)。
makeself.sh 脚本本身仅用于从文件目录中创建档案。生成的档案实际上是一个压缩的(使用 gzip、bzip2 或 compress)TAR 档案,开头有一个小的 shell 脚本存根。这个小存根执行提取文件、运行嵌入命令以及在完成后删除临时文件的所有步骤。用户要安装此类档案中包含的软件,只需“运行”档案[即执行脚本]
我试图让此脚本的代码尽可能地可移植,即它不依赖于任何特定于 bash 的功能,而只调用安装在任何可运行的 UNIX 兼容系统上的命令。此脚本及其生成的存档应在任何 Unix 版本上运行,并具有任何兼容的 Bourne shell,当然前提是压缩程序可用。
最后,该makeself
包本身是一个名为的自解压脚本makeself.run
。
解决方案 3:
将二进制有效负载添加到 Shell 脚本
解决方案 4:
GNU sharutils:
http://www.gnu.org/software/sharutils/
是一个用于创建 shell 档案的工具集,并提供了一些可能有用的附加功能(例如校验和以确保有效载荷在传输过程中不会损坏)。
当最终产品必须由 shell 解释时,防止恶意修改实际上是不可行的 - 任何了解生成技术的人都可以修改校验和。
解决方案 5:
还有其他/商业软件安装程序生成器(如 InstallAnywhere),它们基本上有自己的 shar/makeself 版本。
Netbeans 有自己的安装程序引擎,其中的一部分(执行解压和启动)是在 NBI 本机启动器组件中完成的:http://wiki.netbeans.org/NBINativeLaunchers
为 Linux/Unix/MacOS 创建 shell(脚本)存档,为 Windows 创建本机可执行文件。您也可以将该工具用于您自己的项目。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件