Lihat Versi Ketidakcocokan antara Mariadb dan Repositori Debian Ubuntu
Jarang untuk nomor versi mysql-common atau libmysqlclient lebih tinggi di repositori resmi Ubuntu atau Debian daripada di repositori MariaDB, tetapi telah terjadi. Setiap kali itu terjadi karena rilis perbaikan bug kritis untuk bug yang ada di versi MySQL dalam repositori distribusi tetapi yang sudah diperbaiki dalam versi MariaDB di repositori MariaDB.
Jika situasi seperti yang dijelaskan di atas ada ketika Anda mencoba menginstal MariaDB Anda akan mendapatkan kesalahan seperti ini:
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.
Cara untuk memperbaikinya adalah dengan menentukan versi persis dari dua paket yang ingin Anda instal. Untuk melakukan ini, pertama-tama tentukan nomor versi lengkap dari paket yang terpengaruh. Cara mudah untuk melakukannya adalah dengan 'acara apt-cache':
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version
Ini adalah situasi pada penulisan ini, karena nomor versi ditampilkan sebagai:
Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy
Halaman MariaDB memberikan dua solusi.
Solusi pertama: Menentukan versi paket
Untuk masing-masing di atas Anda akan diberikan daftar versi. Yang di repositori MariaDB akan memiliki "mariadb" di string versi dan yang Anda inginkan. Dengan nomor versi di tangan Anda akan dapat menginstal MariaDB dengan secara eksplisit menentukan nomor versi seperti:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>
yang mana
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
CATATAN: Perbarui ke 5.5.34 untuk mencerminkan versi saat ini pada 2014.01.28 [RealPariah]
Setelah instalasi, Anda harus memegang paket sampai nomor versi kembali sinkron.
Setelah MariaDB diinstal, dan selama masalah nomor versi ada, `apt-get dist-upgrade` akan mencoba menghapus MariaDB untuk menginstal paket libmysqlclient dan mysql-common yang" ditingkatkan ". Untuk mencegah hal ini terjadi, Anda dapat menahannya agar apt tidak mencoba untuk memutakhirkannya. Untuk melakukannya, buka terminal, menjadi root dengan `sudo -s`, dan kemudian masukkan yang berikut ini:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
Penangguhan akan mencegah Anda meningkatkan MariaDB, jadi ketika Anda ingin menghapus penangguhan, buka terminal, menjadi root dengan 'sudo -s', dan kemudian masukkan yang berikut ini:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
Anda kemudian dapat memutakhirkan MariaDB seperti biasa (mis. Dengan `sudo apt-get pembaruan; sudo apt-get upgrade`).
Bagaimana saya tahu kapan nomor versi cocok lagi?
Anda dapat melacak nomor versi MariaDB dengan mendaftar untuk peringatan email tentang rilis baru di MariaDB.org . Menurut situs, itu adalah low-traffic announce-only list
.
Selain itu, ketika versi paket sekali lagi disinkronkan, Anda harus berhenti melihat pesan di apt bahwa hanya 2 paket yang ditahan, tetapi semua paket mariadb akan ditahan:
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
Ini menunjukkan nomor paket kembali sinkron, yang juga dapat diperiksa dalam alat sinaptik atau serupa.
Solusi kedua: Menjepit Repositori MariaDB
Hal lain yang dapat Anda lakukan adalah menyematkan repositori MariaDB yang Anda gunakan. Ini dilakukan dengan membuat file di bawah `/ etc / apt / preferences.d /` dengan konten berikut:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000
Ganti <mirror-domain>
dengan nama domain mirror MariaDB yang Anda gunakan. Sebagai contoh ftp.osuosl.org
,. Dengan file pin di tempat, paket dari repositori MariaDB Anda akan memiliki prioritas lebih dari paket dari repositori sistem.
Anda dapat menemukan nama mirror yang Anda gunakan di Pengaturan Sistem >> Perangkat Lunak & Pembaruan , atau jika Anda menggunakan rasa lain dari Ubuntu, Synaptic >> Settings >> Repositori , atau cat /etc/apt/sources.list
.
Dalam Pin-Priority
hal ini harus lebih besar dari atau sama dengan 1000, yangcauses a version to be installed even if this constitutes a downgrade of the package
(Lihat man 5 apt_preferences
untuk informasi lebih lanjut tentang opsi dalam kasus lain.)
Memberi nama file preferensi yang disematkan
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...
(Sumber: man 5 apt_preferences
)
Jadi, nama itu sendiri tidak masalah, tapi nama yang bagus akan seperti itu 50_mariadb
. Ini mengidentifikasi paket yang terlibat dan memungkinkan file preferensi menyematkan lainnya dengan mudah ditempatkan sebelum setelah file ini dalam urutan pemrosesan.
sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"
Pastikan Anda telah mencentang semua kotak centang di bawah tab Pembaruan di Sumber Perangkat Lunak . Untuk memverifikasinya jalankan:sudo software-properties-gtk
untuk membuka Sumber Perangkat Lunak . Jika Anda mendapatkan kesalahan / pesan dalam perintah yang saya sebutkan di atas, kirimkan dalam pertanyaan Anda.