Как разрешить конфликты пакетов между Ubuntu и GIMP?
В Ubuntu 18.04 (Корица) пакет cpp-7
зависит именно от версии 7.3.0-27ubuntu1~18.04
пакета gcc-7-base
:
$ aptitude why gcc-7-base
i cpp-7 Depends gcc-7-base (= 7.3.0-27ubuntu1~18.04)
Между тем, пакет libgfortran4
зависит именно от версии 7.3.0-16ubuntu3
той же упаковки gcc-7-base
:
$ apt-cache show libgfortran4
Package: libgfortran4
...
Depends: gcc-7-base (= 7.3.0-16ubuntu3), libc6 (>= 2.27), libgcc1, libquadmath0
а также libgfortran4
не будет установлен, если у меня уже установлена другая версия пакета:
$ sudo apt-get install libgfortran4
...
The following packages have unmet dependencies:
libgfortran4 : Depends: gcc-7-base (= 7.3.0-16ubuntu3) but 7.3.0-27ubuntu1~18.04 is to be installed
Depends: libquadmath0 but it is not going to be installed
cpp-7
находится в графе зависимостей ubuntu-desktop
, libgfortran4
находится в графе зависимостей gimp
, Не означает ли это, что никто не может установить GIMP из репозиториев в Ubuntu 18.04? Пожалуйста, поправьте меня, если я ошибаюсь, но я определенно не могу.
Чтобы сделать вопрос еще более сводящим с ума, apt-cache showpkg
показывает, что две разные версии gcc-7-base
приходят из того же хранилища и имеют тот же хеш MD5:
$ apt-cache showpkg gcc-7-base
Package: gcc-7-base
Versions:
7.3.0-27ubuntu1~18.04 (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_bionic_main_binary-amd64_Packages
MD5: b6e93638a6d08ea7a18929d7cf078e5d
...
7.3.0-16ubuntu3 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_bionic_main_binary-amd64_Packages)
Description Language:
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_bionic_main_binary-amd64_Packages
MD5: b6e93638a6d08ea7a18929d7cf078e5d
Это означает (опять же, поправьте меня, если я ошибаюсь), что они точно такой же код. Таким образом, здесь нет фактического конфликта зависимостей, только один из ярлыков.
Как это происходит и как это исправить? Например, есть ли способ сказать мне cpp-7
или же libgfortran4
что можно принять другую версию gcc-7-base
потому что это точно такой же код? Нужно ли привлекать сопровождающего (-ых) к пакету?
Изменить: несколько дней назад я разместил вопрос по этой теме. Текущий вопрос - это суженный результат работы, которую я проделал за это время.
Изменить: Это мои активные источники:
$ grep -Ev '(^#|^ *$|deb-src)' /etc/apt/sources.list /etc/apt/sources.list.d/*
/etc/apt/sources.list:deb http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
/etc/apt/sources.list:deb http://us.archive.ubuntu.com/ubuntu/ bionic universe
/etc/apt/sources.list:deb http://us.archive.ubuntu.com/ubuntu/ bionic multiverse
/etc/apt/sources.list:deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main
/etc/apt/sources.list.d/keybase.list:deb http://prerelease.keybase.io/deb stable main
/etc/apt/sources.list.d/keybase.list.save:deb http://prerelease.keybase.io/deb stable main
/etc/apt/sources.list.d/vscode.list~:deb [arch=amd64] http://packages.microsoft.com/repos/vscode stable main
Там комментируется deb-src
для обновлений,
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
но ничего не комментируется или не комментируется для обновлений, которые просто deb
, Должен ли я добавить строку
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
?
Редактировать: Добавление
deb http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
к моему /etc/apt/sources.list
файл, то $ sudo apt-get update
работал. GIMP установлен как положено с $ sudo apt-get install gimp
, Спасибо вам всем!
3 ответа
Этот тип проблемы обычно решается с помощью простого apt update
,
Давайте посмотрим, почему, запросив базу данных Madison для доступных 18.04 версий gcc-7-base
а также libgfortran4
,
$ rmadison gcc-7-base
gcc-7-base | 7.3.0-16ubuntu3 | bionic | amd64, arm64, armhf, i386, ppc64el, s390x
gcc-7-base | 7.3.0-27ubuntu1~18.04 | bionic-updates | amd64, arm64, armhf, i386, ppc64el, s390x
$ rmadison libgfortran4
libgfortran4 | 7.3.0-16ubuntu3 | bionic | amd64, arm64, armhf, i386, ppc64el, s390x
libgfortran4 | 7.3.0-27ubuntu1~18.04 | bionic-updates | amd64, arm64, armhf, i386, ppc64el, s390x
Ты это видишь libgfortran4
является бионической (без обновлений) версией и имеет бионическую (без обновлений) зависимость. gcc-7-base
, с другой стороны, использует более новую зависимость bionic-updates.
Существует две распространенные причины такого рода рассинхронизации между базовым репозиторием и его соответствующим репозиторием обновлений в одной системе.
Пользователь недавно отключил хранилище -updates. Достаточно легко проверить и исправить в /etc/apt/sources.list или в панели управления вашего программного обеспечения и источников.
Пользователь просто не запускается
apt update
через некоторое время обновить (обновить) локальную базу данных apt доступных пакетов из обоих источников. Это тоже легко исправить.
Ваш файл /etc/apt/sources.list должен иметь некоторую комбинацию зеркал и источников, которая складывается из:
deb [mirror URL] bionic main
deb [mirror URL] bionic-updates main
deb [mirror URL] bionic-security main
Необязательный universe
, multiverse
, а также restricted
репо могут быть включены в те же строки.
Другим вариантом является установка версии GIMP. Я понимаю, что некоторые люди не любят снимки, но это может быть более приемлемым решением для обычного пользователя Linux.
sudo snap install gimp
В дополнение к принятому ответу: Если у вас включены только источники по умолчанию и список последних пакетов (apt update
) и по-прежнему сталкиваются с такими конфликтами в базовых пакетах, таких как gimp, затем сообщают об ошибке. Это то, что должно быть исправлено сопровождающим пакета и что, вероятно, довольно легко исправить для него. Это также может повлиять на больше людей, чем только вы. Такие ошибки случаются время от времени, но сопровождающие должны знать.
Конечно, вы должны убедиться, что ваша конфигурация и состояние пакета не были проблемой раньше, потому что, если вы, например, получили gimp (или некоторые из его зависимостей) из стороннего репозитория, сопровождающие Ubuntu не смогут вам помочь.