如何修复被 Brother MFC-7340 deb 驱动程序损坏的 dpkg

Rom*_*her 10 package-management drivers

我收到一个 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% 
Run Code Online (Sandbox Code Playgroud)

Ric*_*rri 13

您始终可以(重新)使用dpkg以下方法安装软件包:

dpkg --install local-file.deb
Run Code Online (Sandbox Code Playgroud)

为了进行“洁净室”安装,您可以先清除软件包,然后再次安装:

dpkg --purge brmfc7340lpr
dpkg --install brmfc7340lpr*.deb
Run Code Online (Sandbox Code Playgroud)

您可能需要添加选项--force-depends清除期间,如果一些其他软件包依赖brmfc7340lpr

更新:根据您发布的成绩单,似乎brmfc7340lpr无法(重新)安装该 软件包,因为其删除后脚本出错。

这些文件存储在目录中/var/lib/dpkg/info;对于每个包X,可以有以下任一脚本:

  • X.postinst安装包运行,例如启动包提供的服务。

  • X.prerm删除/清除包之前运行,例如,以确保停止包提供的守护程序。

  • X.postrm包被删除运行,例如,向可选地使用该包的任何服务发出信号,表明它不再可用。(例如,打印机驱动程序包可能希望根据特定驱动程序向 cpus/lpr 发出信号以删除打印机。)

现在,这个brmfc7340lpr包似乎lpd 在删除时尝试(重新)启动打印机守护进程,这将不起作用,因为 Ubuntu 使用 CUPS:您绝对应该寻找与 CUPS 兼容的打印机驱动程序 - 请参阅 Jorge Castro 的答案中的链接。(我认为这是包中的一个错误,因为它不应该lpd无条件地重新启动服务,而是如果它已经在运行就重新加载它。)

前进的最佳选择来自此启动板答案

ln -s /etc/init.d/cpus /etc/init.d/lpd
Run Code Online (Sandbox Code Playgroud)

这将在lpd搜索服务时有效地(重新)启动 CUPS 。

否则,我只看到两个选项,都很不愉快:

  1. 编辑/var/lib/dpkg/info/brmfc7340lpr.postrm脚本,然后注释掉调用/etc/init.d/lpd start (或restartstop)的行(例如,只需将其替换为/bin/true)。另一种选择是仅exit 0作为脚本中的第一个非注释行。这将是我的最爱,但需要对编​​辑 shell 脚本有一点信心。

  2. 安装lpr,清除brmfc6340lpr包,清除lpr:这需要一点注意,因为它lpr与默认的 Ubuntu 打印机假脱机系统 CUPS 冲突:

    一种。sudo aptitude install lpr(这将删除cups-bsdubuntu-desktop作为副作用)

    sudo aptitude purge brmfc7340lpr lpr(现在应该可以工作)

    C。sudo aptitude install cups-bsd ubuntu-desktop(将系统恢复到原来的状态)


Jor*_*tro 5

Riccardo 的解决方案应该有效,我猜问题出在这里:

start: Unknown job: lpd

猜测 1:看起来 deb 正在尝试重新启动未运行且出错的服务。尝试lpr从存储库安装软件包,然后安装 deb,看看是否有效。

猜测 2:听起来您正在尝试从网站上为兄弟 7340 打印机安装 deb:如果您想将其拆分为另一个问题,此页面可能是一个很好的起点。