AptがMariaDBの依存関係が満たされていないかパッケージが壊れていると報告した場合のMariaDBのインストール


9

私はこのクリーンなUbuntuインストールにMariaDBをインストールするためにすべてを試しましたが、このエラーが発生し続けます、

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.

私はこのガイドに従って試してインストールしました、 http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server/

また、MariaDBのダウンロードページにある13.10の「公式」ガイドにも従ってい ますhttps://downloads.mariadb.org/mariadb/repositories/

しかし、何も機能していないようです。

編集1

私が試してみました、両方のはどのようにPPAを追加した後に満たされていない依存関係を解決するのですか?MariaDBをインストールする方法?しかし、それでも私が上に投稿したエラーが表示されます。

これは、ほとんど何もインストールされていない、Ubuntuの新規インストールです。

編集2

すべてのチェックボックスはアップデートのチケットです。私が走った:

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

そしてそれは私にこのエラーを与えました:

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.

このコマンドを1回実行して、リストされているパッケージをインストールします。sudo apt-get update && sudo apt-get -f install mariadb-server-5.5"=5.5.33a+maria-1~saucy"必ず、[ ソフトウェアソース ]の[ 更新 ]タブにあるすべてのチェックボックスオンにしてください。実行を確認するには:ソフトウェアソースを開きます。上記のコマンドでエラー/メッセージが表示された場合は、質問に投稿してください。sudo software-properties-gtk
Saurav Kumar 2013

すぐに問題を解決するようです。主なトリックは、インストールに必要なすべてのパッケージを1行でリストする必要があることです。たとえば、新しい出力から次のように実行します。私がやっていることを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" パターンでキャッチします。そのため、インストールするパッケージをさらに取得する場合は、同じパターンに従って同じ行にそれを含める必要があります。難しいことは承知していますが、お役に立てば幸いです。応答。
Saurav Kumar 2013

そうです、mariadb-commonをインストールして、libmysqlclient18に依存するlibmariadbclient18をインストールしようとしましたが、libdbd-mysql-perlと同じlibmysqlclient18がすでにあると表示されています。
Andreas

@Ecaz問題の解決策を見つけましたか?私は同じことを経験しています。
Jon Koops 2013年

私はこのエラーを取得しています:libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.33a+maria-1~saucy) but 5.5.34-0ubuntu0.13.10.1 is to be installed
ジョンKoops

回答:


16

MariadbとUbuntu Debianリポジトリ間のバージョンの不一致を参照してください

mysql-commonまたはlibmysqlclientのバージョン番号が、MariaDBリポジトリよりも公式のUbuntuまたはDebianリポジトリで高くなることはまれですが、それは起こりました。これは、配布リポジトリのMySQLのバージョンに存在していたが、MariaDBリポジトリのMariaDBのバージョンですでに修正されていたバグの重大なバグ修正リリースが原因である場合があります。

上記のような状況でMariaDBをインストールしようとすると、次のようなエラーが発生します。
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.
これを修正する方法は、インストールする2つのパッケージの正確なバージョンを指定することです。これを行うには、まず影響を受けるパッケージの完全なバージョン番号を確認します。これを行う簡単な方法は、「apt-cache show」を使用することです。
apt-cache show mysql-common | grep Version
apt-cache show libmysqlclient18 | grep Version

バージョン番号は次のように表示されるため、これはこの記事の執筆時点の状況です。

Version: 5.5.34-0ubuntu0.13.10.1
Version: 5.5.34+maria-1~saucy

MariaDBページには2つのソリューションがあります。

最初の解決策:パッケージバージョンの指定

上記のそれぞれについて、バージョンのリストが表示されます。MariaDBリポジトリにあるものは、バージョン文字列に「mariadb」が含まれ、必要なものです。手元のバージョン番号を使用して、次のようにバージョン番号を明示的に指定することで、MariaDBをインストールできます。
apt-get install mariadb-server-5.5 mariadb-client-5.5 \
libmysqlclient18=<version-number> \
mysql-common=<version-number>

それは

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

注:2014.01.28 [RealPariah]の現在のバージョンを反映するように5.5.34に更新し ます。インストール後、バージョン番号が同期するまでパッケージを保持する必要があります。

