Dpkg
創建 pgn-extract 包
我想創建一個包來安裝最新版本的pgn-extract。我下載
pgn-extract.tgz
並解壓縮了存檔。但我自己也想不通,因為我對建構包的概念沒有經驗。
最簡單的方法(對於“最簡單”的一些價值)是下載現有的
pgn-extract
包並將其用作基礎:
- 下載目前源:
wget ftp://ftp.cs.kent.ac.uk/pub/djb/pgn-extract/pgn-extract.tgz
- 提取它:
tar xf pgn-extract.tgz
- 確定版本號:
grep Version pgn-extract/index.html
(我得到“17-38”,所以我將在以下說明中使用它;如果您有更高版本,請酌情替換“17”和“38”) 4. 將 tarball 連結到 Debian 建構工具期望的 “.orig” tarball:
ln -s pgn-extract.tgz pgn-extract_17.38.orig.tar.gz
- 下載源碼包並解壓:
apt-get source pgn-extract
- 將現有
debian
目錄複製到您的pgn-extract
源目錄中:cd pgn-extract cp -a ../pgn-extract-17.21/debian .
- 為您的版本添加更改日誌條目,例如
dch -v 17.38-0.1 "New upstream release."
- 建構新包;如果此處出現錯誤,請酌情修復包裝,然後重試:
dpkg-buildpackage -us -uc
就我而言,我必須修復
makefile.patch
;這顯示為在建構開始時修補程式碼的錯誤:dpkg-source: info: using source format '3.0 (quilt)' dpkg-source: info: building pgn-extract using existing ./pgn-extract_17.38.orig.tar.gz patching file Makefile Hunk #1 FAILED at 37. Hunk #2 succeeded at 48 (offset 1 line). 1 out of 2 hunks FAILED dpkg-source: info: the patch has fuzz which is not allowed, or is malformed dpkg-source: info: if patch 'makefile.patch' is correctly applied by quilt, use 'quilt refresh' to update it dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/makefile.patch/ --reject-file=- < pgn-extract.orig.ltAFev/debian/patches/makefile.patch gave error exit status 1 dpkg-buildpackage: error: dpkg-source -b pgn-extract gave error exit status 2
為了解決這個問題,我進行瞭如下操作:
- 強制應用更新檔:
export QUILT_PATCHES="debian/patches" quilt push -f
檢查拒絕
Makefile.rej
並使用編輯器手動應用它們;使用目前版本pgn-extract
,這意味著:尋找線
# AIX 3.2 Users might like these alternatives
找到那句話上方的那一行
CC=gcc
在此之上,刪除說 的行,並將上一行末尾的
-O3
替換為,因此整行結束為\``$(CPPFLAGS)
-I/usr/local/lib/ansi-include -std=c99 $(CPPFLAGS)
3. 刷新更新檔:
quilt refresh
4. 再次執行建構。 您也可以從提取的 Debian 原始碼包開始,並使用它`uscan`來下載和處理最新的 tarball,但如果您有興趣,我會讓您進行調查。