淺談Debian套件打包
-
Upload
wen-liao -
Category
Technology
-
view
1.605 -
download
1
description
Transcript of 淺談Debian套件打包
淺談Debian套件打包
Wen Liao
Disclaimer
投影片資料為作者整理資料及個人意見,沒有經過嚴謹確認,請讀者自行斟酌,更歡迎除錯指教
目標
● 了解○ Debian套件的結構○ 如何打包Debian套件
● 不包含○ 套件版本名稱規則規則○ sign一個套件○ 上傳打包好的debian套件○ 標準套件的貢獻流程 (RFP/ITP...等)○ APT相關遠端目錄結構說明
說故事時間
很久很久以前
很多Linux軟體是這樣安裝的
./configure
make
make install
如果發生了
hey_hey.h: No such file or directory
你要找出hey_hey.h是那一個套件,拉原始碼下來安裝
喔
那找到的套件又來一樣的狀況怎麼辦?
找到的套件需要的套件又來一樣的狀況怎麼辦?
找到的套件需要的套件需要的套件又來一樣的狀況怎麼辦?
加碼
找到了套件,編譯完成才發現版本不同,砍掉重練
我只是想要用軟體為什麼要變成組裝工程式設計師?
┴─┴︵╰(‵□′╰
現在
apt-get install 套件收工
可喜可賀,可喜可樂
測試環境
Outline
● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A
關於Debian - 大事記 (引用自Wikipidia)
● 1993 - Ian Murdock 公佈 Debian (Debra + Ian)
● 1996 - 1997 1.x 版● 1998 - 2000 2.x 版 (APT)● 2002 ~ 3.x ~ (GUI安裝、多平台、Free
firmware)
Debian特性 (引用自Wikipidia)
● Linux distribution主流之一○ 衍生: Ubuntu, Mint
● 自由軟體的擁護者● 支援Linux和kFreeBSD kernel● 套件管理
Front end
apt-tools: 透過repository更新及套件相依問題
dpkg: 處理系統上已安裝套件和獨立的deb檔案
Release分類 (引用自Wikipidia)
● Stable (代號會更動)○ 穩定版,一般來說當Testing版套件穩定後就會freeze,
之後只針對free的套件版本更新安全和操作的錯誤修
正更新。
● Testing (代號會更動)○ 下一版Stable的release○ 套件版本號碼介於Stable和Unstable之間○ 套件在進入Frozen前可進版
● Unstable (代號固定: Sid)○ 不提供安裝方式,必須從Testing更新
開發流程 (引用自Wikipidia)
套件分類 (引用自Wikipidia)
● main○ 符合DFSG定義的自由軟體,包含在官方安裝套件
● non-free○ 不符合DFSG定義的套件,可能是
■ proprietary 軟體
■ 含有必須伴隨軟體存在不可變動的區塊如,不公開
binary等。
● contrib○ 雖然套件大致本身符合DFSG定義的自由軟體,但是
仍然有少數的瑕疵如相依於non-free套件等
● 請比對/etc/apt/source.list ;)
Outline
● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A
從下載的地方複製grep套件
deb檔使用ar 打包
● [窄宅看的] ar 可以參考static library
套件內容
deb格式版本
data.tar.xz 存放最後安裝到 / 的檔案
control.tar.gz包含md5sums和control檔
control檔 (續)
比對apt-cache取得的套件資訊
Outline
● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A
自行打包套件方式
● 取得source,決定版本號碼● 依特定檔案格式取名稱以及解壓縮● dh_make產生debian目錄● 修改debian目錄內的資訊● 使用工具產生及驗證deb檔案
偽. demo
_原始套件版號.orig
版號前分隔字元不同!
這是autotools包裝的tarball
● tarball先改名稱為 -> 套件名稱_版號.orig.tar.gz● 解壓縮tarball,確認解壓縮後的目錄名稱是
○ 套件名稱-版號
切換目錄
使用dh_make產生debian目錄及template
debian 目錄
偷懶不解釋
使用dpkg-buildpackage 產生deb檔,並且不要sign source以及.changes
* 產生deb檔還有其他方式如debuild和pbuilder,不提
生出來的deb檔
剛才偷懶都沒改debian下面的資料,檢查的下場...慘不忍睹
Outline
● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A
延伸討論
● debian目錄內的檔案和格式相關規範
● apt-get source 套件名稱○ 取得repository打包的source檔和debian設定
● 如何在source套件中管理的patch?○ hint: qulit
延伸討論
● 更嚴謹的檢查和打包方式○ pbuilder○ debuild
● apt-get install lxde裝了好幾個套件怎麼辦到的?
● lib-xxx 和lib-xxx-dev以及lib-xxx-dbg是同一個套件,那麼這要怎麼寫?
結論
● debian的套件由ar 組成,裏面包含○ 最後安裝到系統的檔案○ 套件相關metadata○ 套件格式
● 自行打包套件方式○ 取得source,決定版本號碼○ 依特定檔案格式取名稱以及解壓縮○ dh_make產生debian目錄○ 修改debian目錄內的資訊○ 使用工具產生及驗證deb檔案
結論
● (認真) 這是一個避重就輕的分享○ 類比:寫個Hello World很簡單,寫個不會segmentation
fault的link list就要點功力和技術了。
● 真正有趣的的是延伸討論的主體
Outline
● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A
參考資料
● [Meta-Package] Debian 打包系列(正體中文) ● Debian Packaging Tutorial (PDF, 大推)● Wikipedia: deb (file format)● Ubuntu Wiki: DebPackaging (正體中文)● Debian new maintainer’s guide● Debian Package ($4大大文件,正體中文)
Outline
● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A