我一直试图在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 存在。< / p>
我该如何解决?
我的目标是让r-base
安装。
如果我能以某种方式使它使用版本&#34; 2&#34;文件而不是&#34; 1&#34;它可能会找到文件并快乐地进行,但我不确定如何使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-base
或r-base-dev
个包没有太大关系,即使r-base-dev
偶然取决于libpng12
。
答案 0 :(得分:1)
在我看来,这个问题可能会在几天内解决。但是,如果你不能等待,这就是你能做的。
首先,找出要安装的软件包的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
本身不依赖于libpng
,但r-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-base
安装apt-get install r-base
。但是如果dpkg
拒绝安装libpng
你不应该强迫它,因为它意味着
package不可安装,它会破坏其他依赖项。