Apt MariaDB'nin karşılanmayan bağımlılıkları veya bozuk paketleri olduğunu bildirdiğinde MariaDB'yi yükleme


9

MariaDB'yi bu temiz Ubuntu kurulumuna kurmak için her şeyi denedim ama bu hatayı almaya devam ediyorum,

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.

Denemek ve yüklemek için bu kılavuzu izledim, http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server/

13.10 https://downloads.mariadb.org/mariadb/repositories/ için MariaDB indirme sayfasındaki "resmi" kılavuzu da takip ettim.

Ama hiçbir şey işe yaramıyor gibi görünüyor.

Düzenle 1

Denedim hem nasıl PPA ekledikten sonra karşılanmamış bağımlılıkları çözerim? ve MariaDB nasıl kurulur? ama yine de bana yukarıda gönderdiğim hatayı veriyor.

Hiç bir şey kurulmamış yeni bir Ubuntu kurulumu.

Düzenle 2

Tüm onay kutuları Güncellemeler'de biletlidir. Koştum:

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

Ve bana şu hatayı verdi:

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.

Listelenen paketi yüklemek için bu komutu bir kez çalıştırın: Yazılım Kaynakları'ndaki Güncellemeler sekmesi altındaki 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
Saurav Kumar

Sorununuzu yakında çözeceğiniz anlaşılıyor. Ana hile, gerekli tüm paketleri tek bir satırda listelemenizdir. Örneğin, yeni çıktınızdaki gibi yürütmeniz gerekir: Yaptığım şeyi sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy mariadb-client-5.5"=5.5.33a+maria-1~saucy" mariadb-server-core-5.5"=5.5.33a+maria-1~saucy" yakalayın , böylece yüklemek için daha fazla paket alırsanız, bunu aynı deseni takip ederek aynı satıra eklemeniz gerekir. Zor olacağını biliyorum ama size yardımcı olacağını umuyorum. Cevap.
Saurav Kumar

Doğru, mariadb-common kurmayı başardım ve libmysqlclient18'e bağlı olan libmariadbclient18'i kurmaya çalıştım ama zaten libdbd-mysql-perl ile aynı libmysqlclient18'e sahip olduğumu söylüyor.
Andreas

@Ecaz Sorununuz için bir çözüm buldunuz mu? Ben de aynısını yaşıyorum.
Jon Koops

Bu hatayı alıyorum:libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.33a+maria-1~saucy) but 5.5.34-0ubuntu0.13.10.1 is to be installed
Jon Koops

Yanıtlar:


16

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-PriorityBu 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_preferencesDiğ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.


İlk çözümü deneyeceğim, ancak uyumsuzluğun ne zaman çözüldüğünü nasıl anlarsınız? Her güncelleme yayınladıklarında değişiklik günlüğünü incelemek zorunda mıyım?
Andreas

İlk yöntemi kullandım ve çok düzgün gitti. Hiç bağımlılıklar hakkında endişelenme. Cevabı mariadb sürüm numarasıyla ilgili bilgilerle düzenledim
chaskes

İkinci çözüm için sabitleme dosyasının adı ne olmalıdır?
Thomas Taylor

Ben ♥ yeteneklerin için sana. Mariadb paketleri oldukça berbat. Bunu daha önce hiçbirini yapmak zorunda olmadığım gerçeğine dayanarak iddia ediyorum, ama yukarıdakiler beni kurdu. Teşekkürler!
jettero

1
@ thomas-taylor İğneleme dosyasının isimlendirilmesinde bilgi eklendi.
chaskes

2

MySQL'den Maria DB'ye yükseltme Ubuntu 14.10'da da benzer bir sorun yaşadım. Yani takılıp kalırdım

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

Bu önerileri boşuna takip ettikten sonra, aşağıdakiler bana çok yardımcı oldu: JournalXtra tarafından Ubuntu Sunucusunda MySQL Nasıl MariaDB ile Değiştirilir .

/ Var / lib / dpkg / status düzenlenmesi ve iki libmysqlclient18 örneğinin şu şekilde kaldırılması:

Package: libmysqlclient18
Status: deinstall ok config-files
Priority: optional
Section: libs
Installed-Size: 3392
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
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 hızlı, kararlı ve gerçek bir çok kullanıcılı, çok iş parçacıklı SQL veritabanı sunucusudur. SQL (Yapısal Sorgulama Dili), dünyanın en popüler veritabanı sorgulama dilidir. MySQL'in temel hedefleri hız, sağlamlık ve kullanım kolaylığıdır. . Bu pakette istemci kitaplığı bulunur. Anasayfa: http://dev.mysql.com/ Orijinal-Bakım: Debian MySQL Bakım Ürünleri

Daha sonra MariaDB'yi sorunsuz bir şekilde kurmama izin verdi.

sudo apt-get install mariadb-server

Not : Bu çözüm işe başlamadan önce libmariadbclient18 ve libmysqlclient18'i kaldırma girişimlerinden sonra buraya geldim. Ben başka herhangi bir onarım girişiminde bulunmadan önce kırık paketler olarak bildirildi çünkü bu ikisi kaldırıldı kadar apt-get sorunları geçmiş alamadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.