Ubuntu 22.04
今天当我发出
sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
unixodbc : Depends: odbcinst1debian2 (>= 2.3.11) but it is not installed
Depends: libodbc1 (>= 2.3.11) but 2.3.9-5 is installed
unixodbc-dev : Depends: odbcinst1debian2 (= 2.3.11) but it is not installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
然后按照建议得到
sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following package was automatically installed and is no longer required:
libodbccr2
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
libodbc1 odbcinst odbcinst1debian2
Suggested packages:
unixodbc-bin
The following NEW packages will be installed:
odbcinst1debian2
The following packages will be upgraded:
libodbc1 odbcinst
2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
3 not fully installed or removed.
Need to get 0 B/607 kB of archives.
After this operation, 863 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 725562 files and directories currently installed.)
Preparing to unpack .../odbcinst_2.3.11_amd64.deb ...
Unpacking odbcinst (2.3.11) over (2.3.9-5) ...
dpkg: error processing archive /var/cache/apt/archives/odbcinst_2.3.11_amd64.deb (--unpack):
trying to overwrite '/etc/odbc.ini', which is also in package unixodbc-common 2.3.9-5
Preparing to unpack .../odbcinst1debian2_2.3.11_amd64.deb ...
Unpacking odbcinst1debian2:amd64 (2.3.11) ...
dpkg: error processing archive /var/cache/apt/archives/odbcinst1debian2_2.3.11_amd64.deb (--unpack):
trying to overwrite '/usr/lib/x86_64-linux-gnu/libodbcinst.so.2.0.0', which is also in package libodbcinst2:amd64 2.3.9-5
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Preparing to unpack .../libodbc1_2.3.11_amd64.deb ...
Unpacking libodbc1:amd64 (2.3.11) over (2.3.9-5) ...
dpkg: error processing archive /var/cache/apt/archives/libodbc1_2.3.11_amd64.deb (--unpack):
trying to overwrite '/usr/lib/x86_64-linux-gnu/libodbc.so.2.0.0', which is also in package libodbc2:amd64 2.3.9-5
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/odbcinst_2.3.11_amd64.deb
/var/cache/apt/archives/odbcinst1debian2_2.3.11_amd64.deb
/var/cache/apt/archives/libodbc1_2.3.11_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
如何走出这个洞?
我没有问题清除任何包来解决这个问题。这正是阻碍 Linux 大规模采用的边缘案例。我的直觉告诉我要保持低调,直到冒犯包所有者将他们的修复推到上游。
我尝试了很多猜测,包括……无济于事……建议?
sudo apt-get autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
unixodbc : Depends: odbcinst1debian2 (>= 2.3.11) but it is not installed
Depends: libodbc1 (>= 2.3.11) but 2.3.9-5 is installed
unixodbc-dev : Depends: odbcinst1debian2 (= 2.3.11) but it is not installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
这些命令允许我删除有问题的包
以前下一个命令失败现在它的工作
您的输出表明您有两个包,
libodbc1
它们libodbc2
试图提供相同的文件 (libodbc.so.2.0.0
)。那很糟。换句话说,这两个包是不兼容的。不强制只能安装其中一个(
--force-overwrite
)。只有有经验的用户(比如你)应该冒险强制,并记录你这样做的地方——卸载 A 可能需要重新安装 B。没有经验的用户不应尝试使用 deb 包安装两者。从源代码安装一个,或使用不同的包系统,可能更可取。