Alaprendszer frissítése drush segítségével

Anonymous képe

Köszönet Den-nek az alábbi leírásért:

Ezen frissítési leírás biztosan működik frissítési kiadások között, pl: 6.13 -> 6.14.

Mindent ugyanúgy kell csinálni, ahogy a drupal telepítő készlet upgrade.txt-jében meg van határozva.

Néhány telepítési pontban nagy segítséget nyűjt a drush:

5.  Disable all custom and contributed modules.

Ki kellene kapcsolni minden modult, amely nem az alap rendszer része. Erre tökéletesen alkalmas a drush. Először is kilistázzuk a bekapcsolt modulokat:

$ drush statusmodules

Minden parancsot a drupal telepítés főkönyvtárában kell kiadni.

A statusmodules --pipe kapcsolóját használva egy olyan modul név listához jutunk, amely felhasználható a modulok be és kikapcsolásához is. Mindkét parancs üres karakterrel tagolt modul név listát vár. A --pipe pont ilyen listát ad:

$ drush statusmodules --pipe
 
admin_menu admin_menu_toolbar automenu block comment content content_copy custom_breadcrumbs date date_api date_popup date_timezone dblog excerpt extlink fieldgroup filefield filter globalredirect googleanalytics help image_fupload image_fupload_imagefield imageapi imageapi_gd imagecache imagecache_ui imagefield imce imce_wysiwyg jquery_ui locale menu menu_breadcrumb node nodereference nodewords noindex_external_links number optionwidgets page_title path path_redirect pathauto robotstxt seochecklist site_verify spamspan system taxonomy taxonomy_breadcrumb text token translation update upload user userreference wysiwyg

Egy a baj ezzel a listával: olyan modulok is benne vannak, amelyek az alap rendszer részei (pl. node, system). Ezeket egy mozdulattal ki lehet szedni a listából. Ha nem így teszünk, akkor annak csúnya vége lehet. Próbáltam...

$ drush statusmodules --pipe | sed 's! block ! !; s! filter ! !; s! node ! !; s! system ! !; s! user ! !; s! update ! !; s! menu ! !; s! path ! !; s! locale ! !;'

A sed parancs egy unixos stream szerkesztő szövegek szűréséhez és átformálásához. Az s parancs a szöveg csere parancs. A határoló jelek között lévő szövegeket cseréli ki. Az s! block ! ! azt jelenti, hogy ahol a block szöveg szerepel üres karakterekkel határolva, azt cserélje le egy üres karakterre. Ha az üres karakterek nélkül adnánk ki a parancsot, akkor más block nevet tartalmazó modul nevét elrontaná a módszer.

A fenti verzióban benne maradt még néhány, nem rendszer modult: menu, path, locale, update. Ha nincs update modul, akkor nem fog lefutni az adatbázis update.

A fenti parancssor futtatása után már csak azokat a modulokat kapjuk a listában, amelyeket ténylegesen ki kell kapcsolni:

admin_menu admin_menu_toolbar automenu comment content content_copy custom_breadcrumbs date date_api date_popup date_timezone dblog excerpt extlink fieldgroup filefield globalredirect googleanalytics help image_fupload image_fupload_imagefield imageapi imageapi_gd imagecache imagecache_ui imagefield imce imce_wysiwyg jquery_ui menu_breadcrumb nodereference nodewords noindex_external_links number optionwidgets page_title path_redirect pathauto robotstxt seochecklist site_verify spamspan taxonomy taxonomy_breadcrumb text token translation upload userreference wysiwyg

Erre szükség lesz később is. Ha nem tudjuk elmenteni, akkor irányítsuk át egy állományba:

$ drush statusmodules --pipe | sed 's! block ! !; s! filter ! !; s! node ! !; s! system ! !; s! user ! !; s! update ! !; s! menu ! !; s! path ! !; s! locale ! !;' > active_modules.lst

Ezután az active_modules.lst állományt listázva megkaphatjuk azon modulok listáját, amit az alap rendszer frissítése előtt ki kell kapcsolni, majd a frissítés után meg be.

A modulok kikapcsolása:

$ drush disable admin_menu admin_menu_toolbar automenu comment content content_copy custom_breadcrumbs date date_api date_popup date_timezone dblog excerpt extlink fieldgroup filefield globalredirect googleanalytics help image_fupload image_fupload_imagefield imageapi imageapi_gd imagecache imagecache_ui imagefield imce imce_wysiwyg jquery_ui menu_breadcrumb nodereference nodewords noindex_external_links number optionwidgets page_title path_redirect pathauto robotstxt seochecklist site_verify spamspan taxonomy taxonomy_breadcrumb text token translation upload userreference wysiwyg

Ezután végezzük el a rendszer frissítés többi pontját, egészen a 12.-es pontig:

12. Re-enable custom and contributed modules and re-run update.php to update custom and contributed database tables.

Itt megint hívjuk segítségül a drush-t és az elmentett modul listát:

$ drush enable admin_menu admin_menu_toolbar automenu comment content content_copy custom_breadcrumbs date date_api date_popup date_timezone dblog excerpt extlink fieldgroup filefield globalredirect googleanalytics help image_fupload image_fupload_imagefield imageapi imageapi_gd imagecache imagecache_ui imagefield imce imce_wysiwyg jquery_ui menu_breadcrumb nodereference nodewords noindex_external_links number optionwidgets page_title path_redirect pathauto robotstxt seochecklist site_verify spamspan taxonomy taxonomy_breadcrumb text token translation upload userreference wysiwyg

Ha minden jól megy, akkor azon modulok lesznek engedélyezve, amelyek frissítés előtt is voltak. Nem kell megjegyezni, nem kell felírni papírra semmit, a munka fárasztó részét a drush végezte.

Folytassuk tovább a rendszer frissítést a 13. pontnál.

Hozzászólások

nevergone képe

drush pml --no-core --status="enabled" --pipe

york képe

Kicsit bovebben...

nevergone képe

Az engedélyezett modulok listája fájlba mentve:
drush pml --pipe --status=enabled --type=module | sed ':a;N;$!ba;s/\n/ /g' > m.txt