Je pro vás Composer v Drupalu 8 problém? Zkuste Ludwig

Možnost instalovat, aktualizovat a udržovat Drupal 8 pomocí nástroje Composer je docela známá. Často ale narážím na problém s přejmenovanými balíčky, kvůli kterým pak není možné aktualizovat některé moduly a knihovny. Řešení se jmenuje Ludwig.

Composer je balíčkovací systém pro PHP, který možná znáte z frameworku Symfony nebo Silex. Když se objevil v Drupalu 8, docela se mi ta myšlenka zalíbila. Řada modulů totiž využívá knihovny třetích stran a jen je do Drupalu nějak integruje. Udržovat je v aktuální podobě ručně? To je dost problém.

S použitím příkazového řádku a Composeru je to ale otázka chvilky. Pokud s jeho pomocí nainstalujete celý Drupal, pak vám poslouží nejenom pro instalaci doplňkových knihoven vyžadovaných moduly, ale také pro kompletní správu Drupalu místo drushe.

Když jsem Composer použil na prvním projektu s Drupalem 8, byl jsem nadšen. Fungovalo to jako v Symfony a na první dobrou.

Dobrý pocit mě opustil hned poté, co jsem chtěl web aktualizovat. Spuštění aktualizace přes drush selhalo, ruční aktualizace jádra Drupalu selhala zrovna tak. Vše ztroskotalo na tom, že aktualizace přepsala věci z Composeru.

Ovšem stejně tak selhala aktualizace přes Composer. Onen modul, který jsem s ním do webu začlenil, byl nějakým způsobem v Composeru napojen na modul Coder. Tomu se pravděpodobně přejmenovalo úložiště a já se dostal do pasti, kdy jsem s Composerem nebyl schopen úspěšně dokončit celý aktualizační proces.

Zkrátka, použití Composeru v Drupalu 8 může být přínos, ale zrovna tak peklo bez řešení, které byste měli zcela ve své režii.

Další věc, kdy s Composerem narazíte, je Drupal na klasickém hostingu bez přístupu na ssh a příkazový řádek.

Ludwig je náhrada Composeru pro Drupal 8

Naštěstí jsem objevil modul nazvaný Ludwig. Jeho smysl bych popsal jako náhražku Composeru pro všechny, kdo nemohou klasický Composer spustit. Z jakéhokoli důvodu.

Po zapnutí modulu stačí spustit příkaz z nástroje Drush nebo z Drupal Console. Ludwig se podívá, zda některé z modulů vyžadují přítomnost knihoven třetích stran a do Drupalu je stáhne. A pokud to nemůžete udělat z příkazového řádku, navede vás, jak a kam potřebné knihovny doinstalovat ručně.

Modul Ludwig a přehled vyžadovaných knihoven v Drupalu 8

Vřele doporučuji. Vyzkoušel jsem v kombinaci s modulem Address a funguje zcela bez problémů. Navíc mě dostal z kaše, protože původně jsem tento modul kvůli závislostem instaloval právě přes Composer a posléze nemohl projít aktualizací.

Modul Ludwig vám pomůže také s instalací všech závislostí pro Drupal Commerce, pokud nechcete či nemůžete použít Composer.

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

Dobrý den pane Polzere,
mám všechny vaše knížky a hodně mi dali, ale mám i určité výhrady. Vždy nakousnou nějaké téma a pak už není možné pro neangličtináře se dopátrat obsáhlejších návodů. Stejně je tomu i drushe a composeru. Protože mohu konečně vyzkoušet příkazový řádek přes ssh,tak jsem chtěl i konečně vyzkoušet Composer a další vychytávky velikánů v Drupalu, ale beznadějně, protože nikde neexistuje v češtině podrobný kompletní návod, jak vše nainstalovat a spustit. Našel jsem několik videí na youtube, ale vše v aj a každé ukazuje něco jiného a jinak a tak to prostě je příliš složité. Na českém webu drupal.cz je taktéž "návod" ale je tak stručný, že ten kdo to fakt vidí poprvé, tak je vedle a neví ani zda potřebuje ke Composeru i Drush a nebo ne.
Proto jsem Vás chtěl požádat, zda nevíte o nějakém ucelením a funkčním návodu na správu a instalaci přes console, nebo zda by jste nějaký takový nevytvořil. Věřím, že bych nebyl sám, co by jej využil :-)
Předem děkuji za odpověď a budu se těšit, že něco takového bude.
Stránský Jiří

Profile picture for user Jan Polzer

Dobrý den. Díky za podnět. Je hrozně těžké dostat do knihy i nějaké vývojářské informace, když vydavatel chce, aby to bylo pokud možno jen a pouze o klikání. Uvědomuji si, že to pak není ideální... I proto, pokud bude nějaká další kniha, půjdu do ní jen sám za sebe.

Composer i drush jsou samostatné nástroje. Composer je původně balíčkovací systém pro PHP komponenty, Drupal jej prostě jen začal využívat. Drush je sada skriptů pro obsluhu Drupalu přes příkazový řádek. A kdybych Vám chtěl zamotat hlavu ještě více, zmíním projekt Drupal Console ;-)

Možná nahoďte odkazy na zmíněné věci, které se vám zdají nesrozumitelné a zkusím napsat něco lepšího.

návštěvník

