製作Linux下程式一鍵安裝包
簡介
製作簡單的安裝包的時候可以簡單的用cat命令連線兩個檔案,然後頭部是指令碼檔案,執行的時候把下面的檔案分解出來就行了。一般這個後部分的檔案是個壓縮包,那樣,就能夠打包很多檔案了,在指令碼中解壓出來即可。這就是Linux那些bin啊run啊等安裝指令碼的簡單製作了。
製作run程式安裝包
run程式安裝包實質上是一個安裝指令碼加要安裝的程式,如下圖所示:
這樣整個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檔案,它的結構如下:
執行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-Linux下Nginx+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