淺談Debian套件打包

52
淺談Debian套件打包 Wen Liao

description

淺談Debian套件打包

Transcript of 淺談Debian套件打包

Page 1: 淺談Debian套件打包

淺談Debian套件打包

Wen Liao

Page 2: 淺談Debian套件打包

Disclaimer

投影片資料為作者整理資料及個人意見,沒有經過嚴謹確認,請讀者自行斟酌,更歡迎除錯指教

Page 3: 淺談Debian套件打包

目標

● 了解○ Debian套件的結構○ 如何打包Debian套件

● 不包含○ 套件版本名稱規則規則○ sign一個套件○ 上傳打包好的debian套件○ 標準套件的貢獻流程 (RFP/ITP...等)○ APT相關遠端目錄結構說明

Page 4: 淺談Debian套件打包

說故事時間

Page 5: 淺談Debian套件打包

很久很久以前

Page 6: 淺談Debian套件打包

很多Linux軟體是這樣安裝的

Page 7: 淺談Debian套件打包

./configure

Page 8: 淺談Debian套件打包

make

Page 9: 淺談Debian套件打包

make install

Page 10: 淺談Debian套件打包

如果發生了

hey_hey.h: No such file or directory

Page 11: 淺談Debian套件打包

你要找出hey_hey.h是那一個套件,拉原始碼下來安裝

Page 12: 淺談Debian套件打包

Page 13: 淺談Debian套件打包

那找到的套件又來一樣的狀況怎麼辦?

Page 14: 淺談Debian套件打包

找到的套件需要的套件又來一樣的狀況怎麼辦?

Page 15: 淺談Debian套件打包

找到的套件需要的套件需要的套件又來一樣的狀況怎麼辦?

Page 16: 淺談Debian套件打包

加碼

Page 17: 淺談Debian套件打包

找到了套件,編譯完成才發現版本不同,砍掉重練

Page 18: 淺談Debian套件打包

我只是想要用軟體為什麼要變成組裝工程式設計師?

┴─┴︵╰(‵□′╰

Page 19: 淺談Debian套件打包

現在

Page 20: 淺談Debian套件打包

apt-get install 套件收工

Page 21: 淺談Debian套件打包

可喜可賀,可喜可樂

Page 22: 淺談Debian套件打包

測試環境

Page 23: 淺談Debian套件打包

Outline

● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A

Page 24: 淺談Debian套件打包

關於Debian - 大事記 (引用自Wikipidia)

● 1993 - Ian Murdock 公佈 Debian (Debra + Ian)

● 1996 - 1997 1.x 版● 1998 - 2000 2.x 版 (APT)● 2002 ~ 3.x ~ (GUI安裝、多平台、Free

firmware)

Page 25: 淺談Debian套件打包

Debian特性 (引用自Wikipidia)

● Linux distribution主流之一○ 衍生: Ubuntu, Mint

● 自由軟體的擁護者● 支援Linux和kFreeBSD kernel● 套件管理

Front end

apt-tools: 透過repository更新及套件相依問題

dpkg: 處理系統上已安裝套件和獨立的deb檔案

Page 26: 淺談Debian套件打包

Release分類 (引用自Wikipidia)

● Stable (代號會更動)○ 穩定版,一般來說當Testing版套件穩定後就會freeze,

之後只針對free的套件版本更新安全和操作的錯誤修

正更新。

● Testing (代號會更動)○ 下一版Stable的release○ 套件版本號碼介於Stable和Unstable之間○ 套件在進入Frozen前可進版

● Unstable (代號固定: Sid)○ 不提供安裝方式,必須從Testing更新

Page 27: 淺談Debian套件打包

開發流程 (引用自Wikipidia)

今天要談的部份

Page 28: 淺談Debian套件打包

開發流程 (引用自Wikipidia)

Page 29: 淺談Debian套件打包

套件分類 (引用自Wikipidia)

● main○ 符合DFSG定義的自由軟體,包含在官方安裝套件

● non-free○ 不符合DFSG定義的套件,可能是

■ proprietary 軟體

■ 含有必須伴隨軟體存在不可變動的區塊如,不公開

binary等。

● contrib○ 雖然套件大致本身符合DFSG定義的自由軟體,但是

仍然有少數的瑕疵如相依於non-free套件等

● 請比對/etc/apt/source.list ;)

Page 30: 淺談Debian套件打包

Outline

● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A

Page 31: 淺談Debian套件打包

從下載的地方複製grep套件

deb檔使用ar 打包

● [窄宅看的] ar 可以參考static library

套件內容

deb格式版本

Page 32: 淺談Debian套件打包

data.tar.xz 存放最後安裝到 / 的檔案

Page 33: 淺談Debian套件打包

control.tar.gz包含md5sums和control檔

Page 34: 淺談Debian套件打包

control檔 (續)

Page 35: 淺談Debian套件打包

比對apt-cache取得的套件資訊

Page 36: 淺談Debian套件打包

Outline

● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A

Page 37: 淺談Debian套件打包

自行打包套件方式

● 取得source,決定版本號碼● 依特定檔案格式取名稱以及解壓縮● dh_make產生debian目錄● 修改debian目錄內的資訊● 使用工具產生及驗證deb檔案

Page 38: 淺談Debian套件打包

偽. demo

Page 39: 淺談Debian套件打包

_原始套件版號.orig

版號前分隔字元不同!

這是autotools包裝的tarball

● tarball先改名稱為 -> 套件名稱_版號.orig.tar.gz● 解壓縮tarball,確認解壓縮後的目錄名稱是

○ 套件名稱-版號

Page 40: 淺談Debian套件打包

切換目錄

使用dh_make產生debian目錄及template

debian 目錄

偷懶不解釋

Page 41: 淺談Debian套件打包

使用dpkg-buildpackage 產生deb檔,並且不要sign source以及.changes

* 產生deb檔還有其他方式如debuild和pbuilder,不提

Page 42: 淺談Debian套件打包
Page 43: 淺談Debian套件打包

生出來的deb檔

Page 44: 淺談Debian套件打包

剛才偷懶都沒改debian下面的資料,檢查的下場...慘不忍睹

Page 45: 淺談Debian套件打包

Outline

● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A

Page 46: 淺談Debian套件打包

延伸討論

● debian目錄內的檔案和格式相關規範

● apt-get source 套件名稱○ 取得repository打包的source檔和debian設定

● 如何在source套件中管理的patch?○ hint: qulit

Page 47: 淺談Debian套件打包

延伸討論

● 更嚴謹的檢查和打包方式○ pbuilder○ debuild

● apt-get install lxde裝了好幾個套件怎麼辦到的?

● lib-xxx 和lib-xxx-dev以及lib-xxx-dbg是同一個套件,那麼這要怎麼寫?

Page 48: 淺談Debian套件打包

結論

● debian的套件由ar 組成,裏面包含○ 最後安裝到系統的檔案○ 套件相關metadata○ 套件格式

● 自行打包套件方式○ 取得source,決定版本號碼○ 依特定檔案格式取名稱以及解壓縮○ dh_make產生debian目錄○ 修改debian目錄內的資訊○ 使用工具產生及驗證deb檔案

Page 49: 淺談Debian套件打包

結論

● (認真) 這是一個避重就輕的分享○ 類比:寫個Hello World很簡單,寫個不會segmentation

fault的link list就要點功力和技術了。

● 真正有趣的的是延伸討論的主體

Page 50: 淺談Debian套件打包

Outline

● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A

Page 52: 淺談Debian套件打包

Outline

● 拖台錢● Debian 套件結構● Debian 套件打包 (節錄)● 延伸討論和結論● 參考資料● Q & A