Показать статистику
0 голосов
от (2.4тыс. баллов)

Периодически во время установки софта я вижу такое сообщение:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Как это чинится?

953 просмотров 1 ответов

1 Ответ

0 голосов
от (17.4тыс. баллов)
редактировать от

Ключевым конфиг-файлом в этом случае является /etc/apt/sources.list. Скопируйте его куда то, что бы иметь копию про запас. Потом всегда можно будет быстро откатить изменения.

Если ошибка нечто вроде:

<some-package>: Depends: <other-package> (= version) but this-version is to be installed

Тогда убедитесь что у вас включены два репозитория: так называемый "restricted" и "universe". Нажмите Alt - F2 и выполните: 

software-properties-gtk

Под вкладкой "Ubuntu Software" отметьте все.

Одной из возможных проблем могут быть некорректно установленные пакеты. Например, обновился зависимый пакет, а основной все еще требует прошлую версию. Имеет смысл выполнить авто-очистку. В терминале выполните:

sudo apt-get clean

Либо:

sudo apt-get autoclean

Так же можно воспользоваться ключем "fix" и попробовать до-установить проблемные зависимости (если таковые есть):

sudo apt-get -f install

Ключ "f", как я написал выше, означает "fix".

Если команда выдаст нечто такое:

0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

То это означает что у нас ничего не получилось. Команда отработала, но результата не принесла. В таком случае можно попробовать нечто более радикальное. Рекомендую перед выполнением этого шага выполнить бекап данных

sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

Если вы получите такой вывод, то все уже не так тривиально:

0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.

Подобный вывод говорит о том, что остались неисправленные зависимости. В таком случае нужно будет удалять "застрявшие" пакеты вручную, по очереди. При этом каждый раз при удалении такого пакета, нужно запускать distupgrade как было показано выше. После этого те пакеты, которые вам нужны, нужно будет переустановить. Что бы минимизировать риски и окончательно все не сломать, используйте --dry-run:

sudo apt-get remove --dry-run imya_vashego_paketa

Как наверное многим понятно, удаление вручную "сломанных" пакетов дело неблагодарное и трудоемкое. Поэтому умнее конечно было бы использовать репозиторий, в котором нужный вам софт уже есть со всеми зависимостями. 

Так же остается возможность установить нужные пакеты из исходников, собрав самостоятельно  deb файлы.

...