
我正在運行 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
[更新]
我嘗試過的:
apt-get dist-upgrade
- 結果是一樣的(包裹已被保留)。- 使用過
aptitude
,但它建議的是刪除 gnome 和其他一些 gnome 相關軟體包並安裝大量 i386 軟體包(看起來只是庫)。 apt-get install libsmbclient
給出libsmbclient : Depends: samba-libs (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
apt-get install libtevent0
給出libtevent0 : Depends: libtalloc2 (>= 2.1.0) but 2.0.7+git20120207-1 is to be installed
.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'
。如何擺脫這個東西?
另外,當我嘗試降級libldb1
但libwbclient0
無法降級時,因為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
並替換包裹名字與您想要刪除的軟體包一起,它將列出需要您嘗試刪除的軟體包的軟體包,首先刪除這些軟體包,然後嘗試刪除實際的軟體包。