Mariadb ve Ubuntu Debian Depoları Arasında Sürüm Uyuşmazlığına bakın
MySQL-Common veya libmysqlclient'in sürüm numaralarının resmi Ubuntu veya Debian depolarında MariaDB depolarında olduğundan daha yüksek olması nadirdir, ancak olmuştur. Ne zaman olursa, dağıtım depolarında MySQL sürümünde var olan, ancak MariaDB depolarındaki MariaDB sürümünde zaten düzeltilmiş olan hatalar için kritik hata düzeltme sürümleri nedeniyle olmuştur.
MariaDB'yi yüklemeye çalıştığınızda yukarıda açıklandığı gibi bir durum varsa, böyle bir hata alırsınız:
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.
Bunu düzeltmenin bir yolu, yüklemek istediğiniz iki paketin tam sürümünü belirtmektir. Bunu yapmak için, önce etkilenen paketlerin tam sürüm numaralarını belirleyin. Bunu yapmanın kolay bir yolu 'apt-cache show' ile:
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version
Bu yazıdaki durum budur, çünkü sürüm numaraları şu şekilde gösterilmektedir:
Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy
MariaDB sayfası iki çözüm sunuyor.
İlk çözüm: Paket sürümünü belirtme
Yukarıdakilerin her biri için size bir sürüm listesi verilecektir. MariaDB depolarındaki sürüm dizgilerinde "mariadb" olacak ve istedikleriniz. Elinizdeki sürüm numaraları ile, sürüm numaralarını açıkça şu şekilde belirterek MariaDB'yi kurabilirsiniz:
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>
hangisi
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
NOT: 2014.01.28 [RealPariah] 'dan itibaren geçerli sürümü yansıtacak şekilde 5.5.34'e güncelleyin. Kurulumdan
sonra, sürüm numaraları tekrar senkronize olana kadar paketleri tutmanız gerekir.
MariaDB kurulduktan ve sürüm numarası sorunu var olduğu sürece, "apt-get dist-upgrade", "yükseltilmiş" libmysqlclient ve mysql-ortak paketlerini kurmak için MariaDB'yi kaldırmaya çalışacaktır. Bunun olmasını önlemek için, onları uygun şekilde yükseltmeye çalışmaz. Bunu yapmak için bir terminal açın, sudo -s ile kök olun ve ardından aşağıdakileri girin:
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
Muhafazalar MariaDB'yi yükseltmenizi engelleyecektir, bu nedenle muhafazayı kaldırmak, bir terminal açmak, 'sudo -s' ile kök haline gelmek ve ardından aşağıdakileri girmek:
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
Daha sonra MariaDB'yi normal olarak yükseltebilirsiniz (örn. `Sudo apt-get güncellemesi; sudo apt-get yükseltmesi` ile).
Sürüm numaralarının ne zaman eşleştiğini nasıl bilebilirim?
MariaDB.org'daki yeni sürümlerin e-posta uyarısına kaydolarak MariaDB sürüm numarasını takip edebilirsiniz . Siteye göre, bir low-traffic announce-only list
.
Ayrıca, paket sürümleri bir kez daha senkronize olduğunda, yalnızca 2 tutulan paketin tutulacağı, ancak tüm mariadb paketlerinin tutulacağı konusunda bir mesaj görmeyi bırakmalısınız:
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
Bu, paket numaralarının tekrar senkronize olduğunu gösterir, bu da sinaptik veya benzer araçlarla da kontrol edilebilir.
İkinci çözüm: MariaDB Havuzunu Sabitleme
Yapabileceğiniz başka bir şey, kullandığınız MariaDB deposunu sabitlemektir. Bu, / etc / apt / preferences.d / `altında aşağıdaki içeriğe sahip bir dosya oluşturarak yapılır:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000
<mirror-domain>
Kullandığınız MariaDB aynasının etki alanı adıyla değiştirin . Örneğin ftp.osuosl.org
,. Pin dosyası yerinde olduğunda, MariaDB deponuzdaki paketler sistem havuzlarındaki paketler üzerinde önceliğe sahip olacaktır.
Kullandığınız yansının adını Sistem Ayarları >> Yazılım ve Güncellemeler'de veya başka bir Ubuntu, Synaptic >> Ayarlar >> Depoları veya çeşidi kullanıyorsanız bulabilirsiniz cat /etc/apt/sources.list
.
Pin-Priority
Bu durumda ihtiyaçlarına göre daha büyük olabilir ya da, 1000 eşit olancauses a version to be installed even if this constitutes a downgrade of the package
( man 5 apt_preferences
Diğer durumlarda seçenekler hakkında daha fazla bilgi için bkz .)
Sabitleme tercihleri dosyasını adlandırma
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...
(Kaynak: man 5 apt_preferences
)
Yani, adın kendisi önemli değil, ama iyi bir isim gibi bir şey olurdu 50_mariadb
. Bu, ilgili paketi tanımlar ve diğer sabitleme tercihleri dosyalarının işleme sırasından bu dosyadan önce kolayca yerleştirilmesine olanak tanır.
sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"
tüm onay kutularını işaretlediğinizden emin olun . Çalıştırmak için: Yazılım Kaynakları'nı açın . Yukarıda bahsettiğim komutta herhangi bir hata / mesaj alırsanız, sorunuzu gönderin.sudo software-properties-gtk