Reklama

Własny patch do nowej wersji Drupala

Erewhon, pt., 15/08/2008 - 14:15
Kategorie:

druplicon.jpgZ 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
Średnia: 5 (1 głos)

Odpowiedzi

Dodaj nową odpowiedź

Zawartość pola nie będzie udostępniana publicznie.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <pre> <blockquote>
  • Znaki końca linii i akapitu dodawane są automatycznie.
CAPTCHA
To pytanie sprawdza czy jesteś człowiekiem, a aby zapobiec przed spamem.
Image CAPTCHA
Enter the characters shown in the image.