バグを報告 report し、パッチ therein を適用して、機能するかどうかを確認するように依頼されました。私はそれを行う方法についてのドキュメントを見つけようとしましたが、不明確です。
私が理解できた最も近いものは http://www.thegeekstuff.com/2014/12/patch-command-examples/ です。
Dpkgという名前のディレクトリの下にapt-getを介して最新のソースをダウンロードしました-
$ Sudo apt-get source dpkg
これはどのように見えるか-
[shirish@debian] - [~/games/dpkg] - [5692]
└─[$] pwd
/home/shirish/games/dpkg
それが道であり、ここにあります-
┌─[shirish@debian] - [~/games/dpkg] - [5691]
└─[$] ls
d-m-h-verbose-version-check.patch dpkg-1.18.15 dpkg_1.18.15.dsc dpkg_1.18.15.tar.xz
パッチを適用する前にバックアップを作成し、予行演習を行いたいのですが、どのようなコマンドと出力が必要かを知る必要があります。また、私は通常使用します-
$ fakeroot debian/rules build
$ fakeroot debian/rules binary
ローカルのdebパッケージをビルドします。これで十分ですか?
更新1-うまくいきませんでした-
┌─[shirish@debian] - [~/games/dpkg] - [5710]
└─[$] cd dpkg-1.18.15
┌─[shirish@debian] - [~/games/dpkg/dpkg-1.18.15] - [5711]
└─[$] dch -n "Apply d-m-h fix from #844701."
dch: fatal error at line 569:
debian/changelog is not writable!
だから、私は書き込みアクセス権を持つためにSudoを使用する必要がありますかOR chmodを使用して権限/許可を変更します。正しい方法で行いたいのです。
更新2-今回はパッチ適用の段階で、全体を正しい方法でやり直しました-
┌─[shirish@debian] - [~/games] - [5750]
└─[$] apt-get source dpkg
Reading package lists... Done
NOTICE: 'dpkg' packaging is maintained in the 'Git' version control system at:
https://anonscm.debian.org/git/dpkg/dpkg.git
Please use:
git clone https://anonscm.debian.org/git/dpkg/dpkg.git
to retrieve the latest (possibly unreleased) updates to the package.
Skipping already downloaded file 'dpkg_1.18.15.dsc'
Skipping already downloaded file 'dpkg_1.18.15.tar.xz'
Need to get 0 B of source archives.
dpkg-source: info: extracting dpkg in dpkg-1.18.15
dpkg-source: info: unpacking dpkg_1.18.15.tar.xz
その後-
┌─[shirish@debian] - [~] - [5755]
└─[$] cp d-m-h-verbose-version-check.patch games/dpkg-1.18.15
その後-
┌─[shirish@debian] - [~/games/dpkg-1.18.15] - [5758]
└─[$] ls
ABOUT-NLS ChangeLog configure debian dpkg-split m4 NEWS run-script t-func
aclocal.m4 ChangeLog.old configure.ac d-m-h-verbose-version-check.patch dselect Makefile.am po scripts THANKS
AUTHORS check.am COPYING doc get-version Makefile.in README src TODO
build-aux config.h.in data dpkg-deb lib man README.l10n t utils
その後 -
┌─[shirish@debian] - [~/games/dpkg-1.18.15] - [5757]
└─[$] patch < ./d-m-h-verbose-version-check.patch
(Stripping trailing CRs from patch; use --binary to disable.)
can't find file to patch at input line 5
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git i/scripts/dpkg-maintscript-helper.sh w/scripts/dpkg-maintscript-helper.sh
|index f20d82647..8db4a4088 100755
|--- i/scripts/dpkg-maintscript-helper.sh
|+++ w/scripts/dpkg-maintscript-helper.sh
--------------------------
File to patch:
今何をすべきか混乱していますか?
更新3-
-p1
パラメータと残りの手順を実行しました-
ビルドの最後の5つの奇数行を共有する-
dh_md5sums -i
dh_builddeb -i
dpkg-deb: building package 'dpkg-dev' in '../dpkg-dev_1.18.15+nmu1_all.deb'.
dpkg-deb: building package 'libdpkg-Perl' in '../libdpkg-Perl_1.18.15+nmu1_all.deb'.
dpkg-genchanges >../dpkg_1.18.15+nmu1_AMD64.changes
dpkg-genchanges: info: including full source code in upload
dpkg-source --after-build dpkg-1.18.15+nmu1
dpkg-source: info: using options from dpkg-1.18.15+nmu1/debian/source/options: --compression=xz
dpkg-buildpackage: info: full upload; Debian-native package (full source is included)
そして最新のものをインストールすることができました-
┌─[shirish@debian] - [~/games] - [5812]
└─[$] Sudo dpkg -i dpkg_1.18.15+nmu1_AMD64.deb dpkg-dev_1.18.15+nmu1_all.deb dpkg-dbgsym_1.18.15+nmu1_AMD64.deb dselect_1.18.15+nmu1_AMD64.deb dselect-dbgsym_1.18.15+nmu1_AMD64.deb libdpkg-Perl_1.18.15+nmu1_all.deb libdpkg-dev_1.18.15+nmu1_AMD64.deb
D000001: ensure_diversions: new, (re)loading
D000001: ensure_statoverrides: new, (re)loading
(Reading database ... 1207494 files and directories currently installed.)
Preparing to unpack dpkg_1.18.15+nmu1_AMD64.deb ...
D000001: process_archive oldversionstatus=installed
D000001: cmpversions a='0:1.18.15+nmu1' b='0:1.16.1' r=2
D000001: cmpversions a='0:1.18.15+nmu1' b='0:1.16.2' r=2
D000001: ensure_diversions: same, skipping
Unpacking dpkg (1.18.15+nmu1) over (1.18.10) ...
D000001: cmpversions a='0:1.18.15+nmu1' b='0:1.16.2' r=2
D000001: ensure_diversions: same, skipping
D000001: process_archive updating info directory
D000001: generating infodb hashfile
Preparing to unpack dpkg-dev_1.18.15+nmu1_all.deb ...
D000001: process_archive oldversionstatus=unpacked but not configured
D000001: ensure_diversions: same, skipping
Unpacking dpkg-dev (1.18.15+nmu1) over (1.18.15+nmu1) ...
D000001: process_archive updating info directory
D000001: generating infodb hashfile
Preparing to unpack dpkg-dbgsym_1.18.15+nmu1_AMD64.deb ...
D000001: process_archive oldversionstatus=unpacked but not configured
Unpacking dpkg-dbgsym (1.18.15+nmu1) over (1.18.15+nmu1) ...
D000001: process_archive updating info directory
D000001: generating infodb hashfile
Preparing to unpack dselect_1.18.15+nmu1_AMD64.deb ...
D000001: process_archive oldversionstatus=installed
D000001: ensure_diversions: same, skipping
Unpacking dselect (1.18.15+nmu1) over (1.18.15+nmu1) ...
D000001: process_archive updating info directory
D000001: generating infodb hashfile
Preparing to unpack dselect-dbgsym_1.18.15+nmu1_AMD64.deb ...
D000001: process_archive oldversionstatus=installed
Unpacking dselect-dbgsym (1.18.15+nmu1) over (1.18.15+nmu1) ...
D000001: process_archive updating info directory
D000001: generating infodb hashfile
Preparing to unpack libdpkg-Perl_1.18.15+nmu1_all.deb ...
D000001: process_archive oldversionstatus=unpacked but not configured
Unpacking libdpkg-Perl (1.18.15+nmu1) over (1.18.15+nmu1) ...
D000001: process_archive updating info directory
D000001: generating infodb hashfile
Preparing to unpack libdpkg-dev_1.18.15+nmu1_AMD64.deb ...
D000001: process_archive oldversionstatus=installed
Unpacking libdpkg-dev:AMD64 (1.18.15+nmu1) over (1.18.15+nmu1) ...
D000001: process_archive updating info directory
D000001: generating infodb hashfile
D000001: process queue pkg dpkg:AMD64 queue.len 6 progress 1, try 1
Setting up dpkg (1.18.15+nmu1) ...
D000001: deferred_configure updating conffiles
D000001: ensure_diversions: same, skipping
D000001: process queue pkg dpkg-dev:all queue.len 5 progress 1, try 1
D000001: process queue pkg dpkg-dbgsym:AMD64 queue.len 5 progress 2, try 1
Setting up dpkg-dbgsym (1.18.15+nmu1) ...
D000001: deferred_configure updating conffiles
D000001: process queue pkg dselect:AMD64 queue.len 4 progress 1, try 1
Setting up dselect (1.18.15+nmu1) ...
D000001: deferred_configure updating conffiles
D000001: process queue pkg dselect-dbgsym:AMD64 queue.len 3 progress 1, try 1
Setting up dselect-dbgsym (1.18.15+nmu1) ...
D000001: deferred_configure updating conffiles
D000001: process queue pkg libdpkg-Perl:all queue.len 2 progress 1, try 1
Setting up libdpkg-Perl (1.18.15+nmu1) ...
D000001: deferred_configure updating conffiles
D000001: process queue pkg libdpkg-dev:AMD64 queue.len 1 progress 1, try 1
Setting up libdpkg-dev:AMD64 (1.18.15+nmu1) ...
D000001: deferred_configure updating conffiles
D000001: process queue pkg dpkg-dev:all queue.len 0 progress 1, try 1
Setting up dpkg-dev (1.18.15+nmu1) ...
D000001: deferred_configure updating conffiles
Processing triggers for man-db (2.7.5-1) ...
D000001: ensure_diversions: same, skipping
D000001: cmpversions a='0:2016.03.30' b='0:2016.05.24' r=-2
D000001: cmpversions a='0:1.18.15+nmu1' b='0:1.16' r=2
D000001: cmpversions a='0:1.18.15+nmu1' b='0:1.16' r=2
D000001: cmpversions a='0:1.18.15+nmu1' b='0:1.16' r=2
そして最後に -
┌─[shirish@debian] - [/usr/share/doc/dpkg] - [5815]
└─[$] zcat changelog.Debian.gz | less
dpkg (1.18.15+nmu1) UNRELEASED; urgency=medium
* Non-maintainer upload.
* Apply d-m-h fix from #844701
-- shirish <shirish@debian> Mon, 21 Nov 2016 01:04:02 +0530
dpkg (1.18.15) unstable; urgency=medium
これは、正しくインストールされたことを意味します。
[$] apt-show-versions dpkg dpkg-dbgsym dpkg-dev libdpkg-Perl libdpkg-dev dselect dselect-dbgsym
dpkg:AMD64 1.18.15+nmu1 newer than version in archive
dpkg-dbgsym:AMD64 1.18.15+nmu1 newer than version in archive
dpkg-dev:all 1.18.15+nmu1 newer than version in archive
dselect:AMD64 1.18.15+nmu1 newer than version in archive
dselect-dbgsym:AMD64 1.18.15+nmu1 newer than version in archive
libdpkg-dev:AMD64 1.18.15+nmu1 newer than version in archive
libdpkg-Perl:all 1.18.15+nmu1 newer than version in archive
あなたが持っている状況から始めます:
cd dpkg-1.18.15
patch -p1 < ../d-m-h-verbose-version-check.patch
パッチを適用します。ビルドする前に、NMUの変更ログエントリを追加します(これにより、dpkg
&co。によってパッチされたバージョンのapt
が上書きされなくなりますが、バージョンが利用可能になったときに、次のdpkg
リリースに確実にアップグレードされます)。
dch -n "Apply d-m-h fix from #844701."
これにより、現在のディレクトリの名前が変更されます(dpkg
はネイティブパッケージであるため)。ディレクトリをもう一度変更する必要があります。
cd ../dpkg-1.18.15+nmu1
構築するには、私は使用する傾向があります
dpkg-buildpackage -us -uc
これにより、親ディレクトリにさまざまな.deb
ファイルが生成されます。通常どおりdpkg
を使用してインストールできます。
(debian/rules
ターゲットの呼び出しも明示的に機能します。ただし、debian/rules build
およびdebian/rules clean
の場合のみ、debian/rules binary
にfakeroot
を使用しないでください。)
NMUの変更ログエントリを追加すると、ダウンロードしたソースが変更されずに残り、バックアップの問題に対処できます。また、バージョン1.18.15を再インストールすると、パッチなしでDebianバージョンが復元されます。