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-bsdubuntu-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.XX중 하나가 될 수 있습니다 preinst, postinst, prerm, postrm.

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

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