Ažuriranje jezgra putem Composera
Ova dokumentacija je nepotpuna. Dodajte više informacija.
Imate problema sa ažuriranjem na Drupal 8.8.0 ili noviji?
Ključne promene su uvedene u Drupal 8.8.0 u okviru Composer inicijative, što će značajno poboljšati Composer radne tokove za upravljanje Drupal sajtovima na duži rok. Međutim, postoje određene posebne napomene koje mogu uticati na ažuriranje sa ranijih verzija.
Prvi koraci
Da biste razumeli kako Composer upravlja zavisnostima Drupala, pogledajte Korišćenje Composera sa Drupalom. Da biste odlučili da li je Composer pametan način za ažuriranje, uporedite dostupne opcije.
Za praktičnost, ove instrukcije uključuju Drush komande potrebne za završetak ažuriranja: mnogi smatraju Drush bržim i jednostavnijim od web administratorskog interfejsa.
Ako je ovo postojeći Drupal sajt na kojem Composer ranije nije korišćen, prvo se uverite da je spreman za Composer.
Ažuriranje Drupal jezgra 8
Prvo, uverite se da ažuriranje Drupal jezgra zaista postoji:
composer update --dry-run "drupal/*"
Ovo će prikazati bilo koje dostupno manje ili patch ažuriranje; koristite zastareli composer "drupal/*" ako želite da proverite da li postoje ažuriranja za glavne verzije. (Pogledajte Semver 2.0 za objašnjenje glavnih, sporednih i patch verzija.) Ako nema linije koja počinje sa drupal/core, Composer ne zna za dostupna ažuriranja. Zabeležite da li postoji linija koja počinje sa drupal/core-recommended. Ako postoji ažuriranje, nastavite sa narednim komandama.
Instrukcija za ažuriranje u jednom koraku
Pod pretpostavkom da ste navikli na ažuriranje Drupala i znate sve mere predostrožnosti koje treba preduzeti, ažuriranje je jednostavno kao:
composer update drupal/core --with-dependencies drush updatedb drush cache:rebuild
Zamenite drupal/core sa core-recommended ako koristite core-recommended na svom sajtu. Možete znati da vaš sajt koristi core-recommended ako je naveden u vašem composer.json fajlu ili ako je bio naveden u izlazu komande composer update --dry-run dok ste proveravali dostupna ažuriranja.
Ako ste pokrenuli svoj Drupal sajt pre nekog vremena koristeći drupal-composer/drupal-project, gore navedena komanda možda neće raditi. Molimo pročitajte listu ispod.
Za ažuriranje na verziju 8.8.0 ili noviju
Najnovija verzija drupal-composer/drupal-project kompatibilna je sa Drupal 8.8.x. Međutim, ako ste kreirali svoj sajt iz ovog projekta pre nekog vremena (2019. i ranije verzije), verovatno ćete morati napraviti neke jednokratne izmene prilikom prvog ažuriranja na verziju 8.8.0 ili noviju. Te izmene su detaljno opisane u posebnim napomenama ispod.
Ako niste instalirali Drupal 8 pomoću Composera
Ako niste instalirali Drupal 8 pomoću Composera, treba da konvertujete svoj sajt u Composer projekat kako biste mogli ažurirati Drupal pomoću gore navedenih komandi. Pogledajte Dodavanje Composera postojećim sajtovima za korak-po-korak uputstvo za ručno dodavanje Composera postojećim Drupal 8 sajtovima koji su ranije instalirani bez Composera.
Korak-po-korak instrukcije za ažuriranje
Svi koraci za ažuriranje Drupal jezgra 8 pomoću Composera:
1. Uvek napravite rezervnu kopiju svojih fajlova i baze podataka pre ažuriranja.
- drush sql:dump će izvesti bazu podataka
- Nažalost, drush archive-dump je uklonjen iz Drush 9, pa ćete morati koristiti standardni CLI alat za bekapovanje potrebnih direktorijuma — obično osim vendor direktorijuma.
2. Pročitajte beleške o izdanju. Neki dodati moduli ili teme mogu zahtevati ažuriranje za rad sa novom manjom verzijom (npr. 8.3–8.4) Drupal jezgra. Patch izdanja (npr. sa 8.4.4 na 8.4.5) obično to ne zahtevaju. Da biste otkrili koji modul ili tema treba ažuriranje, pročitajte stranicu projekta ili beleške o izdanju.
3. Aktivirajte maintenance mode koristeći stanje: postavite system.maintenance_mode 1, zatim očistite keš: rebuild.
4. Ako ste utvrdili da neki moduli ili teme treba da se ažuriraju, sledite uputstva za ažuriranje modula.
5. Ažuriranje Drupal jezgra i svih njegovih zavisnosti:
- Pokrenite sledeću Composer komandu:
composer update drupal/core --with-dependencies
- Zamenite drupal/core sa drupal/core-recommended ako koristite core-recommended šablon.
- Ako ste pokrenuli sajt koristeći drupal-composer/drupal-project, pogledajte posebne napomene ispod za dodatne korake koje može biti potrebno izvršiti pri prvom ažuriranju na 8.8.0 ili noviju verziju.
6. Zatim primenite sva potrebna ažuriranja baze podataka pomoću drush updatedb i očistite keš sa drush cache:rebuild.
7. Ako koristite Configuration Management za deploy vaše konfiguracije, obavezno izvezite konfiguraciju pomoću drush config:export nakon ažuriranja baze podataka, jer neka ažuriranja jezgra mogu promeniti strukturu konfiguracionih fajlova ili uneti nove vrednosti. Dodajte opciju --diff za pregled aktuelnih promena.
8. Uverite se da je vaš Drupal sajt ispravan:
- Pregledajte stranicu status report-a za greške.
- Ako je Database Logging modul uključen, obavite neke osnovne operacije i proverite poslednje logove na greške, upozorenja itd.
9. Isključite maintenance mode koristeći drush state:set system.maintenance_mode 0, zatim očistite keš: drush cache:rebuild.
10. Nakon isključivanja maintenance moda, proverite sajt i kao anonimni korisnik.
U vašem produkcionom okruženju
- Nije potrebno da ponavljate ostale korake iznad, jer će composer install pročitati tačne verzije svih paketa iz composer.lock, tako da ćete imati iste verzije u oba okruženja.
- Ako imate odvojene dev/staging i produkcione servere, uverite se da kopirate/fiksirate fajlove composer.json i composer.lock u produkciju i uvek pokrećete composer install --no-dev u produkciji, umesto da radite update. Opcija --no-dev sprečiće instalaciju paketa iz 'require-dev', obično modula za debug i biblioteka za unit/behavior testing.
Posebne napomene za ažuriranje na Drupal 8.8.0 i novije
Zvanični partner Drupal beta programa PreviousNext je objavio koristan blog post o koracima koje su preduzeli da bi ažurirali sa Drupala 8.7 na beta verziju Drupala 8.8.0, što može pomoći drugim vlasnicima sajtova sa problemima prilikom ažuriranja.
Glavni razlog problema sa ažuriranjem starijih verzija Drupala na Drupal 8.8.0 pomoću Composera je prelazak sa korišćenja šablona composer projekta koji je zajednica nudila, na novi zvanični šablon drupal/recommended-project. Sledeći koraci za rešavanje problema treba da poprave vašu instalaciju kako biste mogli koristiti standardna uputstva za ažuriranje kao što je opisano gore.
Pokušajte da obrišete vendor direktorijum
Brisanje vendor direktorijuma može ponekad rešiti konflikte pri pokretanju Composer update-a. Da biste to uradili:
cd your_install_dir rm -rf vendor
Zatim možete nastaviti sa otklanjanjem problema i/ili ponovo pokrenuti Composer update komandu.
Migracija sa webflo/drupal-core-strict na drupal/core-recommended
Pre izdanja 8.8.0, mnogi sajtovi su koristili metapaket webflo/drupal-core-strict za fiksiranje zavisnosti na tačne verzije koje se koriste/testiraju sa Drupal jezgrima (uglavnom Symfony paketi). Od verzije 8.8.0, Drupal jezgro nudi paket drupal/core-recommended za ovu funkciju. Međutim, prelazak sa starog na novi metod se ne dešava automatski pri ažuriranju na 8.8.0, a paket webflo/drupal-core-strict ne radi sa 8.8.0.
Najlakši način da izvedete ovu migraciju i izbegnete konflikte je da potpuno obrišete composer.lock fajl kao deo ažuriranja. Ipak, to može značiti da će i druge zavisnosti (kao što su dodati Drupal moduli) biti ažurirane. Sledeći koraci će osigurati da ažurirate samo ono što želite:
- composer update # Ažurirajte sve zavisnosti kao poseban korak.
- git add composer.lock; git commit # Sačuvajte ažuriranja kao poseban commit.
- composer remove webflo/drupal-core-strict --no-update
- composer remove drupal/core --no-update
- composer require 'composer/installers:^1.7' --no-update
- rm composer.lock
- rm -rf vendor # Takođe pomaže da se izbegnu konflikti.
- composer require drupal/core-recommended:^8.8 --update-with-dependencies
- git add composer.json composer.lock; git commit -m "Update Drupal to 8.8.0 and use drupal/core-recommended instead of webflo/drupal-core-strict"
Migracija sa webflo/drupal-core-require-dev na drupal/core-dev
Ako ste napravili svoj sajt pre nekog vremena, možda koristite metapaket webflo/drupal-core-require-dev za uključivanje Drupal razvojnih zavisnosti za izvođenje unit i funkcionalnih testova. Ako ne koristite Drupal razvojne zavisnosti, jednostavno uklonite webflo/drupal-core-require-dev. U suprotnom, treba da počnete da koristite projekat drupal/core-dev.
Prvo, stari paket razvojnih alata treba ukloniti:
composer remove --dev webflo/drupal-core-require-dev
Ako vam razvojni alati nisu potrebni, ovde možete stati. Ako ih želite ponovo instalirati zvaničnim putem, pokrenite:
composer require --dev drupal/core-dev
Ažuriranje patcheva
Ako primenjujete patcheve koristeći cweagans/composer-patches, možda ćete morati ponovo ih prilagoditi. Nakon što patch prepravite, potrebno je ažurirati patch u delu extra/patches vašeg composer.json fajla.
Ažuriranje konfliktnih nežnih zavisnosti
U nekim slučajevima može biti instalirana softverska zavisnost sa verzijom koja nije kompatibilna sa poslednjom verzijom Drupala. Rešenje je da se pomoću composer require određenih verzija tih modula ažurira jezgro, a zatim uklone zavisnosti.
Sledeći primer je preuzet iz odličnog PreviousNext posta:
Prvo, zahtevaju se novo jezgro i Drupal zavisnosti:
composer require --update-with-dependencies \ drupal/core:^8.8.0 \ symfony/finder:^3.4 \ symfony/filesystem:^3.4
Drugo, zahtevaju se novi core-dev paket i zavisnosti:
composer require --dev --update-with-dependencies \ drupal/core-dev:^8.8.0 \ symfony/debug:^3.4
Konačno, uklonite privremeno potrebne zavisnosti:
composer remove -n \ symfony/finder \ symfony/filesystem \
composer remove -n --dev symfony/debug
Ažuriranje konfiguracione baze podataka i šeme
Nakon ažuriranja baze koda može biti potrebno da ažurirate konfiguraciju i šemu baze podataka:
drush updb drush cr drush config-export
Ažuriranje Settings.php fajla
U Drupalu 8.8.0 direktorijum za sinhronizaciju je definisan u $settings, a ne u $config_directories, pa je potrebno ažurirati Settings.php fajl.
Jednostavno promenite sa:
$config_directories['sync'] = 'foo/bar';
na
$settings['config_sync_directory'] = 'foo/bar';
Poznati problemi i zaobilazna rešenja
Ako pokrenete komandu composer update gore, ali drupal/core se ne ažurira, moguće je da postoji neka druga zavisnost koja blokira ažuriranje Drupala. Možete proveriti blokade zavisnosti pomoću komande composer prohibits. Na primer, ako pokušavate da ažurirate verziju sa 8.4.5 na 8.5.0, možete pokrenuti composer prohibits drupal/core:8.5.0, i trebalo bi da dobijete listu zavisnosti koje blokiraju ažuriranje. Ažurirajte te zavisnosti zajedno sa drupal/core i trebalo bi da radi (na primer, composer update drupal/core "symfony/*" --with-dependencies).
Problemi sa Composer ažuriranjem često su povezani sa zastarelim composer šablonima ili pogrešnim podešavanjima u composer.json. Uverite se da koristite composer šablon kao što je predložen u poglavlju 3.5 Drupal 8 korisničkog vodiča „Korišćenje Composera za preuzimanje i ažuriranje fajlova“. Pogledajte Dodavanje Composera postojećim sajtovima za korak-po-korak uputstvo za ručno dodavanje Composera postojećim Drupal 8 sajtovima koji su ranije instalirani bez Composera.
Od januara 2020, Composer šablon drupal-composer/drupal-project za Drupal projekte više nije preporučeni šablon za Drupal 8.8 i novije verzije. Dok se poglavlje 3.5 Drupal 8 korisničkog vodiča ne ažurira, pogledajte Zajednički vodič za pokretanje sajta koristeći Composer projektne šablone.
Neki drugi relevantni problemi i blog postovi sa dodatnom pomoći:
- Ažuriranje na Drupal 8.4.0 i Drush 9 sa Composerom - blog post Benđija Fišera (@benjifisher) na Isovera o problematičnim ažuriranjima sa 8.3 na 8.4.
- Ažuriranje Drupal jezgra 8.4, korak po korak vodič - blog post PreviousNext o problematičnom ažuriranju sa 8.3 na 8.4.
- Ažuriranje na Drupal 8.5 pomoću Composera - blog post Ejrika Morlanda (eiriksm) koji pokriva neke probleme od 8.4 do 8.5.
- Composer nije uspeo da ažurira sa 8.4.4 na 8.5.0-alpha1 - mnogo ideja kako rešiti problem sa Composer update-om.
- Imate problema sa ažuriranjem vašeg Drupal 8 sajta? Onda je ovaj blog post za vas - blog post za novi GoComposer plugin koji automatizuje proces ažuriranja i konvertuje vaš sajt u preporučeni šablon.
U slučaju grešaka i upozorenja koja se pojave tokom procesa ažuriranja, preporučuje se da ih pažljivo pročitate i pretražite potencijalna rešenja u redovima problema pre nego što nastavite. U slučaju fatalnih grešaka uvek je preporučljivo zaustaviti dalje ažuriranje i ponovo započeti ceo proces iz početka, koristeći ranije preporučenu rezervnu kopiju.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.