解决报错:’The package xxx needs to be reinstalled, but I can’t find an archive for it.’

操作环境

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

报错背景

我之前使用添加 PPA 源的方式尝试安装过 Sublime Text 3, 但是由于网络环境的问题没有安装成功,因此我终止了安装进程并删除了为其配置的 PPA 源。但是,之后我在使用 apt-get install xxx 安装其他软件时却出现了如下错误提示:

E: The package sublime-text-installer needs to be reinstalled, but I can't find an archive for it.

例如:

master@ubuntu:~$ sudo apt-get install calibre
[sudo] password for master: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: The package sublime-text-installer needs to be reinstalled, but I can't find an archive for it.

解决过程

报错说 sublime-text-installer 这个软件包需要被重新安装,但是系统却找不到有关存档文件了。

在 Ubuntu 系统中,我们通常有两种方式安装一个软件,一种是使用 dpkg, 使用这种方式要求我们拥有相应软件包的 .deb 格式文件,而且 dpkg 在安装过程中不会自动解决软件的依赖关系,如果需要解决依赖关系,她只会把这些依赖关系打印到终端上,让操作者自己判断。而 apt-get 则是一个自动化的软件包管理器,不需要使用 .deb 格式的安装包即可安装,而且安装过程中还能够自动解决依赖关系。apt-get 是基于 dpkg 实现的一款软件包管理器,因此,在尝试解决使用 apt-get 过程中出现的问题时,可能需要去修改和 dpkg 有关的配置文件。

我们使用 VIM 打开 /var/lib/dpkg/status 这个文件,该文件包含系统中执行过安装操作的软件的安装状态。那些成功完成安装的软件会显示 “Status: install ok installed”, 例如:

Package: wget
Status: install ok installed
Priority: important
Section: web
Installed-Size: 884
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Multi-Arch: foreign
Version: 1.17.1-1ubuntu1.5
...

但是当我们搜索 “sublime-text-installer” 时却找到:

Package: sublime-text-installer
Status: install reinstreq half-installed
Priority: extra
Section: misc
Architecture: all
Version: 3126-2~webupd8~1

由状态信息中的 “half-installed” 我们知道,”sublime-text-installer” 的安装过程并没有正常完成。

此时,先对 /var/lib/dpkg/status 进行一个备份:

sudo cp -p /var/lib/dpkg/status status.bak0

然后删除 /var/lib/dpkg/status 文件中的这段信息:

Package: sublime-text-installer
Status: install reinstreq half-installed
Priority: extra
Section: misc
Architecture: all
Version: 3126-2~webupd8~1

保存退出后,再使用 apt-get 安装程序时没有发生报错,程序可以正常完成安装。

至此,问题解决。

EOF

发表评论

电子邮件地址不会被公开。 必填项已用*标注