1週間前にDebian 10から11にアップグレードしました。
繰り返されるエラーは次のとおりです。
symbol lookup error: /lib/systemd/libsystemd-shared-247.so: undefined symbol: seccomp_api_get
システムの起動中にカーネルパニックが発生します。
初期化システムとしてsystemvに切り替える必要がありました。
今すぐ復元しようとすると、systemd
次のエラーが発生します。
root@nas:~# apt install systemd
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
systemd is already the newest version (247.3-6).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
Setting up systemd (247.3-6) ...
systemd-machine-id-setup: symbol lookup error: /lib/systemd/libsystemd-shared-247.so: undefined symbol: seccomp_api_get
dpkg: error processing package systemd (--configure):
installed systemd package post-installation script subprocess returned error exit status 127
Errors were encountered while processing:
systemd
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
私のバージョン:
root@nas:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
root@nas:~# uname -a
Linux nas 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux
答え1
解決策が見つかりましたここ:
私も同じ問題があります。その理由は、/lib/x86_64-linux-gnuにあるいくつかの古いライブラリ、特にlibseccompによるものです。パッケージは管理されていません(つまり、どのパッケージにも属しません)。 [… ]
新しいlibseccomp2パッケージは新しいバイナリを/usr/lib/x86_64-linux-gnuに送信しますが、ランタイムローダは/lib/x86_64-linux-gnuに古いバージョンをロードします。 [… ]
/lib/x86_64-linux-gnuから古いライブラリを削除すると、問題がなくなります。
だから、次のファイルを削除しました。
rm /lib/x86_64-linux-gnu/libseccomp.so.2*
Systemdに戻すことができました。
確認方法
dpkg --search
これを使用して、ファイルまたはディレクトリが孤立していることを確認できます。
dpkg --search /lib/x86_64-linux-gnu/libseccomp.so.2
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libseccomp.so.2
次のコマンドを使用して、そのパッケージがないファイルを見つけることができますcruft-ng
。どのパッケージにも属さないファイルを見つける方法は?
修正する
一つある/lib/x86_64-linux-gnu/
との間のシンボリックリンク/usr/lib/x86_64-linux-gnu/
したがって、削除を決定する前に、両方のディレクトリで検索してください。
実行しましたがdpkg --search /usr/lib/terminfo/
警告が返され、ディレクトリが削除されましたが、実際にCLIが中断されたため、CLIが中断されましたncurses-base
。
このディレクトリを所有するパッケージを検索して/usr/lib/
提供します。/lib/
dpkg --search /usr/lib/terminfo/ /lib/terminfo/
dpkg-query: no path found matching pattern /usr/lib/terminfo/
ncurses-base: /lib/terminfo
したがって、dpkg --search
データを削除するのが安全かどうかを判断するために、1回の検索にのみ依存することはできません。