Intereting Posts
Использование APC Smart-UPS для выключения кластера серверов Ubuntu изменить время (дату) в или из exif-данных Иерархия файлов Linux – лучшее место для хранения файлов lockfiles? Как я могу найти пакеты Debian по описанию? / var имеет большую часть пространства на диске. Нужно / иметь большую часть Хороший стиль / практика для разделителей в именах файлов (или каталогов) Зашифрованная загрузка падает на оболочку, как настроить LVM crypttab последовательно? «ALERT! {логический путь тома} не существует ' Установка испортила мой биос / etc / fstab / rw игнорируется для раздела карты mircosd в ArchLinux Значения столбцов в «последней» команде Barnyard 2 не работает на OpenBSD неспособный кормить каталог рекурсивно «неизвестный идентификатор пользователя» Размер данных, которые могут быть записаны / прочитаны из сокетов Есть ли файловая система POSIX с рекурсивным mtime для каталогов? Каков интерфейс моего hdd?

как применить патч в пакете debian?

Я опубликовал отчет об ошибке и попросил применить патч в нем и посмотреть, работает ли он. Я попытался найти документацию о том, как это сделать, но неясно.

Ближайшим, что я смог выяснить, является http://www.thegeekstuff.com/2014/12/patch-command-examples/ .

Я загрузил последний источник через apt-get в директорию с именем dpkg –

$ sudo apt-get source dpkg 

Вот как это выглядит –

 [shirish@debian] - [~/games/dpkg] - [5692] └─[$] pwd /home/shirish/games/dpkg 

Это путь, и вот он –

 ┌─[shirish@debian] - [~/games/dpkg] - [5691] └─[$] ls dmh-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 dmh fix from #844701." dch: fatal error at line 569: debian/changelog is not writable! 

Так что мне нужно использовать sudo для доступа на запись или использовать 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 dmh-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 dmh-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 < ./dmh-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 dmh 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 < ../dmh-verbose-version-check.patch 

будет применять патч. Перед созданием добавьте запись изменений в NMU (это позволит избежать того, что ваша исправленная версия dpkg перезаписана apt & co., Но обеспечит обновление вашей версии до следующей версии dpkg когда это доступно):

 dch -n "Apply dmh fix from #844701." 

Это переименует текущий каталог (поскольку dpkg является родным пакетом), поэтому вам нужно снова сменить каталоги:

 cd ../dpkg-1.18.15+nmu1 

Чтобы построить, я склонен использовать

 dpkg-buildpackage -us -uc 

Это приведет к созданию различных файлов .deb в родительском каталоге; вы можете установить их с помощью dpkg как обычно.

(Вызов явно fakeroot с параметрами debian/rules build , но вы не должны использовать fakeroot для fakeroot debian/rules build , только для debian/rules clean и debian/rules binary .)

Добавление записи в журнал изменений NMU также гарантирует, что загруженный вами источник не тронут, что касается проблем резервного копирования. Это также означает, что переустановка версии 1.18.15 приведет к восстановлению версии Debian без вашего исправления.