如何修复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清除不起作用,也不起作用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

Answers:


13

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

dpkg --install local-file.deb

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

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

--force-depends如果其他软件包依赖于,则在清除过程中可能需要添加option 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冲突,因此需要引起注意。

    一个。sudo aptitude install lpr(这将删除cups-bsdubuntu-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进行安装。
罗曼·泰切

5

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

start: Unknown job: lpd

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

猜猜2:听起来您正在尝试从网站上为Brother 7340打印机安装Deb:如果要将其分解为另一个问题,则此页面可能是一个不错的起点。


/etc/init.d/lpd开始开始:未知工作:lpd
Roman A. Taycher 2010年

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

这是一个糟糕的程序包可能造成的破坏的例子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.