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
650
淺談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
760
A successful Git branching model 導讀
wen_liao
0
690
GNU ld的linker script簡介
wen_liao
0
1.4k
Trace 程式碼之皮
wen_liao
0
910
Other Decks in Technology
See All in Technology
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
180
スクラムマスターが スクラムチームに入って取り組む5つのこと - スクラムガイドには書いてないけど入った当初から取り組んでおきたい大切なこと -
scrummasudar
1
1.7k
コールドスタンバイ構成でCDは可能か
hiramax
0
130
[PR] はじめてのデジタルアイデンティティという本を書きました
ritou
0
780
1万人を変え日本を変える!!多層構造型ふりかえりの大規模組織変革 / 20260108 Kazuki Mori
shift_evolve
PRO
6
970
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
Next.js 16の新機能 Cache Components について
sutetotanuki
0
220
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
870
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
210
Oracle Cloud Infrastructure:2025年12月度サービス・アップデート
oracle4engineer
PRO
0
200
善意の活動は、なぜ続かなくなるのか ーふりかえりが"構造を変える判断"になった半年間ー
matsukurou
0
320
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Accessibility Awareness
sabderemane
0
33
Testing 201, or: Great Expectations
jmmastey
46
7.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
34
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Done Done
chrislema
186
16k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
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