製作linux下的 run安裝包

2021-08-28 14:33:19 字數 2090 閱讀 8495

之前往linux上安裝乙個軟體,都是以壓縮包或者壓縮包+shell的方法,這每次安裝,都是先scp到某個目錄, 解壓,安裝......稍微厲害的,會寫個shell指令碼.但是還是達不到真正的快速方便安裝.現在我們就介紹一種.run的軟體包

run 程式安裝包實質上是乙個安裝指令碼加要安裝的程式,如下所示:

|—————–——|

|                        |

|     安裝指令碼       |

|                        |

|—————–——|

|                        |

|      程式            |

|                        |

|—————–——|

這樣整個 run 安裝包結構就一目了然了,實際上因為實際需要結構多少有點變動但這個無關緊要,只需要明白原理就行了。

它的結構是 shell +壓縮包(當然也可以是其它檔案)的格式,製作的時候用 cat 命令命令連線兩個檔案,頭部是 shell 指令碼檔案(shell 一定要在前面)和壓縮包同時重定向到另乙個檔案(linux 中統一給字尾 run、bin 或 sh 給它,就是本文中說的 run 檔案),一般這個後部分的檔案是個壓縮 包,那樣就能夠打包很多檔案了。執行的時候 shell 就可以用 linux 裡面的 tail 或 head 等命令很容易地把壓縮包從 run 檔案切分出來,後面的操作就跟 shell+壓縮包 的操作類似了,但這其中使用者只需執行它就行,剩下的都是 shell 自己的操作了。這就是 linux 那些 bin 、run 等安裝指令碼的簡單製作了,對使用者來說自動省事了很多。

與普通指令碼相比,此類指令碼多了一步從合併的檔案中,提取出程式檔案的過程。

安裝檔案的優點:

(1)只有乙個包檔案;

(2)可以直接執行在 linux上,因為它是 sh(它的前半部分是sh);

(3)在 sh 中可以包含需要使用者接收的協議資訊,而且提示使用者接收,如果使用者不接收,安裝退出。

假如我們有乙個test.tar.gz的壓縮包, 這就是我們的安裝包, 其次我們有乙個test.shell的執行指令碼

test.shell的內容:

1 #!/bin/bash

2 lines=8 #這個值是指這個指令碼的行數加 1,這個指令碼共有 7 行

3 tail -n +$lines $0 >/tmp/test.tar.gz # $0 表示指令碼本身,這個命令用來把從 $lines 開始的內容寫入乙個 /tmp 目錄的 scan.tar.gz 檔案裡。

4 tar zxvf /tmp/test.tar.gz

5 cp test /usr/bin

6 rm test -f

7 exit 0

連線指令碼和壓縮包

cat test.sh test.tar.gz > test.run
這樣就得到了 test.run 檔案,它的結構如下:

|—————–———| 第1行

|                            |

|         test.sh         |

|                              | 第7行

|—————–———|

|       test.tar.gz       | 第8行

|                               |

|—————–———| 結尾

在執行 test.run 時,執行到第 7 行的 exit 0 ,指令碼就會自動退出了,不會去執行第 8 行以下的二進位制資料(即 test.tar.gz 檔案),這樣 shell 就不會因為識別不了二進位制資料而出錯了。這裡我們巧妙地使用了 tail 命令,把第 7 行以下的資料重新生成了乙個 test.tar.gz檔案,然後再執行安裝。執行超級簡單,使用 sh test.run 或賦予可執行許可權然後直接執行 ./test.run 就可以安裝了。

run 安裝包製作較小的程式包是很好的選擇,但是它也有缺點,做邏輯比較複雜的安裝包,寫的安裝指令碼將會很麻煩,因此此時還是用其他的安裝包更好。

linux下run安裝包的製作

run程式安裝包實質上是乙個安裝指令碼加要安裝的程式,如下圖所示 安裝指令碼 程式 圖 run安裝包的結構 這樣整個run安裝包結構就一目了然了,實際上因為實際需要結構多少有點變動但這個無關緊要,只需要明白原理就行了。製作run安裝包以下舉個實際的例子 為了簡單起見,要安裝的程式就是hellowor...

linux下製作bin安裝包

bin bash 是否安裝了jdk export jdk if test z then echo 找不到jdk的環境變數,已退出安裝!exit 1 fi echo 請輸入tomcat的完整路經 read tomcat path echo 去掉最後乙個斜扛 len echo 名字 echo 長度 if...

linux下的 run包的製作

首先開始我的嘮叨幾句,網上有很多.run包的製作,那為什麼我還要寫呢?原因很簡單,他們的執行不了啊,各種錯誤,今天我給大家講乙個能執行的,一步一步手把手教你們。程式設計前需要有的東西 install.sh檔案 hello.c檔案 這些檔案我都放在hello資料夾,沒要求,大家隨意 目標 hello ...