FreeBSD: pkg_version the package info for package is corrupt

Автор: | 19/08/2013
 

freebsd_logoПри получении информации о пакетах появились следующие ошибки:

# pkg_version -v | grep need
...
pkg_info: the package info for package 'wget-1.14_2' is corrupt
...

Для начала – необходимо убедиться, что не используется pkgng вместо более старых утилит, так как его формат данных не совместим с более старыми утилитами pkg_*:

# pkg
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: N

Нет, не используется. В таком случае к этой ошибке могло привести что угодно – внезапное отключение питания сервера во время установки порта, или простое прерывание процесса установки комбинацией ctrl+C (сигнал Interrupt, подробнее о сигналах в статье Linux&FreeBSD: команды kill, nohup — сигналы и управление процессами).

Если нет резервной копии каталога /var/db/pkg – то единственный вариант – следующий.

Удаляем записи о wget из каталога /var/db/pkg:

# rm -rf /var/db/pkg/wget-1.14
# rm -rf /var/db/pkg/wget-1.14_2/

В данном случае – всё настолько плохо, что записи “двоились”.

Теперь – осталось просто переустановить сам порт “поверх” уже имеющего, что бы перезаписать в базу все его зависимости и информацию о нём:

# cd /usr/ports/ftp/wget && make BATCH=yes install clean

Теперь информация отображается корректно:

# pkg_info | grep wget
wget-1.14_2 Retrieve files from the Net via HTTP(S) and FTP