Brother MFC-7340 deb 드라이버에 의해 깨진 dpkg를 수정하는 방법


9

다음과 같은 apt-get 오류가 발생합니다.

E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.

brmfc7340lpr은 프린터 드라이버이며 로컬 deb 파일입니다. dpkg 또는 apt-get purge를 수행해도 작동하지 않습니다 apt-get install -f.

로컬 deb 파일에서 패키지를 다시 설치하려면 어떻게합니까?

산출:

box-name% sudo apt-get upgrade
[sudo] password for username: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
box-name% sudo apt-get purge brmfc7340lpr
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
box-name% sudo dpkg --purge brmfc7340lpr 
dpkg: error processing brmfc7340lpr (--purge):
 Package is in a very bad inconsistent state - you should
 reinstall it before attempting a removal.
Errors were encountered while processing:
 brmfc7340lpr
box-name% sudo dpkg --install brmfc7340lpr-2.0.2-1.i386.deb
Selecting previously deselected package brmfc7340lpr.
(Reading database ... 725204 files and directories currently installed.)
Preparing to replace brmfc7340lpr 2.0.2-1 (using .../brmfc7340lpr-2.0.2-1.i386.deb) ...
Unpacking replacement brmfc7340lpr ...
start: Unknown job: lpd
dpkg: warning: subprocess old post-removal script returned error exit status 1
dpkg - trying script from the new package instead ...
start: Unknown job: lpd
dpkg: error processing brmfc7340lpr-2.0.2-1.i386.deb (--install):
 subprocess new post-removal script returned error exit status 1
start: Unknown job: lpd
dpkg: error while cleaning up:
 subprocess new post-removal script returned error exit status 1
Errors were encountered while processing:
brmfc7340lpr-2.0.2-1.i386.deb
box-name% sudo apt-get install -f                                     
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package brmfc7340lpr needs to be reinstalled, but I can't find an archive for it.
box-name% 

질문의 이름을 바꾸고 싶을 수도 있습니다. 문제 소리가 너무 일반적입니다. 실제 질문은 로컬 deb를 다시 설치하는 방법이 아니라 매우 구체적인 문제를 처리하는 방법입니다.
— andrewsomething

답변:


13

다음을 사용하여 언제든지 패키지를 다시 설치할 수 있습니다 dpkg.

dpkg --install local-file.deb

"청정실"설치를하려면 먼저 패키지를 제거하고 다시 설치하십시오.

dpkg --purge brmfc7340lpr
dpkg --install brmfc7340lpr*.deb

--force-depends다른 패키지가에 종속 된 경우 제거 중에 옵션을 추가해야 할 수도 있습니다 brmfc7340lpr.

업데이트 : 게시 한 brmfc7340lpr대화 내용에 따라 제거 후 스크립트에서 오류가 발생 하여 패키지를 다시 설치할 수없는 것 같습니다 .

이러한 파일은 디렉토리에 저장됩니다 /var/lib/dpkg/info. 각 패키지마다 X다음 스크립트 중 하나가있을 수 있습니다.

  • X.postinst예를 들어 패키지가 제공 한 서비스를 시작하기 위해 패키지가 설치된 후 실행 됩니다.

  • X.prerm예를 들어 패키지에서 제공하는 데몬이 중지되도록 패키지 를 제거 / 퍼지 하기 전에 실행하십시오 .

  • X.postrm예를 들어, 패키지를 사용하여 서비스를 더 이상 사용할 수 없음을 선택적으로 알리기 위해 패키지를 제거한 후 실행 합니다. 예를 들어, 프린터 드라이버 패키지는 특정 드라이버에 따라 cpus / lpr에 프린터를 제거하라는 신호를 보낼 수 있습니다.

이제이 brmfc7340lpr패키지는 lpd 제거 할 때 프린터 데몬을 다시 시작하려고하는 것처럼 보입니다. 우분투는 CUPS를 대신 사용하므로 작동하지 않습니다 .CUPS 호환 프린터 드라이버를 찾아야합니다-Jorge Castro의 답변 링크를 참조하십시오. (이것은 lpd무조건 서비스를 다시 시작하지 말고 이미 실행중인 경우 다시로드 해야하기 때문에 패키지의 버그라고 생각합니다 .)

가장 좋은 옵션은 이 런치 패드 답변 에서 나옵니다 .

