1. 程式人生 > >製作Linux下程式一鍵安裝包

製作Linux下程式一鍵安裝包

簡介

  製作簡單的安裝包的時候可以簡單的用cat命令連線兩個檔案,然後頭部是指令碼檔案,執行的時候把下面的檔案分解出來就行了。一般這個後部分的檔案是個壓縮包,那樣,就能夠打包很多檔案了,在指令碼中解壓出來即可。這就是Linux那些bin啊run啊等安裝指令碼的簡單製作了。

製作run程式安裝包

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

run1

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

例子:

為了簡單起見,要安裝的程式就是helloworld程式,安裝它的過程就是把它拷貝到/bin目錄下。

現在有一個安裝指令碼了,名為install.sh,有一個要安裝的程式helloworld.因為要安裝的程式一般都是用.tar.bz2來做的。我們這兒也做一下:

$ls
install.sh helloworld
$cat install.sh
#!/bin/bash
cp helloworld /bin
$
$ 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檔案,它的結構如下: 
run2 
  執行myinstall.run時,執行到第6行的exit 0指令碼就退出了,所以不會去執行第7行以下的二進位制資料(即helloworld.tar.bz2檔案),而我們用了tail巧妙地把第7行以下的資料重 新生成了一個helloworld.tar.gz檔案。再執行安裝。 
  run安裝包製作較小的程式包是很好的選擇,但是它也有缺點,做邏輯比較複雜的安裝包,寫的安裝指令碼將會很麻煩。因此此時還是用其他的安裝包更好。

製作bin程式安裝包

  製做方法是使用cat 命令將執行指令碼和打包檔案同事放到一個.bin的檔案裡,這樣安裝的時候只要使用一個包,直接執行該包即可安裝完畢,簡單方便。

例子:

製作安裝apache、mysql的安裝指令碼包

  • 將原始碼先打包
#tar zcvf packages.tar.gz httpd-2.0.63.tar.bz2 mysql-5.0.33.tar.gz
  • 編寫安裝指令碼
# cat install.sh
#!/bin/bash
dir_tmp=/root/installapache
mkdir $dir_tmp
sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null
cd $dir_tmp
tar zxf packages.tar.gz
tar jxf httpd-2.0.63.tar.bz2
cd  httpd-2.0.63
./configure –prefix=/tmp/apache2
make
make install
cd $dir_tmp
tar zxf mysql-5.0.33.tar.gz
cd mysql-5.0.33
./configure –with-charset=gbk –with-extra-charsets=binary,latin1,gb2312 –localstatedir=/home/db –with-mysqld-ldflags=-all-static -enable-assembler –with-innodb –prefix=/tmp/mysql5
make
make install
exit 0
  • 合成安裝檔案
#cat install.sh packages.tar.gz >install.bin

這樣就生成install.bin的安裝檔案,改檔案是由shell指令碼和二進位制合成的。前半部分是指令碼後半部分是二進位制檔案。 
最主要的是下面這句,是將二進位制檔案從.bin檔案裡分離出來:

sed -n -e ‘1,/^exit 0$/!p’ $0 > “${dir_tmp}/packages.tar.gz” 2>/dev/null

安裝的時候直接執行:

sh install.bin

按照這個方法可以將我們平時常使用的安裝指令碼化,然後打包。以後使用就方便了。

小結

  上面兩個例子,其實不管是bin也好run也好,其實Linux下一切皆檔案,而且是不管什麼檔案,都是一樣的看法。所以這些字尾沒有什麼意義。上面兩個 不同的地方是分離,一個是用了tail命令,一個是用了sed來實現。總之,這只是一種思路,不管用什麼辦法,只要能合起來然後又分開就行。 
  另外,有人寫出了一個指令碼來實現這樣的功能,感興趣的可以自己看一下:http://megastep.org/makeself/

相關推薦

製作Linux程式安裝

簡介   製作簡單的安裝包的時候可以簡單的用cat命令連線兩個檔案,然後頭部是指令碼檔案,執行的時候把下面的檔案分解出來就行了。一般這個後部分的檔案是個壓縮包,那樣,就能夠打包很多檔案了,在指令碼中解壓出來即可。這就是Linux那些bin啊run啊等安裝指令碼的簡單製作了。

phpStudy for Linux (lnmp+lamp安裝)

study iis deb php5.3 進程 ubunt nginx 十分 ubuntu phpStudy Linux版&Win版同步上線 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 phpStudy for Linux 支持

linux mysql安裝指令碼

修改名字為 mysql.sh #!/bin/bash GROUP_NAME=mysql USER_NAME=mysql MYSQLDB_HOME=/home/mysql/mysql MYSQLDB_DATA_HOME=/home/mys

LNMP-LinuxNginx+MySQL+PHP+phpMyAdmin+eAcelerator安裝(2009年11月17日更新)

