Встановлення MariaDB, коли Apt повідомляє, MariaDB має невиконані залежності або зламані пакети


9

Я спробував усе, щоб встановити 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

Усі прапорці є квитками в Оновленнях. Я побіг:

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.

Виконайте цю команду , щоб встановити зазначений пакет: sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"Переконайтеся , що ви галочка всіх прапорців під Updates вкладки Sources Software . Щоб перевірити його виконання: sudo software-properties-gtkвідкрийте джерела програмного забезпечення . Якщо ви отримали помилку / повідомлення в команді, яку я згадав вище, опублікуйте це у своєму запитанні.
Саурав Кумар

Схоже, незабаром ви вирішите свою проблему. Основна хитрість полягає в тому, що ви повинні перерахувати всі необхідні пакети в одному рядку, щоб встановити. Наприклад, з нового виводу, який ви повинні виконати: sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy mariadb-client-5.5"=5.5.33a+maria-1~saucy" mariadb-server-core-5.5"=5.5.33a+maria-1~saucy" Ловіть шаблон того, що я роблю, тож якщо ви отримаєте ще кілька пакунків для встановлення, ви повинні включити його в той самий рядок, що слідує за тим же патертом. Я знаю, що це буде важко, але сподіваюся, що це допоможе тобі. Відповісти.
Саурав Кумар

Правильно, мені вдалося встановити звичайний mariadb і спробував встановити libmariadbclient18, який залежить від libmysqlclient18, але він говорить, що у мене вже є libmysqlclient18 те ж саме з libdbd-mysql-perl.
Андреас

@Ecaz Ви знайшли рішення для своєї проблеми? Я переживаю те саме.
Джон Купс

Я отримую цю помилку:libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.33a+maria-1~saucy) but 5.5.34-0ubuntu0.13.10.1 is to be installed
Джон Купс

Відповіді:


16

Див. Невідповідність версій між Mariadb та Ubuntu Debian Repositories

У офіційних сховищах Ubuntu або Debian вищі номери версій mysql-common або libmysqlclient є вищими, ніж у сховищах 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. Щоб цього не сталося, ви можете утримувати їх, щоб 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 . За даними сайту, це а low-traffic announce-only list.

Крім того, коли версії пакунків знову синхронізуються, вам слід перестати бачити повідомлення про те, що утримуватимуться лише два пакети, які утримуються, але що всі пакунки з 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. Якщо файл із шпильками встановлений, пакети з вашого сховища 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. Це ідентифікує пакет, що займається пакетом, та дозволяє іншим файлам уподобань фіксації легко розміщувати до цього файлу після того, як в порядку обробки.


Я спробую перше рішення, але як ви знаєте, коли невідповідність була виправлена? Чи потрібно мені обшукувати журнал змін кожного разу, коли вони випускають оновлення?
Андреас

Я використав перший метод, і він пройшов дуже гладко. Жодних турбот щодо залежностей. Я відредагував відповідь з інформацією про номер версії
mariadb

Якою має бути назва файлу закріплення для другого рішення?
Thomas Taylor

Я - за твої навички. Пакунки з мариадбою досить сильно перекручені. Я стверджую це, виходячи з того, що мені ніколи раніше не доводилося робити нічого з перерахованого вище, але вищезазначене встановило мене. Дякую!
jettero

1
@ thomas-taylor Додана інформація щодо іменування файлу прив’язки.
chaskes

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 (Structured Query Language) - найпопулярніша мова запитів бази даних у світі. Основні цілі MySQL - це швидкість, надійність та простота використання. . Цей пакет включає бібліотеку клієнтів. Домашня сторінка: http://dev.mysql.com/ Original-Maintainer: Debian MySQL Maintainers

Дозволено мені після цього плавно встановити MariaDB.

sudo apt-get install mariadb-server

Примітка : я потрапив сюди після багатьох спроб цього видалення libmariadbclient18 та libmysqlclient18, перш ніж це рішення спрацювало. Я не міг уникнути проблем з підхопленням, якщо цих двох не було видалено, оскільки про них повідомляли про розбиті пакети, перш ніж я міг спробувати інший ремонт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.