What is the most stable/safest way to install MariaDB?
How to Install MariaDB on Ubuntu
mariadbsoftware installation
Related Solutions
See Version Mismatch between Mariadb and Ubuntu Debian Repositories
It is rare for the version numbers of mysql-common or libmysqlclient to be higher in the official Ubuntu or Debian repositories than they are in the MariaDB repositories, but it has happened. Whenever it has it has been because of critical bug fix releases for bugs that existed in the version of MySQL in the distribution repositories but which had already been fixed in the version of MariaDB in the MariaDB repositories.
If a situation as described above exists when you try to install MariaDB you will get an error like this:
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.
A way to fix this is to specify the exact version of the two packages that you want to install. To do this, first determine the full version numbers of the affected packages. An easy way to do so is with 'apt-cache show':
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version
This is the situation as of this writing, since the version numbers are shown as:
Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy
The MariaDB page gives two solutions.
First solution: Specifying the package version
For each of the above you will be given a list of versions. The ones in the MariaDB repositories will have "mariadb" in the version strings and are the ones you want. With the version numbers in hand you will be able to install MariaDB by explicitly specifying the version numbers like so:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>
which is
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
NOTE: Update to 5.5.34 to reflect current version as of 2014.01.28 [RealPariah] After installation, you need to hold the packages until the version numbers get back in sync.
After MariaDB is installed, and as long as the version number issue exists, an `apt-get dist-upgrade` will try to remove MariaDB in order to install the "upgraded" libmysqlclient and mysql-common packages. To prevent this from happening you can hold them so that apt doesn't try to upgrade them. To do so, open a terminal, become root with `sudo -s`, and then enter the following:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
The holds will prevent you from upgrading MariaDB, so when you want to remove the holds, open a terminal, become root with 'sudo -s', and then enter the following:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
You will then be able to upgrade MariaDB as normal (e.g. with `sudo apt-get update; sudo apt-get upgrade`).
How do I know when the version numbers match again?
You can track the MariaDB version number by signing up for an email alert of new releases at MariaDB.org. According to the site, it is a low-traffic announce-only list
.
Additionally, when the package versions are once again in sync, you should stop seeing a message in apt that only the 2 held packages will be held, but that all mariadb packages will be held:
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
This indicates the package numbers are back in sync, which can also be checked in synaptic or similar tools.
Second solution: Pinning the MariaDB Repository
Another thing you can do is to pin the MariaDB repository that you use. This is done by creating a file under `/etc/apt/preferences.d/` with the following contents:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000
Replace <mirror-domain>
with the domain name of the MariaDB mirror you use. For example, ftp.osuosl.org
. With the pin file in place, packages from your MariaDB repository will have priority over packages from the system repositories.
You can find the mirror name you are using in System Settings >> Software & Updates, or if you are using another flavor of Ubuntu, Synaptic >> Settings >> Repositories, or cat /etc/apt/sources.list
.
The Pin-Priority
in this case needs to be greater than or equal to 1000, which causes a version to be installed even if this constitutes a downgrade of the package
(See man 5 apt_preferences
for more information on options in other cases.)
Naming the pinning preferences file
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
)
So, the name itself doesn't matter, but a good name would be something like 50_mariadb
. This identifies the package involved and allows other pinning preferences files to be easily placed before of after this file in the processing order.
Best Answer
For Precise Pangolin 12.04 LTS
Install the repo manager
Import the GnuPG signing key
Modify your
sources.list
file to add MariadDBOpen it from terminal (
gksudo gedit /etc/apt/sources.list
) and add the following lines at the end:For Version 10:
Or have the lines automatically added with:
For Version 5.5:
Or have the lines automatically added with:
Refresh your system
sudo apt-get update
And finally install MariaDB
sudo apt-get install mariadb-server
For further information see the their download page.