如何使用 apt-get 在 Debian 中升级 MySQL?

equ*_*ion 13 debian apt mysql upgrade turnkey

我正在使用 Turnkey Linux 虚拟机。那里的 Debian 版本显然在“Wheezy”升级路径上(如果你这么称呼它的话)。正如您所看到的,我对 Linux 并不完全满意。

我需要 MySQL 5.6 提供的一些新功能,而我当前安装的是 MySQL 5.5.35。我想获得最新版本(发布时为 5.6.17)或至少任何 5.6.x。

我试过apt-get updateapt-get upgradeapt-get dist-upgrade。这些成功更新了一堆东西,但没有一个是 MySQL。我试过了apt-get upgrade mysql-server,它说我已经有了最新版本。

当我需要 5.6 时,网络上的 Debian Wheezy 软件包存储库列表显示 MySQL 5.5 而没有其他内容。然后我读了一些关于“backports”的东西,听起来它可能能让我得到我的特定 Debian 不应该拥有的东西——但我似乎无法让它工作。它需要向/etc/apt/sources.list.d/sources.list. 当我尝试这样做,然后运行时apt-get update,我收到 404 错误。

我也尝试了其他几种方法,其中一种是编译 vanilla MySQL 下载,但我失败了,不想再试一次。

我对如何做到这一点感到非常困惑。论坛/博客上列出的大多数apt-get,甚至是 的 URLwget似乎在发布后很快就消失了,所以我不明白有人是如何找到正确的信息的。我已经连续两天尝试这样做了,但无处可去。

因此,假设您已经阅读了这么多,我很想知道是否有人可以通过某种相对轻松的自动化方式在 Debian 中升级 MySQL(我不必make手动使用或导出/导入我当前的数据库和配置) )。

tak*_*hin 6

目前最好的选择是使用允许安装的官方MySQL APT 存储库apt-get upgrade


Fah*_*tha 4

从 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> 
Run Code Online (Sandbox Code Playgroud)

所以,我至少可以连接到服务器。以下是已安装的软件包的样子:

$ 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
Run Code Online (Sandbox Code Playgroud)

以下是步骤的细分。

  1. 如果您安装了任何令人惊叹的 MySQL 5.5 软件包,请将其删除,它们只会在以后造成麻烦。如果有任何依赖于这些的软件包,它们也必须被删除。
  2. 首先,获取来源。您需要添加以下内容(或类似的内容,根据您的首选服务器进行调整)/etc/apt/sources.list

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
    Run Code Online (Sandbox Code Playgroud)
  3. 还将以下内容添加到/etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
    Run Code Online (Sandbox Code Playgroud)
  4. 然后运行

    apt-get update
    
    Run Code Online (Sandbox Code Playgroud)
  5. 然后运行

    apt-get source mysql-5.6
    
    Run Code Online (Sandbox Code Playgroud)

    在一些合适的目录中。我通常在 中创建一个目录/usr/local/src
    在本例中为/usr/local/src/mysql

  6. 然后 cd 到/usr/local/src/mysql.

  7. 跑步

    sudo apt-get build-dep mysql-5.6
    
    Run Code Online (Sandbox Code Playgroud)

    在我的机器上安装了几个软件包。

  8. 安装一些基本的构建包。

    apt-get install build-essential devscripts fakeroot
    
    Run Code Online (Sandbox Code Playgroud)

    然后 cd 进入生成的源目录/usr/local/src/mysql/mysql-5.6- 5.6.16并运行

    debuild -uc -us
    
    Run Code Online (Sandbox Code Playgroud)

    这需要一段时间来构建。在某些情况下,增加版本号是个好主意
    ,但这里并不是真的有必要。因为其他 MySQL 5.6 软件包不太可能出现问题。

    如果您不想运行测试,可以使用

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
    Run Code Online (Sandbox Code Playgroud)
  9. 现在您应该安装 libdbd-mysql-perl,它是 mysql 软件包的运行时依赖项。

     apt-get install libdbd-mysql-perl
    
    Run Code Online (Sandbox Code Playgroud)
  10. 然后 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
    
    Run Code Online (Sandbox Code Playgroud)

    例如,可以通过运行以下命令来完成此操作:

     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
    
    Run Code Online (Sandbox Code Playgroud)