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 削除時にプリンターデーモンを(再)起動しようとしているようですが、Ubuntuが代わりにCUPSを使用しているため機能しません。CUPS互換のプリンタードライバーを探す必要があります。JorgeCastroの回答のリンクを参照してください。(これはパッケージのバグだと思います。lpd無条件にサービスを再起動するのではなく、すでに実行されている場合は再ロードするだけです。)

次に進むのに最適なオプションは、このランチパッドの回答です。

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

これにより、lpdサービスが検索されるときに、CUPSが効果的に(再)起動されます。

それ以外の場合は、2つのオプションしか表示されません。どちらもかなり不愉快です。

  1. /var/lib/dpkg/info/brmfc7340lpr.postrmスクリプトを編集して、呼び出し中の行/etc/init.d/lpd start (またはrestartor stop)をコメント化します(たとえば、単にで置き換えます/bin/true)。別のオプションはexit 0、スクリプトの最初の非コメント行として配置することです。これは私のお気に入りですが、シェルスクリプトの編集には少し自信が必要です。

  2. インストールlprbrmfc6340lprパッケージのパージ、パージlprlprデフォルトのUbuntuプリンタースプーリングシステムCUPS と競合するため、これには少し注意が必要です。

    a。sudo aptitude install lpr(これは、削除されcups-bsdかつ ubuntu-desktop副作用として)

    b。sudo aptitude purge brmfc7340lpr lpr(今はうまくいくはずです)

    c。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

リカルドの解決策はうまくいくはずです、私は問題がここにあると思います:

start: Unknown job: lpd

推測1:debが実行されておらずエラーが発生していないサービスを再起動しようとしているようです。lprリポジトリからパッケージをインストールしてから、debをインストールしてみて、それが機能するかどうかを確認してください。

推測2:兄弟7340プリンター用のWebサイトから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のいずれかになりますがpreinstpostinstprermpostrm

これは、不十分に記述されたパッケージがもたらす可能性のある大混乱の例です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.