Предупреждение pkg_info: package info is corrupt
Предупреждение: данный текст был написан в 2007 году и может не соответствовать современным технологическим решениям для управления программным обеспечением FreeBSD.
Суть проблемы:
Повреждение списка установленного программного обеспечения FreeBSD
в результате сбоя компьютера во время работы portupgrade или pkgdb
(отсутствуют файлы «+CONTENTS» в поддиректориях /var/db/pkg).
В какой ситуации проявилась проблема:
Перезагрузка компьютера из-за сбоя электропитания во время работы portupgrade.
После включения fsck выявила большое количество сбоев на /var.
Признаки проблемы:
-
При создании файла
/var/db/pkg/pkgdb.dbпосле его удаленияpkgdb -Fне видит установленного ПО (например, в выводе присутствует «0 packages found»).Это проявляется только при создании
pkgdb.dbс нуля; еслиpkgdb.dbне удалять, выводится информация о нарушенных зависимостях. -
pkg_info 2>&1 выводит строки вида: pkg_info: the package info for package ‘glib-2.14.4’ is corrupt
Решение:
-
rm /var/db/pkg/pkgdb.db -
Если для установленной версии FreeBSD имеются готовые пакаджи с версиями ПО, совпадающими с версиями установленного в системе, извлечь из этих пакаджей файлы «+CONTENTS» и поместить на соответствующее место в
/var/db/pkg/. -
Для программ, версии которых в пакаджах не совпадают с установленными в системе, выполнить portupgrade -fN <программа>.программа>
-
Если после выполнения предыдущего пункта в выводе
pkg_info 2>&1 | grep corruptвстречаются записи вида:libiconv-1.11_1 A character set conversion lpkg_info: the package info for package 'lynx-2.8.6.5_2,1' is corruptто для всех вторых программ в этой строке (здесь - lynx):-
деинсталлировать программу через порт
-
удалить директорию
/var/db/<программа>; -
инсталлировать программу через порт.
-
-
Обновить ПО через portupgrade.
Автор: Георгий Мурый, site@moury.ru, 2007 год