Linux

由於缺少/損壞(虛擬)軟體包而無法安裝

  • December 25, 2009

首先:我來自stackoverflow——我是一名程序員,而不是系統管理員。請理解我在這些事情上的無能;我會盡量做到準確(重新標記和重新命名可能是合適的)。

我有一個依賴情況,我無法僅在 Debian Etch 系統上弄清楚。

我被要求對一個 php 應用程序進行一些維護工作;因為我需要這個locales包,所以我嘗試了我認為最簡單的方法:apt-get install locales,由於未滿足與虛擬 glibc 包的依賴關係而失敗。據我了解,這是由混合來源引起的(所有軟體包都已升級)

我問aptitude install locales他是否可以解決問題,他做到了(某些軟體包已降級),但 aptitude 本身已被刪除。

沒有討論:這對我來說是一件愚蠢的事情。但是伺服器仍然在愉快地執行(感謝 Debian!),所以情況並不嚴重。

問題是:包裹的情況看起來並沒有解決。如果我嘗試重新安裝 aptitude,這就是我得到的:

lsrl:~# apt-get install aptitude
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 aptitude: Depends: libapt-pkg-libc6.3-6-3.11
E: Broken packages

如果我嘗試安裝 libapt:

lsrl:~# apt-get install libapt-pkg-libc6.3-6-3.11
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package libapt-pkg-libc6.3-6-3.11 is a virtual package provided by:
You should explicitly select one to install.
E: Package libapt-pkg-libc6.3-6-3.11 has no installation candidate

如果我嘗試重新安裝 apt:

lsrl:~# apt-get --reinstall install apt
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Reinstallation of apt is not possible, it cannot be downloaded.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

我的消息來源:

lsrl:~# cat /etc/apt/sources.list
# 
# deb cdrom:[Debian GNU/Linux 4.0 r4a-etchnhalf _Etch-and-a-half_ - Official i386 NETINST 20080804-22:00]/ etch main

#deb cdrom:[Debian GNU/Linux 4.0 r4a-etchnhalf _Etch-and-a-half_ - Official i386 NETINST 20080804-22:00]/ etch main

deb http://ftp.it.debian.org/debian/ etch main contrib non-free
deb-src http://ftp.it.debian.org/debian/ etch main contrib non-free
# deb http://ftp.it.debian.org/debian/ testing main contrib non-free
# deb-src http://ftp.it.debian.org/debian/ testing main contrib non-free

deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile etch/volatile main
deb-src http://volatile.debian.org/debian-volatile etch/volatile main

這與 glibc 之前發生的情況非常相似,以至於我有理由相信仍然有一些混合的源/包……有嗎?

有什麼辦法可以讓這一切正常工作嗎?

在 etch 上,apt 包應該提供 libapt-pkg-libc6.3-6-3.11,但在您的情況下似乎並非如此。你能檢查一下你的 apt 是否提供了它嗎?

apt-cache show apt | grep "Provides:"

然後,它說apt無法下載。您確定apt-get update在嘗試安裝命令之前執行了嗎?如果您的 sources.list 之前被破壞然後修復,則只有在更新 apt 記憶體後才會考慮這些更改。

您是否嘗試過不帶參數的“apt-get -f install”?

從 apt-get 手冊頁:

-f, –fix-broken 修復;嘗試糾正存在損壞依賴關係的系統

引用自:https://serverfault.com/questions/94896