Установка MariaDB, когда Apt сообщает, что MariaDB имеет неудовлетворенные зависимости или поврежденные пакеты

Я попробовал все, чтобы установить MariaDB в этой чистой установке Ubuntu, но я продолжаю получать эту ошибку,

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:
mariadb-server : Depends: mariadb-server-5.5 (= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Я следовал этому руководству, чтобы попытаться установить его, http: // www .unixmen.com / install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server /

И я также следовал «официальному» руководству по загрузке MariaDB страница для 13.10 https://downloads.mariadb.org/mariadb/repositories/

Но, похоже, ничего не работает.

Редактировать 1

Я попробовал оба Как разрешить неудовлетворенные зависимости после добавления PPA? и Как установить MariaDB? но это все еще дает мне ошибку, которую я отправил выше.

Это новая версия Ubuntu, на которой почти ничего не установлено.

Редактировать 2

Все флажки являются тикетами в Updates. Я побежал:

sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"

И это дало мне эту ошибку:

The following packages have unmet dependencies:
mariadb-server-5.5 : Depends: mariadb-client-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
Depends: mariadb-server-core-5.5 (>= 5.5.33a+maria-1~saucy) 
but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
9
задан 13 April 2017 в 15:23

2 ответа

У меня была похожая проблема в обновлении Ubuntu 14.10 с MySQL до Maria DB. А именно, я бы застрял с

 libmysqlclient18:amd64 10.0.16+maria-1~utopic (Multi-Arch: no) is not co-installable with libmysqlclient18 which has multiple installed instances

После бесполезного следования этим советам мне очень помогло следующее: Как заменить MySQL на MariaDB в Ubuntu Server от JournalXtra.

Редактирование / var / lib / dpkg / status и удаление двух экземпляров libmysqlclient18 выглядит следующим образом:

Package: libmysqlclient18
Status: deinstall ok config-files
Priority: optional
Section: libs
Installed-Size: 3392
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Multi-Arch: same
Source: mysql-5.5
Version: 5.5.40-0ubuntu1
Config-Version: 5.5.40-0ubuntu1
Depends: mysql-common (>= 5.5.40-0ubuntu1), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), zlib1g (>= 1:1.1.4)
Pre-Depends: multiarch-support
Description: MySQL database client library

MySQL - это быстрый, стабильный и настоящий многопользовательский многопоточный сервер баз данных SQL. SQL (язык структурированных запросов) - самый популярный язык запросов к базам данных в мире. Основными целями MySQL являются скорость, надежность и простота использования. , Этот пакет включает в себя клиентскую библиотеку. Домашняя страница: http://dev.mysql.com/ Original-Maintainer: сопровождающие Debian MySQL

Позволил мне после установки плавно установить MariaDB.

sudo apt-get install mariadb-server

Примечание : я попал сюда после многих попыток удалить libmariadbclient18 и libmysqlclient18 до того, как это решение заработало. Я не мог преодолеть проблемы apt-get, пока эти два не были удалены, так как они были объявлены как поврежденные пакеты, прежде чем я мог попытаться выполнить какое-либо другое восстановление.

0
ответ дан 13 April 2017 в 15:23

См. Несоответствие версий между репозиториями Debian Mariadb и Ubuntu.

. Номера версий mysql-common или libmysqlclient в официальных репозиториях Ubuntu или Debian редко бывают выше, чем они. в репозиториях MariaDB, но это случилось. Когда бы то ни было, это происходило из-за критических выпусков исправлений ошибок, которые существовали в версии MySQL в репозиториях дистрибутива, но которые уже были исправлены в версии MariaDB в репозиториях MariaDB.

Если при попытке установить MariaDB существует ситуация, как описано выше, вы получите сообщение об ошибке, подобное этому:
The following packages have unmet dependencies:
mariadb-server : Depends: mariadb-server-5.5 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Чтобы исправить это, укажите точная версия двух пакетов, которые вы хотите установить. Для этого сначала определите полные номера версий затронутых пакетов. Самый простой способ сделать это с помощью 'apt-cache show':
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version

