Есть ли способ получить разностные исходники между локально установленным пакетом и его обновленным? Это будет полезно для проверки, какие именно детали были исправлены, изменены или добавлены.
Например, допустим, в вашей системе установлен пакет linux-libc-dev, а
sudo apt-get update && sudo apt-get upgrade
показывает
The following packages will be upgraded:
linux-libc-dev
, но вы хотите проверить, прежде чем обновлять его, точные изменения, которые были сделаны по сравнению с вашей локальной версией того же пакета.
Как мы можем это сделать?
Вот один (возможно, не оптимальный) UDD способ сделать это:
ветвь Pull -updates для вашего релиза (при условии, что Lucid), что (предположение следует) должна содержать последний SRU:
bzr branch lp:ubuntu/lucid-updates/package_name
Получите изменения, внесенные последней редакцией, которая (допущение следует) должна соответствовать последней SRU:
bzr diff -c`bzr revno`
Если вы хотите увидеть различия файлов в архивах пакетов, извлеките их файлы md5sums, отсортируйте и разнесите их, а затем вы можете сузить список фактических файлов для существенного сравнения.
Вот еще одно решение, которое я взломал вместе: что изменилось .
В качестве единственного аргумента используется имя интересующего вас двоичного пакета. Чтобы использовать недавний SRU в качестве примера:
./whatchanged python_papyon
Вот что он делает:
debdiff
и выведите в stdout (вы, вероятно, захотите перенаправить для более удобного чтения) Вероятно, нужно лучше обрабатывать некоторые вещи, которые могут работать неправильно во время поиска источника, управление потоком, вероятно, немного отключено, и должны быть более элегантные способы проверки версий, но в моем ограниченном тестировании это работало нормально до сих пор. А пока, сочтите это быстрым взломом, который работает, и улучшения приветствуются. Я отправлю его в репозиторий bzr и / или создаю проект Launchpad, если он будет полезен нескольким людям.
Редактировать : Вместо того, чтобы гнить на пастбине, я запустил проект Launchpad для него; Вы можете получить последнюю версию ствола с bzr branch lp:whatchanged
. Не стесняйтесь сообщать об ошибках, разветвлять их, переписывать на Perl и т. Д.
Афайк, единственный способ сделать это - получить исходный код и сделать дифференциал своим собственным. Вы можете получить фактический исходный код, использованный для компиляции пакетов, с помощью 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/
Это распечатает все различия между всеми файлами в стандартном формате патчей.
Может не быть «точными» изменениями, но apt-listchanges
перечисляет записи журнала изменений для изменений, которые были сделаны с установленной версии.
Он работает путем добавления шага после завершения загрузки новых пакетов, но перед началом установки, где он показывает запись в журнале изменений для каждого пакета, который должен быть обновлен. Затем вы можете продолжить или отменить. Вы можете установить его с помощью
sudo apt-get install apt-listchanges
, а затем настроить с помощью
sudo dpkg-reconfigure apt-listchanges