Различия в разных версиях одного и того же пакета debian

10

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

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

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

показывает

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

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

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

    
задан Gödel 19.10.2010 в 22:18
источник

5 ответов

5

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

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

./whatchanged python_papyon

Это то, что он делает:

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

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

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

    
ответ дан mgunes 30.10.2010 в 02:53
источник
7

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

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

    
ответ дан LassePoulsen 19.10.2010 в 23:02
2

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

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

bzr branch lp:ubuntu/lucid-updates/package_name

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

bzr diff -c'bzr revno'
    
ответ дан mgunes 19.10.2010 в 23:28
0

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

    
ответ дан Novelocrat 23.10.2010 в 05:43
-1

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

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

sudo apt-get install apt-listchanges

затем установите его с помощью

sudo dpkg-reconfigure apt-listchanges
    
ответ дан Ken Simon 22.10.2010 в 18:53