引用www.dachunblog.com LNMP是一個基於CentOS編寫的Nginx、PHP、MySQL、phpMyAdmin、eAcelerator一鍵安裝包。可以在VPS、獨立主機上輕鬆的安裝LNMP生產環境。 LNMP Ver0.3軟體版本說明(2009年11月

CentOS7安裝lnmp安裝

end php版本 高版本 如果 並且 安裝 進行 為什麽 inf 上一篇說到CentOS7無法使用yum安裝,把這個問題解決後,就開始安裝環境lnmp一鍵安裝包,建議新手還是選擇lnmp一鍵安裝包吧,至於為什麽?大家都懂,省心省事省時間沒毛病! 首先輸入命令檢查一下是否已

lnmp1.5安裝 訪問thinkphp專案public目錄的index.php 提示500伺服器錯誤問題

2018年6月17號 下午 安裝了 lnmp1.5一鍵安裝包 php版本是 7.1.18 mysql是5.5.60 swoole是4.0.0 redis是4.0版本 phpmyadmin 是4.4.15.6   tp5.1.16 執行正常    

禪道linux安裝

windows用一鍵安裝包安裝:http://www.zentao.net/book/zentaopmshelp/76.mhtml 禪道一鍵安裝包裡安裝蟬知和然之:http://www.zentao.net/book/zentaopmshelp/261.mhtml linux一

nginx thinkphp 502 bad Gateway + "LNMP安裝的Nginx 502 Bad Gateway錯誤可能原因及解決方法"

參考: http://lnmp.org/faq/lnmp-Nginx-502-Bad-Gateway.html 如果是非上述原因: 請找到nginx.conf中 找到這一行 include enable-php.conf;  然後開啟 include enable-ph

最簡單!阿里雲伺服器採用 LNMP安裝 配置 Linux+Nginx+Mysql+PHP

LNMP一鍵安裝包是一個用Linux Shell編寫的可以為CentOS/RadHat/Fedora、Debian/Ubuntu/Raspbian/Deepin VPS或獨立主機安裝LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/

LNMP安裝 V1.1 公布

腳本安裝 進行 相關 一個 padding log 命令 data timeout LNMP一鍵安裝包 是一個用Linux Shell編寫的能夠為CentOS/RadHat、Debian/Ubuntu VPS(VDS)或獨立主機安裝LNMP(Nginx、MySQ

LANMP安裝 版本服務任你選 可安裝單一服務

entos nginx 打開 span 源文件 play chmod 防火墻規則 服務器 介紹與使用 更多內容請到 烏龜運維 wuguiyunwei.com 請保證在系統原有yum源文件存在的情況下運行此腳本 以下以centos7.3為例: 下面以安裝LN

使用Gitlab安裝後的日常備份恢復與遷移

span 註意 sudo 只需要 start 其他 ack top create Gitlab 創建備份 使用Gitlab一鍵安裝包安裝Gitlab非常簡單, 同樣的備份恢復與遷移也非常簡單. 使用一條命令即可創建完整的Gitlab備份: gitlab-rake gitla

LNMP安裝安裝擴展模塊

image-filter例如安裝image-filter擴展模塊進入lnmp目錄打開lnmp.conf配置文件修改Nginx_Modules_Options=‘ --prefix=/usr/local/nginx --with-http_image_filter_module‘‘‘號內的內容為應用目錄+擴展組

銳速 ServerSpeeder 無限帶寬破解版安裝

銳速serverspeeder無限帶寬破解版一鍵安裝包前言銳速serverspeeder是一款TCP網絡加速軟件,能在Linux系統和Windows系統的服務器中安裝,安裝後能啟到提高網絡連接穩定性、帶寬利用率、低訪問失敗率等作用,從而提高服務器網絡訪問速度。銳速並非實際增大服務器帶寬,只是提高網絡的穩定性和

lnmp安裝 虛擬主機問題

實現 一鍵安裝 ams all 默認 地址 mage access 配置 lnmp一鍵安裝包淌過的坑 --手動虛擬主機配置 安裝一鍵包的時候教程 官網也有虛擬主機的教程 一下示例: 後來自己手動去做 就遇到了一個大家都遇到的問題 及時安裝讓nginx支持解析

lnmp安裝 配置多站點

param div local clu cgi entos lnmp一鍵安裝 cat www. 在/usr/local/nginx/conf/vhost下配置多站點的文件,一個站點對應一個文件,配置如下信息: vim ./vhost/test.conf server {

Centos 7安裝禪道搭建

-h star aop apache 使用命令 start 改變 ble 默認 禪道官網:http://www.zentao.net/ linux一鍵安裝包內置了apache, php, mysql這些應用程序,只需要下載解壓縮即可運行禪道。 Linux 64位一鍵安裝包(

LNMP安裝安裝的mysql遠程連接不上的問題

number 成功 正常 key keyword 創建 tab clas grant 正常的做法:   以root用戶登錄mysql:     grant all privileges on *.* to 創建的用戶名@"%" identified by "密碼";   

windows安裝的升級禪道

操作方法 pms xampp ref cor 進行 解壓 htaccess 路徑 如果你現在使用的是windows xampp 集成運行環境,那麽請按照下面的步驟進行: 一、升級步驟: 下載新的源代碼包(zip格式)。(註意,不是.exe的集成運行環境,如果你下載這個,會

phpStudy:lnmp+lamp安裝

net bin gin 用戶管理 mysql 服務 chm study -a 基於Linux 雲主機,在centos-6.5,debian-7.4.,ubuntu-13.10測試成功。 部署 下載版:http://lamp.phpstudy.net/phpstudy.bin