web-dev-qa-db-fra.com

Installation de MariaDB quand Apt signale que MariaDB a des dépendances non satisfaites ou des paquets cassés

J'ai tout essayé pour installer MariaDB sur cette nouvelle installation d'Ubuntu, mais je continue à avoir cette erreur,

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.

J'ai suivi ce guide pour essayer de l'installer, http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server/

Et j'ai également suivi le guide "officiel" sur la page de téléchargement de MariaDB pour 13.10 https://downloads.mariadb.org/mariadb/repositories/

Mais rien ne semble fonctionner.

Éditer 1

J'ai essayé les deux Comment puis-je résoudre les dépendances non résolues après l'ajout d'un PPA? et Comment installer MariaDB? mais cela me donne toujours l'erreur que j'ai signalée ci-dessus.

C'est une nouvelle installation Ubuntu avec presque rien installé.

Éditer 2

Toutes les cases à cocher sont des tickets dans les mises à jour. Iran:

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

Et cela m'a donné cette erreur:

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
Andreas

Voir Incohérence de version entre les référentiels Mariadb et Ubuntu Debian

Il est rare que les numéros de version de mysql-common ou de libmysqlclient soient plus élevés dans les référentiels officiels Ubuntu ou Debian qu'ils ne le sont dans les référentiels MariaDB, mais cela est déjà arrivé. Chaque fois que cela a été fait, cela est dû aux corrections de bogues critiques qui existaient dans la version de MySQL dans les référentiels de distribution mais qui avaient déjà été corrigées dans la version de MariaDB dans les référentiels MariaDB.

Si une situation telle que décrite ci-dessus existe lorsque vous essayez d'installer MariaDB, vous obtiendrez une erreur comme celle-ci:
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.
Un moyen de résoudre ce problème consiste à spécifier la version exacte des deux packages que vous souhaitez installer. Pour ce faire, commencez par déterminer les numéros de version complets des packages concernés. Un moyen simple de le faire est d'utiliser 'apt-cache show':
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version

Telle est la situation au moment où nous écrivons, car les numéros de version sont indiqués comme suit:

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

La page MariaDB propose deux solutions.

Première solution: Spécifier la version du package

Pour chacun des éléments ci-dessus, vous recevrez une liste de versions. Ceux dans les dépôts MariaDB auront "mariadb" dans les chaînes de version et sont ceux que vous voulez. Avec les numéros de version en main, vous pourrez installer MariaDB en spécifiant explicitement les numéros de version comme suit:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>

lequel est

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

REMARQUE: mettez à jour à la version 5.5.34 pour refléter la version actuelle à compter du 2014.01.28 [RealPariah] Après l'installation, vous devez conserver les packages jusqu'à ce que les numéros de version revenir en synchronisation.

Une fois que MariaDB est installé et tant que le numéro de version existe, un `apt-get dist-upgrade` essaiera de supprimer MariaDB afin d’installer les paquets" upgraded "libmysqlclient et mysql-common. Pour éviter cela, vous pouvez les conserver afin qu'apt ne tente pas de les mettre à niveau. Pour ce faire, ouvrez un terminal, devenez root avec `Sudo -s`, puis entrez ce qui suit:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
Les mises en attente vous empêcheront de mettre à niveau MariaDB. Par conséquent, lorsque vous souhaitez supprimer les mises en attente, ouvrez un terminal, devenez root avec 'Sudo -s', puis entrez les informations suivantes:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
Vous pourrez alors mettre à jour MariaDB normalement (par exemple avec `Sudo apt-get update; Sudo apt-get upgrade`).

Comment savoir si les numéros de version correspondent à nouveau?

Vous pouvez suivre le numéro de version de MariaDB en vous inscrivant pour recevoir une alerte par courrier électronique des nouvelles versions à l'adresse MariaDB.org . Selon le site, il s'agit d'un low-traffic announce-only list.

De plus, lorsque les versions des paquets sont à nouveau synchronisées, vous devriez cesser de voir dans un message que seuls les 2 paquets retenus seront conservés, mais que tous les paquets mariadb seront conservés:

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

Cela indique que les numéros de paquet sont de nouveau synchronisés, ce qui peut également être vérifié dans des outils synaptiques ou similaires.

Deuxième solution: Épingler le référentiel MariaDB

Vous pouvez également épingler le référentiel MariaDB que vous utilisez. Ceci est fait en créant un fichier sous `/ etc/apt/preferences.d /` avec le contenu suivant:
Package: *
Pin: Origin <mirror-domain>
Pin-Priority: 1000

Remplacez <mirror-domain> par le nom de domaine du miroir MariaDB que vous utilisez. Par exemple, ftp.osuosl.org. Une fois le fichier PIN en place, les packages de votre référentiel MariaDB auront la priorité sur ceux des référentiels système.

Vous pouvez trouver le nom de miroir que vous utilisez dans Paramètres système >> Logiciels et mises à jour , ou si vous utilisez une autre version d'Ubuntu, Synaptic >> Paramètres >> Référentiels ou cat /etc/apt/sources.list.

Le Pin-Priority dans ce cas doit être supérieur ou égal à 1000, lequel causes a version to be installed even if this constitutes a downgrade of the package

(Voir man 5 apt_preferences pour plus d'informations sur les options dans les autres cas.)

Nommer le fichier de préférences d'épinglage

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...

(Source: man 5 apt_preferences)

Donc, le nom lui-même n'a pas d'importance, mais un bon nom serait quelque chose comme 50_mariadb. Cela identifie le package en question et permet de placer facilement d’autres fichiers de préférences d’épinglage avant ou après ce fichier dans l’ordre de traitement.

16
chaskes

J'ai eu un problème similaire dans Ubuntu 14.10 lors de la mise à niveau de MySQL vers Maria DB. À savoir je resterais coincé avec

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

Après avoir suivi ces suggestions sans succès, voici ce qui m’a beaucoup aidé: Comment remplacer MySQL par MariaDB sur Ubuntu Server par JournalXtra.

Éditez/var/lib/dpkg/status et supprimez les deux instances de libmysqlclient18 comme ceci:

Package: libmysqlclient18
Status: deinstall ok config-files
Priority: optional
Section: libs
Installed-Size: 3392
Maintainer: Ubuntu Developers <[email protected]>
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 est un serveur de base de données SQL rapide, stable et authentique, multi-utilisateurs et multi-threads. SQL (Structured Query Language) est le langage de requête de base de données le plus populaire au monde. Les principaux objectifs de MySQL sont la rapidité, la robustesse et la facilité d'utilisation. . Ce paquet inclut la bibliothèque cliente. Page d'accueil: http://dev.mysql.com/ Original-Maintainer: Debian MySQL Maintainers

M'a permis d'installer MariaDB en douceur ensuite.

Sudo apt-get install mariadb-server

Remarque : Je suis arrivé ici après de nombreuses tentatives pour supprimer libmariadbclient18 et libmysqlclient18 avant que cette solution ne fonctionne. Je ne parvenais pas à résoudre les problèmes apt-get tant que ces deux problèmes n'ont pas été supprimés, car ils ont été signalés comme des paquets cassés avant que je puisse tenter une autre réparation.

2
m1st0