ln -s /etc/init.d/cpus /etc/init.d/lpd

이는 lpd서비스를 대신 검색 할 때 CUPS를 효과적으로 다시 시작 합니다.

그렇지 않으면 두 가지 옵션 만 보입니다. 두 가지 모두 불쾌합니다.

  1. /var/lib/dpkg/info/brmfc7340lpr.postrm스크립트를 편집하고 호출하는 /etc/init.d/lpd start (또는 restart또는 stop) 행을 주석 처리하십시오 (예 : 그냥로 바꾸십시오 /bin/true). 또 다른 옵션은 exit 0스크립트에서 주석이 아닌 첫 줄로 배치 하는 것입니다. 이것은 내가 가장 좋아하는 것이지만 쉘 스크립트 편집에 약간의 자신감이 필요합니다.

  2. 설치 lpr, brmfc6340lpr패키지 제거, 제거 lpr: lpr기본 Ubuntu 프린터 스풀링 시스템 CUPS와 충돌 할 때 약간의주의가 필요합니다 .

    ㅏ. sudo aptitude install lpr(이것은 제거 cups-bsd및 ubuntu-desktop부작용 등)

    비. sudo aptitude purge brmfc7340lpr lpr(지금 작동해야합니다)

    씨. sudo aptitude install cups-bsd ubuntu-desktop(시스템을 원래 상태로 복원)


dpkg --install이 작동하지 않음
— Roman A. Taycher

1
@Roman 어떤 오류 메시지가 표시됩니까? 합니까 --purge먼저 다음 --install작업을?
— Riccardo Murri

@Roman은 도움이 될만한 특정 지침으로 업데이트되었습니다. 나는 이것이 더 이상 일반적인 질문이 아니며 이름을 바꿔야한다고 andrewsomething의 의견에 동의합니다.
— Riccardo Murri

1
나는 그것을 설치하기 위해 일시적으로 lpd의 이름을 nlpdn으로 바 꾸었습니다.
— Roman A. Taycher

5

Riccardo의 솔루션이 작동해야합니다. 문제가 여기에 있다고 생각합니다.

start: Unknown job: lpd

추측 1 : deb가 실행 중이 아니며 오류가 발생한 서비스를 다시 시작하려고하는 것 같습니다. lpr리포지토리 에서 패키지를 설치 한 다음 deb를 설치하고 작동하는지 확인하십시오.

추측 2 : 형제 7340 프린터 용 웹 사이트에서 deb를 설치하려고하는 것처럼 들립니다. 이 페이지 를 다른 질문으로 나누려면 좋은 출발점이 될 수 있습니다.


/etc/init.d/lpd start start : 알 수없는 직업 : lpd
— Roman A. Taycher

3

사실, 나는 같은 문제에 부딪쳤다. 내가 관련이없는 정보를 따라 /etc/init.d/lpd파일을 소프트 링크로 파일을 만들었습니다 /etc/init.d/cups . .postrm스크립트는 lpd를 검사하고 존재하는 경우 서비스를 시작하려고합니다. init.d 디렉토리에서 소프트 링크 된 lpd 파일을 삭제 한 후 패키지 설치 및 제거가 정상으로 돌아 왔습니다.


2

여기서 문제는 패키지가 반 자체 설치 된 것으로 보이지만 lpd 서비스를 시작할 수 없기 때문에 관리자 스크립트가 모두 실패합니다.

/var/lib/dpkg/info/brmfc7340lpr.postrm파일 을 편집하고 #lpd를 시작하려는 행을 주석 처리하거나 (줄의 시작 부분 에 추가하여) 모든 것을 주석 처리 하여이 문제를 해결할 수 있어야합니다 . 그런 다음 dpkg --configure -a패키지를 제거하기 전에 패키지를 올바르게 설치 하도록 실행할 수 있어야 합니다.

당신은 패키지를 제거하기 위해 더 많은 패키지 관리자 스크립트의 편집해야 할 수도 있습니다 - 그들은 모두 있습니다 /var/lib/dpkg/info/, 그들은 같은 이름이됩니다 brmfc7340lpr.X곳 X중 하나가 될 수 있습니다 preinst, postinst, prerm, postrm.

이것은 잘못 작성된 패키지가 깨질 수있는 혼란의 예입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.