Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
淺談Debian套件打包
Search
Wen_Liao
September 21, 2014
Technology
0
630
淺談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.3k
Trace 程式碼之皮
wen_liao
0
910
Other Decks in Technology
See All in Technology
Introduction to Bill One Development Engineer
sansan33
PRO
0
320
Data Hubグループ 紹介資料
sansan33
PRO
0
2.3k
Claude Code はじめてガイド -1時間で学べるAI駆動開発の基本と実践-
oikon48
39
21k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
630
GitHub を組織的に使いこなすために ソニーが実践した全社展開のプラクティス
sony
21
11k
IaC を使いたくないけどポリシー管理をどうにかしたい
kazzpapa3
1
210
AI 時代のデータ戦略
na0
8
3.1k
セキュリティAIエージェントの現在と未来 / PSS #2 Takumi Session
flatt_security
3
1.2k
知っていると得する!Movable Type 9 の新機能を徹底解説
masakah
0
100
その設計、 本当に価値を生んでますか?
shimomura
2
140
"なるべくスケジューリングしない" を実現する "PreferNoSchedule" taint
superbrothers
0
130
TROCCO 2025年の進化をデモで振り返る
__allllllllez__
0
300
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.2k
Music & Morning Musume
bryan
46
7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
960
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
700
Code Review Best Practice
trishagee
73
19k
Visualization
eitanlees
150
16k
Speed Design
sergeychernyshev
33
1.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
690
BBQ
matthewcrist
89
9.9k
Documentation Writing (for coders)
carmenintech
76
5.2k
Balancing Empowerment & Direction
lara
5
780
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