Як я можу оновити MySQL в Debian за допомогою apt-get?


13

Я використовую віртуальну машину під ключ Linux. Версія Debian там, очевидно, на шляху оновлення "Wheezy" (якщо це так називається). Мені не зовсім комфортно з Linux, як ви бачите.

Мені потрібні нові функції, які пропонує MySQL 5.6, а моя поточна установка - MySQL 5.5.35. Я хотів би отримати останню версію (5.6.17 станом на цю публікацію) або хоча б будь-яку 5.6.x.

Я намагався apt-get update, apt-get upgrade, apt-get dist-upgrade. Вони оновили купу речей успішно, але жодна не була MySQL. Я спробував apt-get upgrade mysql-server, що говорить, що я вже маю останню версію.

Список репозиторії пакетів Debian Wheezy в Інтернеті показує MySQL 5.5 і більше нічого, коли мені потрібно 5.6. Тоді я читаю щось про "backports", що здається, що це могло б отримати мені речі, яких у мого конкретного Debian ще не було, але я не можу зробити так, щоб це працювало. Для цього потрібно додати рядки до /etc/apt/sources.list.d/sources.list. Коли я намагаюся це робити, то запускаючи apt-get update, я отримую 404 помилки.

Я також спробував декілька інших маршрутів, один з яких складав завантаження ванільної MySQL, яку я не зміг на жалю, і не хотів би повторити спробу.

Я позитивно вражений тим, як це робиться. Більшість URL-адрес, перелічених на форумах / блогах apt-get, і навіть для wget, здається, вмирають незабаром після їх публікації, тому я не можу зрозуміти, як хтось навіть шукає потрібну інформацію. Я намагаюся зробити це вже два дні прямо і нікуди не можу дістатися.

Тож припускаючи, що ви читали це далеко, я хотів би знати, чи є хто-небудь спосіб модернізувати MySQL в Debian якимось відносно безболісним автоматизованим способом (той, де мені не доведеться використовувати makeабо експортувати / імпортувати свої поточні бази даних та конфігурації вручну ).


Зробіть зворотний порт тестування / нестабільний / експериментальний. Див. Як я можу встановити новіші версії програмного забезпечення, ніж те, що надає Debian? . Краще скористайтеся PostgreSQL, у якого вже є спинки. Ви пишете: "Для цього потрібно додати рядки до /etc/apt/sources.list.d/sources.list. Коли я намагаюся це зробити, то запускаючи оновлення apt-get, я отримую 404 помилки." Вам потрібно додати більше інформації про це, якщо ви хочете допомогти.
Faheem Mitha

@faheemMitha З цікавості, де ти знайшов ці поштові сторони postgresql? Мені якось потрібна нова версія та slonyможливості, і я не зміг знайти новішу, ніж 9.1, у якої бракує неохайності.
Шадур

@Shadur: Просто виконайте пошук "backgresql debian backports". Я думаю, що ви хочете, це postgresql.org/download/linux/debian . Часто ви можете отримати спинки з backports.debian.org, але здається, що наразі вони недоступні звідти.
Faheem Mitha

@faheemMitha Я б вставив повну помилку, але у мене її більше немає, і я не впевнений, де саме використовуються резервні URL-адреси, які я більше використовував. Якщо ви все-таки знаєте робочу лінію, яку я можу підключити до свого source.list для зворотного списку, я хотів би спробувати. PS. На жаль, для мене на даний момент перехід на іншу платформу баз даних насправді не є варіантом.
вирівнювання

@equazcion Моя рекомендація - це рішення "Зробіть сам". Дістаньте джерела Debian з тестування (або нестабільного, або експериментального) та відновіть їх у свої власні пакети Debian. Це насправді не так складно, і MySQL навряд чи буде важко вирішувати залежності. Я пояснюю основні кроки у цій відповіді, з якою я пов’язаний. Ви дивились на це?
Faheem Mitha

Відповіді:


4

Перебудова експериментальних джерел 5.6 MySQL з експериментальних на хрипці легко межує з тривіальним. Однак вам знадобиться багато місця на диску; після завершення збірки каталог збірки використовував 5,2 ГБ. Крім того, потрібно тривати певний час, і потрібно провести неймовірну кількість тестів. Я не намагався це встигнути, але дозволяю пару годин. Можна вимкнути тести, але я пропоную дозволити їм працювати - це нешкідливо, поки вони проходять. Вони зробили на моїй машині. Хороша новина полягає в тому, що мені вдалося створити та встановити його без суєти. Я пройшов наступний базовий тест.

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> 

Отже, я можу принаймні підключитися до сервера. Ось як виглядають встановлені пакети:

$ 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

Ось розбивка кроків.

  1. Якщо у вас встановлений будь-який з пакунків MySQL 5.5, вилучіть їх, вони стануть неприємними лише пізніше. Якщо є якісь пакети, які залежать від них, вони також повинні будуть пройти.
  2. Спочатку знайдіть джерела. Вам потрібно додати наступне (або подібне, налаштувати на бажаний сервер) до /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Додайте також до /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Потім бігайте

    apt-get update
    
  5. Потім бігайте

    apt-get source mysql-5.6
    

    в якомусь підходящому каталозі. Я зазвичай створюю каталог в /usr/local/src,
    в цьому випадку, говорять /usr/local/src/mysql.

  6. Потім CD в /usr/local/src/mysql.

  7. Біжи

    sudo apt-get build-dep mysql-5.6
    

    На моїй машині для цього встановлено пару пакетів.

  8. Встановіть кілька основних пакетів для будівництва.

    apt-get install build-essential devscripts fakeroot
    

    Потім /usr/local/src/mysql/mysql-5.6- 5.6.16введіть CD у вихідний каталог та запустіть

    debuild -uc -us
    

    Це потребує певного часу. У деяких випадках корисно збільшити
    номер версії, але це насправді не потрібно. тому що навряд чи будь-який інший пакет MySQL 5.6 потрапить на хрипку.

    Якщо ви не хочете запускати тести, можете замість цього використовувати

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Тепер слід встановити libdbd-mysql-perl, що є залежністю від виконання пакетів mysql.

     apt-get install libdbd-mysql-perl
    
  10. Потім CD на один рівень до /usr/local/src/mysql. Там має бути кілька деб-пакетів. Ви хочете встановити принаймні

     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
    

    Це можна зробити, наприклад, запустивши:

     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
    

Перш за все, дякую за це та всі зусилля, які ви докладаєте. Однак на кроці 8 це не вдалося. У мене, здається, немає цих / debian / paths: 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 я роблю це в Linux під ключ, який, на мою думку, використовує LAMP, якщо це допомагає.
вирівнювання

@equazcion у вас може не встановлено фальшивку. apt-get install fakeroot.
Faheem Mitha

Установка фальшивки спрацювала. Останній крок помилився, сказавши, що він порушить MySQL 5.5. Я знехтував видалити 5.5, як ви запропонували, тому що я не знаю як, і не знав, як це вплине на мої поточні бази даних. Я готовий спробувати це ще раз після видалення 5.5, якщо ви хочете сказати мені, як це робити, таким чином, щоб мої дані були доступними в новій версії. Я знаю, що ти не такий знайомий з MySQL, і ти вже витратив на це досить багато часу. Це було чудовим початком, і я, можливо, я можу дізнатися, як зробити решту, гуляючи навколо.
вирівнювання

@equazcion відповідно до dev.mysql.com/doc/refman/5.6/en/…, вам просто потрібно демпінгувати mysqldumpі знову завантажувати файл дампа. Звичайно, резервні копії баз даних.
Faheem Mitha

Вдалося виправити це, не повторюючи всі кроки, і не потрібно було імпортувати бази даних - вони вже були там. Для всіх, хто зацікавився, я повинен був це зробити apt-get remove mysql-serverі apt-get remove mysql-client, також, повинен був зробити apt-get install libterm-readkey-perlперед останнім кроком. Також mysql-server-coreустановку в останній крок потрібно було зробити раніше mysql-server. Зараз я офіційно запускаю MySQL 5.6.16 і успішно протестував повнотекстові індекси пошуку InnoDB (причина, в якій я потребував цього)! Дякую, Фахім Мітха. Ти врятував мій розум.
вирівнювання

6

В даний час найкращим варіантом є використання офіційного репортажу MySQL APT, який дозволяє apt-get upgradeвстановити.


Це, мабуть, найкраще рішення, оскільки воно не вимагає встановлення компілятора. Більш нерозумний :)
Крістофер Шульц

Це рішення працює для мене. Після встановлення виберіть версію сервера mysql та оновлення apt-get upgrade, а потім зробити apt-get upgrade mysql-server, і просте оновлення mysql з 5,5 до 5,7. Після оновлення вам потрібно знову налаштувати та виконати:mysql_upgrade -u root
fermin

1

Всі перевірені весело.

  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. скрипти / mysql_install_db --user = mysql
  11. корінь -R корінь.
  12. дані chown -R 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. служба запуску mysql
  18. ./bin/mysql_secure_installation

Це здавалося, йшло добре , поки тут (вибачте за безлад, я не знаю , як вставити розриви рядків тут): 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

спробуйте запустити /etc/init.d/mysql або спробуйте натиснути вкладку на /etc/init.d/mys та запустити її
Beast Security

@equazcion Вітаємо, тепер ви виявили, чому для debian іноді потрібен час, щоб придумати офіційний пакет нової версії.
Шадур
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.