dpkg를 통해 설치된 손상된, 절반만 설치된 패키지를 설치하거나 제거할 수 없습니다.

dpkg를 통해 설치된 손상된, 절반만 설치된 패키지를 설치하거나 제거할 수 없습니다.

sougoupinyin어젯밤에 dpkg를 통해 파일에서 패키지를 설치 했습니다 sougoupinyin.deb. 무엇을 해야할지 몰랐던 몇 가지 누락된 종속성이 있었던 것으로 기억합니다.

컴퓨터를 다시 시작한 후 apt를 통해 몇 가지 추가 패키지를 설치해 보았습니다. 그러나 다음과 같은 오류가 발생했습니다.

littlewhole@pop-os:~$ sudo apt-get install fcitx fcitx-mozc kde-config-fcitx
Reading package lists... Done
Building dependency tree       
Reading state information... Done
fcitx is already the newest version (1:4.2.9.7-3).
kde-config-fcitx is already the newest version (0.5.5-2build1).
The following packages will be REMOVED:
  sogoupinyin
The following NEW packages will be installed:
  fcitx-mozc
0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 247 kB of archives.
After this operation, 57.2 MB disk space will be freed.
Do you want to continue? [Y/n] Y
Get:1 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 fcitx-mozc amd64 2.23.2815.102+dfsg-8ubuntu1 [247 kB]
Fetched 247 kB in 0s (1,190 kB/s)  
(Reading database ... 235083 files and directories currently installed.)
Removing sogoupinyin (2.2.0.0108) ...
/var/lib/dpkg/info/sogoupinyin.postrm: 8: local: debian": bad variable name
dpkg: error processing package sogoupinyin (--remove):
 installed sogoupinyin package post-removal script subprocess returned error exit status 2
dpkg: too many errors, stopping
Errors were encountered while processing:
 sogoupinyin
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)

그런 다음 dpkg를 통해 패키지를 다시 설치하려고 시도했지만 거의 동일한 오류가 발생했습니다.

littlewhole@pop-os:~$ sudo dpkg -i '/home/littlewhole/sogoupinyin.deb' 
Selecting previously unselected package sogoupinyin.
(Reading database ... 235083 files and directories currently installed.)
Preparing to unpack .../littlewhole/sogoupinyin.deb ...
Unpacking sogoupinyin (2.2.0.0108) over (2.2.0.0108) ...
/var/lib/dpkg/info/sogoupinyin.postrm: 8: local: debian": bad variable name
dpkg: warning: old sogoupinyin package post-removal script subprocess returned error exit status 2
dpkg: trying script from the new package instead ...
/var/lib/dpkg/tmp.ci/postrm: 8: local: debian": bad variable name
dpkg: error processing archive /home/littlewhole/sogoupinyin.deb (--install):
 new sogoupinyin package post-removal script subprocess returned error exit status 2
/var/lib/dpkg/tmp.ci/postrm: 8: local: debian": bad variable name
dpkg: error while cleaning up:
 new sogoupinyin package post-removal script subprocess returned error exit status 2
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for libglib2.0-0:i386 (2.64.2-1~fakesync1) ...
Processing triggers for libglib2.0-0:amd64 (2.64.2-1~fakesync1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for shared-mime-info (1.15-1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Errors were encountered while processing:
 /home/littlewhole/sogoupinyin.deb

그런 다음 dpkg를 통해 패키지를 제거하려고 시도했는데 다음 오류가 발생했습니다.

littlewhole@pop-os:~$ sudo dpkg -r sougoupinyin
dpkg: warning: ignoring request to remove sougoupinyin which isn't installed

이 시점에서 나는 askubuntu에 가서 다른 사람이 비슷한 문제를 겪고 있는지 확인하고 해결하기로 결정했습니다. 이 명령을 실행하면 문제가 해결되었음을 나타내는 답변을 찾았습니다.

sudo rm -rf /var/lib/dpkg/info/sougoupinyin.*
sudo rm -rf /usr/share/sougoupinyin
sudo rm -rf /etc/default/sougoupinyin
sudo rm -rf /etc/init.d/sougoupinyin
sudo apt purge sougoupinyin

나는 이것을 실행하기로 결정했습니다. rm 작업이 성공적으로 완료되었지만 apt purge다시 오류가 발생했습니다.

littlewhole@pop-os:~$ sudo apt purge sougoupinyin
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package sogoupinyin needs to be reinstalled, but I can't find an archive for it.

더 많은 질문과 답변을 찾아본 후 시도해 보기로 결정했지만 sudo apt-get -f install아쉽게도 또 다른 오류가 발생했습니다.

littlewhole@pop-os:~$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package sogoupinyin needs to be reinstalled, but I can't find an archive for it.

마침내 나는 그것을 시도했다 sudo dpkg --remove --force-remove-reinstreq sougoupinyin. 하지만 이 경우에도 오류가 발생합니다.

littlewhole@pop-os:~$ sudo dpkg --remove --force-remove-reinstreq sougoupinyin
dpkg: warning: ignoring request to remove sougoupinyin which isn't installed

이 시점에서 내 시스템은 "이 패키지가 있으므로 다시 설치해야 합니다."와 "이 패키지가 설치되지 않았습니다." 사이의 중간 상태에 있습니다. dpkg를 통해 동일한 .deb를 다시 설치하려고 시도했지만 여전히 오류가 발생합니다.

littlewhole@pop-os:~$ sudo dpkg -i '/home/littlewhole/sogoupinyin.deb' 
(Reading database ... 235083 files and directories currently installed.)
Preparing to unpack .../littlewhole/sogoupinyin.deb ...
Unpacking sogoupinyin (2.2.0.0108) over (2.2.0.0108) ...
/var/lib/dpkg/info/sogoupinyin.postrm: 8: local: debian": bad variable name
dpkg: warning: old sogoupinyin package post-removal script subprocess returned error exit status 2
dpkg: trying script from the new package instead ...
/var/lib/dpkg/tmp.ci/postrm: 8: local: debian": bad variable name
dpkg: error processing archive /home/littlewhole/sogoupinyin.deb (--install):
 new sogoupinyin package post-removal script subprocess returned error exit status 2
/var/lib/dpkg/tmp.ci/postrm: 8: local: debian": bad variable name
dpkg: error while cleaning up:
 new sogoupinyin package post-removal script subprocess returned error exit status 2
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for libglib2.0-0:i386 (2.64.2-1~fakesync1) ...
Processing triggers for libglib2.0-0:amd64 (2.64.2-1~fakesync1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for shared-mime-info (1.15-1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Errors were encountered while processing:
 /home/littlewhole/sogoupinyin.deb

이제 apt이러한 오류로 인해 방해를 받고 있습니다. 통과할 수 없습니다 apt. 이것은 분명히 문제입니다. 이 패키지를 다시 설치하거나 제거할 수 없으며 작동하지 않습니다 apt. 어떻게 해야 합니까?

답변1

메시지에서 알 수 있듯이 /var/lib/dpkg/info/sogoupinyin.postrm사후 프로그램을 삭제하는 8행에 문제가 있습니다.

자신이 있다면 이 파일을 루트로 편집하여 문제를 해결할 수도 있고, 문제가 없다고 확신한다면 잘못된 줄에 주석을 달 수도 있습니다.

그러면 apt-get remove sogoupinyin작동할 것입니다.

관련 정보