当前位置: 首页 > 面试题库 >

Linux二进制安装程序(.bin,.sh)如何工作?

陈浩
2023-03-14
问题内容

某些软件(例如NetBeans
IDE
)将Linux安装程序随附在.sh文件中。我很好奇他们如何将整个IDE打包为“
shell脚本”,我在编辑器中打开了文件。我看到了一些纯文本shell脚本代码,然后看到了一些乱码,我认为是“二进制”或非普通文本。

我想知道他们如何混合普通的shell脚本,然后可能将它们称为“不可读的”东西,即二进制文件。

有什么见解吗?


问题答案:

基本上,这是一个shell脚本,位于某种压缩存档(例如tar存档)之前。您可以对自己使用tailor sed命令($0Bourne
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文件并运行安装脚本。



 类似资料:
  • FreeRADIUS有许多可执行文件被安装. 当在不同发行版之间移动时, 有小的不同点需要考虑. 一个这样的不同是配置文件的位置. 另一个不同是FreeRADIUS服务器程序的名称的不同. 在Ubuntu(和Debian)上, 他叫做freeradius. 在CentOS和SLES, 他叫做radiusd. 下表列出了重要的可执行程序, 带有一个简短描述. 名称 描述 /usr/sbin/radd

  • Julia 是一个全新的以科学计算为核心的通用编程语言,其二进制程序可以到 https://mirrors.tuna.tsinghua.edu.cn/julia-releases/bin/ 下载。 这里仅镜像 JuliaLang Downloads 中提供的稳定发行版以及 rc 版本。每日构建的测试版 (nightlies) 以及 Juno/Julia Pro等 IDE 版本不包括在内。 尽管一些

  • 本文向大家介绍linux二进制通用包安装mysql5.6.20教程,包括了linux二进制通用包安装mysql5.6.20教程的使用技巧和注意事项,需要的朋友参考一下 我们使用二进制通用包安装MySQL,这个类似于windows下的绿色软件,解压后配置即可使用,下载地址: https://edelivery.Oracle.com/EPD/Search/handle_go 2.将二进制mysql安装

  • 本安装说明是提供给那些想在多种环境中安装 Docker 的 hacker 们的。 在进行安装之前,请检查你的 Linux 发行版本是否有打包好的 Docker 安装包。我们已经发布了许多发行版包,这样会节省您很多时间。 检查运行时的依赖关系 如果想要 Docker 正常运行,需要安装以下软件: iptables version 1.4 or later Git version 1.7 or lat

  • 问题 > 如果javajdk没有安装在linux操作系统上,jar将不会运行。 如果在linux中运行JavaFXJAR,就会出现如下错误 后来,我做了这个。成功了。 要使用终端运行java-fx应用程序,请遵循以下步骤: 安装openjfx(如果尚未安装): 列出javafx库位置: 输出如下: ./usr/usr/share/usr/share/doc/usr/share/doc/openjf

  • Debian 安装程序由一些特定功能的元件组成,它们完成各自的安装任务。 每一元件执行任务时,会询问一些任务相关的问题。每个任务又有各自的 优先级,可以在安装程序开始时设置优先级决定哪些问题会问到。 执行默认安装时,只有必要的(高优先级)的问题会被问到。 使得安装过程可以高度自动化,几乎不需用户干预。 元件按次序字典执行;至于哪些元件会执行,这取决于您使用的安装方法, 以及您的硬件。对于没有询问的