FreeBSD: /usr/local/sbin/pkg: Undefined symbol «_ThreadRuneLocale»

Автор: | 06/26/2014
 

freebsd_logoВо время установки нового порта внезапно появилась новая ошибка. Что ещё более странно — это то, что она возникла не на FreeBSD 9.0, а на вполне себе обновлённой 9.2:

# uname -r
9.2-RELEASE-p6

Видимо дело в том, что pkgng был установлен до обновления с 9.0 до 9.2 вручную, ещё на старую 9.0.

/usr/local/sbin/pkg: Undefined symbol «_ThreadRuneLocale»

Решение нашлось с трудом, хотя на форуме FreeBSD постов с такой ошибкой довольно много, но вот реальных советов, кроме как «обновите систему» — мало.

Что бы устранить проблему — пересоберём pkgng. Редактируем файл /etc/make.conf и на время отключаем использование pkgng:

# WITH_PKGNG=YES

Переходим в директорию порта, и старым способом удаляем его:

# cd /usr/ports/ports-mgmt/pkg
# make deinstall
===>  Deinstalling for ports-mgmt/pkg
===>   Deinstalling pkg-1.2.7_2
pkg_delete: file '/usr/local/share/licenses/pkg-1.2.7_2/catalog.mk' doesn't exist
pkg_delete: file '/usr/local/share/licenses/pkg-1.2.7_2/LICENSE' doesn't exist
pkg_delete: file '/usr/local/share/licenses/pkg-1.2.7_2/BSD2CLAUSE' doesn't exist
pkg_delete: '/usr/local/include/pkg.h' fails original MD5 checksum - deleted anyway.
pkg_delete: '/usr/local/lib/libpkg.a' fails original MD5 checksum - deleted anyway.
pkg_delete: '/usr/local/lib/libpkg.so.1' fails original MD5 checksum - deleted anyway.
pkg_delete: '/usr/local/sbin/pkg' fails original MD5 checksum - deleted anyway.
pkg_delete: '/usr/local/sbin/pkg-static' fails original MD5 checksum - deleted anyway.
pkg_delete: file '/usr/local/share/licenses/pkg-1.2.7_2' doesn't exist
pkg_delete: unable to completely remove directory '/usr/local/share/licenses/pkg-1.2.7_2'
pkg_delete: couldn't entirely delete package `pkg-1.2.7_2'
(perhaps the packing list is incorrectly specified?)

Судя по ошибкам — он действительно был установлен «криво».

Проверяем:

# pkg info | grep pkg
bash: /usr/local/sbin/pkg: No such file or directory

И устанавливаем заново:

# make install clean

Ещё раз проверяем:

# pkg info | grep pkg
pkg-1.2.7_3                    Package manager
pkg_tree-1.1_2                 Get a 'graphical' tree-overview of installed packages
pkgconf-0.9.5                  Utility to help to configure compiler and linker flags

Возвращаем использование pkgng для установки портов в файле /etc/make.conf.