Dobrý den, děkuji za pěknou odpověď po dlouhé době ode všech z různých podpor (zvláště pak wedos). Právě jsem začal využívat VPS (wedos) a konečně mam vše tak jak jsem chtěl, tedy s ISPConfig a mohu si hrát s weby a právě poto bych chtěl využítco nejjednodušší instalace Drupalu a pak i jeho spravování. Prozatím je pro mě nejjednodušší nathnout na VPS archív tar, tam ho rozbalit a pak instalovat. (lepší jak ftp). Ale chtěl jsem použít právě z tohoto návodu instalaci, ale pro neznalého je nejspíš neúplná, nebo prostě nefunkční od 0. https://www.drupal.cz/navody/instalace-drupalu#4 Tak pokud by šlo napsat nějaký hezký článek, jak na čistý server, kde je LAMP rozběhnout právě instalaci Drupalu přes konzoli, bylo by to super. Moc díky

návštěvník

Pěkné odpoledne,
podařilo se mi nějakým záhadným způsobem dostat na server jak Composer, tak Drush verze 9, ale zjistil jsem, že ani jeden neumí aktualizovat jádro. Drush 9 to neumí a asi nebude už umět, protože to nechává na Composer a Composer sice spustí aktualizaci, ale aktualizovat snad jen komponenty Composeru a na Drupal se tak nějak vykašlal... Přitom byl použit příkaz composer update drupal/core --with-dependencies
Takže se obávám, že buď jsem "b...c" a nebo to nejde :-(

Profile picture for user Jan Polzer

K článku jsem se zatím nedostal, ale toto by mělo být naprosto bez problémů:

1. instalace Drupal Console: composer require drupal/console:~1.0 --prefer-dist --optimize-autoloader
2. její aktualizace: composer update drupal/console --with-dependencies
3. aktualizace Drupalu: composer update drupal/core --with-dependencies
4. po ní musíte spustit aktualizaci databáze: drush updatedb
5. vymažete cache: drush cr

A je to.

Samozřejmě, někdy to nejde tak hladce a composer update drupal/core --with-dependencies nic neprovede. Problém může být v tom, že nějaký balíček brání povýšení Drupalu. Zjistíte to následujícím příkazem:
composer prohibits drupal/core:8.5.3

Pokud řekne, že tomu nic nebrání, tak ještě můžeš být problém v tom, že byl Drupal instalován přes drush či ručně, ale ne přes composer. Pak je nutné zeditovat soubor composer.json a vymazat v sekci replace tento řádek:
"drupal/core": "~8.5"

Následně spustíte:
composer require drupal/core:8.5.3 (přidá závislost na Drupal 8.5.3 do sekce require)
composer update drupal/core --with-dependencies (a tohle už aktualizaci konečně provede)

návštěvník

Teď jste na to kápnul, byl nainstalován ručně, protože se mi původně nepodařilo rozběhat composer a ani drush. Takže jsem musel použít ruční instalaci, netušil jsem, že by pak mohl být problém. A to jsou pak ty malinké odchylky, které laik nemá šanci odhalit. No proto bych se fakt přimlouval do budoucna za nějakou podrobnější knihu na takovéto vychytávky. Určitě si jí zakoupím:-) Podle postupu to opravdu něco dělalo, ale samotný update opět neproběhl. Pak jsem zjistil, že zmizel Drush, tak jsem ho znovu nainstaloval a hlásí chyby při použití příkazů. Takže to fakt nebude tak jednoduché. Trošku se bojím, že se tím vše roze...re a budu muset instalovat novej VPS server znovu :-( I přesto moc děkuji za odpověď.

návštěvník

Dobrý den. Já mám zase dotaz ohledně Ludwigu. Protože mám Drupal na běžném hostingu není pro neznám jinou možnost pro instalaci modulu Address. Drupal (9.5.x-dev 2022-Črv-22), Address (8.x-1.10), Ludwig (2.0.3+1-dev 2022-Bře-26). Ludwig mi hlásí, že všechny 4 balíčky jsou nainstalované a OK. Když ale chci rozšíření Address aktivovat tak mi to ohlásí "Address requires the commerceguys/addressing library." Ale to podel Ludwigu není pravda. Umíte mi prosím poradit? Děkuji.

Profile picture for user Jan Polzer

Dobrý den, no musíte tam tu knihovnu nakopírovat. Ludwig je k tomu, že ji načte, aniž by byla instalována přes Composer, nicméně ji tam nedokopíruje. Resp. dokopíroval by ji po spuštění příkazu v drush, ale ten tam předpokládám taky nemáte.

Viz odstavec v článku: Po zapnutí modulu stačí spustit příkaz z nástroje Drush nebo z Drupal Console. Ludwig se podívá, zda některé z modulů vyžadují přítomnost knihoven třetích stran a do Drupalu je stáhne. A pokud to nemůžete udělat z příkazového řádku, navede vás, jak a kam potřebné knihovny doinstalovat ručně.

návštěvník

Děkuji za odpověď. Ale já tam mám všechny knihovny nakopírované a Ludwik mi hlásí že je to v pořádku že tam jsou. Nahrál jsem je přesně kam mi psal. Ale i tak mi to píše tu hlášku a právě proto jsem zmatený a nevím co s tím. Třeba najdu radu ve Vaší knize :).

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

Poslední komentáře
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