Предупреждение 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 год