손상된 패키지 제거

손상된 패키지 제거

최근에 phpmyadmin 설정에 대한 불만으로 인해 처음부터 시작하기로 결정했습니다.

안타깝게도 제거 단계에서 당시에는 갖고 있지 않았던 mysql의 루트 비밀번호를 묻는 메시지가 표시되었습니다. 데이터베이스 커넥터를 적절하게 정리할 수 없기 때문에 잔여 구성 요소가 있다는 것을 알려주는 것으로 충분합니다.

집에 돌아와서 패키지를 제거하려고 시도했지만 phpmyadmin을 보는 것보다 더 잘 작동하지 않는 것을 aptitude purge발견 aptitude remove하고 제거하려고 시도했지만 패키지와 관련된 디렉토리가 이전 시도에서 제거되었기 때문에 실패했습니다.

phpmyadmin을 다시 설치해 보았지만 적성은 사용 가능한 업데이트가 없다고 말하고 아무것도 하지 않았습니다. 업데이트가 있었다면 아마도 동일한 문제가 발생했을 것입니다.

이 시점에서 나는 mysql을 정리하고 사용 중이던 데이터베이스를 삭제한 다음 사용자 테이블에서 지웠습니다. 그러나 패키지에 무엇이 더 남아 있는지, 적성의 후크를 청소하는 방법조차 모릅니다.

결과dpkg --purge

ickronia:/home/ken# dpkg --purge phpmyadmin
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--purge):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
phpmyadmin

Gile의 제안에 따라 종속성 dbconfig-common을 다시 설치해 보았습니다.

ickronia:/home/ken# aptitude reinstall dbconfig-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
dbconfig-common is not currently installed, so it will not be reinstalled.
dbconfig-common is not currently installed, so it will not be reinstalled.
The following packages are BROKEN:
  phpmyadmin
0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
The following packages have unmet dependencies:
  phpmyadmin: Depends: php5-mcrypt but it is not installable
              Depends: dbconfig-common but it is not installable
              Depends: libjs-mootools (>= 1.2.4.0~debian1-1) which is a virtual  package.
The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] y
The following packages will be REMOVED:
  phpmyadmin{a}
0 packages upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 17.7MB will be freed.
Do you want to continue? [Y/n/?] y
Writing extended state information... Done
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--remove):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 phpmyadmin
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done

ickronia:/home/ken#

phpmyadmin이 dbconfig-common을 깔끔하게 지운 것 같습니다.

ickronia:/usr/share/dbconfig-common# ls -alF
total 12
drwxr-xr-x  3 root root 4096 2011-02-09 08:09 ./
drwxr-xr-x 98 root root 4096 2011-01-20 21:42 ../
drwxr-xr-x  3 root root 4096 2011-01-05 11:08 data/
ickronia:/usr/share/dbconfig-common#

Giles가 제안한 대로 아카이브에서 dpkg를 제거해 보세요.

ickronia:/usr/share/dbconfig-common# dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb
Selecting previously deselected package dbconfig-common.
(Reading database ... 27161 files and directories currently installed.)
Unpacking dbconfig-common (from .../dbconfig-common_1.8.46_all.deb) ...
Selecting previously deselected package php5-mcrypt.
Unpacking php5-mcrypt (from .../php5-mcrypt_5.3.3-6_i386.deb) ...
Selecting previously deselected package libjs-mootools.
Unpacking libjs-mootools (from .../libjs-mootools_1.2.5~debian1-2_all.deb) ...
Setting up dbconfig-common (1.8.46) ...
dpkg: dependency problems prevent configuration of php5-mcrypt:
 php5-mcrypt depends on libltdl7 (>= 2.2.6b); however:
  Package libltdl7 is not installed.
 php5-mcrypt depends on libmcrypt4; however:
  Package libmcrypt4 is not installed.
dpkg: error processing php5-mcrypt (--install):
 dependency problems - leaving unconfigured
Setting up libjs-mootools (1.2.5~debian1-2) ...
Processing triggers for man-db ...
Processing triggers for libapache2-mod-php5 ...
Reloading web server config: apache2.
Errors were encountered while processing:
 php5-mcrypt
ickronia:/usr/share/dbconfig-common#

저는 PHP로 실행되는 웹 서버를 가지고 있지만 이 문제를 해결하기 위해 가동 중지 시간을 감수할 의향이 있습니다.

답변1

phpmyadmin에 의존한다dbconfig-common, 포함하는 /usr/share/dbconfig-common/dpkg/prerm.mysql. 을(를 dbconfig-common) 제거하지 않고 성공적으로 제거한 것 같습니다 phpmyadmin. 이런 일이 발생해서는 안 됩니다(시도해 보셨나요 --force?).

내 조언은 먼저 시도해 보는 것입니다 aptitude reinstall dbconfig-common. 작동하는 경우 다시 시도할 수 있는 일관된 상태의 시스템이 있어야 합니다 aptitude purge phpmyadmin.

당신이 할 수 있는 또 다른 일은 /var/lib/dpkg/info/phpmyadmin.prerm. 이를 통해 를 제거할 수 있습니다 phpmyadmin. 나는 이러한 mysql 테이블을 수동으로 편집할 때 해당 행이 수행해야 하는 작업을 수행하고 있다고 생각하지만 phpmyadmin일반적으로 데이터베이스 관리자를 모르기 때문에 추측일 뿐입니다.

remove와 의 차이점은 프로그램과 해당 데이터 파일(다시 다운로드할 수 있는 항목)만 삭제하는 반면, 먼저 수행하면 구성 파일(로컬에서 편집했을 수 있는 항목)도 삭제된다는 점 purge입니다 . 실패 하면 실패할 것입니다 .removepurgeremoveremovepurge

답변2

때로는 패키지 관리 시스템이 너무 나빠서(일반적으로 순환 종속성 체인에서) 문제가 있는 패키지를 제거하기 위해 제가 찾은 유일한 명령 조합은 다음과 같습니다.

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • 또는dpkg --remove --force-remove-reinstreq <packagename>
  • 그런 다음 apt-get install <packagename>패키지를 다시 설치하십시오.

때로는 상태 오버레이 파일도 복구해야 할 수 있으며 위 프로세스에서 이와 관련된 오류가 발생할 수 있습니다. 상태 오버레이 파일을 수정하는 방법은 사용자에게 플래그를 지정하는 버그인지 여부에 따라 다릅니다.

일반적으로 말하면:

  • 상태 오버레이 파일은 다음 위치에 있습니다./var/lib/dpkg/statoverride
  • 다음 명령을 실행하여 업데이트할 수 있습니다.dpkg-statoverride --remove <stateoverride-filename>
  • 무엇을 하고 있는지 알고 있다면 수동으로 편집할 수도 있습니다.

답변3

(나는 당신이 인용한 명령이 존재하지 않기 때문에 당신 aptitude purge이 의미한다고 가정하고 있습니다)apt-get remove

노력하다 dpkg --purge phpmyadmin. 다른 도구보다 레벨이 낮기 때문에 이런 상황에서는 더 효과적일 수 있습니다.

답변4

이러한 문제를 해결하려면 "apt-get -f install"을 실행해야 할 수도 있습니다.

The following packages have unmet dependencies:
 postgresql-client-9.1 : Breaks: postgresql-9.1 (< 9.1.11-0ubuntu0.12.04) but 9.1.10-0ubuntu12.04 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

위의 문제가 발생했으며 "sudo dpkg --purge postgresql-9.1" 명령을 사용하여 문제가 해결되었습니다.

관련 정보