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

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

我收到一个 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% 

答案1

您可以随时使用以下命令(重新)安装软件包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 的打印机驱动程序——请参阅 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 (或restartstop),(例如,只需将其替换为/bin/true)。另一个选择是将其exit 0作为脚本中的第一个非注释行。这是我最喜欢的,但需要对编​​辑 shell 脚本有一点信心。

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

    a. sudo aptitude install lpr(这将消除cups-bsdubuntu-desktop副作用)

    b. sudo aptitude purge brmfc7340lpr lpr(现在就可以工作了)

    c. sudo aptitude install cups-bsd ubuntu-desktop(将系统恢复到原始状态)

答案2

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

start: Unknown job: lpd

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

猜测 2:这听起来像您正在尝试从网站为兄弟 7340 打印机安装 deb:这一页如果你想把它分成另一个问题,这可能是一个很好的起点。

答案3

实际上,我也遇到了同样的问题。原来我遵循了一些不相关的信息,并创建了一个/etc/init.d/lpd文件作为软链接。/etc/init.d/cups 脚本.postrm检查 lpd,如果存在,则尝试启动该服务。在我删除 init.d 目录中的软链接 lpd 文件后,软件包的安装和删除恢复正常。

答案4

这里的问题似乎是该软件包已成功安装一半,但现在其维护脚本全部失败(由于无法启动 lpd 服务)。

您应该能够通过编辑文件/var/lib/dpkg/info/brmfc7340lpr.postrm并注释掉(通过在行#首添加)尝试启动 lpd 的行(或注释掉所有内容)来解决这个问题。然后您应该能够运行dpkg --configure -a以正确安装软件包,然后才能将其删除。

您可能需要编辑更多的软件包维护者脚本才能删除该软件包 - 它们都将在 中/var/lib/dpkg/info/,并且它们将被命名为其中brmfc7340lpr.X可以Xpreinst、、、postinst之一。prermpostrm

这是一个说明编写不当的软件包可能造成何种程度的破坏的例子。

相关内容