После обновления с 10.04 до 12.04 я пытаюсь установить разные пакеты. Например, ia32-libs и skype (4.0).
При попытке их установить я получаю сообщение об ошибке «Невозможно исправить проблемы, у вас поврежденные пакеты»
Вывод команд:
sudo apt-get install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
После запуска этого:
sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Это тоже случилось со мной. Все, что я сделал, это sudo apt-get update
, и это устранило мою проблему. Удачи.
У меня был аналогичный сценарий при новой установке 14.04, без файлов, перечисленных в dpkg --get-selections | grep hold
, и никаких радостей после sudo apt-get update
.
То, что помогло исправить это для меня, было простым
sudo apt-get autoremove
Когда я попытался переустановить неисправный пакет работал нормально. Ура!
Это конкретное сообщение об ошибке может указывать на то, что у вас есть пакеты, но оно также может указывать на другую проблему.
Вы можете получить список фактических удерживаемых пакетов с помощью:
dpkg --get-selections | grep hold
Если их нет или не похоже, то это, вероятно, что-то еще. Внимательно проверьте вывод команды, которую вы пытались выполнить, когда получили сообщение об ошибке, поскольку в полном выводе этой команды могут быть и другие подсказки, помимо сообщения об ошибке.
Другой метод устранения неполадок может заключаться в использовании aptitude, а не чем apt-get, чтобы попытаться установить ваш пакет:
sudo aptitude install <packagename>
Aptitude сдастся с меньшей легкостью и попытается найти решения, которые могут включать изменение других пакетов. Это может дать вам более подробное объяснение проблемы и варианты ее решения.
Иногда aptitude будет слишком стремиться удалить или понизить версию большого количества пакетов, чтобы удовлетворить ваш запрос, и в этом случае повторите попытку с помощью -f
меняет свои приоритеты и помогает предлагать решения, которые включают удаление / понижение версии меньшего количества пакетов, даже если это означает, что не все изменения, которые вы запрошены, могут быть выполнены:
sudo aptitude -f install <packagename>
Это несколько быстрых и простых способов исправить ошибку , которая содержит неработающие пакеты
.
Откройте файл sources.list в / etc / apt /sources.list
и убедитесь, что нет источников программного обеспечения для другой версии Ubuntu, кроме той версии Ubuntu, которую вы используете в настоящее время. Если вы обнаружите какие-либо неправильные строки выпуска в sources.list, откройте файл sources.list с помощью sudoedit /etc/apt/sources.list
, закомментируйте неправильные строки в sources.list, поставив перед ними #
, сохраните файл sources.list и запустите sudo apt update
, чтобы обновить список доступных пакетов программного обеспечения.
Выберите параметр Исправить поврежденные пакеты в диспетчере пакетов Synaptic. Выполните следующие команды, чтобы установить Synaptic.
sudo apt update
sudo apt upgrade
sudo apt установить синаптический
Откройте Synaptic и в Synaptic выберите Edit -> Fix Broken Packages , а затем повторите Edit -> Fix Broken Packages секунду времени.
В Synaptic на левой панели нажмите кнопку Пользовательские фильтры , которая отмечена курсором мыши на снимке экрана ниже. Из списка в верхнем левом углу выберите Сломанный . На центральной панели будут перечислены все поврежденные пакеты, которые все еще необходимо восстановить.
Выберите поврежденные пакеты по одному. Выберите неработающий пакет, затем откройте терминал и запустите apt policy <имя-пакета>
. Результаты этой команды скажут вам, был ли этот сломанный пакет установлен из репозиториев Ubuntu по умолчанию или из другого источника. Если неработающий пакет был установлен из другого источника, возможно, этот пакет можно удалить вместе с исходным программным обеспечением и заменить другой версией того же пакета из репозиториев Ubuntu по умолчанию. Обычно это означает исправление неработающего пакета путем понижения версии этого пакета до более старой.
Если вы получаете это сообщение об ошибке:
Попробуйте 'apt-get -f install' без пакетов (или укажите решение)
Выполните следующие команды:
sudo apt update
sudo apt upgrade
sudo apt-get -f install
Удаление поврежденного пакета вручную.
Найдите свой пакет в / var / lib / dpkg / info
ls -l / var / lib / dpkg / info | grep <пакет>
Переместите папку пакета в другое место.
cd / tmp && sudo mkdir new-package-location
sudo mv /var/lib/dpkg/info/.* / tmp / new-package-location /
Выполните следующую команду:
sudo dpkg --remove --force-remove-reinstreq <пакет>
Если все эти методы не работают, возможно, что поврежденные пакеты вызваны чем-то, что настолько глубоко встроено в операционную систему, что ни один из этих методов не оказывает на нее никакого воздействия. Первое очевидное место для поиска этого глубоко встроенного «чего-то» - это источники программного обеспечения в /etc/apt/sources.list
. Проверьте файл sources.list, чтобы увидеть, содержит ли он нестандартные строки, которые могут вызывать ошибку битых пакетов. Стандартный файл sources.list Ubuntu выглядит так же, как файлы sources.list в этот ответ .
Правильный способ удалить подозрительную строку из sources.list - закомментировать ее, поставив перед ней #
символ. Затем запустите sudo apt update
, чтобы обновить список доступного программного обеспечения.
Имея ту же самую проблему, я запустил эту команду проверки пакета из другого ответа (dpkg --get-selections | grep hold
).
и увидел
tomcat7 deinstall
tomcat7-common install
, поэтому использовал "apt-get delete tomcat7-common
"
Затем смог установить Tomcat 6 (я удалял Tomcat 7 и устанавливал Tomcat 6 так же, как и вы)
Я столкнулся с аналогичным сценарием, касающимся отсутствия зависимостей. В моем случае я пытался установить curl на ubuntu saucy salamander 13.10 ...
В сообщении об ошибке говорилось, что для зависимости требуется более ранняя версия библиотеки curl3.
Я смог перейти на более раннюю версию, попытавшись установить curl с помощью aptitude.
Когда он заметил отсутствие зависимости и причины (требовалась более ранняя версия файла библиотеки), это дало мне несколько вариантов ответа ... y / / n / q
Y прервал установку, N искал другой вариант, а Q просто завершил работу и больше ничего не сделал, оставив неработающий пакет.
I выбрал N , и это дало мне возможность понизить версию файла библиотеки до более ранней версии. Так я и сделал, и curl завершил установку без ошибок.
Для меня ничего из вышеперечисленного не помогло, потому что моя система не была обновлена . Я сделал
Home Key> Software Updater> Install
и обновил свою систему; после этого я мог нормально установить свой пакет с помощью apt
.
У меня была такая же проблема с переустановкой xsane
после неудачной ppa
установки. Как и в случае с йочанной (теперь называется "StackExchange What The Heck"), "никаких файлов, перечисленных в dpkg --get-selections | grep hold
, и никаких радостей после sudo apt-get update
".
Подсказка, которую мне дала apt-get
это
xsane : Зависит от: libsane (>= 1.0.24), но он не будет установлен
Из-за ответа yochannah у меня возникло ощущение, что я должен удалить некоторые ранее установленные пакеты. И это было так, мне пришлось вручную удалить все связанные пакеты в sane
, среди прочих xsane-common
и libsane
, который все еще был установлен как ppa
версия. Поэтому следите за тем, что у вас установлено ранее , и приведите в порядок!
Это работало на меня
sudo apt update && sudo apt upgrade -y && sudo apt autoremove
sudo apt list | grep python | cut -d "/" -f1 | xargs sudo apt-get remove -y
sudo apt list | grep python3.6 | grep -v libboost | cut -d "/" -f1 | xargs sudo apt-get install -y
sudo apt-get install python-pip -y
sudo apt-get install python3-pip -y
Я только что столкнулся с той же проблемой с Ubuntu Mate и нашел эту ветку. Моя проблема заключалась в попытке связать команды обновления вместе, вот так ...
sudo apt update && sudo apt upgrade -y && sudo apt autoremove
Что должно было сработать.Он не дал мне никаких ошибок, но он работал быстро и дал мне список пакетов, которые еще не готовы к выпуску. В результате я не смог установить дополнительные драйверы.
Я исправил это, выполнив отдельно команды update / upgrade / autoremove ...
sudo apt update
sudo apt upgrade -y
sudo apt autoremove
Обычно это заняло много времени - особенно обновление - и теперь мои установщики работают нормально . Я до сих пор не знаю, почему объединение этих команд в одну не сработало.
# head-scratcher
Наконец-то запустилась установка моего драйвера.
Обновление: Немного подумав, я думаю, что предупреждения, которые я получал о пакетах, еще не готовы к установке, обрабатывались как ошибки и прерывали работу цепочки &&. Возможно, я просто связал команды вместе с; это сработало бы.
sudo apt update ; sudo apt upgrade -y ; sudo apt autoremove
Я столкнулся с той же проблемой при обновлении с 14.04 LTS
до 16.04 LTS
. Вам нужно отследить поврежденный пакет и рекурсивно попробовать переустановить или обновить его.
Сначала удалите все зависимые библиотеки ( autoremove
) и установите все недостающие библиотеки с помощью sudo apt-get -f install
( -f
означает - исправление отсутствует
)
sudo apt-get autoremove
sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade
Установите набор инструментов ubuntu
из PPA
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Затем установите aptitude
.
sudo apt install aptitude
Диспетчер пакетов aptitude
намного удобнее, чем apt-get
. Также предлагается разрешить конфликтующие зависимости и сломанные пакеты. Следующие конфликты были в моей системе. Они могут отличаться от ваших, но высокоуровневый метод их решения будет таким же.
$ sudo aptitude -f install build-essential
The following NEW packages will be installed:
build-essential cpp{a} cpp-5{a} g++{a} g++-5{a} gcc{a} gcc-5{a} libasan2{a} libcc1-0{ab}
libcilkrts5{a} libgcc-5-dev{a} liblsan0{ab} libmpx0{a} libstdc++-5-dev{a}
The following packages will be upgraded:
gcc-5-base libstdc++6{b}
2 packages upgraded, 14 newly installed, 0 to remove and 5 not upgraded.
Need to get 29.6 MB of archives. After unpacking 100 MB will be used.
The following packages have unmet dependencies:
liblsan0 : Depends: gcc-9-base (= 9.3.0-10ubuntu2~16.04) but 9.3.0-11ubuntu0~14.04 is installed.
libcc1-0 : Depends: gcc-9-base (= 9.3.0-10ubuntu2~16.04) but 9.3.0-11ubuntu0~14.04 is installed.
libstdc++6 : Depends: gcc-9-base (= 9.3.0-10ubuntu2~16.04) but 9.3.0-11ubuntu0~14.04 is installed.
Способности иногда дают жизнеспособные потенциальные решения. Например, обновление или понижение уровня других библиотек для разрешения конфликта. В моем случае решения не было. Следовательно, мне нужно продолжить отслеживание зависимостей.
Поскольку build-essential
требует gcc-5
.
$ sudo apt-get -f install gcc-5
The following packages have unmet dependencies:
gcc-5 : Depends: cpp-5 (= 5.5.0-12ubuntu1~16.04) but it is not going to be installed
Depends: gcc-5-base (= 5.5.0-12ubuntu1~16.04) but 5.4.0-6ubuntu1~16.04.12 is to be installed
Depends: libcc1-0 (>= 5.5.0-12ubuntu1~16.04) but it is not going to be installed
Depends: libgcc-5-dev (= 5.5.0-12ubuntu1~16.04) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Но gcc-5
, в свою очередь, зависит на cpp-5
$ sudo apt-get -f install cpp-5
The following packages have unmet dependencies:
cpp-5 : Depends: gcc-5-base (= 5.5.0-12ubuntu1~16.04) but 5.4.0-6ubuntu1~16.04.12 is to be installed
cpp-5
зависит от gcc-5-base
. Здесь вы можете увидеть конкретный конфликт. Aptitide предлагает несколько вариантов разрешения конфликта. В моем случае обновление libstdc ++ 6
решило проблему.
$sudo aptitude -f install gcc-5-base
The following packages will be REMOVED:
gcc-5-base{u}
0 packages upgraded, 0 newly installed, 1 to remove and 6 not upgraded.
Need to get 0 B of archives. After unpacking 67.6 kB will be freed.
The following packages have unmet dependencies:
libstdc++6 : Depends: gcc-5-base (= 5.4.0-6ubuntu1~16.04.12) but it is not going to be installed.
open: 115; closed: 488; defer: 35; conflict: 58 .The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) gcc-5-base [5.4.0-6ubuntu1~16.04.12 (now, xenial-security, xenial-updates)]
Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:
Upgrade the following packages:
1) libstdc++6 [5.4.0-6ubuntu1~16.04.12 (now, xenial-security, xenial-updates) -> 9.3.0-10ubuntu2~16.0
Наконец, теперь конфликт разрешен, попробуйте снова установить build-essentials
.
$ sudo aptitude -f install build-essential
Я пробовал все методы, упомянутые на этой странице. У меня как-то не получилось.
Вот как я исправил: Отследите поврежденный пакет и переустановите его.
Вот пример:
Я пытаюсь установить aptitude
.
sudo apt install aptitude
Не удалось установить libcwidget3v5
sudo apt install libcwidget3v5
Попробуйте установить libncursesw5
sudo apt install libncursesw5
Попробуйте установить libtinfo5
sudo apt install libtinfo5
Бинго, виноват этот парень 11113738] libtinfo5 , он уже там, удалите и переустановите.
Удалите или очистите libtinfo5
.
apt purge libtinof5
было бы лучше, поскольку он также удаляет файлы конфигурации.
sudo apt remove libtinfo5
Переустановите libtinfo5
снова
sudo apt install libtinfo5
Теперь попробуйте установить aptitude
sudo apt install aptitude