run程序安裝包實質上是一個安裝腳本加要安裝的程序,如下圖所示:
|-----------------|
| |
| 安裝腳本 |
| |
|-----------------|
| |
| 程序 |
| |
|-----------------|
圖: run安裝包的結構
這樣整個run安裝包結構就一目了然了,實際上因為實際需要結構多少有點變動但這個無關緊要,只需要明白原理就行了。
制作run安裝包以下舉個實際的例子:
為了簡單起見,要安裝的程序就是helloworld程序,安裝它的過程就是把它拷貝到/bin目錄下。
$ ls install.sh helloworld $ cat install.sh #!/bin/bash cp helloworld /bin $
現在有一個安裝腳本了,名為install.sh,有一個要安裝的程序helloworld.因為要安裝的程序一般都是用.tar.bz2來做的。我們這兒也做一下:
$ tar jcvf helloworld.tar.bz2 helloworld
現在修改一個安裝腳本install.sh
改為:
#!/bin/bash lines=7 #這個值是指這個腳本的行數加1,這個腳本共有6行 tail +$lines $0 >/tmp/helloworld.tar.gz # $0表示腳本本身,這個命令用來把從$lines開始的內容寫入一個/tmp目錄的helloworld.tar.gz文件里。 tar jxvf /tmp/hellowrold.tar.gz cp helloworld /bin exit 0
然后使用cat命令連接安裝腳本install.sh和helloworld.tar.bz2。
$ cat install.sh helloworld.tar.bz2 > myinstall.run
這樣就得到了myinstall.run文件,它的結構如下:
|------------------| 第1行
| |
| install.sh |
| | 第6行
|------------------|
| | 第7行
|helloworld.tar.bz2|
| |
|------------------| 結尾
圖: myinstall.run安裝包的結構
運行myinstall.run時,運行到第6行的exit 0腳本就退出了,所以不會去運行第7行以下的二進制數據(即 helloworld.tar.bz2文件),而我們用了tail巧妙地把第7行以下的數據重新生成了一個helloworld.tar.gz文件。再執行安裝。
run安裝包制作較小的程序包是很好的選擇,但是它也有缺點,做邏輯比較復雜的安裝包,寫的安裝腳本將會很麻煩。因此此時還是用其他的安裝包更好。
安裝方法: 以 ***.run 為例:運行 sh ***.run