如何阻止dist-upgrade删除MariaDB?

在Partial升级中提出了类似的问题- 为什么删除MariaDB? 。 这个问题的答案基本上是表明dist-upgrade是问题所在。 这个问题是询问是否有一些解决方法(或修复)。

有时需要进行dist-upgrade而不仅仅是升级。

我们可以在sources.list(或其他地方)中更改某些内容,告诉Ubuntu不要删除MariaDB吗?

在dist-upgrade上删除maria db

marc@db01:~$ dpkg --get-selections | grep mysql libdbd-mysql-perl install libmysqlclient18 install mysql-common install marc@db01:~$ dpkg --get-selections | grep maria libmariadbclient18 install mariadb-client-10.0 deinstall mariadb-client-5.5 install mariadb-client-core-5.5 install mariadb-common install mariadb-server install mariadb-server-10.0 deinstall mariadb-server-5.5 install mariadb-server-core-5.5 install marc@db01:~$ sudo apt-get check Reading package lists... Done Building dependency tree Reading state information... Done marc@db01:~$ dpkg --list | grep mysql ii libdbd-mysql-perl 4.020-1build2 Perl5 database interface to the MySQL database ii libmysqlclient18 5.5.34+maria-1~precise Virtual package to satisfy external depends ii mariadb-common 5.5.34+maria-1~precise MariaDB database common files (eg /etc/mysql/conf.d/mariadb.cnf) ii mysql-common 5.5.34+maria-1~precise MariaDB database common files (eg /etc/mysql/my.cnf) marc@db01:~$ sudo apt-get dist-upgrade -o Debug::pkgProblemResolver=true -o Debug::pkgProblemResolver::ShowScores=true Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Starting Settings used to calculate pkgProblemResolver::Scores:: Important => 3 Required => 2 Standard => 1 Optional => -1 Extra => -2 Essentials => 100 InstalledAndNotObsolete => 1 Depends => 1 Recommends => 1 AddProtected => 10000 AddEssential => 5000 Show Scores 10000 linux-image-3.8.0-29-generic [ amd64 ]  ( kernel ) 6306 dpkg [ amd64 ]  ( admin ) 5409 libc-bin [ amd64 ]  ( libs ) 5371 debianutils [ amd64 ]  ( utils ) 53 libsqlite3-0 [ amd64 ]  ( libs ) 10 mariadb-common [ amd64 ]  ( database ) 8 mysql-common [ amd64 ]  5.5.35-0ubuntu0.12.04.1 > (database ) 6 libmariadbclient18 [ amd64 ]  ( libs ) 6 libmysqlclient18 [ amd64 ]  5.5.35-0ubuntu0.12.04.1 > ( libs ) 2 mariadb-client-5.5 [ amd64 ]  ( misc ) 2 mariadb-server-core-5.5 [ amd64 ]  ( misc ) 2 mariadb-client-core-5.5 [ amd64 ]  ( misc ) 1 mariadb-server-5.5 [ amd64 ]  ( misc ) Starting 2 Investigating (0) mysql-common [ amd64 ]  5.5.35-0ubuntu0.12.04.1 > ( database ) Broken mysql-common:amd64 Breaks on mysql-client-5.1 [ amd64 ]  ( none ) Conflicts//Breaks against version 10.0.7+maria-1~precise for mariadb-client-10.0 but that is not InstVer, ignoring Considering mariadb-client-5.5:amd64 2 as a solution to mysql-common:amd64 8 Added mariadb-client-5.5:amd64 to the remove list Broken mysql-common:amd64 Breaks on mysql-client-core-5.1 [ amd64 ]  ( none ) Considering mariadb-client-core-5.5:amd64 2 as a solution to mysql-common:amd64 8 Added mariadb-client-core-5.5:amd64 to the remove list Broken mysql-common:amd64 Breaks on mysql-server-core-5.1 [ amd64 ]  ( none ) Considering mariadb-server-core-5.5:amd64 2 as a solution to mysql-common:amd64 8 Added mariadb-server-core-5.5:amd64 to the remove list Conflicts//Breaks against version 5.5.34+maria-1~precise for mariadb-galera-server-5.5 but that is not InstVer, ignoring Fixing mysql-common:amd64 via remove of mariadb-client-5.5:amd64 Fixing mysql-common:amd64 via remove of mariadb-client-core-5.5:amd64 Fixing mysql-common:amd64 via remove of mariadb-server-core-5.5:amd64 Investigating (0) libmariadbclient18 [ amd64 ]  ( libs ) Broken libmariadbclient18:amd64 Depends on libmysqlclient18 [ amd64 ]  5.5.35-0ubuntu0.12.04.1 > ( libs ) (= 5.5.34+maria-1~precise) Considering libmysqlclient18:amd64 6 as a solution to libmariadbclient18:amd64 6 Removing libmariadbclient18:amd64 rather than change libmysqlclient18:amd64 Investigating (0) mariadb-server-5.5 [ amd64 ]  ( misc ) Broken mariadb-server-5.5:amd64 Depends on mariadb-client-5.5 [ amd64 ]  ( misc ) (>= 5.5.34+maria-1~precise) Considering mariadb-client-5.5:amd64 2 as a solution to mariadb-server-5.5:amd64 1 Removing mariadb-server-5.5:amd64 rather than change mariadb-client-5.5:amd64 Investigating (0) mariadb-server [ amd64 ]  ( database ) Broken mariadb-server:amd64 Depends on mariadb-server-5.5 [ amd64 ]  ( misc ) (= 5.5.34+maria-1~precise) Considering mariadb-server-5.5:amd64 1 as a solution to mariadb-server:amd64 0 Removing mariadb-server:amd64 rather than change mariadb-server-5.5:amd64 Done Done The following packages will be REMOVED: libmariadbclient18 mariadb-client-5.5 mariadb-client-core-5.5 mariadb-server mariadb-server-5.5 mariadb-server-core-5.5 The following packages will be upgraded: libmysqlclient18 mysql-common 2 upgraded, 0 newly installed, 6 to remove and 0 not upgraded. Need to get 957 kB of archives. After this operation, 107 MB disk space will be freed. Do you want to continue [Y/n]? n Abort. marc@db01:~$ 

