Jak mogę zaktualizować MySQL w Debianie za pomocą apt-get?


13

Używam maszyny wirtualnej pod klucz Linux. Znajdująca się tam wersja Debiana najwyraźniej znajduje się na ścieżce aktualizacji „Wheezy” (jeśli tak to nazywacie). Jak widać, nie jestem w pełni zadowolony z Linuksa.

Potrzebuję nowych funkcji, które oferuje MySQL 5.6, a moja obecna instalacja to MySQL 5.5.35. Chciałbym uzyskać najnowszą wersję (5.6.17 od tego postu) lub przynajmniej dowolną wersję 5.6.x.

Próbowałem apt-get update, apt-get upgrade, apt-get dist-upgrade. Te pomyślnie zaktualizowały wiele rzeczy, ale żadna z nich nie była MySQL. Próbowałem apt-get upgrade mysql-server, co oznacza, że ​​mam już najnowszą wersję.

Lista repozytoriów pakietów Debian Wheezy w sieci pokazuje MySQL 5.5 i nic więcej, gdy potrzebuję 5.6. Potem przeczytałem coś o „backportach”, co wydaje się być w stanie dostarczyć mi rzeczy, których mój konkretny Debian nie powinien jeszcze mieć - ale wydaje mi się, że nie mogę tego uruchomić. Wymaga dodania linii do /etc/apt/sources.list.d/sources.list. Kiedy próbuję to zrobić, a następnie uruchomić apt-get update, otrzymuję błędy 404.

Wypróbowałem także kilka innych tras, jedną kompilującą waniliowe pobieranie MySQL, której nie udało mi się niestety i wolałbym nie próbować ponownie.

Jestem zaskoczony, jak to się robi. Większość adresów URL na forach / blogach za apt-get, a nawet wgetwydają się umiera wkrótce po ich opublikowaniu, więc nie mogę zrozumieć, jak ktoś idzie nawet o znalezienie właściwej informacji. Próbowałem to zrobić od dwóch dni i nie mogę się nigdzie dostać.

Zakładając, że przeczytałeś do tej pory, chciałbym wiedzieć, czy ktoś ma jakiś sposób na uaktualnienie MySQL w Debianie w stosunkowo bezbolesny automatyczny sposób (taki, w którym nie musiałbym używać makelub eksportować / importować moich aktualnych baz danych i konfiguracji ręcznie ).


Wykonaj backport od testowania / niestabilności / eksperymentu. Zobacz Jak mogę zainstalować nowsze wersje oprogramowania niż to, co zapewnia Debian? . Lepiej użyj PostgreSQL, który ma już backports. Piszesz: „Wymaga dodania wierszy do /etc/apt/sources.list.d/sources.list. Kiedy próbuję to zrobić, a następnie uruchamiając aktualizację apt-get, dostaję błędy 404”. Aby uzyskać pomoc, musisz dodać więcej szczegółów na ten temat.
Faheem Mitha

@faheemMitha Z ciekawości, gdzie znalazłeś te zaplecze postgresql? slonyTrochę potrzebuję nowej wersji i możliwości i nie mogłem znaleźć nowszej niż 9.1, która nie ma slony.
Shadur

@Shadur: Po prostu wyszukaj „backports debg postqresql”. Myślę, że chcesz postgresql.org/download/linux/debian . Często można uzyskać backporty z backports.debian.org, ale wygląda na to, że obecnie nie są one dostępne z tego miejsca.
Faheem Mitha

@faheemMitha Wkleiłbym pełny błąd, ale go już nie mam i nie jestem pewien, gdzie są adresy URL backportu, których już użyłem. Jeśli mimo to znasz działającą linię, mogę podłączyć ją do źródła.list dla backportów, chciałbym spróbować. PS. Niestety przejście na inną platformę bazy danych nie jest w tym momencie dla mnie opcją.
equazcion 18.04.2014

@equazcion Moja rekomendacja to rozwiązanie dla majsterkowiczów. Pobierz źródła Debiana z testów (niestabilnych lub eksperymentalnych) i przebuduj je we własne pakiety Debiana. To naprawdę nie jest takie trudne, a MySQL raczej nie będzie miał trudności z rozwiązaniem zależności. W tej odpowiedzi wyjaśniam podstawowe kroki. Patrzyłeś na to?
Faheem Mitha

Odpowiedzi:


4

Odbudowywanie eksperymentalnych źródeł MySQL 5.6 z eksperymentalnych na wheezy jest łatwe do pogodzenia z trywialnością. Będziesz jednak potrzebował dużo miejsca na dysku; po zakończeniu kompilacji katalog kompilacji zużywał 5,2 GB. Ponadto zajmuje trochę czasu i wykonuje niesamowitą liczbę testów. Nie zawracałam sobie głowy tym, ale pozwoliłam na kilka godzin. Możliwe jest wyłączenie testów, ale sugeruję pozwolić im na uruchomienie - jest nieszkodliwy tak długo, jak przejdą. Zrobili na mojej maszynie. Dobra wiadomość jest taka, że ​​udało mi się go zbudować i zainstalować bez kłopotów. Przeprowadziłem następujący podstawowy test.

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> 

Mogę przynajmniej połączyć się z serwerem. Oto, jak wyglądają pakiety zainstalowane:

$ 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

Oto podział poszczególnych kroków.

  1. Jeśli masz zainstalowany któryś z serwatkowych pakietów MySQL 5.5, usuń je, spowoduje to problemy później. Jeśli są jakieś pakiety, które od nich zależą, będą musiały również przejść.
  2. Najpierw zdobądź źródła. Musisz dodać następujące (lub podobne, dostosuj do preferowanego serwera) do /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Dodaj również następujące elementy /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Następnie uruchomić

    apt-get update
    
  5. Następnie uruchomić

    apt-get source mysql-5.6
    

    w odpowiednim katalogu. Zazwyczaj tworzę katalog w /usr/local/src,
    w tym przypadku, powiedzmy /usr/local/src/mysql.

  6. Następnie cd do /usr/local/src/mysql.

  7. Biegać

    sudo apt-get build-dep mysql-5.6
    

    Na mojej maszynie zainstalowałem kilka pakietów.

  8. Zainstaluj kilka podstawowych pakietów do budowania.

    apt-get install build-essential devscripts fakeroot
    

    Następnie przejdź do wynikowego katalogu źródłowego /usr/local/src/mysql/mysql-5.6- 5.6.16i uruchom

    debuild -uc -us
    

    Kompilacja zajmie trochę czasu. W niektórych przypadkach dobrym pomysłem jest zwiększenie
    numeru wersji, ale nie jest to tak naprawdę konieczne. ponieważ jest mało prawdopodobne, aby jakikolwiek inny pakiet MySQL 5.6 trafił do wheezy.

    Jeśli nie chcesz uruchamiać testów, możesz zamiast tego użyć

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Teraz powinieneś zainstalować libdbd-mysql-perl, który jest zależnością środowiska wykonawczego pakietów mysql.

     apt-get install libdbd-mysql-perl
    
  10. Następnie przejdź na wyższy poziom do /usr/local/src/mysql. Powinny być tam jakieś pakiety deb. Będziesz chciał przynajmniej zainstalować

     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
    

    Można to zrobić na przykład, uruchamiając:

     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
    

Przede wszystkim dziękuję za to i cały wysiłek, który wkładasz. Nie udało się to jednak w kroku 8. Wydaje mi się, że nie mam tych / debian / ścieżek: 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 robię to w systemie Linux pod klucz, który, jak sądzę, wykorzystuje LAMP, jeśli to pomaga.
equazcion 18.04.2014

@equazcion, możesz nie mieć zainstalowanego fakeroot. apt-get install fakeroot.
Faheem Mitha

Instalacja fakeroot działała. Ostatni krok błędnie stwierdził, że złamie MySQL 5.5. Zaniedbałem usunąć 5.5, jak zasugerowałeś, ponieważ nie wiem jak i nie byłem pewien, jak wpłynie to na moje obecne bazy danych. Jestem gotów spróbować ponownie po usunięciu wersji 5.5, jeśli chcesz mi powiedzieć, jak to zrobić w taki sposób, aby moje dane były dostępne w nowej wersji. Wiem, że nie znasz się tak dobrze na MySQL i spędziłeś na tym już sporo czasu. To był świetny początek i może uda mi się dowiedzieć, jak zrobić resztę, przeglądając strony w Google.
equazcion

@equazcion według dev.mysql.com/doc/refman/5.6/en/ ... wystarczy mysqldumpzrzucić plik, a następnie ponownie załadować plik zrzutu. Oczywiście, pamiętaj także o swoich bazach danych.
Faheem Mitha

Udało się to uratować bez ponawiania wszystkich kroków i nie trzeba było ponownie importować baz danych - już tam były. Dla wszystkich zainteresowanych musiałem zrobić apt-get remove mysql-serveri apt-get remove mysql-clientmusiałem to zrobić także apt-get install libterm-readkey-perlprzed ostatnim krokiem. Ponadto mysql-server-coreinstalacja w ostatnim kroku musiała zostać wykonana wcześniej mysql-server. Teraz oficjalnie uruchamiam MySQL 5.6.16 i pomyślnie przetestowałem indeksy wyszukiwania InnoDB w trybie pełnotekstowym (powód, dla którego tego potrzebowałem)! Dziękuję Faheem Mitha. Uratowałeś moje zdrowie psychiczne.
equazcion

6

Obecnie najlepszą opcją jest użycie oficjalnego repozytorium MySQL APT, które umożliwia apt-get upgradeinstalację.


Jest to prawdopodobnie najlepsze rozwiązanie, ponieważ nie wymaga instalacji kompilatora. Bardziej głupi :)
Christopher Schultz

To rozwiązanie działa dla mnie. Po instalacji wybierz wersję serwera mysql i aktualizację apt-get upgrade, a następnie zrobić apt-get upgrade mysql-serveri łatwą aktualizację mysql z 5.5 do 5.7. Po aktualizacji musisz skonfigurować ponownie i wykonać:mysql_upgrade -u root
fermin

1

Wszyscy testowani Baw się dobrze.

  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 dane 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. usługa mysql start
  18. ./bin/mysql_secure_installation

Wydawało się, że będzie dobrze, dopóki tutaj (przepraszam za bałagan, nie wiem jak wstawić podziały wiersza tutaj): 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

spróbuj z /etc/init.d/mysql start lub spróbuj nacisnąć tab-tab na /etc/init.d/mys i uruchom go
Security Beast

@equazcion Gratulacje, teraz odkryłeś, dlaczego czasami debian wymyśla oficjalny pakiet nowej wersji.
Shadur
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.