Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
淺談Debian套件打包
Search
Wen_Liao
September 21, 2014
Technology
0
620
淺談Debian套件打包
Wen_Liao
September 21, 2014
Tweet
Share
More Decks by Wen_Liao
See All by Wen_Liao
COSCUP-2020-Linux 軟體組裝工和他的工具們
wen_liao
2
1.5k
開放街圖 自助旅行的好幫手
wen_liao
0
1.3k
GNU AS簡介
wen_liao
0
1.2k
UPnP 1.0 簡介
wen_liao
0
1.1k
自由軟體和 Richard Stallman
wen_liao
0
2.3k
Hello world在那邊?背景說明 0
wen_liao
0
750
A successful Git branching model 導讀
wen_liao
0
680
GNU ld的linker script簡介
wen_liao
0
1.3k
Trace 程式碼之皮
wen_liao
0
900
Other Decks in Technology
See All in Technology
実践マルチモーダル検索!
shibuiwilliam
3
540
戦えるAIエージェントの作り方
iwiwi
20
10k
GTC 2025 : 가속되고 있는 미래
inureyes
PRO
0
150
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
340
AIとの協業で実現!レガシーコードをKotlinらしく生まれ変わらせる実践ガイド
zozotech
PRO
2
300
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
25
17k
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
7
1.8k
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
0
520
アノテーション作業書作成のGood Practice
cierpa0905
PRO
1
380
進化する大規模言語モデル評価: Swallowプロジェクトにおける実践と知見
chokkan
PRO
3
450
初海外がre:Inventだった人間の感じたこと
tommy0124
1
180
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
880
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
RailsConf 2023
tenderlove
30
1.3k
Thoughts on Productivity
jonyablonski
72
4.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
The Pragmatic Product Professional
lauravandoore
36
7k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Designing for Performance
lara
610
69k
Transcript
淺談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)
套件分類 (引用自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,不提
None
生出來的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