其實不久前有寫一篇講怎麼build deb package,
不過那篇的code source並不是來自於自己的source,
那麼假設你今天自己有一個web,你想把這web打包成一個deb供人安裝,那該怎麼做呢?
這篇主要就是講怎麼create一個自己的deb package.
1. Install necessary package
等等會用來gen template files.
2. Prepare environment
這裡先create一個folder,名稱為www,
www底下也要create一些web所需的資料夾和檔案,像是images, css ,js...etc
www的目錄結構大概就長這樣,
www
├── css
│ └── main.css
├── images
│ └── a.png
└── static
└── index.html
我們要把folder底下的東西都打包進去debian package,
並且讓其他人在安裝這個debian package時,可以安裝到我們所指定的path底下!
3. Generate template files
在這步要用前面安裝的dh_make來generate出debian package所需要的template files,
在generate之前,先設定一個環境變數,
這環境變數是用來記錄這個debian package的作者是誰
--packagename分為兩個部分,
前面的部分ken-sdk是package name,
package name只能用-來分隔,不能用底線!
而後面的_0.1是version number,
--natvie,意思是這個debian不是從一個既有的tarball gen出來的!
generate完成以後,你會發現在www folder底下多了一個debian folder,
這debian folder裡面是放一些build debian package所需要的template files,
而既然是template files,那麼就有一些不需要的file或者需要被修改的file,
首先先刪除不需要的file吧!
接著就來修改這個template,
首先要先改control這file,
你比較需要改的大概就只有Depends (dependency),和Description了!
改完儲存以後即可!
接下來要改copyright,
剩下其他的file,像是README, docs就看你要不要改了,
記得rules千萬別改!rules是build package的起頭!
4. Build debian package
在完成template的修改,準備開始build之前,
我們還有最後一個步驟,就是要指定哪些files or folder是你要放進去這個debian package的!
而就是靠一個檔案去記錄!
這個檔案名稱很重要,要跟你前面的package name一模一樣,
我們前面的package name是ken-sdk,
所以這個file要叫做ken-sdk.install,
裡面的格式就像下面一樣,
第二格參數:將來這deb package被安裝時,這些files要被安裝到哪裡
儲存以後,就可以開始build,指令如下:
-b:單純只是binary,不要去build source
5. Verify
完成以後,
debian package會放在folder的上層目錄,
應該會有一個ken-sdk_0.1_amd64.deb,
有一個快速verify你要的files有沒有被包進去,
當然你也可以安裝起來看看,
接著就去看剛剛指定的folder(/opt/www),是否有我們原本的檔案!
6. Advance: Pre-Install or Post-Install
如果你想要在這package完成安裝或者開始安裝之前,做一些前置作業,
那麼就可以靠preinst和postinst這兩個檔案,
preinst就是安裝之前,
postinst就是安裝完成之後,
相反地,如果你想要在這package被remove時,也做一些操作,
那麼就要有prerm和postrm這兩個檔案!
7. Advance: Update pacakge
如果你這package想要更新,
變成0.2版本,你可以直接編輯change log,但有點麻煩!
可以透過指令快速達成!
之後一樣直接dpkg-buildpackage -rfakeroot -b就可以了!
不過那篇的code source並不是來自於自己的source,
那麼假設你今天自己有一個web,你想把這web打包成一個deb供人安裝,那該怎麼做呢?
這篇主要就是講怎麼create一個自己的deb package.
1. Install necessary package
sudo apt-get install dh-makedh-make是用來準備debian package所需要的files,
等等會用來gen template files.
2. Prepare environment
這裡先create一個folder,名稱為www,
www底下也要create一些web所需的資料夾和檔案,像是images, css ,js...etc
www的目錄結構大概就長這樣,
www
├── css
│ └── main.css
├── images
│ └── a.png
└── static
└── index.html
我們要把folder底下的東西都打包進去debian package,
並且讓其他人在安裝這個debian package時,可以安裝到我們所指定的path底下!
3. Generate template files
在這步要用前面安裝的dh_make來generate出debian package所需要的template files,
在generate之前,先設定一個環境變數,
這環境變數是用來記錄這個debian package的作者是誰
export DEBFULLNAME="Ken Yang"
dh_make --single --packagename ken-sdk_0.1 --native -e xxxx@gmail.com--packagename要注意一下,
--packagename分為兩個部分,
前面的部分ken-sdk是package name,
package name只能用-來分隔,不能用底線!
而後面的_0.1是version number,
--natvie,意思是這個debian不是從一個既有的tarball gen出來的!
generate完成以後,你會發現在www folder底下多了一個debian folder,
這debian folder裡面是放一些build debian package所需要的template files,
而既然是template files,那麼就有一些不需要的file或者需要被修改的file,
首先先刪除不需要的file吧!
sudo rm debian/*.ex debian/*.EX
接著就來修改這個template,
首先要先改control這file,
vim debian/control打開以後,會看到很多information,
你比較需要改的大概就只有Depends (dependency),和Description了!
改完儲存以後即可!
接下來要改copyright,
vim debian/copyright打開以後,大概就只有年份和作者名稱要改而已!
剩下其他的file,像是README, docs就看你要不要改了,
記得rules千萬別改!rules是build package的起頭!
4. Build debian package
在完成template的修改,準備開始build之前,
我們還有最後一個步驟,就是要指定哪些files or folder是你要放進去這個debian package的!
而就是靠一個檔案去記錄!
這個檔案名稱很重要,要跟你前面的package name一模一樣,
我們前面的package name是ken-sdk,
所以這個file要叫做ken-sdk.install,
裡面的格式就像下面一樣,
images/* /opt/www/image第一格參數:現在www folder底下路徑的檔案
css/* /opt/www/css
js/* /opt/www/js
第二格參數:將來這deb package被安裝時,這些files要被安裝到哪裡
儲存以後,就可以開始build,指令如下:
dpkg-buildpackage -rfakeroot -b-rfakeroot:使用root的權限
-b:單純只是binary,不要去build source
5. Verify
完成以後,
debian package會放在folder的上層目錄,
應該會有一個ken-sdk_0.1_amd64.deb,
有一個快速verify你要的files有沒有被包進去,
lesspipe ken-sdk_0.1_amd64.deb
當然你也可以安裝起來看看,
sudo dpkg --install ../ken-sdk_0.1_amd64.deb
接著就去看剛剛指定的folder(/opt/www),是否有我們原本的檔案!
6. Advance: Pre-Install or Post-Install
如果你想要在這package完成安裝或者開始安裝之前,做一些前置作業,
那麼就可以靠preinst和postinst這兩個檔案,
preinst就是安裝之前,
postinst就是安裝完成之後,
相反地,如果你想要在這package被remove時,也做一些操作,
那麼就要有prerm和postrm這兩個檔案!
7. Advance: Update pacakge
如果你這package想要更新,
變成0.2版本,你可以直接編輯change log,但有點麻煩!
可以透過指令快速達成!
dch -v 0.2 "Update package."
之後一樣直接dpkg-buildpackage -rfakeroot -b就可以了!