Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 安裝使用 Makeself 製作自解壓安裝包完整教學

編輯:關於 Linux

Makeself 是一個 Shell 腳本工具,可將目錄打包成自解壓的 .run 或 .sh 檔案,執行時自動解壓至暫存目錄、執行內嵌安裝腳本、清理暫存檔,類似 Windows 的自解壓 exe。支援 gzip/bzip2/compress 壓縮、CRC/MD5 校驗、跨平台。本文記錄安裝、基本語法、參數選項、建立範例與執行時參數的完整教學。

支援平台

  • Linux(所有發行版)
  • Sun Solaris 8+
  • HP-UX 11.0/11i
  • SCO OpenUnix/OpenServer
  • IBM AIX 5.1L
  • MacOS X
  • SGI IRIX 6.5
  • FreeBSD
  • UnicOS/Cray
  • Cygwin (Windows)

安裝 Makeself

wget https://megastep.org/makeself/makeself-2.2.0.run
chmod 755 makeself-2.2.0.run
./makeself-2.2.0.run
# 自解壓建立 makeself-2.2.0 目錄
cd makeself-2.2.0
sudo cp *.sh /usr/bin
# 現在可直接使用 makeself.sh 指令

基本語法

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

# 參數說明:
# archive_dir   : 要打包的目錄
# file_name     : 輸出的自解壓檔案名(建議 .run 或 .sh 結尾)
# label         : 解壓時顯示的描述文字
# startup_script: 解壓後執行的腳本(需位於 archive_dir 內,用 ./ 開頭)
# script_args   : 傳給 startup_script 的參數

常用可選參數

參數說明
--gzip使用 gzip 壓縮(預設)
--bzip2使用 bzip2 壓縮
--compress使用 Unix compress
--nocomp不壓縮
--notemp不解壓至暫存目錄,直接在當前目錄建立子目錄
--current解壓至當前目錄(隱含 --notemp)
--follow跟隨符號連結並打包連結目標檔案
--header使用自訂 header stub (makeself-header.sh)
--version顯示版本資訊並退出

建立自解壓安裝包範例

# 假設軟體檔案在 /home/joe/mysoft,安裝腳本為 ./setup
makeself.sh /home/joe/mysoft mysoft.sh "Joe's Nice Software Package" ./setup

# 建立 Makeself 自身的自解壓包
makeself.sh --notemp makeself makeself.run "Makeself by Stephane Peter" echo "Makeself has extracted itself"

生成檔案可接受的執行參數

參數說明
--keep保留解壓目錄(不自動刪除暫存目錄)
--verbose執行嵌入腳本前提示使用者
--target DIR指定解壓目標目錄
--confirm執行嵌入腳本前要求確認
--info顯示封裝資訊(不解壓)
--lsm顯示 LSM 條目
--check校驗完整性(不解壓)
--nochown不執行 chown -R(保留原始擁有者)
--tar args對內容執行 tar 指令(後接 tar 參數)
--noexec解壓後不執行嵌入腳本

Makeself 打包過程截圖

實務建議

  • 安裝腳本 startup_script 必須放在打包目錄內,腳本中路徑用相對路徑 ./ 開頭。
  • 大型套件建議使用 --bzip2 壓縮比較好。
  • 跨平台發布時,建議在目標平台分別打包(二進位相容性)。
  • 簽名驗證:可搭配 GPG 對 .run 檔案簽名,使用者驗證後再執行。
Copyright © Windows教程網 All Rights Reserved