最近用Freebsd 10.2版本,升级一个bind包,没注意,先让我升级了一个PKG包,直接点YES,然后升级BIND99的时候,提示错误
/usr/local/lib/libpkg.so.4: Undefined symbol “utimensat”
网上找到了解决方法,就是降低PKG包的版本,目前升级了以后,是10.10.3,找到
https://pkg.freebsd.org/FreeBSD:10:amd64/release_4/Latest/pkg.txz ,这个版本是1.6.2 。放在/var/cache/pkg/目录中,
用如下命令替换
# pkg delete -f pkg
# pkg-static install -f /var/cache/pkg/pkg.txz 这里会报错
# pkg info sqlite3 pkg: warning: database version 35 is newer than libpkg(3) version 33, but still compatible pkg: sqlite error while executing INSERT OR ROLLBACK INTO pkg_search(id, name, origin) VALUES (?1, ?2 || ‘-‘ || ?3, ?4); in file pkgdb.c:1544: no such table: pkg_search
解决方法
# pkg shell
> CREATE VIRTUAL TABLE pkg_search USING fts4(id, name, origin);
> pragma user_version=33;
> .quit
降级后就可以使用pkg升级软件了。
如何避免以后再次出现这个问题呢?其实只要锁定pkg版本即可
# pkg lock pkg