2011年1月31日 星期一

Debian Package - 什麼是 Debian Native Package?

要怎麼去辨別一個 Debian 套件是否為一個 Debian native package 呢?

最簡單方法就是判斷有沒有 (5) - 版本號碼 當中提到的 debian_version
[epoch:]upstream_version[-debian_revision]
如果 Debian 套件的版號沒有看到 debian_version 的部份,那麼它就是一個 Debian native package

那麼接下來問題應該是...

怎樣的套件才可以成為一個 Debian native package?

其實就是該套件只為了 Debian 系統而製作的。
在終端機下輸入以下指令
$ dpkg-query -W | awk '{ if ($2 !~ /-/) print $0; }'
就可以看到系統上目前裝了哪些 Debian native package

舉個例子
Package: cdbs
...
Version: 0.4.62+nmu1ubuntu9
...
Description: common build system for Debian packages
 This package contains the Common Debian Build System, an abstract
 build system based on Makefile inheritance which is completely
 extensible and overridable.  In other words, CDBS provides a sane set
 of default rules upon which packages can build; any or all rules may
 be overridden as needed.
...

這個 Debian 套件就是用來製作 Debian 套件的工具之一,所以它只能使用在 Debian 系統上面,像這樣的套件就一定是 Debian native package

相反的,如果你所製作的 Debian 套件並不限於只使用在 Debian 系統上面的話,請不要用 Debian native package 的版號命名規則,也就是不要省略掉 debian_version,如果想要上傳套件至 Debian 官方套件庫裡面,這點一定要注意一下。

另外如果你就是上游的軟體開發者,即使軟體本身在製作時就已經順便做好 Debian 套件的相關工作,也不要在釋出 source code tar ball 裡面包含 debian 這個目錄。

2 則留言:

匿名 提到...

Debian 已經全面推廣 DebSrc3.0,
所以 upstream 在 tarball 裡提供 debian 目錄完全沒有問題。

當然如果 maintainer 堅持要用 DebSrc1.0 那還是會有點小困擾就是。

$4 提到...

感謝分享 http://wiki.debian.org/Projects/DebSrc3.0