어제 밤에 집 우분투 서버에 rust 기반 cli 도구인 hexyl와 bat을 설치하던 중 dpkg 에러를 발생하였습니다. 처음 보는 패턴이라 약간 당황했지만, 역시 에러 메시지 안에 답이 있어서 간단하게 해결했던 방법 정리해둡니다.
Problem
Install
sudo apt install hexyl
Error
dpkg-deb: 오류: 붙여넣기 서브프로세스가 시그널 (파이프가 깨어짐)에 의해 죽었습니다
9:14
dpkg: error processing archive /var/cache/apt/archives/hexyl_0.6.0-2build1_amd64.deb (--unpack):
'/usr/.crates2.json'의 덮어쓰기를 시도합니다. 이 파일은 ripgrep 11.0.2-1build1 패키지에도 들어있습니다
dpkg-deb: 오류: 붙여넣기 서브프로세스가 시그널 (파이프가 깨어짐)에 의해 죽었습니다
처리하는데 오류가 발생했습니다:
원인은 /usr/.crates2.json
파일이 이미 있어서 덮어쓰기 하는 중 broken pipe가 발생하여 설치가 중간에 실패하는 상태입니다.
launchpad에 찾아보니 우분투 20.04에서 rust로 개발된 패키지에서 apt 설치를 진행할 때 자주 발생되는 문제인 것 같네요.
https://bugs.launchpad.net/ubuntu/+source/rust-bat/+bug/1868517
Solution
그래서 전 그냥 deb 파일로 다운로드한 후 dpkg의 --force-overwrite
옵션으로 강제 설치를 진행하여서 해결하였습니다.
설치할 패키지 다운로드(e.g hexyl)
sudo apt-get download hexyl
dpkg –force-overwrite 옵션을 이용하여 hexyl 설치
sudo dpkg --force-overwrite -i hexyl_0.6.0-2build1_amd64.deb