Проблемы с зависимостями 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

РЕДАКТИРОВАТЬ: Я вижу, что он хочет, чтобы я сделал apt-get -f install, но он удаляет кучу вещей и я действительно не думаю, что это правильный способ исправить это.

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

2 ответа

Слава Богу я смог зафиксировать его. Я волновался, что собирался, должны переустановить человечность.

я пошел и вручную отредактировал /var/lib/dpkg/status и удалил запись, которая была сделана checkinstall.

, После того как это было удалено, я перешел в /usr/local/bin и удалил весь материал python 3.5. Я также удостоверился, что python3-4 был все еще в /usr/bin/. Затем я сделал sudo dpkg-reconfigure -a и наконец apt-get -f install и была только 1 вещь, которая 'отсутствовала', который был Python.

Затем мне удалось получить его, установил правильный путь путем следования инструкциям в README и затем просто удаления символьной ссылки на python3.4 и создал новый к python3.5.

5
ответ дан 14 September 2015 в 15:26
  • 1
    после хранения пространства это дает подпись NTFS, отсутствует. Не удалось смонтировать '/dev/sdb1': Недействительный аргумент устройство '/dev/sdb1' doesn' t, кажется, имеют допустимый NTFS. Возможно, неправильное устройство используется? Или целый диск вместо раздела (например,/dev/sda, не/dev/sda1)? Или наоборот? – balu singh 4 December 2016 в 21:09

У меня была та же проблема после установки 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
Состояние: деинсталлируйте хорошо установленный
Приоритет: дополнительный
Раздел: checkinstall
Установленный размер: 167520
Специалист по обслуживанию: root@laptop
Архитектура: amd64
Версия: 3.4.3-1
Обеспечивает: Python
Описание: Пакет, созданный с checkinstall 1.6.2'

Как Вы видите полужирным, имя Пакета является "Python", и пакет был, "деинсталлируют" прежде чем быть установленным снова.

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

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

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

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

Для решения этой путаницы у меня есть решение, которые позволяют Вам не должными быть удалить все установленные двоичные файлы вручную как electrometro предложенный сделать, то, которое я думаю, могло бы быть опасным.

Выполните эти шаги:

  1. Вручную отредактируйте имя Пакета python в /var/lib/dpkg/status от python кому: python-3.4-checkinstall например. Будьте осторожны. Новое имя уже, должно быть, не использовалось! Также изменение "Обеспечивает" к новому имени.
  2. Использовать sudo dpkg-reconfigure python-3.4-checkinstall. (Примечание: dpkg-reconfigure -a как предложено electrometro больше не существует в Ubuntu 16.04. Это так или иначе не нужно).
  3. Выполненный 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. См. документацию Debian для большего количества информации о dpkg. Для решения этой проблемы необходимо сделать шаг 4.
  4. Переустановите python3.4 с нуля с помощью checkinstall, но не забывая менять имя "Пакета", и "Обеспечивает" имя, как предложено ранее! Используйте то же имя в качестве на шаге 1. Никакая потребность удалить двоичные файлы вручную прежде, чем сделать так. Точка этого шага должна иметь чистую установку python3.4 и смочь удалить его с помощью недавно созданного .deb файла.

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

Для получения информации шаг я раньше устанавливал python3.4 от исходного пакета с помощью checkinstall, следующие:

  1. В исходном каталоге, запущенном ./configure.
  2. Выполненный make
  3. Выполненный sudo checkinstall
  4. Самый важный шаг. В этой точке они спрашивают Вас, если Вы хотите изменить какое-либо поле перед установкой. Измените "Пакет", и "Обеспечивает" от "Python" до другого уникального имени (как "python3.4-checkinstall", как я предположил).

Надежда это помогает!

С наилучшими пожеланиями, Nicolas

3
ответ дан 14 September 2015 в 15:26
  • 1
    также испытанная замена sdb1 с sdb, но снова тем же сообщением – balu singh 4 December 2016 в 21:18

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

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