MariaDBがインストールされた後、バージョン番号の問題が存在する限り、「アップグレードされた」libmysqlclientおよびmysql-commonパッケージをインストールするために、 `apt-get dist-upgrade`はMariaDBを削除しようとします。これが起こらないようにするには、aptがそれらをアップグレードしようとしないようにそれらを保持することができます。これを行うには、ターミナルを開き、 `sudo -s`でrootになり、次のように入力します。
echo libmysqlclient18 hold | dpkg --set-selections
echo mysql-common hold | dpkg --set-selections
保留によりMariaDBをアップグレードできないため、保留を削除する場合は、ターミナルを開き、「sudo -s」を使用してrootになり、次のように入力します。
echo libmysqlclient18 install | dpkg --set-selections
echo mysql-common install | dpkg --set-selections
その後、通常どおりMariaDBをアップグレードできます(たとえば、 `sudo apt-get update; sudo apt-get upgrade`を使用)。

バージョン番号が再び一致する時期を知るにはどうすればよいですか?

MariaDB.orgで新しいリリースの電子メールアラートにサインアップすることにより、MariaDBのバージョン番号を追跡できます。サイトによると、それはlow-traffic announce-only listです。

さらに、パッケージのバージョンが再び同期している場合は、保持されている2つのパッケージのみが保持され、すべてのmariadbパッケージは保持されるというメッセージが表示されなくなります。

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

これは、パッケージ番号が同期されていることを示しています。これは、シナプスまたは同様のツールで確認することもできます。

2番目の解決策:MariaDBリポジトリの固定

もう1つの方法は、使用するMariaDBリポジトリを固定することです。これは、以下の内容で `/ etc / apt / preferences.d /`の下にファイルを作成することによって行われます:
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

<mirror-domain>を、使用するMariaDBミラーのドメイン名に置き換えます。たとえば、ftp.osuosl.org。pinファイルを配置すると、MariaDBリポジトリのパッケージがシステムリポジトリのパッケージよりも優先されます。

あなたは、あなたが使用しているミラーの名前を見つけることができますシステム設定>>ソフトウェア&アップデートをあなたがUbuntuの、別の香りを使用している場合、またはシナプス>>設定>>リポジトリ、またはをcat /etc/apt/sources.list

Pin-Priorityこの場合、より大きいまたは1000に等しく、そのことが必要ですcauses a version to be installed even if this constitutes a downgrade of the package

man 5 apt_preferences他の場合のオプションの詳細については、を参照してください。)

ピン留め設定ファイルの命名

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...

(出典:man 5 apt_preferences

したがって、名前自体は重要ではありませんが、適切な名前はのようになります50_mariadb。これにより、関連するパッケージが識別され、他の固定設定ファイルを処理順序でこのファイルの前後に簡単に配置できます。


最初の解決策を試しますが、不一致が修正されたときにどのようにしてわかりますか?更新をリリースするたびに変更ログを精査する必要がありますか?
Andreas

最初の方法を使用したところ、非常にスムーズに進みました。依存関係の心配は一切ありません。mariadbのバージョン番号に関する情報を使用して回答を編集しました
2013年

2番目のソリューションのピン留めファイルの名前は何ですか?
Thomas Taylor

私♥あなたのスキルをあなたに。mariadbパッケージはかなり台無しになっています。私はこれまでに上記のいずれもする必要がなかったという事実に基づいてこれを断言しますが、上記はインストールされました。ありがとう!
jettero 2013年

1
@ thomas-taylorピン留めファイルの命名に関する情報を追加しました。
2013年

2

MySQLからMaria DBにアップグレードするUbuntu 14.10でも同様の問題がありました。つまり、私は行き詰まるでしょう

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

無駄にこれらの提案に従った後、以下が大幅に私を助け:UbuntuのサーバにMariaDBでMySQLを交換する方法 JournalXtraで。

/ var / lib / dpkg / statusを編集し、次のようにlibmysqlclient18の2つのインスタンスを削除します。

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は、高速で安定した真のマルチユーザー、マルチスレッドSQLデータベースサーバーです。SQL(構造化クエリ言語)は、世界で最も人気のあるデータベースクエリ言語です。MySQLの主な目標は、速度、堅牢性、使いやすさです。。このパッケージには、クライアントライブラリが含まれています。ホームページ:http : //dev.mysql.com/ Original-Maintainer:Debian MySQL Maintainers

その後、MariaDBをスムーズにインストールできました。

sudo apt-get install mariadb-server

:この解決策が機能する前にlibmariadbclient18とlibmysqlclient18を削除しようと何度も試みた結果、ここに到達しました。他の修復を試みる前に壊れたパッケージとして報告されたため、これら2つが削除されるまで、apt-getの問題を乗り越えることができませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.