安装 MariaDB - 未满足的依赖项,mariadb-server-5.5

Posted

技术标签:

【中文标题】安装 MariaDB - 未满足的依赖项,mariadb-server-5.5【英文标题】:Installing MariaDB - Unmet dependencies, mariadb-server-5.5 【发布时间】:2013-04-19 08:00:45 【问题描述】:

我正在尝试在 Ubuntu 12.04 LTS 上安装 MariaDB。

我已按照https://askubuntu.com/questions/64772/how-to-install-mariadb 和 MariaDB.org 提供的说明进行操作,这些说明会在您选择下载时出现。

最后一步是sudo apt-get install mariadb-server,它返回:

Reading package lists... Done
Building dependency tree
Reading state information... Done
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 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

依赖问题是一个确认问题 (https://mariadb.atlassian.net/browse/MDEV-3882),但我相信损坏的包会阻止我解决这个问题。

如果我尝试安装 libmariadbclient18,我会得到以下信息:

Reading package lists... Done
Building dependency tree
Reading state information... Done
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:
 libmariadbclient18 : Depends: libmysqlclient18 (= 5.5.30-mariadb1~precise) but 5.5.31-0ubuntu0.12.04.1 is to be installed
E: Unable to correct problems, you have held broken packages.

我已尝试使用 sudo apt-get install -f 更正损坏的软件包,但仍然无法安装 mariadb-server 或 libmariadbclient18。

【问题讨论】:

相关:How do I resolve unmet dependencies? 【参考方案1】:

我不知道这是否对任何人有帮助,但我在安装 mariadb 10 时遇到了问题,并且出现了一个错误,导致我进入此页面,但我尝试过的没有任何帮助。

我终于意识到我的 /tmp 目录归 root 所有,其他用户无法写入。我解决了这个问题,然后做了:

apt-get remove mariadb-server

尝试重新安装,但删除失败,所以我删除了/var/lib/mysql 然后尝试:

apt-get remove mariadb-server

再次,它实际上安装了 mariadb-server 并启动并运行...

现在可以了。

【讨论】:

【参考方案2】:

让我分享一下我在我的案例中是如何解决的(Ubuntu 14.04)。

我有错误

$ sudo apt-get install mariadb-server-5.5
Reading package lists... Done
Building dependency tree       
Reading state information... Done
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-5.5 : Depends: mariadb-client-5.5 (>= 5.5.41+maria-1~trusty) but it is not going to be installed
                      Depends: mariadb-server-core-5.5 (>= 5.5.41+maria-1~trusty) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

解决方案:

第一步:sudo apt-get install libmysqlclient18

第二步:sudo apt-get install mariadb-server

注意事项:

我是按照这些instructions安装的 我之前没有安装 MySQL

【讨论】:

这对我不起作用。我安装了第一个,但第二个调用仍然失败。 Ubuntu 14.04。【参考方案3】:
sudo apt-get install libmysqlclient18=5.5.30-mariadb1~precise mysql-common=5.5.30-mariadb1~precise
sudo apt-get install mariadb-server

第一个将 ubuntu 端碰撞的两个 mysql 库恢复为较旧的 mariadb 库。第二个就可以正常进行了。

由于运行了 apt-get dist-upgrade 之类的东西,包被删除了。 GUI 实际上会警告您有问题。

为防止此问题再次出现,请通过在 /etc/apt/preferences.d 中创建文件来告诉 apt 到 favor the MariaDB repo via pinning:

$ cat /etc/apt/preferences.d/MariaDB.pref
Package: *
Pin: origin <mirror-domain>
Pin-Priority: 1000

另外,如果您需要编译任何东西(如 Ruby gems),请务必安装 libmariadbclient-dev

【讨论】:

谢谢,这解决了。我只有 CLI,所以不能使用 GUI。 CLI (apt-get) 在某个时候也应该在 apt-get upgrade 上发出警告,并带有 '以下软件包已被保留' 列表。另一方面我不知道能力,但有时我觉得它试图满足你的愿望有点过分。 对于Ubuntu 13.10(俏皮蝾螈),使用sudo apt-get install libmysqlclient18=5.5.33a+maria-1~saucy mysql-common=5.5.33a+maria-1~saucy mariadb-server mariadb-client 我应该在 /etc/apt/preferences.d 使用什么文件扩展名? 查看我们的服务器,使用.pref,但我不知道它是否真的重要。【参考方案4】:

@Lloeki 的回答不再适合我,因为上述版本对我不可用,导致此错误:

E: Version '5.5.30-mariadb1~precise' for 'libmysqlclient18' was not found

要解决此问题,您需要找到正确的版本:

您可以使用aptitude versions libmysqlclient18 获取可用版本列表。对于我的系统,这看起来像:

Package libmysqlclient18:
[...]
p   5.5.31+maria-1~precise                                         <NULL>                                      1000
i   1:5.5.32-rel31.0-549.precise                                   <NULL>                                      500
[...]    

(还有几行,但只显示了相关的行)。

i 的行是当前安装的版本,建议的5.5.30-mariadb1~precise 没有行。然而,还有另一位候选人看起来很有希望。请注意,正如我所做的那样,这对您来说不必相同(随着时间的推移而变化)。

在这个例子中你可以继续这样:

sudo apt-get install libmysqlclient18=5.5.31+maria-1~precise

在此之后安装将同时选择客户端 mariadb-common,您可以继续:

 sudo apt-get install mariadb-server

没有 OP 的错误。

【讨论】:

【参考方案5】:

@yuvlio 说得对:

$ sudo apt-get install libmysqlclient18=5.5.30-mariadb1~quantal mysql-common=5.5.30-mariadb1~quantal mariadb-server mariadb-client

这适用于 12.04、12.10 和 13.04(也适用于 LinuxMint 14)。

显然,MariaDB 对内核已更新至 3.5.0-25 之类的任何地方“敏感”,这似乎会影响使用普通香草“sudo apt-get install mariadb-server”安装 MariaDB

@yuvlio 提到插件 'InnoDB' 和 'FEEDBACK' 被禁用,但 InnoDB 在安装后可以工作。

这很有意义,因为 MariaDB 使用 XTRA-DB 作为 InnoDB 的替代品。大概 MariaDB 也有一个新的反馈模块(他们希望 MariaDB 反馈到 mariadb.org 而不是 Oracle/mySQL)

【讨论】:

【参考方案6】:

我做了类似于@Lloeki的事情

$ sudo apt-get purge libmariadbclient18 mariadb-server mariadb-client-5.5 libmysqlclient18 mysql-common```

然后查找要安装的候选并重新安装它:

$ apt-cache policy libmysqlclient18 | grep -i quantal 
Installed: 5.5.30-mariadb1~quantal
*** 5.5.30-mariadb1~quantal 0
    500 http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu/ quantal/main amd64 Packages
$ apt-cache policy mysql-common | grep -i quantal 
Installed: 5.5.30-mariadb1~quantal
*** 5.5.30-mariadb1~quantal 0
    500 http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu/ quantal/main amd64 Packages
$ 
$ sudo apt-get install libmysqlclient18=5.5.30-mariadb1~quantal mysql-common=5.5.30-mariadb1~quantal mariadb-server mariadb-client

...
 * Stopping MariaDB database server mysqld                                                              [ OK ] 
130428 13:19:40 [Note] Plugin 'InnoDB' is disabled.
130428 13:19:40 [Note] Plugin 'FEEDBACK' is disabled.

我收到了 Plugin Disabled 警告,但是在使用 sudo service mysql restart 重新启动 mysql 并安装我的 sql 后,innodb 似乎很好,show create table mytable 显示 ENGINE=InnoDB DEFAULT CHARSET=utf8 符合预期。

【讨论】:

我在 ubuntu 13.04 上使用相同的语句来解决相同的问题。谢谢。【参考方案7】:

我能够通过删除所有 mysql 包然后运行来安装 mariadb:

sudo apt-get 安装 mariadb-server-5.5 mariadb-client-5.5 \ mariadb-server-core-5.5 mariadb-common mariadb-server \ libmariadbclient18 libdbd-mysql-perl mariadb-client-core-5.5 \ libmysqlclient18=5.5.30-mariadb1~quantal \ mysql-common=5.5.30-mariadb1~quantal

我不确定是否需要先删除 mysql。

【讨论】:

你是提问者吗?如果是这样,您应该关联您的帐户。 不幸的是,我没有安装任何要删除的 mysql 包 :( 由于我无法识别损坏的包,您的命令将无法工作。【参考方案8】:

试试

sudo dpkg --remove --force-remove-reinstreq BROKEN_PACKAGE

【讨论】:

我试过了,用 libmysqlclient18 替换了 BROKEN_PACKAGE,但它说它没有安装。如何识别损坏的包裹是什么? 尝试“dpkg --get-selections | less”并检查并记下任何mysql包,将它们全部卸载并重试。 谢谢。我为 maria、mysql、sql、db 寻找,但一无所获。我想知道如何解决这个问题,但不幸的是,将服务器炸毁并重新开始会更快。 好点,成功了:sudo dpkg --ignore-depends=libmariadbclient18 --ignore-depends=php5-mysql --ignore-depends=libqt4-sql-mysql --remove --force-remove-reinstreq libmysqlclient18 AND sudo dpkg --ignore-depends=libmariadbclient18 --ignore-depends=php5-mysql --ignore-depends=libqt4-sql-mysql --purge --force-remove-reinstreq libmysqlclient18 谢谢老哥,这对我有用,实际上需要先删除损坏的包,然后使用sudo apt-get install mariadb-server重新安装

以上是关于安装 MariaDB - 未满足的依赖项,mariadb-server-5.5的主要内容,如果未能解决你的问题,请参考以下文章

重新安装 R linux ubuntu:未满足的依赖项 R

由于“未满足的依赖项”,无法在 Ubuntu 上安装 SQL Server 命令行工具

基本操作系统 - LibreOffice/OpenOffice 冲突,Dpkg 错误(未满足的依赖项) - 陷入循环

Angular package.json 和未满足的对等依赖项

sudo apt install npm 它不起作用“以下软件包具有未满足的依赖项”

如何解决 Mariadb 与 mysql 的冲突以安装 mySQL-python 依赖项