|
由于要安裝nvidia 的驅(qū)動(dòng),所以才會(huì)遇到這個(gè)問(wèn)題。
這里順便找到.run文件的制作。
run程序安裝包實(shí)質(zhì)上是一個(gè)安裝腳本加要安裝的程序,如下圖所示:
|-----------------|
| |
| 安裝腳本 |
| |
|-----------------|
| |
| 程序 |
| |
|-----------------|
圖: run安裝包的結(jié)構(gòu)
這樣整個(gè)run安裝包結(jié)構(gòu)就一目了然了,實(shí)際上因?yàn)閷?shí)際需要結(jié)構(gòu)多少有點(diǎn)變動(dòng)但這個(gè)無(wú)關(guān)緊要,只需要明白原理就行了。
制作run安裝包以下舉個(gè)實(shí)際的例子:
為了簡(jiǎn)單起見(jiàn),要安裝的程序就是helloworld程序,安裝它的過(guò)程就是把它拷貝到/bin目錄下。
$ ls
install.sh helloworld
$ cat install.sh
#!/bin/bash
cp helloworld /bin
$
現(xiàn)在有一個(gè)安裝腳本了,名為install.sh,有一個(gè)要安裝的程序helloworld.因?yàn)橐惭b的程序一般都是用.tar.bz2來(lái)做的。我們這兒也做一下:
$ tar jcvf helloworld.tar.bz2 helloworld
現(xiàn)在修改一個(gè)安裝腳本install.sh
改為:
#!/bin/bash
lines=7 #這個(gè)值是指這個(gè)腳本的行數(shù)加1,這個(gè)腳本共有6行
tail +$lines $0 >/tmp/helloworld.tar.gz # $0表示腳本本身,這個(gè)命令用來(lái)把從$lines開(kāi)始的內(nèi)容寫(xiě)入一個(gè)/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文件,它的結(jié)構(gòu)如下:
|------------------| 第1行
| |
| install.sh |
| | 第6行
|------------------|
| | 第7行
|helloworld.tar.bz2|
| |
|------------------| 結(jié)尾
圖: myinstall.run安裝包的結(jié)構(gòu)
運(yùn)行myinstall.run時(shí),運(yùn)行到第6行的exit 0腳本就退出了,所以不會(huì)去運(yùn)行第7行以下的二進(jìn)制數(shù)據(jù)(即 helloworld.tar.bz2文件),而我們用了tail巧妙地把第7行以下的數(shù)據(jù)重新生成了一個(gè)helloworld.tar.gz文件。再執(zhí)行安裝。
run安裝包制作較小的程序包是很好的選擇,但是它也有缺點(diǎn),做邏輯比較復(fù)雜的安裝包,寫(xiě)的安裝腳本將會(huì)很麻煩。因此此時(shí)還是用其他的安裝包更好。
安裝方法: 以 ***.run 為例:運(yùn)行 sh ***.run
|
|