From Amarok Wiki
Deutsch | English | Castellano | Italiano | Türkçe| 简体中文
Contents |
Configurazione
Aggiunta del Supporto in amaroK
amaroK 1.2 supporta un database MySQL in aggiunta al supporto integrao con il database SQLite. Per avere in supporto a MySQL, basta specificare "--enable-mysql" come parametro di configurazione e far ricompilare il pacchetto "make install" da root. La tua linea di configurazione probabilmente sarà qualcosa tipo:
$ ./configure --enable-mysql
Inoltre assicurati di avere installato sul tuo sistema le librerie libmysqlclient, con le development headers (-dev packages) installate.
Setup di MySQL
Anzitutto bisogna creare una password per MySQL, se tu non ne hai già una.
$ mysql -u root
set password for root@localhost = password('xxxxxxx');
flush privileges;
quit;
Chiaramente cambia xxxxxx con la password che vuoi.
Dopo avere impostato la password, bisogna creare un database per amaroK attraverso il classico metodo. Basta semplicemente usare il comando "mysql": (questo ti chiederà la password per l'utente root di MySQL - impostata prima)
$ mysql -p -u root CREATE DATABASE amarokdb; USE mysql; GRANT select, insert, alter, update, delete, create, drop, create temporary tables, index ON amarokdb.* TO amarok@localhost IDENTIFIED BY 'PASSWORD_UTENTE'; FLUSH PRIVILEGES;
Nell'esempio sopra, è stato creato un database chiamato "amarokdb", e un utente chiamato "amarok" che può accedere il locale localhost" usando la password "PASSWORD_UTENTE". Se vuoi usare la funzione per il backup automatico con mysqldump, cambia la stringa GRANT con GRANT ALL
Nota: Di default amarok usa un database chiamato "amarok" e non "amarokdb".
Ora che il database esiste, è sufficiente aprire il pannello di configurazione di amaroK (si trova nel menu Impostazioni), e andare nella sezione Collezione. Qui bisogna cambiare nel menu a tendina SQLite e selezionare MySQL. Probabilmente bisognerà specificare un hostname (il nome del computer, o meglio localhost), la porta (di default la 3306), il nome del database che hai creato per amaroK (nell'esempio precedente "amarokdb") e il nome dell'utente che ha accesso (e che abbia anche i privilegi di scrittura) al database con relativa password (nell'esempio sopra l'utente è "amarok" e la password è "PASSWORD_UTENTE").
Usare il supporto di MySQL da remoto: La maggior parte delle installazioni, usano il demone MySQL configurato per le connessioni in locale (localhost) di default.
Perciò può capitare di avere un errore del tipo "Impossibile connettersi al server o al database" (errori che comunque non sono legati alla password sbagliata). Per risolvere tali problemi bisogna editare il file my.cnf sulla macchina col database (/etc/mysql/my.cnf) e decommentare la variabile "bind_address" e riavviare il mysql. Per quanto ne so, non c'è motivo di impostare anche l'interfaccia della scheda di rete e la porta in ascolto. Nel caso comunque andrebbe aggiornato il firewall con i dati di connessione.
Convertire i Database
Da SQLite -> MySQL
Uno (sconsigliato) metodo per trasferire il tuo database SQLite3 a MySQL è:
cd ~/.kde/share/apps/amarok && \ sqlite3 collection.db .dump | \ grep -v "BEGIN TRANSACTION;" | \ grep -v "COMMIT;" | \ perl -ne 's/INSERT INTO \"(.*)\" VALUES/INSERT INTO \1 VALUES/; print' | \ perl -ne 's/VARCHAR\(256\)/VARCHAR\(255\)/; print' | \ mysql -u root -p amarokdb
Io ho visto che questo metodo non funzionava, potevo importare i dati da SQLite
così:
- Lanciare amaroK, cambiare il database a mysql, e creare il database (senza far partire nessuna canzone)
- Scaricare SQLite Database Browser
- Esportare tutti i dati in un file temporaneo, per es. amarok_dump.sql
- Rimuovere tutti i comandi sql, BEGIN TRANSACTION, COMMIT e CREATE
- Importare il file usando MySQL:
cat amarok_dump.sql | mysql -u root -p amarokdb
Nel caso dia qualche errore, è possibile che tu abbia fatto partire qualche canzone e che il programma abbia scritto delle stringhe riguardo quel particolare file nel database. In questo caso, basta editare il file amarok_dump.sql, e cercare la linea con i dati della canzone; trovatala basta rimuovere TUTTO prima di questa(poichè quei comandi sono già stati eseguiti da MySQL -- si riceverà un errore) Se vuoi contiunuare a usare questa stringa, si può rimpiazzare INSERT INTO con REPLACE INTO. e rilanciare la stringa di comando sopra.
Da MySQL -> SQLite
Un modo (non supportata) di trasferire il database da MySQL a SQLite3 è:
cd ~/.kde/share/apps/amarok && \ mv collection.db collection.db.old && \ mysqldump -uroot -p -n -t amarok | sed -e "s/\\\'/\'\'/g" | sed -e "s/\\\\\"/\"\"/g" > amarokdb.sql && \ sqlite3 collection.db
Una volta lanciato SQLite, nel prompt "sqlite>" copia e incolla queste righe per creare le tabelle:
CREATE TABLE album (id INTEGER PRIMARY KEY ,name VARCHAR(255) ); CREATE TABLE artist (id INTEGER PRIMARY KEY ,name VARCHAR(255) ); CREATE TABLE directories (dir VARCHAR(255) UNIQUE,changedate INTEGER ); CREATE TABLE genre (id INTEGER PRIMARY KEY ,name VARCHAR(255) ); CREATE TABLE images (path VARCHAR(255),artist VARCHAR(255),album VARCHAR(255) ); CREATE TABLE related_artists (artist VARCHAR(255),suggestion VARCHAR(255),changedate INTEGER ); CREATE TABLE statistics (url VARCHAR(255) UNIQUE,createdate INTEGER,accessdate INTEGER,percentage FLOAT,playcounter INTEGER); CREATE TABLE tags (url VARCHAR(255),dir VARCHAR(255),createdate INTEGER,album INTEGER,artist INTEGER,genre INTEGER,title VARCHAR(255),year INTEGER,comment VARCHAR(255),track NUMERIC(4),bitrate INTEGER,length INTEGER,samplerate INTEGER,sampler BOOL ); CREATE TABLE year (id INTEGER PRIMARY KEY ,name VARCHAR(4) ); CREATE INDEX album_idx ON album( name ); CREATE INDEX album_tag ON tags( album ); CREATE INDEX artist_idx ON artist( name ); CREATE INDEX artist_tag ON tags( artist ); CREATE INDEX directories_dir ON directories( dir ); CREATE INDEX genre_idx ON genre( name ); CREATE INDEX genre_tag ON tags( genre ); CREATE INDEX images_album ON images( album ); CREATE INDEX images_artist ON images( artist ); CREATE INDEX percentage_stats ON statistics( percentage ); CREATE INDEX playcounter_stats ON statistics( playcounter ); CREATE INDEX related_artists_artist ON related_artists( artist ); CREATE INDEX sampler_tag ON tags( sampler ); CREATE INDEX url_stats ON statistics( url ); CREATE INDEX url_tag ON tags( url ); CREATE INDEX year_idx ON year( name ); CREATE INDEX year_tag ON tags( year );
e importa il file mysqldump tramite il prompt di "sqlite>" con:
.read amarokdb.sql
Backup Automatico
Effettuare il backup della vostra collezione in modo automatico è un lavoretto facile usando il demone cron. E' sufficiente creare un script(SH) a copiarlo nella cartella /etc/cron.weekly.
#!/bin/sh
# Backup del database MySQL di amaroK
dir=`date +%Y-%m-%d`
if [ -d /home/backup/amarok ]; then
mkdir /home/backup/amarok/$dir
mysqldump -u amarok -pPASSWORD amarokdb >
/home/backup/amarok/$dir/amarokdb.mysql
fi
Questo scripit creerà una cartella con la data corrente in /home/backup nella quale copierà il file con il backup. Lo script usa il nome utente "amarok" e usa il database "amarokdb" (nota: il nome del database e quello dell'utente devono essere gli stessi che usa amaroK per accedere a mysql. Rimpiazza inoltre la password (PASSWORD) con la password associata all'utente per il database. Per poter effettuare il backup del database l'utente deve tutti i permessi sul database impostabile con la variabile GRANT ALL.