Przeskocz do treści

Upgrade PHP na Ubuntu server 8.04

22 lipca, 2011

Wersja któtka:

  • Usuń PHP z serwera apt-get remove php5
  • Zrób backub pliku /etc/sources.list
  • Wyczyść go
  • Dodaj do niego adresy
    deb http://php53.dotdeb.org stable all
    deb-src http://php53.dotdeb.org stable all
  • Wywołaj apt-get update
  • Zainstaluj PHP apt-get install php5
  • Przywróć plik /etc/sources.list do pierwotnego stanu (na wypadek jakichś przyszłych update-ów, chociaż najprawdopodobniej tej wersji nie da się upgrade-ować bardziej niż jest teraz używając oficjalnego repo)
  • Wywołaj apt-get update

I to w zasadzie tyle. Nie wiem czy jest to najlepszy sposób, ale dla mnie zadziałał :).

Wersja z wynurzeniami:

Ten problem pojawił się gdy musiałem odpalić testy jednostkowe w frameworku Yii na rzeczonym systemie. Yii wymaga PHPUnit w wersji 3.5, PHPUnit wymaga PHP w wersji 5.2.7. Na serwerze było 5.2.4. Tak blisko, a tak daleko.

No ale nic, pomyślałem sobie „apt-get” załatwi sprawę. Nie załatwił, Ubuntu w oficjalnym repo ma co najwyżej 5.2.4. Zaczęła się zabawa.

Poszperałem w sieci, znalazłem dużo postów na różnych blogach, szukałem też na stackoverflow, również znalazłem sporo propozycji. Tylko że żadna nie działała. Nie chciałem dodawać repozytoriów z nowszej wersji Ubuntu bo z doświadczenia wiem, że to może się źle skończyć. Próbowałem kompilacji ze źródeł, ale było tyle niespełnionych zależności że pomyślałem, że musi być jakiś prostszy sposób. W zasadzie sposób z tej strony: http://www.dotdeb.org/2009/11/30/php-5-3-1-packages-for-debian-lenny-theyre-here/comment-page-1/ jest dobry, tylko nie wspomnieli tam o jednej rzeczy.

Okazało się, że nie do końca rozumiałem jak działa mechanizm apt-get. Myślałem, że jeśli w repozytoriach będzie nowsza wersja paczki to zostanie ona zainstalowana. Okazało się jednak że oficjalne repozytoria zasłaniają te które dodałem.

Obszedłem to w ten sposób, że usunąłem PHP na serwerze, wyczyściłem /etc/sources.list po czym dodałem do niego adresy ze wspomnianego linku i zainstalowałem PHP. Żadnych kompilacji ze źródeł bałaganiących w systemie, po instalacji przywróciłem stan sources.list i wszystko śmiga, mogę cieszyć się automatycznymi testami i spać spokojnie :).

Ta sytuacja przypomniała mi, że nie wszystko zawsze musi działać logicznie (albo zgodnie z moją logiką). No i że kiedy po długim próbowaniu coś w końcu wyjdzie, uczucie jest niesamowicie fajne.

From → Linux

2 Komentarze
  1. Typowe, kilku czy też kilkunasto godzinna walka kończy się kilkoma linijkami „receptury”. Niestety bardzo wielu przepisodawców nie zaznacza warunków brzegowych, czyli np. jaka wersja pracuje w danym środowisku, z tego powodu większość postów na forach jest prawie bezużytecznych. Dlatego szczacun dla kolegi za dokładny opis 🙂

    • Dzięki kolego ;). Podejrzewam, że ta sama receptura byłaby skuteczna na nowszych/starszych wersjach Ubuntu, i nie tylko z PHP, jednak nie sprawdzałem tego. Jeśli ktoś jednak spróbuje niech da znać w komentarzach!

Dodaj komentarz