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
710
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
820
A successful Git branching model 導讀
wen_liao
0
740
GNU ld的linker script簡介
wen_liao
0
1.4k
Trace 程式碼之皮
wen_liao
0
960
Other Decks in Technology
See All in Technology
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
9
2.5k
Claude起点の仕様駆動開発
tanakaseiya
0
260
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
390
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
180
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
250
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
Incremental HTTP
kazuho
5
1.8k
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
280
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
180
形式手法を使って仕様をコーディングしよう
mikanichinose
0
160
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
100
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
10k
Docker and Python
trallard
47
4.2k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
250
Raft: Consensus for Rubyists
vanstee
142
7.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Site-Speed That Sticks
csswizardry
13
1.5k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How to Ace a Technical Interview
jacobian
280
24k
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