[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 下一頁 ]
本文件試圖爲普通 Debian 用戶,和希望對 Debian 套件有所瞭解的開發人員講述如何製作 Debian 套件。它使用了通俗的語言,並輔以大量可用於實踐的範例。有一句古羅馬諺語說得好:一例勝千言!
本文件已經爲 Debian squeeze 進行了更新。 [1]
Debian 能夠成爲一個頂級的發行版的原因之一就是它的套件系統。儘管相當數量的軟體已經被以 Debian 格式打包,有時還是需要安裝一些不是這一格式的軟體。可能你會爲如何製作自己的套件而迷惑,並可能認爲這是很困難的任務。是的,如果你是一個 Linux 初學者,那麼這的確很難;不過如果你真的只是一個新手,現在也不會來讀這篇文件了。:-) 你的確需要對 Unix 編程有所瞭解,但顯然不需要是這方面的天才。
有一件事是非常明確的:創建並維護一個 Debian 套件需要花費很多時間。爲了能夠不犯錯誤,維護者需要良好的技術基礎並十分勤奮。
本文件會講述每一個細節(在開始時或許給人感覺毫不相關),並幫助你創建出自己的第一個 Debian 套件,從而使你學習到如何打包該軟體的下一個版本或其他軟體的經驗。
如果需要幫助,請閱讀 到何處尋求幫助, 第 1.4 節。
本文件的最新版始終可在 http://www.debian.org/doc/maint-guide/
和 maint-guide
套件中找到,其繁體中文版也可在
maint-guide-zh-tw
套件中獲得。
在開始之前,你需要確認你是否已經正確安裝了開發所需要的附加套件。注意這些套件不包含任何已經被標記爲 essential 或 required —— 我們假設你已經安裝了它們。
以下這些套件已經隨標準的 Debian 安裝而在系統中,所以你可能不需要再動手安裝它們(以及任何附加的依賴套件)。然而,你還是應該用 aptitude show package 來檢査一下。
在開發系統中要安裝的最重要的套件是
build-essential
。當你安裝它的時候,將會自動把基本編譯環境裏所需的其他套件一併安裝。
對於某些類型的軟體,以上的就是所需要的全部。然而還有一組套件雖不是對於所有套件都必須,卻可能對你有用或被你的套件所需要:
file
- 這個小程式可以檢測檔案的類型。(參考
file(1)
)
patch
- 這是一個非常有用的工具,它可以把
diff
程式生成的差異清單檔案應用到原先的檔案上,從而生成一個補丁版本。(參考
patch(1)
)
perl
- Perl 是當今的類 Unix
系統中最常用的解譯型腳本語言之一,常被譽爲 Unix
的瑞士軍刀。(參考 perl(1)
)
python
- Python 是 Debian
系統中另一個最常用的解譯型腳本語言,它擁有着可圈可點的強大功能和十分清晰的語法。(參考
python(1)
)
autoconf
、automake
和 autotools-dev
-
很多新程式使用 configure 腳本和 Makefile
檔案來幫助預處理程式。(參考 "info
autoconf"、"info automake")。
autotools-dev
則用於保持指定的自動設定檔案爲最新,並帶有關於使用那些檔案的最佳方法的文件。
dh-make
和 debhelper
- dh-make
是用於創建我們範例套件骨架所必須的,它會使用
debhelper
中的一些工具來創建套件。他們不是創建套件所必須的,但對新維護人員而言,我們
強烈推薦
使用。它使得整個過程極爲簡化,並易於在將來維護。(參考
dh_make(1)
、debhelper(1)
、/usr/share/doc/debhelper/README
)
[2]
devscripts
-
此套件提供了一些非常好非常有用的腳本幫助維護者,但他們並非構建套件所必須。此套件所推薦或建議的套件都值得一看。(參考
/usr/share/doc/devscripts/README.gz
)
fakeroot
-
這個工具集使你可以在編譯過程中必要的時候用普通用戶模擬
root 用戶環境。(參考 fakeroot(1)
)
gnupg
- 使你可以使用 數位簽章
簽署你的套件。這在當你想把它散佈給其他人時特別重要。如果你要把你的工作加入到
Debian 發行版中,這是必須的步驟。(參考 gpg(1)
)
gfortran
- GNU Fortran 95 編譯器,如果你的程式是用
Fortran 編寫的則必須此套件完成編譯。(參考
gfortran(1)
)
gpc
- GNU Pascal 編譯器。如果你的程式是用 Pascal
寫的則需要此套件。值得一提的是 fp-compiler
,Free
Pascal 編譯器(FPC),也能夠很好地勝任。(參考
gpc(1)
、ppc386(1)
)
xutils-dev
- 一些通常用於 X11
的程式,用於使用其巨集功能生成 Makefile
檔案。(參考 imake(1)
、xmkmf(1)
)
lintian
- Debian
套件檢査工具,使你可以在編譯套件後知道它是否有常見的錯誤,並對找到的錯誤進行解釋。(參考
lintian(1)
、/usr/share/doc/lintian/lintian.html/index.html
)
pbuilder
- 這個套件提供了創建和維護
chroot
環境。在此 chroot
環境中編譯 Debian
套件可以檢査編譯依賴是否合適並避免 FTBFS (Fails To Build From
Source,從原始碼編譯失敗)的 Bug。(參考 pbuilder(8)
和 pdebuild(1)
)
patchutils
-
此套件提供了一些可以幫助處理補丁的工具,如
lsdiff
、interdiff
和 filterdiff
命令。
quilt
-
此套件幫助你管理一系列的補丁。它們被以邏輯堆疊的方式組織在一起。你可以
apply (=push)、un-apply (=pop)
或簡單地更新它們然後再放入堆疊內。(參考
quilt(1)
、/usr/share/doc/quilt/README.Debian
)
git
-
此套件提供了用於快捷處理大型項目的著名版本控制系統 -
git。它被廣泛用於各種開源項目,最著名的是 Linux
核心項目。(參考
git(1)
、/usr/share/doc/git-doc/index.html
)
以下是 非常重要 的文件,你應該在讀本文件時同時參考它們:
debian-policy
- Debian Policy
Manual
包含了對 Debian
軟體倉庫、作業系統設計事宜、檔案系統層級標準(FHS,Filesystem
Hierarchy
Standard)(講述每個檔案和目錄應該放在哪裏)等的描述。對於你而言,最重要的是它描述了套件要進入官方倉庫前必須滿足的條件。(參考
/usr/share/doc/debian-policy/policy.html/index.html
)
developers-reference
- Debian Developer's
Reference
描述了打包所需的包含技術細節在內的全部詳細訊息,如倉庫結構、如何重命名/丟棄/接手套件、如何進行
NMU(非維護者上傳)、如何管理 Bug
以及打包最佳經驗、何時向何處上傳等。(參考
/usr/share/doc/developers-reference/
)
Autotools
Tutorial
爲 the GNU Build System known
as the GNU Autotools
中最重要的工具 ——
Autoconf、Automake、Libtool 和 gettext 提供了很好的文件。
gnu-standards
- 此套件包含了 GNU 項目中的兩篇文件:
GNU
Coding Standards
和 Information for
Maintainers of GNU Software
。儘管 Debian
不要求遵守這些規範,它們仍然很有幫助。(參考
/usr/share/doc/gnu-standards/standards.html
和
/usr/share/doc/gnu-standards/maintain.html
)
若本文件所敘述的內容與 Debian Policy Manual 或 Debian Developer's
Reference 有不符,則按照後兩者的要求進行,並向
maint-guide
套件提交 Bug 報告。
以上給出的簡短描述僅僅是爲了使你對這些套件有一個基本的印象。在繼續前請詳細閱讀每個程式的文件,至少了解其一般的用途和用法。現在看來這是一項耗時巨大的任務,但在接下來的工作中你將爲你閱讀了它們而感覺到 非常 愉快。
一共有兩種類型的套件。
原始碼套件:原始碼套件包含了程式碼和數據,可以編譯成爲可執行的程式和格式化的文件。它通常是以
*.orig.tar.gz
、*.debian.tar.gz
(或
*.diff.gz
) 和 *.dsc
的組合形式出現的。也可能使用一些其他的格式和壓縮方法。
二進位套件:二進位套件包含了可執行的程式和格式化的文件。它通常是以
*.deb
檔案的形式提供給普通 Debian 系統,以及
*.udeb
檔案形式提供給 Debian 安裝程式。
不要混淆程式原始碼和程式的原始碼套件這樣相似但有區別的概念!
在 Debian 社群中有幾個常見的角色。
上游作者(upstream author):程式的最原始作者。
上游維護者(upstream maintainer):目前在上游維護程式程式碼的人。
維護者(maintainer):製作該程式的 Debian 套件的人。
保證人(sponsor):檢査內容後幫助維護者上傳套件到 Debian 官方倉庫的人。
指導者(mentor):幫助維護者熟悉和深入打包的人。
Debian Developer (DD):Debian 社群的官方成員。DD 擁有向 Debian 官方倉庫上傳的全部權限。
Debian Maintainer (DM):擁有對 Debian 官方倉庫部分上傳權限的人。
Debian 中使用了幾種不同的版本號。
上游原始碼版本:上游原始碼版本被指代爲 version。
Debian 版本:Debian 套件的版本被指代爲 revision。
Debian 套件版本:Debian 套件版本被按以下規則指代。
對於 Debian 創建的軟體,其原始碼套件的版本即爲上文所述的 version。
對於不是 Debian 創建的軟體,其原始碼套件的版本爲 version-revision。
如果你需要更詳細地瞭解術語,請閱讀其他手冊。
你不可能在一夜之間成爲 Debian Developer
(DD),因爲一個 DD
所需要的遠不只是技術能力,請不要因此感覺到挫敗或沮喪。如果你的軟體對其他人有用,你可以作爲一個
維護者(maintainer) 通過 一位
保證人(sponsor) 來上傳軟體,或者申請成爲一位
Debian Maintainer。詳見 Debian New
Maintainers
。
請注意,要成爲一位正式的 Debian Developer 並不一定要創建新套件。對已有軟體做出貢獻也是成爲正式的 Debian Developer 的路徑。眼下正有很多套件正在等待一個好的維護者對其做出貢獻。(參考 選擇你的程式, 第 2.1 節)
在公共場所提出問題前請先閱讀各種文件(RTFM,Read The Fucking
Manual)。包括但不限於
/usr/share/doc/dpkg
、/usr/share/doc/debian
、/usr/share/doc/autotools-dev/README.Debian.gz
、/usr/share/doc/package/*
檔案和本文件中提及的軟體的 man
/info
頁面。更多內容參考 http://nm.debian.org/
製作小的測試套件是學習打包的好方法,仔細査看維護較好的套件則是瞭解他人如何製作套件的最佳辦法。
如果在所有可用的文件和在線資源中都無法找到答案,你可以在
Debian Mentors 郵件列表詢問(debian-mentors@lists.debian.org
)。在那裏會有經驗更加豐富的
Debian
開發人員幫助你,但在發問前請確定要閱讀已有的文件!
關於此郵件列表,參考 http://lists.debian.org/debian-mentors/
當你收到一個 Bug 報告後(沒錯,真正的 Bug
報告!),你需要研究 Debian
Bug Tracking System
(Debian Bug
跟蹤系統,BTS)並閱讀相關的文件以便高效處理這些報告。我推薦閱讀
Developer's
Reference, 5.8. 'Handling bugs'
如果仍然不能解決所有的問題,則到 Debian Developers
郵件列表詢問(debian-devel@lists.debian.org
)。關於此郵件列表,參考
http://lists.debian.org/debian-devel/
即使以上的問題都解決了,也不能高興得太早。爲什麼?因爲幾個小時或幾天內就會有人開始使用你的套件,如果你犯了某些嚴重的錯誤,將被無數生氣的 Debian 用戶的郵件所轟炸…… 只是開個玩笑。:-)
放鬆一點並準備好處理 Bug 報告,在你的套件完全符合 Debian 的各項規範前還需要付出很多努力,處理 Bug 也是對你很好的鍛煉(再一次提醒,閱讀那些 必須的文件 來了解詳情)。祝你好運!
[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 下一頁 ]
Debian 新維護人員手冊
版本 1.2.25, 2010-12-21 14:06:56 UTCjoy-mg@debian.org
happyaron.xu@gmail.com
lilingv@gmail.com
ycheng@slat.org
koster@debian.org
osamu@debian.org