Это ситуация на момент написания этой статьи, поскольку номера версий показаны как:

Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy

Страница MariaDB дает два решения.

Первое решение: указание версии пакета

Для каждого из вышеперечисленных вам будет предоставлен список версий. Те, которые находятся в репозиториях MariaDB, будут иметь «mariadb» в строках версий и те, которые вам нужны. Имея номера версий в руках, вы сможете установить MariaDB, явно указав номера версий следующим образом:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>

, то есть

apt-get install mariadb-server-5.5 mariadb-client-5.5 \
 libmysqlclient18=5.5.34+maria-1~saucy \
 mysql-common=5.5.34+maria-1~saucy

ПРИМЕЧАНИЕ. Обновление до 5.5 .34, чтобы отразить текущую версию на 2014.01.28 [RealPariah] После установки необходимо удерживать пакеты до тех пор, пока номера версий не будут синхронизированы.

После установки MariaDB и до тех пор, пока существует проблема с номером версии, `apt-get dist-upgrade` будет пытаться удалить MariaDB для установки« обновленных »пакетов libmysqlclient и mysql-common. Чтобы этого не случилось, вы можете держать их так, чтобы apt не пытался их обновить. Для этого откройте терминал, станьте пользователем root с помощью `sudo -s`, а затем введите следующее:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
Удержания не позволят вам обновить MariaDB, поэтому, когда вы захотите удалить удержания, откройте терминал, станьте пользователем root с помощью 'sudo -s', а затем введите следующее:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
Затем вы сможете обновить MariaDB как обычно (например, с помощью `sudo apt-get update; sudo apt -get upgrade`).

Как узнать, когда номера версий снова совпадают?

Вы можете отслеживать номер версии MariaDB, подписавшись на оповещение по электронной почте о новых выпусках на MariaDB.org [+1121]. Согласно сайту, это low-traffic announce-only list.

Кроме того, когда версии пакетов снова синхронизируются, вы должны перестать видеть сообщение в apt, что будут удерживаться только 2 удерживаемых пакета, но что все пакеты mariadb будут удерживаться:

The following packages have been kept back:
libmariadbclient18 libmysqlclient18 linux-generic linux-headers-generic
linux-image-generic mariadb-client-5.5 mariadb-client-core-5.5
mariadb-server mariadb-server-5.5 mariadb-server-core-5.5 mysql-common

Это указывает на то, что номера пакетов снова синхронизированы, что также можно проверить с помощью синаптических или аналогичных инструментов.

Второе решение: закрепление репозитория MariaDB

Еще одна вещь, которую вы можете сделать, это закрепить репозиторий MariaDB, который вы используете. Это можно сделать, создав файл `/ etc / apt / preferences.d /` со следующим содержимым:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

Замените <mirror-domain> именем домена используемого вами зеркала MariaDB. Например, ftp.osuosl.org. После установки файла pin пакеты из вашего репозитория MariaDB будут иметь приоритет над пакетами из системных репозиториев.

Имя используемого зеркала можно найти в Системные настройки >> Программное обеспечение и усилитель. Обновления или, если вы используете другой вариант Ubuntu, Synaptic >> Настройки >> Репозитории или cat /etc/apt/sources.list.

Pin-Priority в этом случае должно быть больше или равно 1000, что causes a version to be installed even if this constitutes a downgrade of the package

(см. man 5 apt_preferences для получения дополнительной информации о параметрах в других случаях.)

Именование файла настроек пиннинга

Note that the file in the /etc/apt/preferences.d directory are parsed in alphanumeric ascending order and need to obey the following naming convention:

The files have either no or "pref" as filename extension and only contain alphanumeric, hyphen (-), undescore (_), and period (.) characters. Otherwise APT will print a notice that it has ignored a file...

(Источник: man 5 apt_preferences)

Итак, само имя не имеет значения, но хорошее имя будет примерно таким 50_mariadb. Это идентифицирует пакет и позволяет легко размещать другие файлы настроек закрепления до или после этого файла в порядке обработки.

0
ответ дан 13 April 2017 в 15:23

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

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