Jak patchovat moduly pro Drupal

Pravidelné bezpečnostní a vývojové aktualizace Drupalu i jeho doplňkových modulů probíhají tak, že si jednoduše stáhnete novou verzi modulu a přepíšete s ní původní soubory. V diskuzích najdete celou řadu oprav a vylepšení pro nějakou konkrétní funkci ve formě patchů. Nebojte se jich, instalace patchů je velmi jednoduchá.

Systém patchů má výhodu v tom, že vám umožní ke stávající verzi modulu přidat opravu, která se v nové verzi modulu objeví v lepším případě s několikadenním zpožděním. Pokud potřebujete nějakou funkci již nyní, nezbývá než použít patch.

Tento postup má samozřejmě i nevýhody. Nikde není psáno, že patche ostatních uživatelů, které posílají na Drupal.org, se objeví ve finální verzi modulu, a že váš web, který na opatchované verzi modulu spočívá, tak bude stejně funkční i po instalaci finální verze.

Příkladem užitečného patche je oprava pro IMCE a TinyMCE (nebo WYSIWYG API), kdy vám pomůže propojit vizuální editor se správcem obrázků tak, aby fungoval bez problémů ve všech prohlížečích. Odkazy na příslušné patche jsem uvedl v článku Video: obrázky v Drupalu pomocí modulů Inline, Imagecache a Lightbox2.

Aplikace patche v Linuxu

Máte-li linuxový webhosting s přístupem přes SSH (jako to nabízí třeba osvědčený HostGator), nebo pokud používáte operační systém Linux na svém počítači, máte situaci v mnohém jednodušší. Soubor s patchem nakopírujte do složky, kde se nachází soubor, který bude patchem upraven.

Poté spusťte příkaz patch -p0 < cesta/soubor.patch. Některé patche si vyžádají zadání názvu souboru, který patchujete, jiné si rovnou po spuštění provedou úpravu.

Sledujte výstupní hlášení. Pokud dojde k chybě, měli byste zjistit proč. Nejčastěji se tak stává, pokud patch aplikujete na jinou verzi modulu, než pro kterou je určen. Také nezapomínejte vytvářet zálohy, abyste mohli původní verzi souboru v případě problémů nakopírovat zpět.

Aplikace patche ve Windows

O něco složitější (jen o málo) je situace, kdy chcete patch aplikovat v prostředí Windows. Můžete si nainstalovat balíček unixových utilit Cygwin, balíček UnxUtils nebo se spokojit s jednoduchým Patch for Windows. Tomu jsem dával přednost, než jsem přešel k HostGatoru, kde patche aplikuji přímo na serveru.

Ze stránek projektu si stáhněte zazipovanou binárku, rozbalte ji někde na disk a přejděte do adresáře ~/bin. V něm najdete soubor patch.exe. Spusťte si příkazový řádek Windows a do složky, ve které je patch.exe, se přepněte. V příkazovém řádku Windows tedy toto učiníte zadáním příkazu cd cesta. Cestu můžete zkopírovat i z dialogového okna vlastnosti, které zobrazíte pravým tlačítkem myši na souboru patch.exe. Je-li v názvu cesty mezera, dejte celou cestu do uvozovek.

Nyní jste tedy ve složce s patchem a můžete jej použít podobně, jako v Linuxu. V příkazovém řádku Windows teď zadejte patch -p0 -i soubor.patch. Pokud dostanete chybové hlášení „assertion failed", použijte příkaz ve tvaru patch -p0 --verbose --binary -i soubor.patch.

Další užitečné informace na Drupal.org

Nyní byste již měli vše potřebné, pro aplikaci patchů k Drupalu nebo dalším souborům v prostředí Windows a Linuxu znát. Máte-li další dotazy, koukněte na níže uvedené odkazy, nebo napište do komentářů. Upozorňuji, že následující odkazy a video jsou v angličtině:

Obrazový průvodce patchováním ve Windows

Aktualizováno: Protože výše uvedený návod možná není dostatečně výstižný, rozhodl jsem doplnit obrazového průvodce. Zde tedy je se stručnými popisky.

1. Do počítače stáhnete výše uvedený Patch for Windows jako soubor ZIP. V něm najdete složku bin a v ní soubor patch.exe. Ten rozbalte do složky c:\temp.Do složky s patch.exe dál enakopíruje soubor *.patch a soubor, který budete patchem upravovat.

