以下包裹已被退回

以下包裹已被退回

我正在運行 64 位元 Debian Wheezy。最近,當我這樣做時,apt-get upgrade我得到了這個:

The following packages have been kept back:
  libsmbclient libtevent0 samba-libs

這讓我瘋狂。我雖然我只是刪除了 samba,因為我無論如何也不使用它,但是一些天才讓 Gnome 依賴它:

# apt-get remove libsmbclient
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  gnome gnome-core gvfs-backends libgnomevfs2-extra libsmbclient mencoder mplayer

如何安全地升級這些軟體包?

沒有安裝太多自訂的東西:

deb http://ftp.pl.debian.org/debian/ wheezy main 
deb-src http://ftp.pl.debian.org/debian/ wheezy main 

deb http://security.debian.org/ wheezy/updates main 
deb-src http://security.debian.org/ wheezy/updates main 

# wheezy-updates, previously known as 'volatile'
deb http://ftp.pl.debian.org/debian/ wheezy-updates main 
deb-src http://ftp.pl.debian.org/debian/ wheezy-updates main 

# wheezy-backports
deb http://ftp.pl.debian.org/debian/ wheezy-backports main contrib non-free

# virtualbox
deb http://download.virtualbox.org/virtualbox/debian/ wheezy contrib

[更新]

我嘗試過的:

  1. apt-get dist-upgrade- 結果是一樣的(包裹已被保留)。
  2. 使用過aptitude,但它建議的是刪除 gnome 和其他一些 gnome 相關軟體包並安裝大量 i386 軟體包(看起來只是庫)。
  3. apt-get install libsmbclient給出libsmbclient : Depends: samba-libs (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
  4. apt-get install libtevent0給出libtevent0 : Depends: libtalloc2 (>= 2.1.0) but 2.0.7+git20120207-1 is to be installed.
  5. apt-get install samba-libs給出samba-libs : Depends: samba-dsdb-modules (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed

[更新2]

看來這個問題的根源在於向後移植儲存庫中的某個地方。我曾經嘗試過 bumblebee 和一些 DVD 翻錄的東西,我記得我必須從向後移植安裝一些東西。我不再需要它了。無論如何,Bumblebee 在我的硬體上失敗了,DVD 最終在 Windows 上被撕掉了:(

現在我做到了aptitude search '~S ~i ~Abackports'並得到了這個:

i   initramfs-tools                   - generic modular initramfs generator
i A libavutil53                       - Libav utility library
i   libldb1                           - LDAP-like embedded database - shared library
i A libnettle4                        - low level cryptographic library (symmetric and one-way cryptos)
i A libntdb1                          - New Trivial Database - shared library
i A libopus0                          - Opus codec runtime library
i   libswscale2                       - Libav video scaling library
i A libtdb1                           - Trivial Database - shared library
i A libwbclient0                      - Samba winbind client library
i A python-talloc                     - hierarchical pool based memory allocator - Python bindings
i   samba-common                      - common files used by both the Samba server and client

我認為我應該降級這些軟體包,一切都會好起來的。我對嗎?我該怎麼做呢?

[更新3]

我嘗試從反向移植儲存庫中刪除或降級這些軟體包,但僅部分完成。

當我想降級時,libntdb1我意識到它不存在於穩定回購中。當我再次嘗試刪除它時,apt 也想刪除 gnome。當我這樣做時,apt-cache rdepends libntdb1結果發現只有反向依賴才是samba-libs。穩定的存儲庫中也沒有它samba-libs,而且我也無法刪除它,因為它再次嘗試刪除 gnome 和很多東西。這到底是怎麼回事?請注意,我這樣samba-libs做時沒有列出aptitude search '~S ~i ~Abackports'。如何擺脫這個東西?

另外,當我嘗試降級libldb1libwbclient0無法降級時,因為apt在這兩種情況下都想刪除 gnome。為什麼?

所以現在我最終得到了來自 backports repo 的三個軟體包,其中列出了aptitude search '~S ~i ~Abackports'

i   libldb1              - LDAP-like embedded database - shared library
i A libntdb1             - New Trivial Database - shared library
i A libwbclient0         - Samba winbind client library

並且samba-libs顯然也來自向後移植,但未列出aptitude search '~S ~i ~Abackports'

答案1

可以使用以下命令將 deb 套件降級到特定的儲存庫apt

# apt-get install libsmbclient/wheezy libtevent0/wheezy samba/wheezy
  • 「[package]/wheezy」結構意味著使用者想要來自 wheezy 儲存庫的套件僅有的而且不是最新的。
  • 指定很重要全部一次獲取所需的軟體包,以便apt可以正確解決依賴關係並拉取其他令人驚嘆的軟體包。

如果apt沒有提示刪除您想要保留的重要包,那就可以了。應該有一些關於依賴性問題的警告,但是只要它們不是致命的,您就可以安全地忽略這些警告。

降級成功後,不再需要libtevent0、libldb1等函式庫。您可以使用apt-get --purge autoremove和/或deborphan(如果已安裝)來尋找和清理對系統無用的孤立軟體包。

(我之前的答案將作廢,很快就會刪除,無論如何它都是不正確的 - 可以降級apt

答案2

我使用 aptitude 的互動式套件求解器:

跑步sudo aptitude。然後輸入U(即大寫 u)表示您想要全部升級。它會告訴你有衝突,並會提出解決方案。使用e進入互動式求解器,然後.(點)和,(逗號)迭代它將找到的不同解決方案,然後!接受其中一個解決方案。

您也可以嘗試幫助它找到更好的解決方案(為您),方法是轉到解決方案的一部分(例如,它建議刪除 gnome),並告訴它您想要接受(使用A)或拒絕(使用R)它做到了。

答案3

最快、最簡單的解決方案:

您必須單獨安裝每個軟體包。

看到這個超級用戶解決方案: apt包被退回的解決辦法

警告: 別跑 sudo apt-get dist-upgrade直到您完全安裝了需要安裝的軟體包之後。之後,只有在那之後,你才能運行sudo apt-get update&sudo apt-get dist-upgrade

答案4

打開終端機並輸入:

apt-cache rdepends packagename

並替換包裹名字與您想要刪除的軟體包一起,它將列出需要您嘗試刪除的軟體包的軟體包,首先刪除這些軟體包,然後嘗試刪除實際的軟體包。

相關內容