[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 下一頁 ]
一旦你發佈了一個套件,在之後的某個時間裏就需要對它進行更新。
假設針對你的套件報告的 Bug 號爲 #54321,它描述了一個你可以解決的問題。要創建套件的一個新 Debian 版本,你需要:
如果要將它記錄於新的補丁中,這樣做:
quilt new bugname.patch 設置補丁名稱;
quilt add buggy-file 聲明檔案將被更改;
修正套件程式碼中的上游 Bug;
quilt refresh 將修改記錄到
bugname.patch
;
quilt header -e 添加對它的描述;
如果是更新一個已存在的補丁,這樣做:
quilt pop foo.patch 重現已存在的
foo.patch
;
修正舊的 foo.patch
中的問題;
quilt refresh 更新 foo.patch
;
quilt header -e 更新對它的描述;
while quilt push; do quilt refresh; done 應用所有補丁以確保它們 邊界清晰;
在 Debian changelog
檔案的頂部添加一個條目。例如可以使用 dch -i
或用 dch -v version-revision
來指定版本,然後用你喜歡的編輯器插入訊息。[53]
在 changlog 條目中簡要描述 Bug 和相應的解決辦法,並在後面添加 Closes: #54321。這樣 Bug 報告會在你的套件被 Debian 倉庫接受的同時被倉庫管理軟體 自動關閉。
重複上述操作來修復更多的 Bug,並在需要的時候使用
dch 更新 Debian changelog
檔案。
重複在 完整的(重)構建, 第 6.1 節、檢査套件中的錯誤, 第 7 章 和 上傳套件, 第 8 章 中進行的操作。惟一的區別是這次不需要再包含原始程式碼檔案,因爲它們沒有變化且已經存在於 Debian 倉庫中。
在爲 Debian 倉庫準備新上游版本的套件前,你必須首先檢査它。
檢査工作應從閱讀 changelog
、NEWS
以及所有隨新版本一同發佈的文件。
然後應按照以下步驟檢査新舊版本之間的差別,看是否存在可疑的內容:
$ diff -urN foo-oldversion foo-newversion
對於 Autotools 自動生成的檔案,例如
missing
、aclocal.m4
、config.guess
、config.h.in
、config.sub
、configure
、depcomp
、install-sh
、ltmain.sh
和 Makefile.in
是可以忽略的。你可以在運行
diff
進行程式碼檢査前刪除它們。
如果套件 foo
是使用新的 3.0
(native) 或 3.0 (quilt)
格式打包的,製作新的上游版本時需要先把舊的
debian
目錄移至新的原始碼內。這可以通過在新解壓的原始碼目錄裏運行
tar xvzf
/path/to/foo_oldversion.debian.tar.gz
完成。[54]當然,你需要做幾個很顯然的雜事。
創建一份上游原始碼的副本,命名爲
foo_newversion.tar.gz
使用 dch -v newversion-1 更新 Debian
changelog
檔案。
添加一個條目,內容爲 New upstream release。
簡明地介紹 在新上游版本中 上游修復和關閉的 Bug。
簡明地介紹維護者 對此新上游版本 做出的修改,修復和關閉的 Bug。
運行 while quilt push; do quilt refresh; done 以應用全部補丁並使它們 邊界清晰。
如果補丁沒有乾淨地被應用,檢査原因(線索在 .rej
檔案裏)。
如果你的補丁已經被上游接受:
使用 quilt delete 刪除它。
如果你的補丁與上游程式碼中的變更有衝突:
使用 quilt push -f
應用舊補丁,未應用的部分會被保存爲
baz.rej
。
手工編輯 baz
來在新的程式碼中實現
baz.rej
中應有的效果。
使用 quilt refresh 更新補丁。
再次運行 while quilt push; do quilt refresh; done。
這個過程可以通過使用 uupdate(1)
來更自動化地完成:
$ apt-get source foo ... dpkg-source: info: extracting foo in foo-oldversion dpkg-source: info: unpacking foo_oldversion.orig.tar.gz dpkg-source: info: applying foo_oldversion-1.debian.tar.gz $ ls -F foo-oldversion/ foo_oldversion-1.debian.tar.gz foo_oldversion-1.dsc foo_oldversion.orig.tar.gz $ wget http://example.org/foo/foo-newversion.tar.gz $ cd foo-oldversion $ uupdate -v newversion ../foo-newversion.tar.gz $ cd ../foo-newversion $ while quilt push; do quilt refresh; done $ dch ... document changes made
如果你按照 watch
檔案, 第 5.20 節 的敘述設置了 debian/watch
檔案,你可以跳過這個 wget
命令,轉而在
foo-oldversion
目錄中運行
uscan(1)
,且無需再執行 uupdate
命令。它會
自動 査找新的原始碼、下載並運行 uupdate
命令。[55]
重複 完整的(重)構建, 第 6.1 節、檢査套件中的錯誤, 第 7 章 和 上傳套件, 第 8 章 中的操作,即可發佈此更新的套件。
更新打包風格不是更新套件的必須步驟,但是這樣可以使你的套件得到對現代的
debhelper
系統和 3.0
原始碼套件格式完整的兼容性。[56]
如果你需要重新添加已刪除的模板檔案,可以在同一個 Debian
套件原始碼樹中運行 dh_make
,並添加
--addmissing 選項。然後對模板進行相應的編輯。
如果套件的 debian/rules
檔案沒有更新爲使用
debhelper
V7 的 dh
語法,則更新它使用
dh
。在需要的時候更新 debian/control
檔案。
如果你希望將使用 cdbs
的 Makefile
語法創建的 rules
檔案更新爲 dh
語法,參考 /usr/share/doc/cdbs/cdbs-doc.html
並理解各
DEB_* 設定變量。[57]
如果你有一個不帶有 foo.diff.gz
檔案的
1.0 格式的原始碼套件,你可以通過創建
debian/source/format
檔案並在其中添加 3.0
(native) 來將其更新爲新的 3.0 (native)
原始碼套件格式。debian
目錄中的其他檔案可以直接複製過來。
如果你有一個帶有 foo.diff.gz
檔案的
1.0 格式的原始碼套件,你可以通過創建
debian/source/format
檔案並在其中添加 3.0
(quilt) 來將其更新爲新的 3.0 (quilt)
原始碼套件格式。debian
目錄中的其他檔案可以直接複製過來。如果需要,把
filterdiff -z -x '*/debian/*' foo.diff.gz > big.diff
生成的 big.diff
檔案導入到 quilt
系統。[58]
如果它使用了其他的補丁系統,例如
dpatch
、dbs
或 cdbs
,使用
-p0、-p1 或 -p2 級別,使用
http://bugs.debian.org/581186
的 deb3
命令將其轉換到 quilt
系統。
如果它使用 dh
命令的 --with quilt
選項,或 dh_quilt_patch
和 dh_quilt_unpatch
命令,刪除它們並使其使用新的 3.0 (native)
原始碼套件格式。
當然你還需要按照 新上游版本, 第 9.3 節 完成其他的步驟。
以下是對更新套件的幾點提示。
保留舊的 changelog
條目(看似顯然,但是總有可能把
dch -i 輸入爲 dch)。
已存在的 Debian 修改需要被重新校驗,去除上游已經接受的東西,除非有必要的原因,還要記錄尚未被上游接受的部分。
如果對編譯系統作出了修改(希望你已經在檢査上游變更時瞭解了這些),那麼要在必要時更新
debian/rules
和 debian/control
編譯依賴關係。
檢査 Debian Bug Tracking System
(BTS)
是否有人爲某些仍然未修復的 Bug 提供了補丁。
檢査 .changes
檔案以確保你正要上傳到正確的發行版、正確的列於
Closes 欄位的 Bug、Maintainer 和
Changed-By 欄位相匹配,且該檔案已經使用 GPG
簽署等。
[ 上一頁 ] [ 目錄 ] [ 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