linux下使用makeself.sh脚本打包软件

1、makeself.sh简介

makeself.sh是一个用于Unix系统的自解压归档工具。

是一个shell小型脚本,本身只用于从文件目录创建打包文件,生成的打包文件实际上是一个压缩的TAR文件(使用gzip,bzip2或compress),生成的shell脚本文件通常以.run为后缀,可直接运行。

打包后文件前面有一个小的shell脚本头,主要用于负责执行所有的步骤,包括解压文件、运行嵌入的命令,及完成后删除临时文件。

与Windows下用WinZip Self-Extractor打包类似,打包的文件会自解压到一个临时目录,并执行一个可选的任意命令(例如一个安装脚本)。

makeself.sh打包的文件还包含用于完整性自验证的校验和(checksums )(CRC和/或MD5/SHA256 checksums)。

用户要做的就是“运行”这个打包后的文件,即sh nice-software.run,建议使用“run”或“sh”作为文件后缀,以明确用户,该文件实际为shell脚本(尽管有很多二进制数据附加在它们上面)。

makeself.sh会尽可能地让脚本代码具有码可移植性,使它不依赖于任何bash特定功能,代码仅调用在正常运行的UNIX兼容系统上已安装的命令。正确打包的可用压缩程序,可在所有兼容Bourne shell的Unix平台上运行。

Makeself 已经在下列平台上重写和测试过:

  • Linux(所有发行版)
  • Sun Solaris(8及以上)
  • HP-UX(在HPPA RISC上测试了11.0和11i)
  • SCO OpenUnix和OpenServer
  • IBM AIX
  • macOS(Darwin)
  • SGI IRIX 6.5
  • FreeBSD
  • OpenBSD
  • NetBSD
  • UnicOS / Cray
  • Windows(Cygwin,WSL)

2、下载和安装

各版本安装包和源码下载地址:
https://github.com/megastep/makeself/releases

下载安装包.run文件后,先解压文件:

bash makeself-2.5.0.run

进入解压后文件夹

cd makeself-2.5.0

拷贝目录下的makeself.sh和makeself-header.sh文件到bin目录

sudo cp *.sh /usr/bin

安装完成

3、打包软件

最新编译好的准备打包的文件和相关引用/库文件放到同一文件夹下,打包命令:

makeself.sh [args] archive_dir file_name label startup_script [script_args]

其中:
[args]:Makeself的可选选项,详见后注内容;
archive_dir:需要打包的文件存放路径;
file_name :打包后文件名;
label :描述安装包的任意文本字符串,将在安装或者说解压文件时显示;
startup_script :需执行的脚本,安装时在解压后的文件的目录中需要执行的命令。因此如果要执行此程序,则必须在命令前加上./。例如:./program。script_args属于附加参数。注意,对于不在临时目录中解压的打包文件(即使用–notemp时),startup_script及其参数并不是严格要求的。

实例命令:

sudo makeself --nocomp /dir software.run "software" ./installScript.sh

打包后文件即为:software.run,存放路径在:/dir 下,安装解压后会执行目录中的“installScript.sh”文件

注:
[args]:
–version:在stdout上打印版本号,然后立即退出;
–base64:将打包文件编码为base64格式的ASCII,而不是压缩(需要base64命令);
–gpg-encrypt:使用gpg-ac-z$COMPRESS_LEVEL加密档案,会提示输入加密密码,需已安装gpg。
–ssl encrypt:使用openssl aes-256-cbc-a-salt加密存档,会提示输入加密密码,需已安装OpenSSL工具;

–gzip–bzip2–bzip3:、–pbzip2(多个CPU的机器上)、–xz–lzo–lz4–zstd–pigz:使用不同的方式进行压缩,命令必须在命令路径中可用,建议将打包文件扩展名设置为.bz2.run、 .bz2.run、 .xz.run、 .lzo.run、 .lz4.run、 .zstd.run,便于用户知晓使用何种解压方式;

–compression:使用UNIX压缩命令来压缩数据。这应该是所有没有gzip可用的平台上的默认设置;
–nocomp:不要对存档使用任何压缩,得到未压缩的TAR;
–complevel:指定gzip、bzip2、pbzip2、zstd、xz、lzo或lz4的压缩级别,默认为9;

–threads:指定支持并行化的压缩器要使用的线程数,省略使用压缩器的默认值,最有用(也是必需的)的是选择xz的线程,对于所有可用的核心,通常使用–threads=0。pbzip2和pigz默认情况下是并行的,设置此值可以限制它们使用的线程数;
–notemp:生成的打包文件不会将文件提取到临时目录,而是在当前目录中创建的新目录中,可以更好的发布可自行提取和编译的软件包(即通过嵌入式脚本启动编译);
–current:文件将被提取到当前目录,而不是在子目录中。这个选项意味着上面的–notemp(???)。
–follow:按照归档目录中的符号链接,即存储所指向的文件,而不是链接本身。
–append(2.1.x中的新功能):将数据附加到现有压缩包,而不是创建新的,在这种模式下,将重用原始存档中的设置(压缩类型、标签、嵌入脚本),因此不需要在命令行中再次指定。

–header:Makeself单独存储标头存根the header stub的文件,称为makeself-header.sh。默认情况下,它与makeself.sh存储在相同的位置,如果它存储在其他地方,则使用此选项指定其实际位置;
–cleanup:指定在执行中断或成功完成时运行的脚本,该脚本使用与startup_script相同的环境和初始script_args执行;
–copy:提取后,归档文件将首先将自身提取到一个临时目录中。它的主要应用程序是允许在安装程序稍后需要卸载CD并允许插入新的CD时,将自包含的安装程序存储在CD上的Makeself存档中,可以防止跨多张CD的安装程序出现“文件系统繁忙”错误。

–nox11:禁用X11中新终端的自动生成;
–nowait:当从新的X11终端执行时,在脚本执行结束时禁用用户提示;

–nomd5和–nocrc:禁止为存档创建MD5/CRC校验和。如果不需要完整性检查,将加快提取过程;
–sha256:为存档添加sha256校验和,这是对MD5/CRC校验和的补充,除非也使用–nomd5;

***–lsm file ***:向makeself提供一个Linux软件映射(lsm)文件,该文件将嵌入生成的打包文件中,LSM文件易于解析的方式描述软件包,随后可以使用存档的–LSM参数来检索LSM条目;
–tar format-opt:指定tar存档格式(默认为ustar);您可以使用tar命令所接受的任何值(如posix、v7等);
–tar extra opt:将更多选项附加到tar命令行,例如,为了使用GNU tar将.git目录从打包的归档目录中排除,可以使用makeself.sh --tar extra“–exclude=.git”。。。
–target dir:指定提取路径;

–keep-umask:将umask设置为shell默认值,而不是在执行自解压档案时重写;
–packaging-date date:使用提供的字符串作为打包日期,而不是当前日期;
–license file:附加一个许可证文件;
–nooverwrite:如果指定的目标目录已经存在,则不要提取存档;
–help-header file:将头添加到归档文件的–help输出中。

参考文献
https://github.com/megastep/makeself#makeself—make-self-extractable-archives-on-unix

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值