现在MariaDB已经更新了他们的PPA:

 marc@db01:~$ apt-cache show mysql-common | grep Version Version: 5.5.35+maria-1~precise Version: 5.5.35-0ubuntu0.12.04.2 Version: 5.5.35-0ubuntu0.12.04.1 Version: 5.5.22-0ubuntu1 marc@db01:~$ apt-cache show libmysqlclient18 | grep Version Version: 5.5.35+maria-1~precise Version: 5.5.35-0ubuntu0.12.04.2 Version: 5.5.35-0ubuntu0.12.04.1 Version: 5.5.22-0ubuntu1 marc@db01:~$ sudo apt-get dist-upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 

 破解mysql-common:amd64在mysql-client-5.1上rest[amd64](无)
   冲突//打破版本10.0.7 + maria-1~对于mariadb-client-10.0精确的,但这不是InstVer,忽略
  考虑到mariadb-client-5.5:amd64 2作为mysql-common的解决方案:amd64 8
   将mariadb-client-5.5:amd64添加到删除列表中 

可以看出,如果您尝试升级mysql,MariaDB会中断。 您应该暂时只依赖sudo apt-get upgrade来防止删除MariaDB。

MariaDB在他们关于安装deb软件包的文章中介绍了这一点,修复它的最佳方法是通过固定MariaDB repo。 您可以按照以下说明操作: https : //mariadb.com/kb/en/installing-mariadb-deb-files/#pinning-the-mariadb-repository (如果您向上滚动它们也可以解释它为什么会发生)