如何在 Linux 中创建自解压存档或安装程序如何在 Linux 中创建自解压存档或安装程序如何在 Linux 中创建自解压存档或安装程序如何在 Linux 中创建自解压存档或安装程序
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中创建自解压存档或安装程序

虽然典型的存档文件依赖于单独的程序(例如 tar、gunzip、7z)从存档文件中提取内容,但自解压 (SFX) 存档本身就是可执行文件,只需在运行时即可自解压其内容。自解压安装程序执行相同的操作,但它还会将解压的内容复制到适当的目录。

在本教程中,我将解释如何在 Linux 上创建自解压存档或安装程序。

为此,您可以使用名为 makeself 的命令行实用程序。 makeself 工具是一个 shell 脚本,它根据输入目录/文件创建压缩的 TAR 存档,并在存档的开头添加一个小的 shell 脚本存根以启动自解压,并指导解压文件的安装。

在 Linux 上安装 makeself

要安装 makeself,请下载存档格式的最新版本,然后按如下方式解压下载的存档。归档文件解压后,它将创建一个名为 makeself-2.4.2 的新目录。将目录中的所有 shell 脚本复制到 /usr/bin 中。


$ wget https://github.com/megastep/makeself/releases/download/release-2.4.2/makeself-2.4.2.run
$ chmod 755 makeself-2.4.2.run
$ ./makeself-2.4.2.run
$ cd makeself-2.4.2
$ sudo cp *.sh /usr/bin

makeself.sh的基本用法如下。


makeself.sh [options] [directory_to_package] [sfx_archive_filename] [label] [startup_script] [optional_script_args]

label 参数是在解压缩 SFX 存档时要打印的消息。

startup_script 参数指定成功提取 SFX 存档后要启动的脚本/命令。当您创建自解压安装程序时,这非常有用。通常,启动脚本会将提取的内容复制/安装到适当的目标目录。启动脚本必须位于要打包的目录内,以便该脚本包含在 SFX 存档中。

以下是 makeself.sh 的一些可用选项:

  • --gzip:使用 gzip 进行压缩(默认选项)。

  • --bzip2:使用bzip2进行压缩。

  • --nocomp:不压缩。

  • --notemp:不将文件提取到临时目录中,而是提取到当前目录中创建的新子目录中。

  • --follow:跟踪所有符号链接,并归档符号链接的文件。

创建自解压存档

要创建包含 ./backup 目录中所有文件的自解压存档,请执行以下操作。这里的启动例程只是打印Extraction did。


$ makeself.sh --notemp ./backup ./backup.run "SFX archive for backup" echo "Extraction done"

Header is 403 lines long

About to compress 1540 KB of data...
Adding files to archive named "./backup.run"...
./
./jpeg/
./jpeg/1.jpg
.
.
CRC: 2238411397
MD5: 0b0fd3a2ba08ffcec821b9cbaa11b70d

Self-extractible archive "./backup.run" successfully created.

要从存档中提取文件,只需执行存档:


$ ./backup.run

Creating directory backup
Verifying archive integrity... All good.
Uncompressing SFX archive for backup.............
Done

创建自解压安装程序

如果您想创建自解压安装程序,则需要准备一个单独的启动脚本,该脚本将在文件解压时进行安装。这里我假设要打包的程序目录位于./program。因此,在 ./program 目录中准备一个启动脚本。


$ vi ./program/install.sh

#!/bin/sh
   
if [ -d $HOME/bin ]
then
    cp myprogram $HOME/bin/
fi

然后使启动脚本可执行。


$ chmod 755 ./program/install.sh

继续创建一个自解压安装程序,并将启动脚本与其一起打包,如下所示。


$ makeself.sh ./program ./program.run "SFX installer for program" ./install.sh
©2015-2025 艾丽卡 support@alaica.com