Debian

由於安裝了稍微太新的軟體包而導致的未滿足的依賴關係

  • August 22, 2018

當我嘗試apt-get upgrade(是的,我先進行了更新)時,我得到以下資訊:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
python-samba : Depends: libwbclient0 (= 2:4.5.12+dfsg-2+deb9u2) but 2:4.5.12+dfsg-2+deb9u3 is installed
               Depends: samba-libs (= 2:4.5.12+dfsg-2+deb9u2) but 2:4.5.12+dfsg-2+deb9u3 is installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

所以罪魁禍首似乎libwbclient0是顛覆中需要deb9u2但顯然安裝在deb9u3. 當我嘗試按照刪除腳本--fix-broken的建議執行時,apt-get似乎由於缺少包maketrans而崩潰,後來ConfigParser

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
 python-samba
Suggested packages:
 python-gpgme
The following packages will be upgraded:
 python-samba
1 upgraded, 0 newly installed, 0 to remove and 91 not upgraded.
1 not fully installed or removed.
Need to get 0 B/1,364 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Reading changelogs... Done
(Reading database ... 567338 files and directories currently installed.)
Preparing to unpack .../python-samba_2%3a4.5.12+dfsg-2+deb9u3_amd64.deb ...
Traceback (most recent call last):
 File "/usr/bin/pyclean", line 32, in <module>
   from debpython.namespace import add_namespace_files
 File "/usr/share/python/debpython/namespace.py", line 28, in <module>
   from debpython.pydist import PUBLIC_DIR_RE
 File "/usr/share/python/debpython/pydist.py", line 27, in <module>
   from string import maketrans
ImportError: cannot import name 'maketrans'
dpkg: warning: subprocess old pre-removal script returned error exit status 1
dpkg: trying script from the new package instead ...
Traceback (most recent call last):
 File "/usr/bin/pyclean", line 32, in <module>
   from debpython.namespace import add_namespace_files
 File "/usr/share/python/debpython/namespace.py", line 28, in <module>
   from debpython.pydist import PUBLIC_DIR_RE
 File "/usr/share/python/debpython/pydist.py", line 27, in <module>
   from string import maketrans
ImportError: cannot import name 'maketrans'
dpkg: error processing archive /var/cache/apt/archives/python-samba_2%3a4.5.12+dfsg-2+deb9u3_amd64.deb (--unpack):
subprocess new pre-removal script returned error exit status 1
Traceback (most recent call last):
 File "/usr/bin/pycompile", line 35, in <module>
   from debpython.version import SUPPORTED, debsorted, vrepr, \
 File "/usr/share/python/debpython/version.py", line 24, in <module>
   from ConfigParser import SafeConfigParser
ImportError: No module named 'ConfigParser'
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
/var/cache/apt/archives/python-samba_2%3a4.5.12+dfsg-2+deb9u3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

我在使用核心的 debian stretch 9.4: Linux 3.10-2-amd64 #1 SMP Debian 3.10.7-1

在我自己的嘗試失敗並且我無法在網上找到任何解決此問題的方法後,我要求aptitudesynaptic試一試。兩人都嘗試過,但也失敗了。

我什至不需要 samba,所以擺脫它會很好,但apt在我不修復損壞的包之前不想刪除任何東西:

package is in a very bad inconsistent state; you should
reinstall it before attempting a removal
ImportError: cannot import name 'maketrans'

是一個 Python 3 錯誤,它是由於嘗試maketrans像在 Python 2 程式碼中那樣導入而導致的。這意味著/usr/bin/python在您的系統中有一個 Python 3 解釋器;這破壞了 Debian 衍生產品。

要解決這個問題,假設python2.7仍然安裝,您需要修復/usr/bin/python符號連結,使其指向/usr/bin/python2.7

sudo ln -s python2.7 /usr/bin/python

引用自:https://unix.stackexchange.com/questions/464113