Własny patch do nowej wersji Drupala
Z każdym wydaniem nowej wersji Drupala, oprócz archiwum tar dostarczany jest patch
pozwalający szybko uaktualnić system.
Prawdopodobnie większość z nas podczas archiwizacji, najpierw usuwa zbiory i katalogi z wyjątkiem konfiguracyjnych, katalogu files, własnych skórek itp. Następnie rozpakowuje nowe archiwum tak aby zastąpiło usunięte zbiory. Taki proces aktualizacji może nieść za sobą ryzyko usunięcia potrzebnych danych (administratorzy dobrze wiedzą, że archiwizacja danych i bezpieczne podejście do tematu aktualizacji niestety nie jest powszechne) i w przypadku aktualizacji wielu stron jest nieco kłopotliwe.
Dostarczany oryginalnie przez Drupala patch
ma pewną wadę – po jego wykonaniu na karcie Raport o stanie witryny
dalej widnieje informacja o posiadaniu przez nas starszej (nieuaktualnionej) wersji.
Prawdopodobnie dlatego, że w “łacie” ujęte są tylko te pliki w których dokonano zmian, a nie jest generowany patch na podstawie wszystkich różnic w archiwach. Ale jest to tylko mój domysł nie poparty żadnym wczytaniem się w dokumentację.
Postanowiłem wykonać własnego patcha.
Wykluczenie katalogu sites
Podczas porównania dwóch archiwów będę wykluczał całą kartotekę sites. Dlaczego? Bo sites/default/ powinno mieć ustawione atrybuty tylko do odczytu, zawiera konfigurację naszej strony, nasze moduły i skórki. Próba uaktualnienia sites/default/ po pierwsze zatrzymała by nam skrypt patcha (ze względu na zabezpieczenie przed zapisem), a po drugie skoro w środku znajdują się tylko nasze indywidualne ustawienia i konfiguracje to nie widzę potrzeby go ruszać.
Nie zwalania nas to oczywiście z prześledzenia informacji dostarczanej wraz z nowym wydaniem Drupala, czy na pewno nic się nie zmieniło w w/w kartotece.
Przygotowanie patcha
Potrzebuje do tego celu dwa ostatnie wydania Drupala, oba rozpakowuje w jednej kartotece otrzymując taką strukturę:
user@aristo300:~/tmp/DRUPAL$ ls -l
drwxr-xr-x 9 user nobody 4096 2008-07-09 23:55 drupal-6.3
-rw-r--r-- 1 user nobody 1061653 2008-07-09 23:55 drupal-6.3.tar.gz
drwxr-xr-x 9 user nobody 4096 2008-08-14 02:10 drupal-6.4
-rw-r--r-- 1 user nobody 1068473 2008-08-14 02:10 drupal-6.4.tar.gz
Teraz usuwam z obu wydań katalog sites:
user@aristo300:~/tmp/DRUPAL$ rm -rvf drupal-6.3/sites/
user@aristo300:~/tmp/DRUPAL$ rm -rvf drupal-6.4/sites/
Zmieniam katalog na z najświeższym wydaniem, i uruchamiam komendę diff. Ustawienie się wewnątrz katalogu spowoduje, że patch będzie mógł być uruchamiany z parametrem -p0.
user@aristo300:~/tmp/DRUPAL$ cd drupal-6.4/
Tworzę patcha:
diff -Nurp ../drupal-6.3 . > ../drupal-6.3_6.4.patch
Uaktualnienie strony
Jeżeli mamy już przygotowaną “łatę” to wystarczy skopiować ją do kartoteki z zawartością strony i wykonać polecenie:
patch -p0 < drupal-6.3_6.4.patch
gdybyśmy chcieli wcześniej zasymulować proces aktualizacji to wydajemy powyższą komendę z parametrem --dry-run.
patch -p0 < drupal-6.3_6.4.patch --dry-run
Rzut oka na wynik, jeżeli wszystko przebiegło pomyślnie to uruchamiamy bez parametru --dry-run.
Jeśli mamy kilka (kilkanaście) serwisów to uważam, że wykonanie w taki sposób aktualizacji zaoszczędzi nam trochę czasu i usprawni ten proces.
Przypominam, że przed uruchomieniem “patcha” należy zrobić kopię bezpieczeństwa bazy danych oraz plików strony. Uruchomić skrypt update.php itd wykonać wszystkie procedury związane z aktualizacją.
Podany opis dotyczy aktualizacji z wersji 6.3 do 6.4.
Orginalna wersja artykułu na stronie http://krzysztofglaz.eu.org

rsync
Anonim, ndz., 2008-08-24 18:17Nie wiem, czy odkrywam tym Amerykę, ale mój proces aktualizacji instalacji Drupala polega na rozpakowaniu nowego tara, przejściu do nowoutworzonego katalogu ze świeżym Drupalem i uruchomieniu stamtąd w Terminalu (OS X w moim przypadku) polecenia zsynchronizowania plików z moją nieaktualną instalacją:
rsync -av * /Users/username/Sites/projectX/
Wszystko działa, Drupal rozpoznaje nową wersję instalacji, settings.php w katalogu sites jest niezmieniony. Oczywiście rsync działa też zdalnie, i przez ssh.
Faktycznie rsync nawet nie
Erewhon, ndz., 2008-08-24 20:30 moderatorFaktycznie rsync nawet nie wziąłem pod uwagę, ale to pewnie dlatego, że wzorowałem się na patch-u.
A tak na marginesie na tym prostym przykładzie widać jak systemy z rodziny unix są elastyczne.
http://blog.kompromis.net | http://judoinfo.pl
A jakaś alternatywa dla osób
ireq, pon., 2008-08-25 08:59A jakaś alternatywa dla osób używających Winde? Czy wystarczy podmienić pliki starej wersji Drupala nową (usuwając jedynie katalog sites)?
http://drupal.org.pl/…alacja
Anonim, pon., 2008-08-25 13:21http://drupal.org.pl/…alacja/patch
A ja się zastananawiałem,
Anonim, pon., 2008-08-25 19:56A ja się zastananawiałem, dlaczego po patchowaniu nie widze podniesienia wersji,teraz rozumiem.Ciekawy jestem w ktorym pliku jest zapisana ta informacja.
w plikach *.info w
racho, pon., 2008-08-25 21:02w plikach *.info w katalogach modułów
Z pozdrowieniami racho
mantoo
Anonim, pt., 2009-01-23 15:57a co jesli z nowa wersja ida zmiany w schemacie bazy danych ? kiszka?
Zacytuje jedno z ostatnich
Erewhon, pt., 2009-01-23 20:58 moderatorZacytuje jedno z ostatnich zdań w tym artykule:
Skrypt
update.phpaktualizuje bazę do nowej wersji.http://blog.kompromis.net | http://judoinfo.pl