登录时和 apt-get 更新后的 python 堆栈跟踪

登录时和 apt-get 更新后的 python 堆栈跟踪

在我最新的 dist-upgrade 之后,我现在在登录/启动 bash 时获取 python 堆栈跟踪:

Last login: Wed Nov 28 19:33:57 2018 from x.x.x.x  
Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 28, in <module>
    from CommandNotFound import CommandNotFound
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
    from CommandNotFound.db.db import SqliteDatabase
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 3, in <module>
    import sqlite3
  File "/usr/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: /usr/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-i386-linux-gnu.so: undefined symbol: sqlite3_transfer_bindings

我应该注意到我正在使用 Ubuntu 自带的原装 .bashrc;我唯一改变的是为我喜欢的“ls”开关添加别名。

当我尝试运行 apt-get update 时也遇到了类似的错误:

Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease
Traceback (most recent call last):                
  File "/usr/lib/cnf-update-db", line 8, in <module>
    from CommandNotFound.db.creator import DbCreator
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 7, in <module>
    import sqlite3
  File "/usr/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: /usr/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-i386-linux-gnu.so: undefined symbol: sqlite3_transfer_bindings
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code

我试过了apt-get install --reinstall command-not-found,但无济于事。我不擅长跟踪堆栈跟踪,需要一些帮助。非常感谢。

答案1

我不是专家,但我在尝试启动 sickbeard 时遇到了相同的未定义符号,因此我以 root 身份运行以下命令:

scanelf -l -s sqlite3_transfer_bindings /lib/* /usr/* /opt/* | grep sqlite3_transfer_bindings

这给了我这个输出:

ET_DYN sqlite3_transfer_bindings /usr/lib/i386-linux-gnu/libsqlite3.so.0.8.6
ET_DYN sqlite3_transfer_bindings /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6

因此我将 sickbeard 用户的 $LD_LIBRARY_PATH 设置为 /usr/lib/x86_64-linux-gnu

我能够运行 sickbeard。

因此大概您可以运行相同的命令,然后相应地调整您的 LD_LIBRARY_PATH 值。

相关内容