apt-get install 失败并出现 Not Found 错误,因为软件包已从存储库中删除

apt-get install fails with Not Found error because package removed from repository

我一直在尝试在 Ubuntu Trusty Tahr 上安装包 r-base,上周有一个包依赖性被破坏了。

我的命令如下:

apt-get update -y
apt-get dist-upgrade -y
apt-get install -y r-base-dev
...
Err http://archive.ubuntu.com/ubuntu/ trusty-security/main libpng12-dev amd64 1.2.50-1ubuntu2.14.04.1
  404  Not Found [IP: 91.189.91.23 80]
Fetched 92.8 MB in 28s (3262 kB/s)
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-dev_1.2.50-1ubuntu2.14.04.1_amd64.deb  404  Not Found [IP: 91.189.91.23 80]

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
The command '/bin/sh -c sudo apt-get install -y r-base-dev' returned a non-zero code: 100

我已经尝试通过 --fix-missing--ignore-missing,但仍然失败。

由于安全补丁,该软件包似乎已于 2016 年 1 月 8 日删除:https://launchpad.net/ubuntu/+archive/primary/+sourcepub/5711916/+listing-archive-extra

查看 http://archive.ubuntu.com/ubuntu/pool/main/libp/libpng/ 确认 ubuntu2.14.04.1 文件不存在,但 1.2.50-1ubuntu2.14.04.2 存在。

我该如何解决? 我的目标是安装 r-base

如果我能以某种方式让它使用版本“2”文件而不是“1”,它可能会找到该文件并愉快地继续,但我不确定如何让 apt-get 做到这一点。

或者,也许可以更新我这边的依赖列表?还是由 r-base 维护者来决定?

或者第三,是否可以添加一个仍然有旧包的存储库?我不是 运行 在 AMD 处理器上,所以我不应该在运行时需要这个特定的包。

更新: 对我有用的解决方案是明确删除依赖关系损坏的包,下载更新版本,然后在 运行 apt-get update.

之前重新安装它
$ apt-get remove -y libpng12-0
$ curl -O http://archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.50-1ubuntu2.14.04.2_amd64.deb
$ dpkg -i libpng12-0_1.2.50-1ubuntu2.14.04.2_amd64.deb
$ apt-get update -y

这个问题显然与 r-baser-base-dev 软件包没有太大关系,即使 r-base-dev 偶然依赖于 libpng12.

在我看来,这个问题可能会在几天内自行解决。但是,如果您等不及了,您可以执行以下操作。

首先,找出libpng您要安装的软件包所依赖的版本。

$ apt-cache depends r-base
r-base
  Depends: r-base-core
  Depends: r-recommended
  Recommends: r-base-html
  Recommends: r-doc-html
  Suggests: ess
 |Suggests: r-doc-info
  Suggests: r-doc-pdf

r-base 本身不依赖于 libpngr-base-core 可能依赖于

$ apt-cache depends r-base-core | grep png
  Depends: libpng12-0

现在我们想知道具体是哪个版本libpng

$ apt-cache show r-base-core
... libpng12-0 (>= 1.2.13-4) ...

如果您在 Ubuntu 的存储库中找到这个包,您可以 下载并尝试手动安装。

$ wget <url>
$ sudo dpkg -i <filename>

然后安装 r-baseapt-get install r-base。但是,如果 dpkg 拒绝安装 libpng 你不应该强迫它,因为这意味着 软件包不可安装,它会破坏其他依赖项。