我正在使用 Turnkey 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
,它说我已经有最新版本了。
当我需要 5.6 时,网络上的 Debian Wheezy 软件包存储库列表显示 MySQL 5.5,没有其他任何内容。然后我读到了一些关于“向后移植”的内容,听起来它可能能让我得到我的特定 Debian 不应该拥有的东西——但我似乎无法让它工作。它需要添加行到/etc/apt/sources.list.d/sources.list
.当我尝试这样做,然后运行 时apt-get update
,我收到 404 错误。
我还尝试了其他几种方法,其中一种是编译普通的 MySQL 下载,但我失败了,我不想再尝试了。
我对这是如何完成的感到非常困惑。论坛/博客上列出的大多数 URL apt-get
,甚至是wget
,似乎在发布后很快就消失了,所以我无法理解为什么有人会去寻找正确的信息。我已经连续两天尝试这样做,但无济于事。
所以假设你已经读到这里了,我很想知道是否有人有办法以某种相对轻松的自动化方式升级 Debian 中的 MySQL(一种我不必手动使用make
或导出/导入我当前的数据库和配置的方式) )。
答案1
目前最好的选择是使用官方MySQL APT 存储库允许apt-get upgrade
安装。
答案2
从 wheezy 上的实验重建实验性 5.6 MySQL 源代码非常简单,几乎微不足道。但是,您将需要大量的磁盘空间;构建完成后,构建目录使用了 5.2 GB。此外,它需要一段时间来构建,并运行大量的测试。我没有费心去计时,但留了几个小时。可以禁用测试,但我建议让它们运行 - 只要它们通过就无害。他们在我的机器上做了。好消息是我能够毫不费力地构建和安装它。我进行了以下基本测试。
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
以下是步骤的细分。
- 如果您安装了任何令人惊叹的 MySQL 5.5 软件包,请将其删除,它们只会在以后造成麻烦。如果有任何依赖于这些的软件包,它们也必须被删除。
首先,获取来源。您需要添加以下内容(或类似内容,根据您的首选服务器进行调整)
/etc/apt/sources.list
:deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
还将以下内容添加到
/etc/apt/preferences
.Package: * Pin: release a=experimental Pin-Priority: 1
然后运行
apt-get update
然后运行
apt-get source mysql-5.6
在一些合适的目录中。我通常在 中创建一个目录
/usr/local/src
,
在本例中为/usr/local/src/mysql
。然后 cd 到
/usr/local/src/mysql
.跑步
sudo apt-get build-dep mysql-5.6
在我的机器上安装了几个软件包。
安装一些基本的构建包。
apt-get install build-essential devscripts fakeroot
然后 cd 进入生成的源目录
/usr/local/src/mysql/mysql-5.6- 5.6.16
并运行debuild -uc -us
这需要一段时间来构建。在某些情况下,增加
版本号是个好主意,但这里并不是真的有必要。因为其他 MySQL 5.6 软件包不太可能出现问题。如果您不想运行测试,可以使用
DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
现在您应该安装 libdbd-mysql-perl,它是 mysql 软件包的运行时依赖项。
apt-get install libdbd-mysql-perl
然后 cd 上一级到
/usr/local/src/mysql
。那里应该有一些 deb 包。你至少需要安装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
答案3
所有测试都玩得开心。
- .apt-get 安装 libaio1
- mysql 组添加
- useradd -r -g mysql mysql
- wget -O mysql-5.6.16-debian6.0-x86_64.deb
- http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.16-debian6.0-x86_64.deb
- dpkg -i mysql-5.6.16-debian6.0-x86_64.deb
- cd /usr/local
- ln -s /opt/mysql/server-5.6 mysql
- cd mysql
- 脚本/mysql_install_db --user=mysql
- chown -R 根。
- chown -R mysql数据
- cp 支持文件/mysql.server /etc/init.d/mysql
- mkdir -p /etc/mysql/conf.d/
- cp my.cnf /etc/mysql/
- echo $'!include /etc/mysql/my.cnf\n!includedir /etc/mysql/conf.d/' > my.cnf
- 服务mysql启动
- ./bin/mysql_secure_installation