데비안에서 오래된 패키지를 삭제하는 방법은 무엇입니까?

데비안에서 오래된 패키지를 삭제하는 방법은 무엇입니까?

나는 sid를 실행 중이고 시도하는 중입니다.학년 전반에 걸쳐내 시스템이 i386에서 amd64로 바뀌었고 제거할 수 없는 일부 오래된 패키지를 발견했습니다. 배경지식: 저는 감자를 시작했을 때부터, 혹은 그보다 더 일찍부터 이 시스템을 사용했습니다.

그러한 패키지가 약 100개 있으므로 일반적이거나 스크립트 가능한 답변을 원합니다. 예는 다음과 같습니다.

bminton:/var/cache/apt/archives# dpkg --purge libstdc++2.10-dev
(Reading database ... 1352516 files and directories currently installed.)
Removing libstdc++2.10-dev (1:2.95.4-27) ...
install-info: No dir file specified; try --help for more information.
dpkg: error processing package libstdc++2.10-dev (--purge):
 subprocess installed pre-removal script returned error exit status 1
Errors were encountered while processing:
 libstdc++2.10-dev

prerm 스크립트`/var/lib/dpkg/info/libstdc++2.10-dev.prerm 스크립트에는 다음 내용이 포함되어 있습니다.

#! /bin/sh -e



install-info --quiet --remove iostream-2.95

수동으로 실행할 때 다음 오류가 발생합니다 install-info --quiet --remove iostream-2.95.

install-info: No dir file specified; try --help for more information.

답변1

dpkginstall-infoGNU 스크립트를 대체하는 나만의 스크립트가 있었습니다 . 하나변경사항에 대한 이메일패키지에 대한 제안 사항이 제공됩니다(형식 추가).

이러한 패키지는 해당 정보 파일을 배치하고 스크립트(postinst 및 prerm)가 있는 경우 스크립트를 /usr/share/info호출해야 합니다 . update-info-dir정보 패키지를 제안/추천할 수 있습니다.

따라서 제가 제안하는 것은 /var/lib/dpkg/info/libstdc++2.10-dev.prerm해당 줄을 편집(예, 편집)하고 주석 처리하는 것 입니다 install-info .... 이 오류가 발생한 다른 패키지에 대해서도 동일한 작업을 수행합니다. 패키지를 지운 후 수동으로 실행하세요 update-info-dir.

참고: 나중에 업그레이드한 후에는 시스템에서 더 이상 사용되지 않는/로컬 패키지 목록을 확인하고 필요하지 않은 경우 삭제해야 합니다. 그렇지 않으면 매우 오래된 유지관리자 스크립트를 사용하게 될 것입니다.

답변2

나는 내 자신의 명령을 만들고 install-info앞에 넣어서 /usr/bin이 문제를 해결했습니다 $PATH. 스크립트는

#!/bin/sh
/usr/bin/install-info "$@" || true

답변3

저는 Linux를 처음 접했기 때문에 이것은 아마도 나쁜 조언일 수 있지만 더 안전한 솔루션($PATH 변경 등)을 시도한 후에 나에게 효과가 있었던 유일한 방법은 이전 설치 정보를 "제거"(이름 바꾸기)하는 것뿐이었습니다.

> which install-info
/usr/bin/install-info
> mv /usr/bin/install-info install-info.bak

나는 그것이 그가 새로운 것을 사용하도록 강요했다고 생각합니다.

그 이후로 업그레이드가 매우 원활하게 진행되었습니다.

관련 정보