Closed11

「E: Sub-process /usr/bin/dpkg returned an error code (1)」というエラーが解決できない

漆 柳汰 / うるし漆 柳汰 / うるし

wslのubuntuをアップデートしようとしたらエラーが発生した

実行コマンド
sudo apt update
sudo apt upgrade
出力されたエラー
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
Get more security updates through Ubuntu Pro with 'esm-apps' enabled:
  libheif1 libde265-0
Learn more about Ubuntu Pro at https://ubuntu.com/pro
The following packages have been kept back:
  libnetplan0 netplan.io
The following packages will be upgraded:
  nodejs
1 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Need to get 0 B/25.4 MB of archives.
After this operation, 120 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 36019 files and directories currently installed.)
Preparing to unpack .../nodejs_14.21.3-deb-1nodesource1_amd64.deb ...
Unpacking nodejs (14.21.3-deb-1nodesource1) over (12.22.9~dfsg-1ubuntu3.6) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/systemtap/tapset/node.stp', which is also in package libnode72:amd64 12.22.9~dfsg-1ubuntu3.6
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
漆 柳汰 / うるし漆 柳汰 / うるし

原因は、何かしらの理由でインストール、またはアップデートしようとしたパッケージが壊れてしまったためです。壊れているというのは、例えばパッケージが使用するライブラリの依存関係が干渉してしまったり、整合性が取れなくなったりする場合です。

上記記事の原因はパッケージの整合性が取れなくなったり、依存関係が干渉してしまったかららしい。

漆 柳汰 / うるし漆 柳汰 / うるし

考えられる原因

sudo apt updatesudo apt installを実行した際にパッケージが何らかの理由で壊れてしまったことが原因の可能性が高い

実行コマンド
sudo apt remove libnode72
出力
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  nodejs
The following packages will be REMOVED:
  libnode72
The following packages will be upgraded:
  nodejs
1 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
Need to get 0 B/25.4 MB of archives.
After this operation, 79.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 36019 files and directories currently installed.)
Preparing to unpack .../nodejs_14.21.3-deb-1nodesource1_amd64.deb ...
Unpacking nodejs (14.21.3-deb-1nodesource1) over (12.22.9~dfsg-1ubuntu3.6) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/systemtap/tapset/node.stp', which is also in package libnode72:amd64 12.22.9~dfsg-1ubuntu3.6
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
漆 柳汰 / うるし漆 柳汰 / うるし

libnodeの存在チェックをします。

実行コマンド
dpkg -l | grep libnode
出力
ri  libnode72:amd64                    12.22.9~dfsg-1ubuntu3.6                      amd64        evented I/O for V8 javascript - runtime library

存在しているみたいなのでlibnode72を強制的に削除しましょう。

実行コマンド
sudo dpkg --remove --force-remove-reinstreq libnode72
出力
dpkg: dependency problems prevent removal of libnode72:amd64:
 nodejs depends on libnode72 (= 12.22.9~dfsg-1ubuntu3.6).

dpkg: error processing package libnode72:amd64 (--remove):
 dependency problems - not removing
Errors were encountered while processing:
 libnode72:amd64
実行コマンド
dpkg -l | grep libnode
出力
ri  libnode72:amd64                    12.22.9~dfsg-1ubuntu3.6                      amd64        evented I/O for V8 javascript - runtime library

依存関係の問題で失敗しているみたいです。

漆 柳汰 / うるし漆 柳汰 / うるし

依存先のnodejsを削除しましょう。

実行コマンド
sudo apt remove --purge nodejs
出力
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  node-typescript* nodejs*
0 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
After this operation, 62.2 MB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 36019 files and directories currently installed.)
Removing node-typescript (4.5.4+ds1-1) ...
Removing nodejs (12.22.9~dfsg-1ubuntu3.6) ...
Processing triggers for man-db (2.10.2-1) ...

無事削除できました。続いてlibnode72も削除しましょう。

実行コマンド
sudo apt remove --purge libnode72
出力
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  libnode72*
0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
After this operation, 41.2 MB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 35846 files and directories currently installed.)
Removing libnode72:amd64 (12.22.9~dfsg-1ubuntu3.6) ...
Processing triggers for libc-bin (2.35-0ubuntu3.8) ...

無事削除できました。これでnodejslibnode72が削除された状態となります。

漆 柳汰 / うるし漆 柳汰 / うるし

再度nodejsをインストールしましょう。

実行コマンド
sudo apt update
出力
Hit:1 https://dl.yarnpkg.com/debian stable InRelease
Hit:2 https://deb.nodesource.com/node_14.x jammy InRelease                                                                              
Hit:3 http://security.ubuntu.com/ubuntu jammy-security InRelease                                                                              
Hit:4 http://archive.ubuntu.com/ubuntu jammy InRelease                                                                                        
Hit:5 http://archive.ubuntu.com/ubuntu jammy-updates InRelease                   
Hit:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease
Hit:7 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
実行コマンド
sudo apt install nodejs
実行コマンド
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  nodejs
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.4 MB of archives.
After this operation, 121 MB of additional disk space will be used.
Get:1 https://deb.nodesource.com/node_14.x jammy/main amd64 nodejs amd64 14.21.3-deb-1nodesource1 [25.4 MB]
Fetched 25.4 MB in 2s (10.7 MB/s) 
Selecting previously unselected package nodejs.
(Reading database ... 35856 files and directories currently installed.)
Preparing to unpack .../nodejs_14.21.3-deb-1nodesource1_amd64.deb ...
Unpacking nodejs (14.21.3-deb-1nodesource1) ...
Setting up nodejs (14.21.3-deb-1nodesource1) ...
Processing triggers for man-db (2.10.2-1) ...

無事nodejsをインストールすることができました。

漆 柳汰 / うるし漆 柳汰 / うるし

今回の原因

パッケージの依存関係が干渉してapt upgradeが失敗したと思われる。

解決方法

依存関係のあるパッケージを両方削除する(今回だとnodejslibnode72)。削除完了したら再度インストールし直す(今回はnodejsのみ)。

漆 柳汰 / うるし漆 柳汰 / うるし

どうすればもっと早く解決したのか

以下の部分を確認すればよかった。

sudo apt upgradeを実行したときの出力の一部
dpkg: error processing archive /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/systemtap/tapset/node.stp', which is also in package libnode72:amd64 12.22.9~dfsg-1ubuntu3.6
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

ここを翻訳にかけると以下のようになる

翻訳後
dpkg: アーカイブ /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb の処理中にエラーが発生しました (--unpack):
'/usr/share/systemtap/tapset/node.stp' を上書きしようとしていますが、これはパッケージ libnode72:amd64 12.22.9~dfsg-1ubuntu3.6 にも含まれています。
処理中にエラーが発生しました:
 /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb
E: サブプロセス /usr/bin/dpkg がエラーコード (1) を返しました。

/usr/share/systemtap/tapset/node.stpが複数のパッケージに含まれているという意味らしい。

条件にもよりますが個人であれば最新にしとけば問題ないと思います。

漆 柳汰 / うるし漆 柳汰 / うるし

補足

システム上にある「部分的にインストールされた」または「破損した」パッケージを検出するために使用するコマンドがあるのでこちらを使用すれば具体的に何がこけているのか確認することができます。

実行コマンド
sudo dpkg --audit
このスクラップは1ヶ月前にクローズされました