Hi all,
Not often I have a whinge about something, but this problem has been bugging me of late more than somewhat. I’m in the process of setting up an OpenStack cluster at work. Now, as the underlying OS we’ve chosen Ubuntu Linux which is fine. Ubuntu is a quite stable, reliable and well supported platform.
One of my pet peeves though, is when some package manager decides to get lazy. Now, those of us who have been around the Linux scene have probably discovered RPM dependency hell… and the smug Debian users who tell us that Debian doesn’t do this.
Ho ho, errm… no, when APT wants to go into dummy mode, it does so with style:
Nov 12 05:32:27 in-target: Setting up python3-update-manager (1:0.186.2) ... Nov 12 05:32:27 in-target: Setting up python3-distupgrade (1:0.192.13) ... Nov 12 05:32:27 in-target: Setting up ubuntu-release-upgrader-core (1:0.192.13) ... Nov 12 05:32:27 in-target: Setting up update-manager-core (1:0.186.2) ... Nov 12 05:32:27 in-target: Processing triggers for libc-bin ... Nov 12 05:32:27 in-target: ldconfig deferred processing now taking place Nov 12 05:32:27 in-target: Processing triggers for initramfs-tools ... Nov 12 05:32:27 in-target: Processing triggers for ca-certificates ... Nov 12 05:32:27 in-target: Updating certificates in /etc/ssl/certs... Nov 12 05:32:29 in-target: 158 added, 0 removed; done. Nov 12 05:32:29 in-target: Running hooks in /etc/ca-certificates/update.d.... Nov 12 05:32:29 in-target: done. Nov 12 05:32:29 in-target: Processing triggers for sgml-base ... Nov 12 05:32:29 pkgsel: installing additional packages Nov 12 05:32:29 in-target: Reading package lists... Nov 12 05:32:29 in-target: Nov 12 05:32:29 in-target: Building dependency tree... Nov 12 05:32:30 in-target: Nov 12 05:32:30 in-target: Reading state information... Nov 12 05:32:30 in-target: Nov 12 05:32:30 in-target: openssh-server is already the newest version. Nov 12 05:32:30 in-target: Some packages could not be installed. This may mean that you have Nov 12 05:32:30 in-target: requested an impossible situation or if you are using the unstable Nov 12 05:32:30 in-target: distribution that some required packages have not yet been created Nov 12 05:32:30 in-target: or been moved out of Incoming. Nov 12 05:32:30 in-target: The following information may help to resolve the situation: Nov 12 05:32:30 in-target: Nov 12 05:32:30 in-target: The following packages have unmet dependencies: Nov 12 05:32:30 in-target: mariadb-galera-server : Depends: mariadb-galera-server-5.5 (= 5.5.33a+maria-1~raring) but it is not going to be installed
Mmmm, great, not going to be installed. May I ask why not? No, I’ll just drop to a shell and do it myself then.
Nov 12 05:32:30 in-target: E: Unable to correct problems, you have held broken packages.
Now this is probably one of my most hated things about computing, is when a software package accuses YOU of doing something that you haven’t. Excuse me… I have held broken packages? I simply performed a fresh install then told you to do an install!
So let’s have a closer look.
Nov 12 05:32:30 main-menu[20801]: WARNING **: Configuring 'pkgsel' failed with error code 100 Nov 12 05:32:30 main-menu[20801]: WARNING **: Menu item 'pkgsel' failed. Nov 12 05:37:38 main-menu[20801]: INFO: Modifying debconf priority limit from 'high' to 'medium' Nov 12 05:37:38 debconf: Setting debconf/priority to medium Nov 12 05:37:38 main-menu[20801]: DEBUG: resolver (ext2-modules): package doesn't exist (ignored) Nov 12 05:37:40 main-menu[20801]: INFO: Menu item 'di-utils-shell' selected ~ # chroot /target chroot: can't execute '/bin/network-console': No such file or directory ~ # chroot /target bin/bash
We give it a shot ourselves to see the error more clearly.
root@test-mgmt0:/# apt-get install mariadb-galera-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-galera-server : Depends: mariadb-galera-server-5.5 (= 5.5.33a+maria-1~raring) but it is not going to be installed E: Unable to correct problems, you have held broken packages.
Fine, so we’ll try installing that instead then.
root@test-mgmt0:/# apt-get install mariadb-galera-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-galera-server-5.5 : Depends: mariadb-client-5.5 (>=
5.5.33a+maria-1~raring) but it is not going to be installed
Depends: libmariadbclient18 (>=
5.5.33a+maria-1~raring) but it is not going to be installed
PreDepends: mariadb-common but it is not going
to be installed
E: Unable to correct problems, you have held broken packages.
Okay, closer, so we need to install those too. But hang on, isn’t that apt‘s responsibility to know this stuff? (which it clearly does).
Also note we don’t get told why it isn’t going to be installed. It refuses to install the packages, “just because”. No reason given.
We try adding in the deps to our list.
root@test-mgmt0:/# apt-get install mariadb-galera-server-5.5
mariadb-client-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-client-5.5 : Depends: libdbd-mysql-perl (>= 1.2202) but it is not
going to be installed
Depends: mariadb-common but it is not going to be
installed
Depends: libmariadbclient18 (>= 5.5.33a+maria-1~raring)
but it is not going to be installed
Depends: mariadb-client-core-5.5 (>=
5.5.33a+maria-1~raring) but it is not going to be installed
mariadb-galera-server-5.5 : Depends: libmariadbclient18 (>=
5.5.33a+maria-1~raring) but it is not going to be installed
PreDepends: mariadb-common but it is not going
to be installed
E: Unable to correct problems, you have held broken packages.
Okay, some more deps, we’ll add those…
root@test-mgmt0:/# apt-get install mariadb-galera-server-5.5
mariadb-client-5.5 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: mariadb-common but it is not going to be
installed
Depends: libmysqlclient18 (= 5.5.33a+maria-1~raring)
but it is not going to be installed
mariadb-client-5.5 : Depends: libdbd-mysql-perl (>= 1.2202) but it is not
going to be installed
Depends: mariadb-common but it is not going to be
installed
Depends: mariadb-client-core-5.5 (>=
5.5.33a+maria-1~raring) but it is not going to be installed
mariadb-galera-server-5.5 : PreDepends: mariadb-common but it is not going
to be installed
E: Unable to correct problems, you have held broken packages.
Wash-rinse-repeat!
root@test-mgmt0:/# apt-get install mariadb-galera-server-5.5
mariadb-client-5.5 libmariadbclient18 mariadb-common
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.33a+maria-1~raring)
but it is not going to be installed
mariadb-client-5.5 : Depends: libdbd-mysql-perl (>= 1.2202) but it is not
going to be installed
mariadb-common : Depends: mysql-common but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
root@test-mgmt0:/# apt-get install mariadb-galera-server-5.5
mariadb-client-5.5 libmariadbclient18 mariadb-common libdbd-mysql-perl
mysql-common
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.33a+maria-1~raring)
but 5.5.34-0ubuntu0.13.04.1 is to be installed
mariadb-client-5.5 : Depends: mariadb-client-core-5.5 (>=
5.5.33a+maria-1~raring) but it is not going to be installed
mysql-common : Breaks: mysql-client-5.1
Breaks: mysql-server-core-5.1
E: Unable to correct problems, you have held broken packages.
Aha, so there’s a newer version in the Ubuntu repository that’s overriding ours. Brilliant. Ohh, and there’s a mysql-client binary too, but it won’t tell me what version it’s trying for.
Looking in the repository myself I spot a package named mysql-common_5.5.33a+maria-1~raring_all.deb. That is likely our culprit, so I try version 5.5.33a+maria-1~raring.
root@test-mgmt0:/# apt-get install mariadb-galera-server-5.5 mariadb-client-5.5 libmariadbclient18 mariadb-common libdbd-mysql-perl mysql-common=5.5.33a+maria-1~raring libmysqlclient18=5.5.33a+maria-1~raring mariadb-client-core-5.5 Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: galera libaio1 libdbi-perl libhtml-template-perl libnet-daemon-perl libplrpc-perl
Bingo!
So, for those wanting to pre-seed MariaDB Cluster 5.5, I used the following in my preseed file:
# MariaDB 5.5 repository list - created 2013-11-12 05:20 UTC
# http://mariadb.org/mariadb/repositories/
d-i apt-setup/local3/repository string \
deb http://mirror.aarnet.edu.au/pub/MariaDB/repo/5.5/ubuntu raring main
d-i apt-setup/local3/comment string \
"MariaDB repository"
d-i pkgsel/include string mariadb-galera-server-5.5 \
mariadb-client-5.5 libmariadbclient18 mariadb-common \
libdbd-mysql-perl mysql-common=5.5.33a+maria-1~raring \
libmysqlclient18=5.5.33a+maria-1~raring mariadb-client-core-5.5 \
galera
# For unattended installation, we set the password here
mysql-server mysql-server/root_password select DatabaseRootPassword
mysql-server mysql-server/root_password_again select DatabaseRootPassword
So yeah, next time someone mentions this:
it doesn’t just apply to Gentoo!





Recent Comments