Stiskněte Win-R, napište cmd a spusťte tak příkazový řádek. Ve Windows Vista ho spusťte zadáním cmd do hledacího políčka v nabídce Start a přes pravé tlačítko, kde vyberete spuštění v režimu správce. Uvidíte něco takového:

2. Přepněte se do složky c:\temp, kde jsou patch.exe, patch a patchovaný soubor. Uděláte to zadáním příkazu cd c:\temp a stiskem Enteru:

3. Příkazem dir si můžete prohlédnout, zda opravdu koukáte na složku, kde jsou potřené soubory:

4. Zadejte příkaz pro spuštění patche, patch -p0 --verbose --binary -i *.patch

5. Patch by měl proběhnout úspěšně za předpokladu, že:

  • patchujete takovou verzi modulu/souboru, pro kterou je patch určen. To je nejčastější problém.
  • nespletete zadání příkazu

Některé patche jsou udělány tak, že je lepší patch.exe a *.patch nakopírovat přímo do složky s modulem, protože patch může měnit více souborů, než jeden jediný.

Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

návštěvník

Proč nepoužíváte hezké české slovo záplata, potažmo záplatovat?

Profile picture for user Jan Polzer

Českým slovům se samozřejmě jako vlastenec snažím dávat přednost. V tomto případě jsem udělal výjimku, protože předpokládám, že většina lidí bude hledat návod, jak aplikovat patch pro Drupal, nikoli záplatu pro Drupal.
Navíc záplata něco opravuje, patch v článku může přidávat i nové funkce...
Otázka pro ostatní: patch nebo záplata?

návštěvník

Fajn clanok. Tiez sa chystam napisat ako sa patchuje, ale viac user-friendly stylom :)

návštěvník

"grafické udělátko"

návštěvník

Dobré odpoledne, pane Polzere, mám k Vám prosbu. Moc hezky jste vše popsal, bohužel nevím co to má dělat a kdo co má dělat.(Nastavení TinyMCE a IMCE) Chápu, že do příkazového řádku se dostanu windows přes spustit, kde napíšu cestu c:\patch\bin\patch.exe a poté klepnu na enter a objeví se mi příkazový řádek. Tak a jsem v háji. Příkazový řádek na mne tady kouká v hlavičce má moc pěknou ikonu berana nebo ďábla, nejde to tak poznat. a co teď? Co mám dělat? čeho cd cestu zadat? znovu patch windows nebo patch drupalu? Ten patch co jsme si měli stáhnout z http://drupal.org/node/287025#comment-1142770 a patch se jmenuje 287025.patch. Pořád čtu Váš článek dokola, ale nechápu to. Přesto s PC umím na více jak uživatelské úrovni.
zkoušela jsem tam zadávat cd cesta patche windows a přitom jsem v něm dle hlavičky příkazového řádku byla. Potom taky pod to cd... jsem napsala patch -p0 -i soubor.patch a kdybyste aspoň informoval nás játra, že myslíte název drupalovského patche. A hlavně jste nenapsal co se stane. Jestli se ta černá tabulka přemění, nebo co máme dál dělat? Toto opravdu návod nebyl. To bylo pro začínající IT kteří ví co a jak. Promiňte mi to rozčílení, jsem tu již několik hodin a nemám tady nikoho kolem sebe, kdo by mi poradil. Můžete to prosím Vás popsat podrobněji a myslet na to, pro koho to píšete? Váš text není ani pro amatéry "játra" ani pro amatéry "profi"(ty to ví).
Opravdu Vám budu vděčná za každou pomoc a myslím si, že obrázky chce vkládat každý do Drupalu. Prosím Vás, pomozte mi i ostatním. Děkuji Lenka H. (l.lenek)

Profile picture for user Jan Polzer

Dobrá tedy, doplním k článku screenshoty s ukázkou krok za krokem. ještě dnes.

Díky za připomínku ke koncepci článku. Asi jsem teď ujel moc do profi roviny.

návštěvník

Pane Polzere, velmi Vam dekuji za Vase uzitecne clanky, velmi mi pomohl tento popis aplikace patchu stejne, jako navod na wysiwyg v kombinaci s lightboxem. DIKY!

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru