Friday, July 29, 2011

Debian Lenny - Update PHP 5.2 to 5.3

It must be added the new source to apt-source. Edit the file /etc/apt/sources.list:

vim /etc/apt/sources.list

and add these lines to it:

deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all

 Download and import the dotdeb key:

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -

Then remove all php packages from the system. For example in my case:

apt-get remove php5 libapache2-mod-php5 php5-gd php5-mysql
apt-get remove php5-curl php5-tidy php5-dev php-pear php5-cli
apt-get remove php5-common php5-suhosin

Update your sources:

apt-get update

and reinstall PHP packages:

apt-get install php5 libapache2-mod-php5 php5-gd php5-mysql
apt-get install php5-curl php5-tidy php5-dev php-pear php5-cli
apt-get install php5-common php5-suhosin

now the following command will show you the new PHP version:

php -v



Update:


because php53.dotdeb.org no longer has lenny packages, we install the PHP 5.3 manually:

mkdir /tmp/php5
cd /tmp/php5

download all PHP5 packages from (our example is PHP 5.3.10) :

 http://archives.dotdeb.org/dists/lenny/php5/5.3.10/binary-amd64/

wget -r -l 1 http://archives.dotdeb.org/dists/lenny/php5/5.3.10/binary-amd64/

remove old version:

apt-get remove php5 libapache2-mod-php5  
apt-get remove php5-gd php5-mysql php5-curl 
apt-get remove php5-tidy php5-dev php-pear 
apt-get remove php5-common php5-mcrypt php5-cli

and install new PHP packages:

dpkg -i php5-common_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i libapache2-mod-php5_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php5_5.3.10-1~dotdeb.0_all.deb
dpkg -i php5-mysql_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php5-curl_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php5-cli_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php-pear_5.3.10-1~dotdeb.0_all.deb
dpkg -i php5-curl_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php5-mcrypt_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php5-tidy_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php5-gd_5.3.10-1~dotdeb.0_amd64.deb
dpkg -i php5-dev_5.3.10-1~dotdeb.0_amd64.deb


restart the apache:

/etc/init.d/apache2 restart

11 comments:

james t said...

Unfortunately php53.dotdeb.org no longer has lenny packages...

Anonymous said...

nice post....for me it's very helpful and it works :)

Many Thanks

Nenad Bulatovic said...

Is it possible to add http://archives.dotdeb.org/dists/lenny/php5/5.3.10/binary-amd64/
to sources list? To make it installable with apt.get?

Tehrani said...

If you mean for Lenny, I must say no, because dotdeb.org has no longer support Lenny packages. But for squeeze is possible.

Nenad Bulatovic said...

I found a solution:

1. I made new directory
Code:
mkdir /root/downloads/php5.3
2. I downloaded all of the deb packages
Code:
wget -r -l 1 http://archives-php53.dotdeb.org/dists/lenny/php5/5.3.9/binary-i386/
3. Created Packages.gz
Code:
sudo dpkg-scanpackages . /dev/null | gzip -c9 > Packages.gz
4. added this to sources.list
Code:
deb file:///root/downloads/php5.3 ./
5.
Code:
sudo apt-get update
6.
Code:
apt-get upgrade
7.
Code:
apt-get dist-upgrade
And that's it

8.
Code:
php -v
PHP 5.3.9-1~dotdeb.2 with Suhosin-Patch (cli) (built: Jan 13 2012 01:21:19)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
piks:~/downloads/php5.3#

Tehrani said...

@Nenad Bulatovic: cool, thanks for your comment

fahim-ansari said...

Hi, @Nenad Bulatovic,

thanks for your info, but after creating package and when i run apt-get update, i got file not found at /root/downloads/php5.3/./Sources.gz and also for Packages.gz. Where these .gz files stored and how to solve it?

Thanks
Fahim

Nenad Bulatovic said...

@fahim-ansari
They should be in directory where you ran command for creation of packages.

However, you can do: "updatedb" and then "locate Packages.gz" to find where are they stored on your system.

Jackson said...

Hello I'm having problem when starting'll update this package, is giving error dependence.
dpkg-i php5-mcrypt_5.3.10-1 ~ dotdeb.0_amd64.deb
dpkg-i php5-tidy_5.3.10-1 ~ dotdeb.0_amd64.deb
dpkg-i php5-gd_5.3.10-1 ~ dotdeb.0_amd64.deb
dpkg-i php5-dev_5.3.10-1 ~ dotdeb.0_amd64.deb

Please how do I solve this problem?

(Reading database ... 30999 files and directories currently installed.)
Preparing to replace php5-mcrypt 5.3.10-1~dotdeb.0 (using php5-mcrypt_5.3.10- otdeb.0_amd64.deb) ...
Unpacking replacement php5-mcrypt ...
dpkg: dependency problems prevent configuration of php5-mcrypt:
php5-mcrypt depends on libmcrypt4; however:
Package libmcrypt4 is not installed.
dpkg: error processing php5-mcrypt (--install):
dependency problems - leaving unconfigured
Processing triggers for libapache2-mod-php5 ...
[ ok ] Reloading web server config: apache2.
Errors were encountered while processing:
php5-mcrypt

Tehrani said...

@Jackson:

Hi Jackson,

did you try to run this command after dependency problem:

apt-get -f install

riversy said...

Thanx for great post. Still actual.