升级php 5.3.6到5.5在Ubuntu 12.04 LTS需要删除MySQL?

我试图升级PHP到最新版本(5.5)我目前的PHP版本是5.3.6与Ubuntu 12.04 LTS捆绑。 问题是我不想升级任何东西只是PHP,但虽然我特别是告诉apt-get包我想升级它坚持删除MySQL 5.1和安装MySQL 5.5这里是我使用的命令:

sudo apt-get --only-upgrade install php5-common 

我也试过了

 sudo apt-get upgrade php5-common 

我得到的回应是这样的:

 The following extra packages will be installed: libalgorithm-diff-xs-perl libapache2-mod-php5 libdbd-mysql-perl libdbi-perl liblocale-gettext-perl libmysqlclient18 libsub-name-perl libterm-readkey-perl libtext-charwidth-perl libtext-iconv-perl mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5 perl perl-base perl-modules php5-cli php5-curl php5-gd php5-mysql php5-pgsql Suggested packages: tinyca mailx perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl php5-suhosin The following packages will be REMOVED: mysql-client-5.1 mysql-client-core-5.1 mysql-server-5.1 mysql-server-core-5.1 The following NEW packages will be installed: libmysqlclient18 libterm-readkey-perl mysql-client-5.5 mysql-client-core-5.5 mysql-server-5.5 mysql-server-core-5.5 The following packages will be upgraded: libalgorithm-diff-xs-perl libapache2-mod-php5 libdbd-mysql-perl libdbi-perl liblocale-gettext-perl libsub-name-perl libtext-charwidth-perl libtext-iconv-perl mysql-common mysql-server perl perl-base perl-modules php5-cli php5-common php5-curl php5-gd php5-mysql php5-pgsql 

为什么会这样呢? 是PHP依赖于MySQL这将是完全疯了。 如果我说是的话,apt-get删除我当前的mysql数据呢? 因为这是一个正在运行的实例,我不能冒险丢失任何数据(我可能需要备份,但这意味着把网站维护几个小时,我不喜欢)

问题是php5-mysql包依赖于libmysqlclient18,这取决于mysql-common:

 # apt-cache depends php5-mysql php5-mysql Depends: libc6 Depends: libmysqlclient18 .... # apt-cache depends libmysqlclient18 libmysqlclient18 Depends: mysql-common Depends: libc6 Depends: zlib1g PreDepends: multiarch-support multiarch-support:i386 Replaces: libmysqlclient18:i386 Breaks: libmysqlclient18:i386 

MySQL 5.1在10.04中是默认的,而在12.04中的默认MySQL版本是5.5,这就是为什么所有这些包间接依赖它。

如果你真的不想升级MySQL,你应该find与MySQL 5.1链接的PHP软件包(为10.04构build的软件包),或者你应该创build10.04个虚拟机并build立你自己的(通过重build官方软件包)。

另一方面,MySQL升级不应该删除你的数据。 只有“清除”将做到这一点。

但是,为了安全起见,你可以做的是:

 # /etc/init.d/mysql stop # mv /var/lib/mysql /var/lib/mysql_orig 

然后做升级。 这将安装新的MySQL服务器,并创build新的/ var / lib / mysql与空数据库。 它不会触及你的数据,因为/ var / lib / mysql_orig在任何mysql- *包定义中都没有提到。 升级之后,请执行:

 # mv /var/lib/mysql /var/lib/mysql_new_55 # mv /var/lib/mysql_orig /var/lib/mysql # chown mysql: /var/lib/mysql # chmod 0700 /var/lib/mysql # /etc/init.d/mysql start 

如果你有足够的磁盘空间和时间,用cp -arreplacemv,这样你就可以获得MySQL数据的副本,以防万一升级出现问题。 备份总是一个不错的select。

在此之后,您还需要运行mysql_upgrade脚本将mysql。*表升级到5.5格式。

此外,请检查configuration中的所有差异 – 一些my.cnf设置已重命名,并且一些默认值已更改。

除了PHP之外,您还将使用以下模块: php5-mysql 。 这需要PHP常见的5.5,这迫使服务器更新。 尝试安装php5-mysqlnd而不是php5-mysql。