Skip to content

Instantly share code, notes, and snippets.

@awm086
Created September 10, 2013 15:16
Show Gist options
  • Save awm086/6510924 to your computer and use it in GitHub Desktop.
Save awm086/6510924 to your computer and use it in GitHub Desktop.
#!/bin/bash
#
# Original for 5.3 by Ruben Barkow (rubo77) http://www.entikey.z11.de/
# release 1 PHP5.4 to 5.3 by Emil Terziev ( foxy ) Bulgaria
# Originally Posted by Bachstelze http://ubuntuforums.org/showthread.php?p=9080474#post9080474
# OK, here's how to do the Apt magic to get PHP packages from the precise repositories:
echo "Am I root? "
if [ "$(whoami &2>/dev/null)" != "root" ] && [ "$(id -un &2>/dev/null)" != "root" ] ; then
echo " NO!
Error: You must be root to run this script.
Enter
sudo su
"
exit 1
fi
echo " OK";
#install aptitude before, if you don`t have it:
#apt-get update
#apt-get install aptitude
# or if you prefer apt-get use:
# alias aptitude='apt-get'
# finish all apt-problems:
aptitude update
aptitude -f install
#apt-get -f install
# remove all your existing PHP packages. You can list them with dpkg -l| grep php
PHPLIST=$(for i in $(dpkg -l | grep php|awk '{ print $2 }' ); do echo $i; done)
echo "These packages will be removed: " $PHPLIST
read -p "Continue? [Y/n] " yn
case $yn in
n|N|no|NO|No) exit ;;
esac
echo "
Running Aptitude to remove..."
# you need not to purge, if you have upgraded from precise:
aptitude remove $PHPLIST
# on a fresh install, you need purge:
aptitude remove --purge $PHPLIST
#Create a file each in /etc/apt/preferences.d like this (call it for example /etc/apt/preferences.d/php5_2);
#
#Package: php5
#Pin: release a=precise
#Pin-Priority: 991
#
#The big problem is that wildcards don't work, so you will need one such stanza for each PHP package you want to pull from precise:
echo ''>/etc/apt/preferences.d/php5_3
for i in $PHPLIST ; do echo "Package: $i
Pin: release a=precise
Pin-Priority: 991
">>/etc/apt/preferences.d/php5_3; done
echo "# needed sources for php5.3:
deb http://kambing.ui.ac.id/ubuntu/ precise main restricted
deb-src http://kambing.ui.ac.id/ubuntu/ precise main restricted
deb http://kambing.ui.ac.id/ubuntu/ precise-updates main restricted
deb-src http://kambing.ui.ac.id/ubuntu/ precise-updates main restricted
deb http://kambing.ui.ac.id/ubuntu/ precise universe
deb-src http://kambing.ui.ac.id/ubuntu/ precise universe
deb http://kambing.ui.ac.id/ubuntu/ precise-updates universe
deb-src http://kambing.ui.ac.id/ubuntu/ precise-updates universe
deb http://kambing.ui.ac.id/ubuntu/ precise multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ precise multiverse
deb http://kambing.ui.ac.id/ubuntu/ precise-updates multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ precise-updates multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ natty-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu precise-security main restricted
deb-src http://security.ubuntu.com/ubuntu precise-security main restricted
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe
deb http://security.ubuntu.com/ubuntu precise-security multiverse
deb-src http://security.ubuntu.com/ubuntu precise-security multiverse
deb-src http://archive.canonical.com/ubuntu natty partner
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main
deb http://kambing.ui.ac.id/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ precise-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu precise partner
deb-src http://archive.canonical.com/ubuntu precise partner
" >> /etc/apt/sources.list.d/precise.list
aptitude update
apache2ctl restart
echo install new from precise:
aptitude -t precise install $PHPLIST
# at the end retry the modul libapache2-mod-php5 in case it didn't work the first time:
aptitude -t precise install libapache2-mod-php5
apache2ctl restart
@awm086
Copy link
Author

awm086 commented Mar 6, 2014

Use with care..this could cause file collisions due mixing diferent repositories in your /ete/apt/sources.list ..
Before using make a backup of sources.list file and /etc/apt/conf.d/ dir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment