1. 程式人生 > >用Linux makeself製作自解壓的可執行程式

用Linux makeself製作自解壓的可執行程式

 前言: 日常工作中我們需要把Linux作業系統下一堆檔案或者指令碼製作成一個可執行程式,釋出後別人只要拿到這個程式就會把它整體執行起來。比起一般的把檔案(夾)壓縮打包,然後把壓縮包發給別人,再告訴別人解壓後執行裡面的哪個指令碼或程式的做法,顯然如果做成自解壓的可執行程式要簡便得多。

 makeself本身是一個可從給定目錄產生自解壓tar包的shell指令碼。從以上述描述可以看出,它包含了壓縮功能。它產出的檔案看起來像個shell指令碼(通常以.sh或者.run作為字尾名),執行後會解壓並執行校驗(CRC或 MD5checksum)和裡面的指令碼.

1.下載或安裝makeself-2.2.0

1.2 如果是Ubuntu,可以用命令apt-get install makeself 進行線上安裝.

 如果是基於RPM的Linux發行版如Redhat,SUSE,可以用命令yum install makeself 進行線上安裝.

2. 使用makeself

假設我們有一個目錄叫myfolder,裡面有2個檔案install.sh和instalDetail.sh ,其中install.sh呼叫installDetail.sh

  ---myfolder

                  ---install.sh (它會呼叫installDetail.sh)

                  ---installDetail.sh

install.sh內容如下:

#!/bin/bash
echo "installing my software" 
read -p "Press the ENTER key to continue." enterContinue

echo "************************************************************************"
echo " Installing Package..."
echo "************************************************************************"
. ./installDetail.sh

installDetail.sh內容如下:
#!/bin/bash
DIST_NAME=`lsb_release -ds 2>/dev/null || cat /etc/*release 2>/dev/null | head -n1`
echo "OS="$DIST_NAME
echo "here is installDetail"

然後回到包含myfolder的目錄執行 makeself  myfolder  test.sh   "hello..."   ./install.sh (如果使用1.1方法安裝了makeself, 執行 ${makeself安裝目錄}/makeself.sh   myfolder  test.sh   "hello"   ./install.sh)

makeself命令的使用方法是 makeself  要壓縮的目錄  要做成的檔名  描述資訊   第一個要執行的指令碼

本例中install.sh是入口,所以第四個引數是./install.sh

在Ubuntu 14執行test.sh會看到如下資訊:

Verifying archive integrity... All good.
Uncompressing hello...  100%  
installing my software
Press the ENTER key to continue.
************************************************************************
 Installing Package...
************************************************************************
OS=Ubuntu 14.04.4 LTS
here is installDetail
製作自解壓程式時在命令列提供的描述資訊出現在了Uncompressing xxx 100%中。

但是在執行目錄下並沒有myfolder出現。如果想要在解壓並執行後把原來的folder展開並保留,可以在makeself命令加上--notemp引數 :

makeself --notemp 要壓縮的目錄  要做成的檔名  描述資訊   第一個要執行的指令碼