Como posso atualizar o MySQL no Debian usando o apt-get?

13

Estou usando a máquina virtual Turnkey Linux. A versão do Debian está aparentemente no caminho de atualização "Wheezy" (se é assim que você chama). Não estou completamente à vontade com o Linux, como você pode ver.

Eu preciso de alguns novos recursos que o MySQL 5.6 oferece, enquanto minha instalação atual é o MySQL 5.5.35. Gostaria de obter a versão mais recente (5.6.17 desta postagem) ou pelo menos qualquer 5.6.x.

Eu tentei apt-get update, apt-get upgrade, apt-get dist-upgrade. Isso atualizou várias coisas com êxito, mas nenhuma foi o MySQL. Eu tentei apt-get upgrade mysql-server, o que diz que eu já tenho a versão mais recente.

Uma lista de repositórios de pacotes Debian Wheezy na Web mostra o MySQL 5.5 e nada mais, quando eu preciso da versão 5.6. Eu então li algo sobre "backports", o que parece ser capaz de me conseguir coisas que meu Debian em particular ainda não deveria ter - mas eu não consigo fazê-lo funcionar. Requer adição de linhas para /etc/apt/sources.list.d/sources.list. Quando tento fazer isso, em seguida apt-get update, executando , recebo erros 404.

Também tentei várias outras rotas, uma delas compilando o download do baunilha do MySQL, no qual falhei miseravelmente e prefiro não tentar novamente.

Estou positivamente confuso em como isso é feito. A maioria dos URLs listados em fóruns / blogs para apt-get, e até mesmo para wget, parece morrer logo após serem postados, então não consigo entender como alguém consegue encontrar as informações corretas. Estou tentando fazer isso há dois dias seguidos e não consigo chegar a lugar nenhum.

Então, assumindo que você leu até aqui, eu adoraria saber se alguém tem alguma maneira de atualizar o MySQL no Debian de uma maneira automatizada relativamente indolor (uma onde eu não precisaria usar makeou exportar / importar meus bancos de dados e configurações atuais manualmente) )

equação
fonte
Faça um backport de teste / instável / experimental. Veja Como posso instalar versões mais recentes do software do que o Debian fornece? . Melhor, use o PostgreSQL, que já possui backports. Você escreve "Requer a adição de linhas ao /etc/apt/sources.list.d/sources.list. Quando tento fazer isso, ao executar o apt-get update, recebo erros 404". Você precisa adicionar mais detalhes sobre isso, se quiser ajuda.
Faheem Mitha
@faheemMitha Por curiosidade, onde você encontrou esses backports do postgresql? Eu meio que preciso da nova versão e dos slonyrecursos e não consegui encontrar uma versão mais recente que a 9.1, o que carece de slony.
Shadur
@ Shahadur: Basta fazer uma busca por "backgr do debian postgresql". Eu acho que o que você quer é postgresql.org/download/linux/debian . Geralmente, você pode obter os backports em backports.debian.org, mas parece que atualmente eles não estão disponíveis a partir daí.
Faheem Mitha
@faheemMitha Gostaria de colar o erro completo, mas não o tenho mais, e não tenho certeza de onde estão os URLs de backport que usei mais. No entanto, se você souber de uma linha de trabalho que eu possa conectar ao meu sources.list para backports, eu adoraria tentar. PS. Mudar para uma plataforma de banco de dados diferente não é realmente uma opção para mim neste momento, infelizmente.
Equazcion
@equazcion Minha recomendação é uma solução DIY. Busque os fontes Debian dos testes (ou instáveis ​​ou experimentais) e reconstrua-os em seus próprios pacotes Debian. Isso realmente não é tão difícil, e é improvável que o MySQL tenha dificuldades para resolver dependências. Explico os passos básicos nessa resposta à qual vinculei. Você olhou para isso?
Faheem Mitha

Respostas:

4

Reconstruir as fontes experimentais do MySQL 5.6 experimentais no wheezy é fácil de ser trivial. No entanto, você precisará de muito espaço em disco; após a conclusão da compilação, o diretório da compilação estava usando 5,2 GB. Além disso, leva um tempo para construir e executa um número incrível de testes. Não me incomodei em cronometrar, mas esperei algumas horas. É possível desativar os testes, mas sugiro deixá-los executar - é inofensivo enquanto eles passam. Eles fizeram na minha máquina. A boa notícia é que eu pude construir e instalar sem problemas. Eu executei o seguinte teste básico.

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> 

Então, eu posso me conectar ao servidor pelo menos. Aqui está a aparência dos pacotes 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

Aqui está um detalhamento das etapas.

  1. Se você tiver qualquer um dos pacotes wheezy MySQL 5.5 instalados, remova-os, pois eles causarão problemas mais tarde. Se houver algum pacote que dependa deles, eles terão que ir também.
  2. Primeiro, pegue as fontes. Você precisa adicionar o seguinte (ou semelhante, ajustar para o servidor preferido) a /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Adicione também o seguinte a /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Então corra

    apt-get update
    
  5. Então corra

    apt-get source mysql-5.6
    

    em algum diretório adequado. Eu costumo criar um diretório /usr/local/src,
    neste caso, digamos /usr/local/src/mysql.

  6. Então entre em cd /usr/local/src/mysql.

  7. Corre

    sudo apt-get build-dep mysql-5.6
    

    Na minha máquina, isso instalou alguns pacotes.

  8. Instale alguns pacotes básicos para construção.

    apt-get install build-essential devscripts fakeroot
    

    Em seguida, cd no diretório de origem resultante /usr/local/src/mysql/mysql-5.6- 5.6.16e execute

    debuild -uc -us
    

    Isso levará um tempo para ser construído. Em alguns casos, é uma boa ideia incrementar
    o número da versão, mas não é realmente necessário aqui. como é improvável que qualquer outro pacote MySQL 5.6 chegue ao wheezy.

    Se você não quiser executar os testes, poderá usar

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Agora você deve instalar o libdbd-mysql-perl, que é uma dependência de tempo de execução dos pacotes mysql.

     apt-get install libdbd-mysql-perl
    
  10. Em seguida, suba um nível para /usr/local/src/mysql. Deve haver alguns pacotes deb lá. Você deseja instalar pelo 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
    

    Isso pode ser feito, por exemplo, executando:

     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
    
Faheem Mitha
fonte
Antes de tudo, obrigado por isso e todo o esforço que você está enviando. No entanto, falhou na etapa 8. Parece que não tenho esses / debian / caminhos: 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 estou fazendo isso no Turnkey Linux, que acho que utiliza o LAMP, se isso ajudar.
Equazcion 18/04
@equazcion você pode não ter o fakeroot instalado. apt-get install fakeroot.
Faheem Mitha
A instalação do fakeroot funcionou. A etapa final errou ao dizer que quebraria o MySQL 5.5. Esqueci de remover o 5.5, como você sugeriu, porque não sei como e não tinha certeza de como isso afetaria meus bancos de dados atuais. Estou preparado para tentar isso novamente depois de remover o 5.5, se você quiser me dizer como proceder para manter os dados disponíveis na nova versão. Eu sei que você ainda não está familiarizado com o MySQL e já passou bastante tempo nisso. Foi um grande avanço e talvez eu possa descobrir como fazer o resto pesquisando no Google.
Equazcion 18/04
@equazcion de acordo com dev.mysql.com/doc/refman/5.6/en/…, você só precisa despejar mysqldumpe recarregar o arquivo de despejo. Faça backup de seus bancos de dados também, é claro.
Faheem Mitha
Conseguiu salvar isso sem refazer todas as etapas e não precisou reimportar os bancos de dados - eles já estavam lá. Para qualquer pessoa interessada, eu tinha que fazer apt-get remove mysql-servere apt-get remove mysql-clienttambém apt-get install libterm-readkey-perlantes da última etapa. Além disso, a mysql-server-coreinstalação na última etapa precisava ser feita antes mysql-server. Agora estou oficialmente executando o MySQL 5.6.16 e testei os índices de pesquisa do InnoDB de texto completo com êxito (a razão pela qual eu precisava disso)! Obrigado, Faheem Mitha. Você salvou minha sanidade.
Equazcion 19/04/2014
6

Atualmente, a melhor opção é usar o repositório oficial do MySQL APT, que permite a apt-get upgradeinstalação.

leva
fonte
Esta é provavelmente a melhor solução, pois não requer a instalação de um compilador. Mais prova de idiotas :)
Christopher Schultz
Esta solução funciona para mim. Após a instalação, selecione a versão do servidor mysql e faça o upgrade apt-get upgrade, depois faça o i e faça apt-get upgrade mysql-servero upgrade fácil do mysql de 5.5 para 5.7. Após a atualização, você precisa configurar novamente e executar:mysql_upgrade -u root
fermin
1

Todos testados Divirta-se.

  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. raiz -R raiz.
  12. chown -R dados mysql
  13. arquivos de suporte cp / 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. serviço mysql start
  18. ./bin/mysql_secure_installation
Besta de Segurança
fonte
Este parecia estar indo bem até aqui (desculpe pela bagunça, eu não sei como inserir quebras de linha aqui): 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
tentar com /etc/init.d/mysql iniciar ou tente pressionar tab-guia na /etc/init.d/mys e iniciá-lo
Segurança Fera
@equazcion Parabéns, agora você descobriu por que o debian às vezes leva um tempo para criar um pacote oficial para uma nova versão.
precisa saber é o seguinte