Veja Incompatibilidade de versão entre Mariadb e Repositórios Debian Ubuntu
% bl0ck_qu0te%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.
% bl0ck_qu0te%
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version
Esta é a situação na redação deste texto, já que os números das versões são mostrados como:
Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy
A página MariaDB fornece duas soluções.
Primeira solução: especificando a versão do pacote
% bl0ck_qu0te%apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>
que é
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
NOTA: atualize para 5.5.34 para refletir a versão atual a partir de 2014.01.28 [RealPariah] Após a instalação, você precisa manter os pacotes até que os números da versão voltem em sincronia.
% bl0ck_qu0te%echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
% bl0ck_qu0te%
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
% bl0ck_qu0te%
Como eu sei quando os números da versão correspondem novamente?
Você pode acompanhar o número da versão do MariaDB inscrevendo-se em um alerta de e-mail sobre novos lançamentos em MariaDB.org . Segundo o site, é um low-traffic announce-only list
.
Além disso, quando as versões do pacote estão novamente em sincronia, você deve parar de ver uma mensagem no apt em que apenas os dois pacotes mantidos serão mantidos, mas que todos os pacotes do mariadb serão mantidos:
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
Isso indica que os números dos pacotes estão em sincronia, o que também pode ser verificado em ferramentas sinápticas ou similares.
Segunda solução: Fixação do repositório MariaDB
% bl0ck_qu0te%Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000
Substitua <mirror-domain>
pelo nome do domínio do espelho MariaDB que você usa. Por exemplo, ftp.osuosl.org
. Com o arquivo pin no lugar, os pacotes do seu repositório MariaDB terão prioridade sobre os pacotes dos repositórios do sistema.
Você pode encontrar o nome do espelho que está usando em Configurações do sistema > > Software & amp; Atualizações , ou se você estiver usando outro sabor do Ubuntu, Synaptic > > Configurações > > Repositórios ou cat /etc/apt/sources.list
.
O Pin-Priority
neste caso precisa ser maior ou igual a 1000, que causes a version to be installed even if this constitutes a downgrade of the package
(Veja man 5 apt_preferences
para mais informações sobre opções em outros casos.)
Nomeando o arquivo de preferências de pinagem
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...
(Fonte: man 5 apt_preferences
)
Assim, o nome em si não importa, mas um bom nome seria algo como 50_mariadb
. Isso identifica o pacote envolvido e permite que outros arquivos de preferências de fixação sejam colocados facilmente antes e depois desse arquivo na ordem de processamento.