새소식

운영체제/Linux

[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의 버전 업을 시키는 과정에서 에러가 발생하였고, 에러를 해결하는 과정을 공유해보겠습니다.

[운영체제/Linux] - [Ubuntu] Node.js 및 npm 간단한 설치


개발 환경

현재 위의 포스팅에서와 같이 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)

 

에러 해결

[그림 1] apt install 수행 시 libnode-dev 충돌 에러

해당 에러는 /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로 변경되었습니다.

[그림 2] apt install 수행 시 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

충돌난 패키지들을 강제로 제거하고, 패키지 업데이트하여 다시 설치하여 문제를 해결하였습니다.

 

다른 패키지로 동일한 에러가 발생하면 이와 같이 해결할 수 있을 것입니다!😁

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.