[Ubuntu] apt install 중 E: Sub-process /usr/bin/dpkg returned an error code (1) 에러 해결 사례
본 포스팅에서는 E: Sub-process /usr/bin/dpkg returned an error code (1) 에러가 발생했을 때의 해결 사례를 보여줍니다. 기존에 설치되어 있는 Node.js의 버전 업을 시키는 과정에서 에러가 발생하였고, 에러를 해결하는 과정을 공유해보겠습니다.
개발 환경
현재 위의 포스팅에서와 같이 Ubuntu 22.04 LTS에서 Node.js v12.22.9 버전으로 설치되어 있는 상황입니다.
$ node -v
v12.22.9
여기서 16 버전으로 업그레이드하는 과정을 보여드리겠습니다.
에러 발생
먼저, 기존에 설치되어 있던 nodejs를 삭제하였습니다.
$ sudo apt-get purge -y nodejs
다음으로, 특정 버전을 설치할 수 있도록 가이드가 나와있는 설치 방법대로 스크립트를 실행시켰습니다.
$ curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
스크립트를 실행시킨 후 다시 nodejs를 설치하는 과정에서 다음과 같은 에러가 발생하였습니다.
$ sudo apt install -y nodejs
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
nodejs
0 upgraded, 1 newly installed, 0 to remove and 60 not upgraded.
Need to get 0 B/27.2 MB of archives.
After this operation, 128 MB of additional disk space will be used.
(Reading database ... 66829 files and directories currently installed.)
Preparing to unpack .../nodejs_16.20.0-deb-1nodesource1_amd64.deb ...
Unpacking nodejs (16.20.0-deb-1nodesource1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_16.20.0-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
Errors were encountered while processing:
/var/cache/apt/archives/nodejs_16.20.0-deb-1nodesource1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
에러 해결
해당 에러는 /var/cache/apt/archives/nodejs_16.20.0-deb-1nodesource1_amd64.deb 패키지를 설치하려고 할 때 충돌로 인해 발생한 것으로 보입니다. 충돌의 원인은 libnode-dev 패키지와의 파일 중복입니다.
에러를 해결하기 위해서는 libnode-dev 패키지를 강제로 제거하고, 에러가 발생한 패키지를 다시 설치합니다.
$ sudo apt remove libnode-dev
$ sudo dpkg --force-all -r nodejs_16.20.0-deb-1nodesource1_amd64
$ sudo apt install -f
$ sudo apt update
이제 nodejs 패키지를 다시 설치할 수 있습니다.
$ sudo apt install -y nodejs
그랬더니 에러 내용 중 충돌난 패키지가 libnode-dev에서 libnode72:amd64로 변경되었습니다.
이번에는 libnode-dev 패키지와의 파일 중복 문제를 해결하기 위해 다음 명령들을 수행합니다.
$ sudo apt remove libnode72:amd64
$ sudo dpkg --force-all -r nodejs_16.20.0-deb-1nodesource1_amd64
$ sudo apt install -f
$ sudo apt update
그리고 다시 nodejs 패키지를 설치해보았습니다.
$ sudo apt install -y nodejs
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
nodejs
0 upgraded, 1 newly installed, 0 to remove and 60 not upgraded.
Need to get 0 B/27.2 MB of archives.
After this operation, 128 MB of additional disk space will be used.
(Reading database ... 66824 files and directories currently installed.)
Preparing to unpack .../nodejs_16.20.0-deb-1nodesource1_amd64.deb ...
Unpacking nodejs (16.20.0-deb-1nodesource1) ...
Setting up nodejs (16.20.0-deb-1nodesource1) ...
Processing triggers for man-db (2.10.2-1) ...
$ node -v
v16.20.0
충돌난 패키지들을 강제로 제거하고, 패키지 업데이트하여 다시 설치하여 문제를 해결하였습니다.
다른 패키지로 동일한 에러가 발생하면 이와 같이 해결할 수 있을 것입니다!😁