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 w zakładce 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 patch-a.
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/
usunięty `drupal-6.3/sites/all/README.txt'
usunięty katalog `drupal-6.3/sites/all'
usunięty `drupal-6.3/sites/default/default.settings.php'
usunięty katalog `drupal-6.3/sites/default'
usunięty katalog `drupal-6.3/sites'
user@aristo300:~/tmp/DRUPAL$ rm -rvf drupal-6.4/sites/
usunięty `drupal-6.4/sites/all/README.txt'
usunięty katalog `drupal-6.4/sites/all'
usunięty `drupal-6.4/sites/default/default.settings.php'
usunięty katalog `drupal-6.4/sites/default'
usunięty katalog `drupal-6.4/sites'
Zmieniam katalog na z najświeższym wydaniem, i uruchamiam komendę diff.
Ustawienie się wewnątrz katalogu spowoduje, że później uruchamiany patch będzie mógł być 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





Odpowiedzi
Dodaj nową odpowiedź