Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
淺談Debian套件打包
Search
Wen_Liao
September 21, 2014
Technology
730
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
淺談Debian套件打包
Wen_Liao
September 21, 2014
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.2k
自由軟體和 Richard Stallman
wen_liao
0
2.4k
Hello world在那邊?背景說明 0
wen_liao
0
830
A successful Git branching model 導讀
wen_liao
0
750
GNU ld的linker script簡介
wen_liao
0
1.5k
Trace 程式碼之皮
wen_liao
0
980
Other Decks in Technology
See All in Technology
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
110
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
2
160
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
270
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
1
910
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
240
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
340
Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発
hiranuma
0
110
クラウドサインを止めずに Nuxt へ 次の10年のために先に決めたこと
bengo4com
1
160
ガチで放置できるClaude Code実行環境の作り方.pdf
lamaglama39
5
9.9k
Adversary Infrastructure Hunting101
disconinja
0
160
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
370
2026-10-24 JAWS JAWS-UG 茨城 #18 IAM Policy Autopilotってなにさ。terraform planからIAM Policyつくれるの? / What's IAM Policy Autopilot
masasuzu
0
180
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
650
Tell your own story through comics
letsgokoyo
1
1.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
370
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
650
A better future with KSS
kneath
240
18k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
WENDY [Excerpt]
tessaabrams
14
40k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
sira's awesome portfolio website redesign presentation
elsirapls
0
470
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
490
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