Используйте dpkg для просмотра журнала изменений

Самый быстрый способ проверить, является ли последний байт файла новой строкой, - это прочитать только этот последний байт. Это можно сделать с помощью tail -c1 file . Однако упрощенный способ проверить, является ли значение байта новой строкой, в зависимости от оболочки, обычное удаление завершающей новой строки внутри расширения команды не удается (например) в yash, когда последний символ в файле является UTF- 8 значение.

Правильный, POSIX-совместимый, все (разумный) способ оболочки для определения, является ли последний байт файла новой строкой, - это использовать либо xxd, либо hexdump:

tail -c1 file | xxd -u -p
tail -c1 file | hexdump -v -e '/1 "%02X"'

Затем, сравнивая вывод выше с 0A предоставит надежный тест.
Полезно избегать добавления новой строки в пустой файл.
Файл, который не может предоставить последний символ 0A , конечно:

f=file
a=$(tail -c1 "$f" | hexdump -v -e '/1 "%02X"')
[ -s "$f" -a "$a" != "0A" ] && echo >> "$f"

Короткий и приятный. Это занимает очень мало времени, так как он просто читает последний байт (переход к EOF). Неважно, большой ли файл. Затем добавьте только один байт, если необходимо.

Временные файлы не нужны и не используются. Никакие жесткие ссылки не затронуты.

Если этот тест запускается дважды, он не добавит еще одну новую строку.

7
18.12.2017, 15:03
3 ответа

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

dpkg -X <package.deb> <folder>

, затем вы можете прочитать журнал изменений с помощью утилиты dpkg-parsechangelog

dpkg-parsechangelog -l <folder>/usr/share/doc/<package>/changelog.Debian.gz

. Поскольку это реальная проблема, если ваш дистрибутив использует apt-get, вы можете использовать

apt-get changelog <packagename>

или

apt changelog <packagename>
19
27.01.2020, 20:14

Если пакет установлен, просто перейдите в / usr / share / doc / / , и там вы найдете ChangeLog и Debian (пакет). журнал изменений.

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

6
27.01.2020, 20:14

Если я хочу узнать, например, почему 'passwd' был обновлен в недавнем обновлении, есть ли способ использовать dpkg, чтобы увидеть, что изменилось?

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

Если вы хотите просмотреть журналы изменений для пакетов, которые не установлены, вероятно, проще всего поискать в Интернете. Например, зайдите на https://packages.qa.debian.org, введите нужный исходный пакет (скажем, dpkg), и вы увидите журнал изменений справа в разделе 'links'. В данном случае вы попадете на http://metadata.ftp-master.debian.org/changelogs/main/d/dpkg/unstable_changelog.

Этот конкретный сайт можно использовать только для Debian, конечно.

2
27.01.2020, 20:14

Теги

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