尝试覆盖 foo,它也在软件包 bar 中 dpkg-deb:错误:粘贴子进程被信号杀死(管道断裂)

尝试覆盖 foo,它也在软件包 bar 中 dpkg-deb:错误:粘贴子进程被信号杀死(管道断裂)

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).

答案1

这些命令允许我删除有问题的软件包

之前下一个命令失败了,现在正在运行

dpkg --remove  unixodbc-dev
(Reading database ... 725562 files and directories currently installed.)
Removing unixodbc-dev (2.3.11) ...


apt-get install -f
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:
  odbcinst
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
  msodbcsql17 mssql-tools unixodbc
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 114 kB disk space will be freed.
Do you want to continue? [Y/n]
(Reading database ... 725539 files and directories currently installed.)
Removing mssql-tools (17.10.1.1-1) ...
Removing msodbcsql17 (17.10.2.1-1) ...
ODBC Driver 17 for SQL Server has been deleted (if it existed at all) because its usage count became zero
Removing unixodbc (2.3.11) ...
Processing triggers for man-db (2.10.2-1) ...


sudo apt-get autoremove -yq


sudo apt-get --fix-broken install -y



sudo dpkg -P libodbc2:amd64
dpkg: dependency problems prevent removal of libodbc2:amd64:
 libodbccr2:amd64 depends on libodbc2 (= 2.3.9-5).
 libodbc1:amd64 depends on libodbc2 (= 2.3.9-5).
 libgdal30 depends on libodbc2 (>= 2.3.1).

dpkg: error processing package libodbc2:amd64 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libodbc2:amd64




sudo dpkg -P libgdal30
dpkg: dependency problems prevent removal of libgdal30:
 libopencv-imgcodecs4.5d:amd64 depends on libgdal30 (>= 2.0.1).

dpkg: error processing package libgdal30 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libgdal30


sudo apt-get purge libopencv-*


sudo apt-get purge libodbc1

答案2

您的输出表明您有两个包,libodbc1并且libodbc2它们试图提供同一个文件 ( libodbc.so.2.0.0)。这很糟糕。

换句话说,这两个方案是不相容。只能安装其中一个而不强制安装(--force-overwrite)。只有经验丰富的用户(如您)才应该冒险强制安装,并在某处记录您这样做的情况 - 卸载 A 可能需要重新安装 B。

缺乏经验的用户不应尝试使用 deb 包安装两者。最好从源代码安装一个,或使用不同的包系统。

相关内容