Come posso aggiornare MySQL in Debian usando apt-get?


13

Sto usando la macchina virtuale Linux chiavi in ​​mano. La versione di Debian è apparentemente sul percorso di aggiornamento di "Wheezy" (se è così che la chiami). Non mi sento completamente a mio agio con Linux, come puoi vedere.

Ho bisogno di alcune nuove funzionalità offerte da MySQL 5.6, mentre la mia installazione attuale è MySQL 5.5.35. Vorrei ottenere l'ultima versione (5.6.17 a partire da questo post) o almeno qualsiasi 5.6.x.

Ho provato apt-get update, apt-get upgrade, apt-get dist-upgrade. Questi hanno aggiornato un sacco di cose con successo, ma nessuna era MySQL. Ho provato apt-get upgrade mysql-server, il che dice che ho già l'ultima versione.

Un elenco di repository di pacchetti Debian Wheezy sul web mostra MySQL 5.5 e nient'altro, quando ho bisogno di 5.6. Ho quindi letto qualcosa sui "backport", il che sembra che potrebbe essere in grado di farmi cose che il mio Debian particolare non dovrebbe ancora avere - ma non riesco a farlo funzionare. Richiede l'aggiunta di linee a /etc/apt/sources.list.d/sources.list. Quando provo a farlo, poi in esecuzione apt-get update, ottengo 404 errori.

Ho provato anche diversi altri percorsi, uno dei quali stava compilando il download MySQL vanilla, a cui ho fallito miseramente e preferirei non riprovare.

Sono positivamente sconcertato da come è fatto. La maggior parte degli URL elencati nei forum / blog per apt-get, e anche per wget, sembrano morire poco dopo la loro pubblicazione, quindi non riesco a capire come si fa a trovare le informazioni giuste. Ho provato a farlo per due giorni di fila e non riesco ad arrivare da nessuna parte.

Quindi supponendo che tu abbia letto così lontano, mi piacerebbe sapere se qualcuno ha un modo per aggiornare MySQL in Debian in un modo automatizzato relativamente indolore (uno in cui non dovrei usare makeo esportare / importare i miei database e le mie configurazioni manualmente ).


Eseguire un backport da test / unstable / sperimentale. Vedi Come posso installare versioni di software più recenti di quelle fornite da Debian? . Meglio, usare PostgreSQL, che ha già backport. Scrivi "Richiede l'aggiunta di righe a /etc/apt/sources.list.d/sources.list. Quando provo a farlo, quindi eseguendo apt-get update, ottengo 404 errori." Devi aggiungere maggiori dettagli a riguardo se vuoi aiuto.
Faheem Mitha,

@faheemMitha Per curiosità, dove hai trovato quei backport postgresql? Ho un po 'bisogno della nuova versione e slonyfunzionalità e non sono riuscito a trovare più recente di 9.1, che manca di slony.
Shadur,

@Shadur: basta cercare "backgresql debian backports". Penso che ciò che vuoi sia postgresql.org/download/linux/debian . Spesso è possibile ottenere i backport da backports.debian.org, ma sembra che attualmente non siano disponibili da lì.
Faheem Mitha,

@faheemMitha Incollerei l'intero errore ma non ce l'ho più e non sono sicuro di dove siano stati utilizzati gli URL di backport. Se tuttavia conosci una linea di lavoro che posso collegare alla mia fonte.elenco per i backport, mi piacerebbe provarlo. PS. Passare a una piattaforma di database diversa non è davvero un'opzione per me a questo punto, sfortunatamente.
equazcion,

@equazcion La mia raccomandazione è una soluzione fai-da-te. Recupera i sorgenti Debian dai test (o instabili o sperimentali) e ricostruiscili nei tuoi pacchetti Debian. Questo non è poi così difficile e è improbabile che MySQL abbia difficoltà a risolvere le dipendenze. Spiego i passaggi di base in quella risposta che ho collegato. L'hai visto?
Faheem Mitha,

Risposte:


4

Ricostruire le fonti MySQL 5.6 sperimentali da sperimentale su wheezy è facile confinarsi con banale. Tuttavia, avrai bisogno di molto spazio su disco; dopo che la compilazione è stata completata, la directory di compilazione utilizzava 5,2 GB. Inoltre, ci vuole un po 'di tempo per costruire ed esegue un numero incredibile di test. Non mi sono preoccupato di cronometrarlo, ma ho concesso un paio d'ore. È possibile disabilitare i test, ma suggerisco di lasciarli funzionare - è innocuo finché passano. Lo hanno fatto sulla mia macchina. La buona notizia è che sono stato in grado di costruirlo e installarlo senza problemi. Ho eseguito il seguente test di base.

faheem@orwell:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 50
Server version: 5.6.16-1~exp1 (Debian)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Quindi, posso connettermi al server almeno. Ecco come appaiono i pacchetti installati:

$ dpkg -l | grep mysql

ii  libdbd-mysql-perl                     4.021-1+b1              amd64                   Perl5 database interface to the MySQL database
ii  libmysqlclient18:amd64                5.5.35+dfsg-0+wheezy1   amd64                   MySQL database client library
ii  libqt4-sql-mysql:amd64                4:4.8.2+dfsg-11         amd64                   Qt 4 MySQL database driver
ii  mysql-client-5.6                      5.6.16-1~exp1           amd64                   MySQL database client binaries
ii  mysql-client-core-5.6                 5.6.16-1~exp1           amd64                   MySQL database core client binaries
ii  mysql-common                          5.5.35+dfsg-0+wheezy1   all                     MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-common-5.6                      5.6.16-1~exp1           all                     MySQL 5.6 specific common files, e.g. /etc/mysql/conf.d/my-5.6.cnf
ii  mysql-server-5.6                      5.6.16-1~exp1           amd64                   MySQL database server binaries and system database setup
ii  mysql-server-core-5.6                 5.6.16-1~exp1           amd64                   MySQL database server binaries
ii  python-mysqldb                        1.2.3-2                 amd64                   Python interface to MySQL

Ecco una ripartizione dei passaggi.

  1. Se hai installato uno dei pacchetti wheezy di MySQL 5.5, rimuovili, causeranno problemi solo in seguito. Se ci sono pacchetti che dipendono da quelli, dovranno andare anche loro.
  2. Innanzitutto, ottieni le fonti. Devi aggiungere quanto segue (o simile, regolare per il tuo server preferito) a /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Aggiungere anche quanto segue a /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Quindi corri

    apt-get update
    
  5. Quindi corri

    apt-get source mysql-5.6
    

    in qualche directory adatta. Di solito creo una directory in /usr/local/src,
    in questo caso, diciamo /usr/local/src/mysql.

  6. Quindi cd in /usr/local/src/mysql.

  7. Correre

    sudo apt-get build-dep mysql-5.6
    

    Sulla mia macchina questo ha installato un paio di pacchetti.

  8. Installa alcuni pacchetti di base per la costruzione.

    apt-get install build-essential devscripts fakeroot
    

    Quindi cd nella directory sorgente risultante /usr/local/src/mysql/mysql-5.6- 5.6.16ed esegui

    debuild -uc -us
    

    Questo richiederà un po 'di tempo per essere costruito. In alcuni casi è una buona idea aumentare
    il numero di versione, ma qui non è davvero necessario. dato che è improbabile che qualsiasi altro pacchetto MySQL 5.6 si trasformi in wheezy.

    Se non si desidera eseguire i test, è possibile invece utilizzare

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Ora dovresti installare libdbd-mysql-perl, che è una dipendenza di runtime dei pacchetti mysql.

     apt-get install libdbd-mysql-perl
    
  10. Quindi passa a un livello superiore /usr/local/src/mysql. Ci dovrebbero essere alcuni pacchetti deb lì. Ti consigliamo di installare almeno

     mysql-client-core-5.6_5.6.16-1~exp1_amd64.deb         
     mysql-common-5.6_5.6.16-1~exp1_all.deb           
     mysql-server-5.6_5.6.16-1~exp1_amd64.deb
     mysql-client-5.6_5.6.16-1~exp1_amd64.deb  
     mysql-server-core-5.6_5.6.16-1~exp1_amd64.deb
    

    Questo può essere fatto ad esempio eseguendo:

     dpkg -i mysql-client-core-5.6_5.6.16-1~exp1_amd64.deb         
     mysql-common-5.6_5.6.16-1~exp1_all.deb           
     mysql-server-5.6_5.6.16-1~exp1_amd64.deb
     mysql-client-5.6_5.6.16-1~exp1_amd64.deb  
     mysql-server-core-5.6_5.6.16-1~exp1_amd64.deb
    

Prima di tutto, grazie per questo, e per tutti gli sforzi che stai facendo. Ciò è fallito nel passaggio 8. Mi sembra di non avere questi / debian / percorsi: dpkg-buildpackage: host architecture amd64 fakeroot debian/rules clean Can't exec "fakeroot": No such file or directory at /usr/bin/dpkg-buildpackage line 510. dpkg-buildpackage: error: fakeroot debian/rules clean failed with unknown exit code -1 debuild: fatal error at line 1357: dpkg-buildpackage -rfakeroot -D -us -uc failed lo sto facendo in Turnkey Linux che penso utilizza LAMP, se questo aiuta.
equazcion,

@equazcion potresti non aver installato fakeroot. apt-get install fakeroot.
Faheem Mitha,

L'installazione di fakeroot ha funzionato. Il passaggio finale ha errato dicendo che avrebbe rotto MySQL 5.5. Ho dimenticato di rimuovere 5.5 come suggerito, perché non so come, e non ero sicuro di come avrebbe influenzato i miei database attuali. Sono pronto a riprovare dopo aver rimosso 5.5, se vuoi dirmi come procedere in un modo che manterrà i miei dati disponibili nella nuova versione. So che non hai familiarità con MySQL e ci hai già dedicato parecchio tempo. Questo è stato un ottimo vantaggio e posso forse scoprire come fare il resto facendo ricerche su Google.
equazcion,

@equazcion secondo dev.mysql.com/doc/refman/5.6/en/… devi solo scaricare mysqldumpe quindi ricaricare il file di dump. Sostieni anche i tuoi database, ovviamente.
Faheem Mitha,

Riuscito a recuperarlo senza ripetere tutti i passaggi e non è stato necessario reimportare i database: erano già lì. Per chiunque fosse interessato, dovevo fare apt-get remove mysql-servere apt-get remove mysql-client, anche apt-get install libterm-readkey-perlprima dell'ultimo passo. Inoltre, l' mysql-server-coreinstallazione nell'ultimo passaggio doveva essere eseguita prima mysql-server. Ora sto ufficialmente eseguendo MySQL 5.6.16 e ho testato con successo gli indici di ricerca InnoDB full-text (il motivo per cui ne avevo bisogno)! Grazie, Faheem Mitha. Mi hai salvato la sanità mentale.
equazcion

6

Attualmente l'opzione migliore è utilizzare il repository APT MySQL ufficiale che consente l' apt-get upgradeinstallazione.


Questa è probabilmente la soluzione migliore perché non richiede l'installazione di un compilatore. Più stupido :)
Christopher Schultz,

Questa soluzione funziona per me. Dopo l'installazione, seleziona la versione del server mysql e aggiorna apt-get upgrade, quindi i to do apt-get upgrade mysql-servere un facile aggiornamento di mysql dalla 5.5 alla 5.7. Dopo l'aggiornamento è necessario configurare nuovamente ed eseguire:mysql_upgrade -u root
fermin

1

Tutti i test Buon divertimento.

  1. .apt-get installa libaio1
  2. groupadd mysql
  3. useradd -r -g mysql mysql
  4. wget -O mysql-5.6.16-debian6.0-x86_64.deb
  5. http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.16-debian6.0-x86_64.deb
  6. dpkg -i mysql-5.6.16-debian6.0-x86_64.deb
  7. cd / usr / local
  8. ln -s /opt/mysql/server-5.6 mysql
  9. cd mysql
  10. script / mysql_install_db --user = mysql
  11. chown -R root.
  12. chown -R dati mysql
  13. cp support-files / mysql.server /etc/init.d/mysql
  14. mkdir -p /etc/mysql/conf.d/
  15. cp my.cnf / etc / mysql /
  16. echo $ '! include /etc/mysql/my.cnf\n!includedir /etc/mysql/conf.d/'> my.cnf
  17. servizio mysql start
  18. ./bin/mysql_secure_installation

Questo sembrava andare bene fino a qui (scusate il disordine, non so come inserire interruzioni di riga qui): root@lamp local/mysql# update-rc.d mysql-5.7 defaults: update-rc.d: using dependency based boot sequencing update-rc.d: error: unable to read /etc/init.d/mysql-5.7 root@lamp local/mysql# service mysql start: Starting MySQL [FAIL......[....] The server quit without updating PID file (/opt/mysql/server-5.6/data/lamp.pid). ... failed!
equazcion

prova con /etc/init.d/mysql start o prova a premere tab-tab in /etc/init.d/mys e avvialo
Security Beast

@equazcion Congratulazioni, ora hai scoperto perché a volte Debian impiega un po 'di tempo a trovare un pacchetto ufficiale per una nuova versione.
Shadur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.