用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 要壓縮的目錄 要做成的檔名 描述資訊 第一個要執行的指令碼