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

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

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

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

шоу

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

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

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

5 ответов

Решение

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

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

./whatchanged python_papyon

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

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

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

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

Afaik единственный способ сделать это, чтобы получить исходный код и сделать дифференциал для себя. Вы можете получить фактический исходный код, использованный для компиляции пакетов, с помощью 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/

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

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

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

bzr branch lp:ubuntu/lucid-updates/package_name

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

bzr diff -c`bzr revno`

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

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

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

sudo apt-get install apt-listchanges

затем установите его с

sudo dpkg-reconfigure apt-listchanges
Другие вопросы по тегам