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


13

我正在使用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错误。

我也尝试了其他几种方法,其中一种是编译原始的MySQL下载,但我失败了,可惜不愿再尝试。

我对如何做到这一点感到困惑。在apt-get,甚至是上,论坛/博客上列出的大多数URL wget似乎在发布后很快就会消失,因此我无法理解任何人甚至如何找到正确的信息。我已经连续两天尝试这样做,却一无所获。

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


从测试/不稳定/实验中进行反向移植。请参阅如何安装Debian提供的软件之外的最新版本?。更好的是,使用已经有反向移植的PostgreSQL。您写到“它要求在/etc/apt/sources.list.d/sources.list中添加行。当我尝试这样做时,然后运行apt-get update,我会收到404错误。” 如果需要帮助,您需要添加有关此操作的更多详细信息。
Faheem Mitha 2014年

@faheemMitha出于好奇,您在哪里找到这些postgresql反向移植?我有点需要新版本和新slony功能,而我找不到比9.1还要新的版本,而9.1却没有傻子。
Shadur 2014年

@Shadur:只需搜索“ postgresql debian backports”。我认为您想要的是postgresql.org/download/linux/debian。通常,您可以从backports.debian.org获得这些backport,但是似乎目前无法从那里获得它们。
Faheem Mitha 2014年

@faheemMitha我将粘贴完整的错误,但现在不再使用它了,而且我不确定我在哪里使用了反向端口URL。但是,如果您知道一条工作线,我可以将其插入我的sources.list中以进行反向移植,我很想尝试一下。PS。不幸的是,在这一点上,切换到其他数据库平台并不是我真正的选择。
equazcion 2014年

@equazcion我的建议是DIY解决方案。从测试(或不稳定或实验性的)中获取Debian的源代码,然后将它们重建到自己的Debian软件包中。这实际上并不难,而且MySQL不太可能难以解决依赖关系。我解释了我链接到的答案的基本步骤。你看到了吗?
Faheem Mitha 2014年

Answers:


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> 

因此,我至少可以连接到服务器。这是已安装的软件包的外观:

$ 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. 然后进入/usr/local/src/mysql

  7. sudo apt-get build-dep mysql-5.6
    

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

  8. 安装一些用于构建的基本软件包。

    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
    
  9. 现在,您应该安装libdbd-mysql-perl,它是mysql软件包的运行时依赖项。

     apt-get install libdbd-mysql-perl
    
  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
    

    例如,这可以通过运行:

     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 /路径: 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 我正在Turnkey Linux中这样做,我认为可以利用LAMP,如果有帮助的话。
equazcion 2014年

@equazcion您可能未安装fakeroot。apt-get install fakeroot
Faheem Mitha 2014年

安装fakeroot工作正常。最后一步错误地说它将破坏MySQL 5.5。我没有按照您的建议删除5.5,因为我不知道如何,而且我不确定它会如何影响我当前的数据库。如果您想告诉我如何进行操作以使我的数据在新版本中可用,那么我准备在删除5.5之后再次尝试此操作。我知道您对MySQL并不那么熟悉,并且您已经在此方面花了很多时间。这是一个很好的开端,也许我可以通过谷歌搜索来找到剩下的方法。
equazcion 2014年

@equazcion根据dev.mysql.com/doc/refman/5.6/en/...你只需要转储mysqldump,然后重新加载转储文件。当然,也要备份数据库。
Faheem Mitha 2014年

无需重复所有步骤就可以挽救这一点,并且不需要重新导入数据库-它们已经存在。对于任何有兴趣的人,我必须做apt-get remove mysql-serverapt-get remove mysql-clientapt-get install libterm-readkey-perl在最后一步之前也必须做。另外,mysql-server-core必须在之前完成最后一步的安装mysql-server。我现在正式运行MySQL 5.6.16,并且已经成功测试了全文InnoDB搜索索引(我需​​要这样做的原因)!谢谢Faheem Mitha。你救了我的理智。
equazcion 2014年

6

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


这可能是最好的解决方案,因为它不需要安装编译器。更简单:)
Christopher Schultz

此解决方案对我有用。安装后,选择mysql服务器版本并进行升级apt-get upgrade,然后我执行操作apt-get upgrade mysql-server,并将mysql从5.5轻松升级到5.7。升级后,您需要重新配置并执行:mysql_upgrade -u root
fermin

1

所有经过测试的人玩得开心。

  1. .apt-get安装libaio1
  2. 组添加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 /本地
  8. ln -s /opt/mysql/server-5.6 mysql
  9. 光盘mysql
  10. scripts / mysql_install_db --user = mysql
  11. chown -R root。
  12. chown -R mysql数据
  13. cp支持文件/mysql.server /etc/init.d/mysql
  14. mkdir -p /etc/mysql/conf.d/
  15. cp my.cnf / etc / mysql /
  16. 回声$'!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 startStarting MySQL [FAIL......[....] The server quit without updating PID file (/opt/mysql/server-5.6/data/lamp.pid). ... failed!
equazcion

尝试使用/etc/init.d/mysql start或尝试按/etc/init.d/mys中的tab-tab并启动它
Security Beast

@equazcion恭喜,您已经发现为什么debian有时需要一段时间才能为新版本提供正式软件包。
Shadur 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.