Различают разные версии одного и того же пакета Debian

Есть ли способ получить разностные исходники между локально установленным пакетом и его обновленным? Это будет полезно для проверки, какие именно детали были исправлены, изменены или добавлены.

Например, допустим, в вашей системе установлен пакет linux-libc-dev, а

sudo apt-get update && sudo apt-get upgrade

показывает

The following packages will be upgraded:
  linux-libc-dev 

, но вы хотите проверить, прежде чем обновлять его, точные изменения, которые были сделаны по сравнению с вашей локальной версией того же пакета.

Как мы можем это сделать?

11
задан 22 October 2010 в 02:17

5 ответов

Вот один (возможно, не оптимальный) UDD способ сделать это:

ветвь Pull -updates для вашего релиза (при условии, что Lucid), что (предположение следует) должна содержать последний SRU:

bzr branch lp:ubuntu/lucid-updates/package_name

Получите изменения, внесенные последней редакцией, которая (допущение следует) должна соответствовать последней SRU:

bzr diff -c`bzr revno`
0
ответ дан 22 October 2010 в 02:17

Если вы хотите увидеть различия файлов в архивах пакетов, извлеките их файлы md5sums, отсортируйте и разнесите их, а затем вы можете сузить список фактических файлов для существенного сравнения.

0
ответ дан 22 October 2010 в 02:17

Вот еще одно решение, которое я взломал вместе: что изменилось .

В качестве единственного аргумента используется имя интересующего вас двоичного пакета. Чтобы использовать недавний SRU в качестве примера:

./whatchanged python_papyon

Вот что он делает:

  1. Проверьте, есть ли кандидат на обновление; выход, если его нет
  2. Если кандидат существует, создайте временные каталоги и извлеките в них пакеты с исходными текстами как для установленной версии, так и для кандидата
  3. Сравните эти два с debdiff и выведите в stdout (вы, вероятно, захотите перенаправить для более удобного чтения)
  4. Очистить временные каталоги.

Вероятно, нужно лучше обрабатывать некоторые вещи, которые могут работать неправильно во время поиска источника, управление потоком, вероятно, немного отключено, и должны быть более элегантные способы проверки версий, но в моем ограниченном тестировании это работало нормально до сих пор. А пока, сочтите это быстрым взломом, который работает, и улучшения приветствуются. Я отправлю его в репозиторий bzr и / или создаю проект Launchpad, если он будет полезен нескольким людям.

Редактировать : Вместо того, чтобы гнить на пастбине, я запустил проект Launchpad для него; Вы можете получить последнюю версию ствола с bzr branch lp:whatchanged. Не стесняйтесь сообщать об ошибках, разветвлять их, переписывать на Perl и т. Д.

0
ответ дан 22 October 2010 в 02:17

Афайк, единственный способ сделать это - получить исходный код и сделать дифференциал своим собственным. Вы можете получить фактический исходный код, использованный для компиляции пакетов, с помощью apt-get. fx:

apt-get source gwibber=2.30.2-0ubuntu3 gwibber=2.30.0.1-0ubuntu1
diff -rupN gwibber-2.30.0.1/ gwibber-2.30.2/

Это распечатает все различия между всеми файлами в стандартном формате патчей.

0
ответ дан 22 October 2010 в 02:17

Может не быть «точными» изменениями, но apt-listchanges перечисляет записи журнала изменений для изменений, которые были сделаны с установленной версии.

Он работает путем добавления шага после завершения загрузки новых пакетов, но перед началом установки, где он показывает запись в журнале изменений для каждого пакета, который должен быть обновлен. Затем вы можете продолжить или отменить. Вы можете установить его с помощью

sudo apt-get install apt-listchanges

, а затем настроить с помощью

sudo dpkg-reconfigure apt-listchanges
0
ответ дан 22 October 2010 в 02:17

Другие вопросы по тегам:

Похожие вопросы: