Бесконечно рад и доволен, что сами разработчики MySQL хотят представить своё детище в формате snap, минуя сопровождающих. Прошло немного времени с поры "мы замочили ножки" и вот уже клич для сообщества - все на тестирование MySQL в snap пакете. Поможем!?
Прежде чем начать, нужно ознакомится с нововведением в лице треков (Tracks) и как они связаны с каналами (Channels).
Сначала напомню про каналы распространения софта. Их 4 штуки: stable, candidate, beta, edge. Если снапкрафтер, тот кто пакует софт с помощью утилиты snapcraft, не справился до конца с софтом и программа внутри snap не может работать в строгом ограничении (confinement: strict), то на канал stable такой snap пакет не попадёт и не будет доступен пользователям через графическую Ubuntu Software. Такой snap пакет через Ubuntu Store можно установить только в Терминале, заранее зная его имя и конкретно указывая канал, к примеру для бета канала sudo snap install --channel=beta app-name-in-confinement-devmode
или кратко sudo snap install --beta app-name-in-confinement-devmode
Но использование только лишь одних каналов делало эту схему не гибкой. Разработчики ввели понятие трека. Вместе, треки и каналы, позволяют распространять несколько версий одного и того же snap пакета, что даёт пользователям возможность получать автоматическое обновление той серии, что их интересует.
По умолчанию snap пакет публикуется на треке latest, что даёт совместимость со старым поведением и пользователь, указывая snap install --beta my-app
неявно подразумевает snap install --channel=latest/beta
В каждом треке, снапкрафтер может публиковать снап пакет на каналах stable, candidate, beta и edge. На иллюстрации выше приведён классический пример, когда автор создаёт трек 2.0 для своего программного детища v2.0, чтобы пользователи, которые захотят остаться именно на данном релизе, смогут это сделать.
Вся информация о вышеописанной концепции трек/канал была вам дана ради понимания почему команда MySQL вместо использования канала edge под релиз mysql 8.0 и канала beta под 5.7, перешла на нотацию:
sudo snap install mysql --channel=8.0/beta
sudo snap install mysql --channel=5.7/beta
То есть команда MySQL создала 2 трека под свои 2 релиза и у каждого трека есть свой канал beta, на которых пока лежат обкатываемые релизы. Как только тесты с помощью сообщества будут признаны удовлетворительными, соответствующие релизы mysql появятся на своих каналах stable соответствующих треков.
Что нужно от нас? На множестве различных машин, с различными версиями и дериватами Ubuntu, в различных Linux дистрибутивах где работает демон snapd, разработчики MySQL просят сделать пару телодвижений и дать наш feedback.
К примеру, хотим заценить MySQL 8.0.
Ставим - sudo snap install mysql --channel=8.0/beta
Подверьтесь командой sudo snap interfaces | grep mysql
, что mysql был автоматически подключён ко всем интерфейсам, что он запросил из своего snapcraft.yaml. Парни из MySQL и Canonical уладили вопрос с автосоединением к интерфейсу process-control, но как они это сделали не знаю. Моя Ubuntu 17.04 и snapd 2.22.7+17.04 показывают мне:
:network mysql :network-bind mysql :process-control mysql
Если у вас что-то не так, то соедините мускуль к управлению процессами - sudo snap connect mysql:process-control ubuntu-core:process-control
Читаем помощь - mysql.help
MySQL Snap Image = MySQL Snap Image = The MySQL snap image is an experimental release of MySQL for the snap universal Linux package system. This image should be used for testing only, and is not suitable for a production environment. == Commands == [...]
Запускаем сервер - mysql.startup
Generating config file in /home/ваша_учётная_запись/snap/mysql/common/conf/my.cnf... Done Initializing new database in /home/ваша_учётная_запись/snap/mysql/common/data... Done 2017-01-05T05:19:05.178633Z 4 [Note] A temporary password is generated for root@localhost: $temp_password Starting server...
Сервер удержит терминал и поэтому откройте ещё один. Там командуйте для запуска монитора MySQL - mysql.client -uroot -p
и берите пароль из вышестоящей команды вместо $temp_password. Если всё хорошо, то увидите что-то типа:
Using config file: /home/ваша_учётная_запись/snap/mysql/common/conf/my.cnf Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 8.0.0-dmr [...] mysql>
Получите помощь через команду help.
mysql> help For information about MySQL products and services, visit: www.mysql.com For developer information, including the MySQL Reference Manual, visit: dev.mysql.com To buy MySQL Enterprise support, training, or other products, visit: shop.mysql.com List of all MySQL commands: [...]
Смените пароль для root MySQL! Обязательно!
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mYSuperPa$$wdR00tMySQL'; Query OK, 0 rows affected (0.02 sec)
Сделайте запрос
mysql> SELECT VERSION(), CURRENT_DATE; +-----------+--------------+ | VERSION() | CURRENT_DATE | +-----------+--------------+ | 8.0.0-dmr | 2017-01-04 | +-----------+--------------+ 1 row in set (0.00 sec)
Получите информацию об базах данных
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
Создайте базу данных
mysql> CREATE DATABASE menagerie; Query OK, 1 row affected (0.05 sec)
Переключитесь на неё
mysql> USE menagerie Database changed
Создайте таблицу
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); Query OK, 0 rows affected (0.23 sec)
Вставьте строку
mysql> INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL); Query OK, 1 row affected (0.21 sec)
Выведите строку на экран
mysql> SELECT * FROM pet WHERE name = 'Puffball'; +----------+-------+---------+------+------------+-------+ | name | owner | species | sex | birth | death | +----------+-------+---------+------+------------+-------+ | Puffball | Diane | hamster | f | 1999-03-30 | NULL | +----------+-------+---------+------+------------+-------+ 1 row in set (0.00 sec)
Завершите работу с монитором
mysql> QUIT Bye
Если что-то работает плохо или не работает вовсе, обновите свою систему sudo apt update && sudo apt-get dist-upgrade; sudo snap refresh
, перезагрузитесь и повторите шаги снова. Если ошибка повторяется, то соберите информацию о своей операционной системе: её версия, используемая среда рабочего стола, версия snapd, шаги и текст ошибки. Свой отчёт и проблему можно описать в одной из комнат RocketChat.