Liebe Leserin, lieber Leser!
Gentoo ist in mancher Hinsicht sehr gut,
vor allem, wenn man Zeit und Lust hat,
sich sozusagen "von Adam und Eva an"
mit Linux auseinanderzusetzen.
Doch muss man damit rechnen, dass irgendwann einmal
eine Hürde auftaucht, die - fast - nicht zu überspringen ist.
Um nun nicht noch weiter auszuholen, will ich ein solches Problem
einmal genauer ausführen. Ich stand selbst vor dieser "Hürde"
und kam nur durch geduldige Begleitung im Forum darüber hinweg.
A. Problembeschreibung
Es geht genauer um mysql und amarok.
Diese beiden haben mir bis vor kurzem nie irgendeinen Grund gegeben,
auf sie näher aufmerksam zu werden.
Doch beim Update vor einigen Tagen kam es, wie es eben kommen kann:
dev-db/mysql-5.1.44 und virtual/mysql-5.1 wollten mit amarok-2.2.90
nicht mehr zusammenarbeiten.
Wer sich beim Auftauchen dieses Problems in google umschaut,
wird etliche Orte finden, an denen es um genau diesen Problemkreis geht.
Inzwischen ist mysql-5.1.44-r1 aufgetaucht, doch auch damit keine Änderung.
B. Problemlösung
Erster Schritt: amarok ohne "embedded" installieren.
USE="-embedded" emerge -av amarok
Das heisst aber, dass amarok beim Starten nach einer Datenbank fragt,
die bisher vorhandene gibt es so nicht mehr. Vielmehr ist "Handarbeit"
angesagt.
Eine Alternative, um schneller ans Ziel zu kommen, wäre es,
mysql-5.1.44 und mysq-5.1 zu maskieren und mit den Vorgängerversionen
weiterzuarbeiten.
Ich jedenfalls habe nicht aufgegeben, vor allem, weil man mir Unterstützung
zugesagt hatte.
Zwischenbemerkung: Als host sollte "localhost" nicht alleinstehen,
am besten einen benennen in /etc/conf.d/hostname und diesen dann in
/etc/hosts hinter "localhost" ergänzen.
Gehen wir Schritt für Schritt durch, was zu tun ist.
1. Wenn mysql ein Update erfährt - also keine Neuinstallation vorliegt,
müssen per revdep-rebuild zwei Punkte abgearbeitet werden:
|
Quellcode
|
1
2
|
revdep-rebuild --library libmysqlclient.so.15
revdep-rebuild --library libmysqlclient_r.so.15
|
2. Nach emergen von mysql wird in den Infos bereits angezeigt,
was zu tun ist:
|
Quellcode
|
1
2
3
|
emerge --config =dev-db/mysql-5.1.44
bzw.
emerge --config =dev-db/mysql-5.1.44-r1
|
Bei mir kam damit das erste Hindernis. Zwar konnte ich ein root-Passwort
setzen und nach ENTER wiederholen, aber das Ende dieses Prozesses war
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Configuring pkg...
* Creating the mysql database and setting proper
* permissions on it ...
* Insert a password for the mysql 'root' user
* Avoid ["'\_%] characters in the password
>
* Retype the password
>
.100226 9:09:56 [Warning] The syntax '--default-character-set' is deprecated and will be removed in a future release. Please use --character-set-server instead.
100226 9:09:56 [Warning] The syntax '--skip-locking' is deprecated and will be removed in a future release. Please use --skip-external-locking instead.
100226 9:09:56 [Warning] //usr/sbin/mysqld: Option '--set-variable' is deprecated. Use --variable-name=value instead.
....ERROR 2002 (HY000): Can't connect to local MySQL server through socket '//var/run/mysqld/mysqld1234.sock' (2)
* Loading "zoneinfo", this step may require a few seconds ...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '//var/run/mysqld/mysqld1234.sock' (2)
/var/tmp/portage/dev-db/mysql-5.1.44/temp/environment: Zeile 3644: //var/run/mysqld/mysqld12892.pid: Datei oder Verzeichnis nicht gefunden
kill: Gebrauch: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
* Stopping the server ...
* Done
|
Das ist nun insofern nicht dramatisch, weil es einen Weg gibt,
dennoch ein root-Passwort zu setzen.
3. Vor jeder weiteren Aktion muss mysql gestartet werden:
|
Quellcode
|
1
|
/etc/init.d/mysql start
|
Dabei wird zu sehen sein:
|
Quellcode
|
1
2
|
Starting ...
* Starting (/etc/mysql/my.cnf)
|
4. Nun logge man sich als root in mysql ein:
|
Quellcode
|
1
|
mysql -u root
|
Nun lautet der prompt
|
Quellcode
|
1
|
mysql>
|
Aufpassen im weiteren Verlauf:
mysql> ist der Prompt, also kein Befehl!
mysql ist ein Befehl innerhalb von mysql
5. Das root-Passwort kann jetzt gesetzt werden:
|
Quellcode
|
1
|
mysql> set password for root@localhost = password('XXXXX');
|
wobei XXXXX dein Passwort ist - in Klarschrift.
|
Quellcode
|
1
2
|
mysql> flush privileges;
mysql> quit
|
6. Jetzt ist das root-Passwort gesetzt und du kannst dich mit Passwort einloggen:
|
Quellcode
|
1
|
mysql -p -u root
|
7. Nun kann für amarok eine Datenbank erstellt werden:
|
Quellcode
|
1
2
|
mysql> CREATE DATABASE amarokdb;
Query OK, 1 row affected (0.00 sec)
|
8. Wechsle in diese neue Datenbank:
|
Quellcode
|
1
2
|
mysql> USE amarokdb;
Database changed
|
9. Jetzt muss nur das, was in amarok bei der Datenbank empfohlen wird,
umgesetzt werden:
|
Quellcode
|
1
|
mysql> GRANT ALL ON amarokdb.* TO 'XXXXX'@'localhost' IDENTIFIED BY 'Passwort';
|
wobei XXXXX dein Username ist und dein User-Passwort eingetragen werden muss.
|
Quellcode
|
1
2
|
mysql> FLUSH PRIVILEGES;
mysql> quit
|
10. Nach diesen Schritten kann in amarok die neue Datenbank amarokdb genutzt werden,
allerdings müssen Host, Username und Userpasswort korrekt eingetragen sein.
C. Nachtrag
Zu danken habe ich Josef.95, der mir durch seine Geduld zu diesem erfolgreichen Ergebnis
verholfen hat.
Manfred