Проблемы с apt-зависимостями после установки python 3.5

Я загрузил и скомпилировал последний python, 3.5 и установил его с помощью checkinstall. Теперь я получаю тонну пакетов, у которых отсутствуют зависимости в apt.

apt-xapian-index : Depends: python (< 2.8) but 3.5.0-1 is to be 

installed
 duplicity : Depends: python (< 2.8) but 3.5.0-1 is to be installed
 gconf2 : Depends: python:any
 .
 .
 .
 totem-plugins : Depends: python:any (>= 2.6.6-7~)
 ubuntu-system-service : Depends: python (< 2.8) but 3.5.0-1 is to be installed
                         Depends: python:any (>= 2.7.1-0ubuntu2)
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Но у меня все еще установлен python, включая 2.7.9.

$ which python
/usr/bin/python
$ python
Python 2.7.9 (default, Apr  2 2015, 15:33:21) 
[GCC 4.9.2] on linux2

$ which python3
/usr/local/bin/python3
$ python3
Python 3.5.0 (default, Sep 13 2015, 19:47:21) 
[GCC 4.9.2] on linux

Как я могу удалить установленный пакет или исправить зависимости, не увидев, что установлен python3?

Кроме того, python3.4 все еще находится в /usr/bin/python3

EDIT: Я вижу, что он хочет, чтобы я сделал apt-get -f install, но он удаляет тонну вещей, и я действительно Не думаю, что это правильный способ исправить это.

1
задан 14 September 2015 в 05:26

1 ответ

У меня была такая же проблема после установки python3.4 с checkinstall (вместо python3.5 для electrometro)

Причина возникновения этой проблемы

Я обнаружил, почему эта проблема возникла в первую очередь.

При создании файла .deb из источника Python 3.4 с checkinstall, который затем устанавливает его, стандартное имя пакета, установленное checkinstall, является «python».

Как следствие, checkinstall удалите пакет с именем python перед установкой нового с помощью dpkg !! Этот пакет уже существует в Ubuntu. Это в основном связано с python2! По какой-то причине я надеюсь, что dpkg пытается удалить версию python, которую вы устанавливаете, то есть python3.4 в моем случае, но не работает. Вот почему python2 все еще установлен. Но dpkg по-прежнему считают, что пакет «python» был удален и заменен новым установленным (python3.4). Соответственно отредактирован файл / var / lib / dpkg / status. В моем случае это обновление, связанное с этой установкой:

Пакет: python Статус: deinstall ok установлен Приоритет: дополнительный Раздел: checkinstall Установленный-размер: 167520 Сопровождающий: root @ laptop Архитектура: amd64 Версия: 3.4. 3-1 Предоставляет: python Описание: Пакет, созданный с помощью checkinstall 1.6.2`

Как вы можете видеть жирным шрифтом, имя пакета « python », и пакет был " deinstall "перед установкой снова.

Таким образом, dpkg считает, что« python »(python2!) больше не существует и предлагает вам удалить все, что зависит от него, когда вы вызываете apt-get -f install!

Решение, чтобы избежать этой проблемы:

Просто выберите другое имя «Пакет» и «Предоставляет» имя при использовании checkinstall! Например, python3.4-checkinstall для обоих.

Как решить проблему, когда она уже произошла

Чтобы решить эту проблему, у меня есть решение, которое позволит вам не удалять

Выполните следующие действия:

Вручную отредактируйте имя пакета python в /var/lib/dpkg/status из python - python-3.4-checkinstall, например. Быть осторожен. Новое имя не должно быть уже использовано! Также измените «Предоставляет» новое имя. Используйте sudo dpkg-reconfigure python-3.4-checkinstall. (Примечание: dpkg-reconfigure -a, как было предложено electrometro, в Ubuntu 16.04 больше не существует). В любом случае это не требуется). Запустите apt-get -f install, который снова установит исходный пакет python! На этом этапе вы можете остановиться здесь, но если вы попробуете sudo dpkg-query -L python3.4-checkinstall: dpkg не знает, какие файлы были установлены больше !!! Поскольку файл /var/lib/dpkg/info/python3.4-checkinstall.list не существует! Файл /var/lib/dpkg/info/python.list был превзойден apt-get -f install. Дополнительную информацию о dpkg см. В документации Debian. Чтобы решить эту проблему, вы должны сделать шаг 4. Переустановите python3.4 с нуля с помощью checkinstall, но не забывайте изменять имя пакета и имя «Предоставляет», как было предложено ранее! Используйте то же имя, что и на шаге 1. Не нужно удалять двоичные файлы вручную, прежде чем делать это. Целью этого шага является чистая установка python3.4 и возможность его удаления с использованием вновь созданного файла .deb.

И все! Теперь все должно быть чистым. Я действительно выполнил шаг 3 до шага 2, но для этого нужно сделать более чистым.

Для информации, которую я использовал для установки python3.4 из исходного пакета с помощью checkinstall, вы можете: [!d43 ] Вручную отредактируйте имя пакета python в /var/lib/dpkg/status, например, с python до python-3.4-checkinstall. Быть осторожен. Новое имя не должно быть уже использовано! Также измените «Предоставляет» новому имени. Запуск make Используйте sudo dpkg-reconfigure python-3.4-checkinstall. (Примечание: dpkg-reconfigure -a, как было предложено electrometro, в Ubuntu 16.04 больше не существует). Самый важный шаг. На этом этапе они спрашивают, хотите ли вы изменить любое поле перед установкой. Измените «Пакет» и «Предоставляет» с «python» на другое уникальное имя (например, «python3.4-checkinstall», как я предложил).

Надеюсь, что это поможет!

Привет, Николя

3
ответ дан 23 May 2018 в 17:29

Другие вопросы по тегам:

Похожие вопросы: