¿Cómo puedo actualizar MySQL en Debian usando apt-get?


13

Estoy usando la máquina virtual Linux llave en mano. La versión de Debian allí aparentemente está en la ruta de actualización "Wheezy" (si así es como la llamas). No me siento completamente cómodo con Linux, como puedes ver.

Necesito algunas características nuevas que ofrece MySQL 5.6, mientras que mi instalación actual es MySQL 5.5.35. Me gustaría obtener la última versión (5.6.17 a partir de esta publicación) o al menos cualquier 5.6.x.

He intentado apt-get update, apt-get upgrade, apt-get dist-upgrade. Estos actualizaron un montón de cosas con éxito, pero ninguno era MySQL. Lo intenté apt-get upgrade mysql-server, lo que dice que ya tengo la última versión.

Una lista de repositorio de paquetes de Debian Wheezy en la web muestra MySQL 5.5 y nada más, cuando necesito 5.6. Luego leí algo sobre "backports", que parece que podría conseguirme cosas que mi Debian en particular no debería tener todavía, pero parece que no puedo hacer que funcione. Requiere agregar líneas a /etc/apt/sources.list.d/sources.list. Cuando trato de hacer eso, luego de ejecutar apt-get update, obtengo errores 404.

También probé varias otras rutas, una compilando la descarga vainilla de MySQL, en la que fallé miserablemente y preferiría no volver a intentarlo.

Estoy positivamente desconcertado de cómo se hace esto. La mayoría de las URL que figuran en los foros / blogs para apt-get, e incluso para wget, parecen morir poco después de su publicación, por lo que no puedo entender cómo alguien llega a encontrar la información correcta. He estado tratando de hacer esto durante dos días seguidos y no puedo llegar a ninguna parte.

Entonces, suponiendo que haya leído hasta aquí, me encantaría saber si alguien tiene alguna forma de actualizar MySQL en Debian de una manera automatizada relativamente indolora (una en la que no tendría que usar makeo exportar / importar mis bases de datos y configuraciones actuales manualmente) )


Hacer un backport de prueba / inestable / experimental. Consulte ¿Cómo puedo instalar versiones de software más recientes que las que proporciona Debian? . Mejor, use PostgreSQL, que ya tiene backports. Escribe "Requiere agregar líneas a /etc/apt/sources.list.d/sources.list. Cuando trato de hacer eso, luego de ejecutar apt-get update, obtengo errores 404". Necesita agregar más detalles sobre esto si desea ayuda.
Faheem Mitha

@faheemMitha Por curiosidad, ¿dónde encontraste esos backports postgresql? Necesito la nueva versión y slonycapacidades y no pude encontrar una versión más reciente que la 9.1, que carece de slony.
Shadur

@Shadur: Simplemente haga una búsqueda de "postgresql debian backports". Creo que lo que quieres es postgresql.org/download/linux/debian . A menudo puede obtener los backports de backports.debian.org, pero parece que actualmente no están disponibles desde allí.
Faheem Mitha

@faheemMitha Pegaría el error completo pero ya no lo tengo, y no estoy seguro de dónde están las URL de backport que utilicé más. Sin embargo, si conoces una línea de trabajo que pueda conectar a mi lista sources.list para backports, me encantaría probarla. PD. Desafortunadamente, cambiarme a una plataforma de base de datos diferente no es realmente una opción para mí en este momento.
equazcion

@equazcion Mi recomendación es una solución de bricolaje. Obtenga las fuentes de Debian de las pruebas (o inestables o experimentales) y reconstruya en sus propios paquetes de Debian. Esto no es realmente tan difícil, y es poco probable que MySQL tenga dependencias difíciles de resolver. Explico los pasos básicos en esa respuesta a la que me vinculé. ¿Lo viste?
Faheem Mitha

Respuestas:


4

Reconstruir las fuentes experimentales de MySQL 5.6 a partir de experimental en wheezy es fácil rozar lo trivial. Sin embargo, necesitará mucho espacio en disco; una vez completada la compilación, el directorio de compilación usaba 5.2 GB. Además, lleva un tiempo construirlo y ejecuta una increíble cantidad de pruebas. No me molesté en cronometrarlo, pero dejo pasar un par de horas. Es posible deshabilitar las pruebas, pero sugiero dejarlas correr; es inofensivo siempre que pasen. Lo hicieron en mi máquina. La buena noticia es que pude construirlo e instalarlo sin problemas. Ejecuté la siguiente prueba básica.

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> 

Entonces, puedo conectarme al servidor al menos. Así es como se ven los paquetes instalados:

$ 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

Aquí hay un desglose de los pasos.

  1. Si tiene instalado alguno de los paquetes de Wheezy MySQL 5.5, elimínelos, solo causarán problemas más adelante. Si hay paquetes que dependen de ellos, también tendrán que irse.
  2. Primero, obtenga las fuentes. Debe agregar lo siguiente (o similar, ajustar para su servidor preferido) a /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Agregue también lo siguiente a /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Entonces corre

    apt-get update
    
  5. Entonces corre

    apt-get source mysql-5.6
    

    en algún directorio adecuado. Por lo general, creo un directorio en /usr/local/src,
    en este caso, digamos /usr/local/src/mysql.

  6. Luego cd en /usr/local/src/mysql.

  7. correr

    sudo apt-get build-dep mysql-5.6
    

    En mi máquina, esto instaló un par de paquetes.

  8. Instale algunos paquetes básicos para construir.

    apt-get install build-essential devscripts fakeroot
    

    Luego cd en el directorio de origen resultante /usr/local/src/mysql/mysql-5.6- 5.6.16y ejecute

    debuild -uc -us
    

    Esto tomará un tiempo para construir. En algunos casos es una buena idea incrementar
    el número de versión, pero no es realmente necesario aquí. ya que es poco probable que cualquier otro paquete de MySQL 5.6 llegue a wheezy.

    Si no desea ejecutar las pruebas, puede usar

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Ahora debe instalar libdbd-mysql-perl, que es una dependencia en tiempo de ejecución de los paquetes mysql.

     apt-get install libdbd-mysql-perl
    
  10. Luego, sube un nivel a /usr/local/src/mysql. Debería haber algunos paquetes deb allí. Querrás instalar al menos

     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
    

    Esto se puede hacer, por ejemplo, ejecutando:

     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
    

En primer lugar, gracias por esto y por todo el esfuerzo que estás haciendo. Sin embargo, esto falló en el paso 8. Parece que no tengo estos / debian / caminos: 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 estoy haciendo esto en Turnkey Linux que creo que utiliza LAMP, si eso ayuda.
equazcion

@equazcion es posible que no tenga instalado fakeroot. apt-get install fakeroot.
Faheem Mitha

La instalación de fakeroot funcionó. El paso final erró al decir que rompería MySQL 5.5. Olvidé eliminar 5.5 como sugirió, porque no sé cómo, y no estaba seguro de cómo afectaría a mis bases de datos actuales. Estoy preparado para intentarlo nuevamente después de eliminar 5.5, si quieres decirme cómo hacerlo para mantener mis datos disponibles en la nueva versión. Sin embargo, sé que no estás tan familiarizado con MySQL y que ya has dedicado bastante tiempo a esto. Esta fue una gran ventaja y tal vez pueda descubrir cómo hacer el resto buscando en Google.
equazcion

@equazcion de acuerdo con dev.mysql.com/doc/refman/5.6/en/… solo necesita volcar con mysqldumpy luego volver a cargar el archivo de volcado. Respalde sus bases de datos también, por supuesto.
Faheem Mitha

Logré salvar esto sin rehacer todos los pasos, y no tuve que volver a importar las bases de datos, ya estaban allí. Para cualquier persona interesada, tenía que hacerlo apt-get remove mysql-servery apt-get remove mysql-client, también tenía que hacerlo apt-get install libterm-readkey-perlantes del último paso. Además, la mysql-server-coreinstalación en el último paso tuvo que hacerse antes mysql-server. ¡Ahora estoy ejecutando MySQL 5.6.16 oficialmente y he probado con éxito los índices de búsqueda de InnoDB de texto completo (la razón por la que lo necesitaba)! Gracias Faheem Mitha. Me salvaste la cordura.
equazcion

6

Actualmente, la mejor opción es utilizar el repositorio oficial de MySQL APT que permite la apt-get upgradeinstalación.


Esta es probablemente la mejor solución porque no requiere la instalación de un compilador. Más infalible :)
Christopher Schultz

Esta solución me funciona. Después de la instalación, seleccione la versión del servidor mysql y actualice apt-get upgrade, luego haga apt-get upgrade mysql-server, y actualice fácilmente mysql de 5.5 a 5.7. Después de la actualización, debe configurar nuevamente y ejecutar:mysql_upgrade -u root
fermin

1

Todos probados Diviértete.

  1. .apt-get install 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. scripts / mysql_install_db --user = mysql
  11. chown -R root.
  12. chown -R mysql data
  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. servicio mysql start
  18. ./bin/mysql_secure_installation

Esto parecía ir bien hasta aquí (lo siento por el lío, no sé cómo insertar saltos de línea aquí): 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

intente con /etc/init.d/mysql start o intente presionar tab-tab en /etc/init.d/mys e inícielo
Security Beast

@equazcion Felicitaciones, ahora has descubierto por qué a Debian a veces le lleva un tiempo encontrar un paquete oficial para una nueva versión.
Shadur
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.