Полезные советы. Проверка установленных пакетов с помощью debsums.

22.02.2009

Теперь у вас наконец-то есть установленные бинарники или пакеты в системе. Но они могут быть установлены некорректно или не полностью. Что могло произойти при нестабильном сетевом соединении. Можно заместить такие пакеты, но для этого сначала надо сравнить информацию по файлам в файловой системе и находящуюся в пакете.

В Ubuntu и прочих Debian-based системах можно использовать утилиту debsums, которая сверяет MD5 суммы в каждом установленном пакете с md5sum файлами найденными в директории /var/lib/dpkg/info.

Для установки этой программы воспользуемся:

$ sudo aptitude install debsums

Если запустить debsums без каких-либо опций, то она начнет проверять все доступные ей файлы. В таком случае вывод программы можно перенаправить в отдельный файл. Если md5sum файла совпадает, то справа от названия файла выведется OK. Если md5sum файл отсутствует или не найден, то может быть выведено сообщение md5sums missing или REPLACED. Для исправления такой ситуации необходимо сгенерировать новые md5sums файлы.

Запускаем проверку всех файлов:

$ debsums

ПАМЯТКА У простого пользователя может не хватить прав для работы с некоторыми файлами, поэтому для запуска используйте sudo, а не запуск от пользователя root.

Если необходимо сохранить вывод данной операции, то необходимо перенаправить вывод и ошибки в файл. А добавив амперсанд в конце команды мы сможем продолжить работать в shell пока идет работа команды:

$ debsums &> /tmp/foo &

Для проверки всех конфигурационных файлов, поставляемых с пакетами, на изменения, запускаем debsums с опцией -a:

$ debsums -a

Если вы хотите видеть только измененные файлы и пропустить кучу прочей информации, то нужно воспользоваться опцией -c:

$ debsums -c

Для вывода файлов у который нет информации md5sum воспользуйтесь опцией -l:

$ debsums -l

Если хотите увидеть только ошибки, то воспользуйтесь опцией -s:

$ debsums -s

Для проверки конкретного пакета, укажите имя пакета после debsums в качестве аргумента:

$ debsums coreutils

Если md5sum файла не было с пакетом, то воспользовавшись командой dpkg -L в комбинации с небольшим скриптом на shell, мы можем сгенерировать недостающие файлы в формате необходимом для хранения в директории /var/lib/dpkg/info. Для примера сгенерируем недостающую информацию для пакета rsync.

$ for file in `dpkg -L rsync | grep ^/`; do
test -f "$file" && md5sum "$file";
done > /tmp/rsync.md5sums

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

Для полноценного использования полученной информации с debsums с помощью еще одного shell скрипта уберем первый слэш в начале пути к файлу.

$ sed -e 's# /# #g' /tmp/rsync.md5sums > /tmp/rsync.debsums

Теперь после всех обработок можно скопировать полученный файл в /var/lib/dpkg/info.


Нет комментариев






2 + 8 =

© 2001-2015 NLG