Я пишу это, потому что я очень смущен установкой PostgreSQL 9.3 на моей Ubuntu 14.04. Сначала мне нужен он для моей разработки Python/Django, и я столкнулся с проблемой, когда я пытался установить его. Теперь у меня есть эта ошибка, и она сводит меня с ума:
The following packages have unmet dependencies:
postgresql-9.3 : Depends: postgresql-client-9.3 but it is not going to be installed
Depends: postgresql-common (>= 142~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Я нашел некоторые решения онлайн (Как я разрешаю невстреченные зависимости после добавления PPA?), и я сделал все к части Превентивных мер, потому что у меня была некоторая поврежденная проблема пакетов, и снова после того, как у меня было это ошибочное шоу мне снова.
Вторая вещь я следовал за официальным PostgreSQL, устанавливающим учебное руководство (http://www.postgresql.org/download/linux/ubuntu/), и у меня были дублированные репозитории, но я удалил их, и я добавил новый, но все еще эту ошибку.
Позвольте мне поделиться с другими своим опытом установки postgresql-9.3
. Прежде всего, я боролся с этим около 4/5 дней, и мне, наконец, удалось это сделать.
Все пошло не так с этими неприятными ошибками, о которых я поделился в моем первом посте, поскольку я пытался погуглить и обнаруживают, что люди имеют более менее одну и ту же ошибку или пытаются решить похожую.
Короче говоря, у вас есть очень хороший ответ, как разрешить неудовлетворенные пакеты:
Как разрешить неудовлетворенные зависимости после добавления PPA?
Моя ошибка заключалась в том, что я сделал дублированный репозиторий, и ответ в этой ссылке решил, что это
команда sudo apt-get install -f
только что допустила еще одну ошибку, вы должны сделать это вручную, по крайней мере, я это сделал (прочтите раздел «Профилактические меры, но вы можете прочитать до конца, это imba post).
Во-вторых, мне удалось погуглить этот пост с официальной страницы PostgreSQL
(скрыто) (это ошибка, которую обычно имеют люди, когда они борются с установкой postgresql), это привело меня к
https://wiki.postgresql.org/wiki/Apt , это правильный путь для добавления пакетов PostgreSQL в вашу систему, просто прочтите его и сделайте это шаг за шагом.
Третий шаг - это серия команд, представленных в сообщении @vembutech:
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install postgresql-9.3 postgresql-contrib-9.3
Вы можете установите пакет с помощью.
убедитесь, что источники репо обновлены.
sudo apt-get update
Чтобы установить пакет.
sudo apt-get install packagename
Как только пакет определит, что у вас есть некоторые недостающие зависимости, выполните следующую команду, чтобы исправить сломанные или отсутствующие зависимости.
sudo apt-get install -f
Вышеупомянутая команда загрузит недостающие зависимости, только если вы уже установили пакет.
Иногда зависимости, которые требуют исправления, не связаны с программой, которую вы пытаетесь установить. В моем случае это приводило к следующей ошибке:
Ниже приведены неучтенные зависимости
shashlik : Зависит: libc6-i386, но она не будет установлена
Зависит: lib32gcc1, но она не будет установлена
Зависит: lib32z1, но она не будет установлена
Оказалось, что я пытался установить программу под названием "Shashlik", и установка не удалась. Так что я запустил код:
sudo apt-get --purge remove shashlik
А потом я запустил:
sudo apt install autoconf
Казалось, что это исправит ошибку, так как моя программа затем была установлена. Не знаю, насколько помогла вторая команда, но я поместил ее туда, на случай, если это необходимо для работы решения.
Попробуйте установить с помощью следующей команды.
sudo apt-get install postgresql-common=151.pgdg12.4+1
sudo apt-get install postgresql-9.3 postgresql-contrib-9.3
Я знаю, что немного опоздал, но ни одно из вышеперечисленных решений у меня не помогло. На самом деле мою проблему решило использование aptitude
вместо apt-get. aptitude
предложит способы решения проблемы.
Просто запустите эти:
sudo apt-get install aptitude
sudo aptitude install <package-name>
aptitude
предложит вам разрешение зависимостей, например:
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) libyaml-dev [Not Installed]
Accept this solution? [Y/n/q/? (n)
The following actions will resolve these dependencies:
Downgrade the following packages:
1) libyaml-0-2 [0.1.4-3ubuntu3.1 (now) -> 0.1.4-3ubuntu3 (trusty)]
Accept this solution? [Y/n/q/?] (Y)
Прежде всего, вам нужно найти пакет, который сломан. Допустим, вы получаете следующую ошибку,
The following packages have unmet dependencies:
libpython3.9 : Depends: libpython3.9-stdlib (= 3.9.5-3~20.04.1) but 3.9.4-1+bionic1 is to be installed
Вам нужно вручную удалить файлы сломанного пакета.
Чтобы получить список файлов, вы можете выполнить
sudo ls –l /var/lib/dpkg/info | grep -i libpython3.9-dev
Замените libpython3.9-dev
на имя вашего пакета.
Выход
libpython3.9-dev:amd64.list
libpython3.9-dev:amd64.md5sums
Теперь вы можете отбросить эти файлы.
sudo rm /var/lib/dpkg/info/python3.9-dev*
Проделайте те же операции с остальными пакетами.
Когда все будет готово, вы можете выполнить
sudo apt --fix-broken install
На этот раз приведенная выше команда должна работать нормально.