Wie erhalte ich eine Liste der Modulordner, die sicher gelöscht werden können?

7

Ich habe in letzter Zeit viele unnötige Module deinstalliert admin/modules/uninstall.
Jetzt möchte ich verstehen, aus welchen Ordnern der Module gelöscht werden kann sites/all/modules.

Ich habe es versucht drush pmi, aber es gibt zu viele Informationen.

Wie kann ich eine Liste von Ordnern erhalten, die jetzt sicher gelöscht werden können? Jeder Drush-Befehl kann sein?

Dimetrie
quelle

Antworten:

3

Dies funktioniert auf Linux-Maschinen. Aber Sie können etwas Ähnliches auch unter Windows tun, denke ich.

Verwenden Sie den folgenden Befehl, um eine Liste der deaktivierten oder deinstallierten Module abzurufen.

    drush pml --type=Module --status="disabled,not installed" --no-core 
--pipe | paste -s -d,

Sie erhalten eine durch Kommas getrennte Liste wie diese

    admin_toolbar,admin_toolbar_tools,features,features_ui,entity_browser,
entity_browser_example,config_update,content_types_full_export

Wenn Sie nur das deinstallierte Modul entfernen möchten, können Sie die Option deaktiviert aus dem Status in der ersten Abfrage entfernen.

Sobald Sie die durch Kommas getrennte Liste der nicht installierten Module haben, können Sie sie wie folgt an die drush pmi-Abfrage weitergeben.

drush pmi --format=csv --fields=path 
admin_toolbar,admin_toolbar_tools,features,features_ui,entity_browser,
entity_browser_example,config_update,content_types_full_export

Sie erhalten die Ausgabe als

modules/admin_toolbar
modules/admin_toolbar/admin_toolbar_tools
modules/features
modules/features/modules/features_ui
modules/entity_browser
modules/entity_browser/modules/example
modules/config_update
modules/features_modules/content_types_full_export

Sie können dies verwenden, um die Ordner sicher zu löschen :)

Gokul NK
quelle
Unknown option: --status.wenn dies in drush 8.1.12
Nick
8

Benutze das:

drush pmi --fields=type,project,title,status,path --format=table|sort

Dies gibt Ihnen eine Modulliste mit fünf Spalten:

  • Erstens ist die Art des Projekts: Modul oder Thema.

  • Das zweite ist das Modulprojekt, zum Beispiel Ansichten, Logintoboggan, admin_menu usw.

  • Der dritte ist der Installationsstatus: aktiviert (in Verwendung), deaktiviert (nicht verwendet, aber Installationsinformationen in der Datenbank) und nicht installiert (noch nicht installiert oder bereits deinstalliert).

  • Die vierte Spalte ist der Modulname. Ein von drupal.org heruntergeladenes Modul kann mehrere Module enthalten (das heruntergeladene Modul ist das Projekt und die internen Module sind die realen Module).

  • Die fünfte Spalte ist der Pfad zum Modul.

Mit diesen Informationen können Sie sicher jedes Projekt (zweite Spalte) entfernen, bei dem sich alle Module im Status "Nicht installiert" befinden.

Siehe zum Beispiel diese Fragmentliste:

module  job_scheduler  Job Scheduler                enabled        sites/all/modules/contrib/job_scheduler                                                  
module  job_scheduler  Job Scheduler Trigger        not installed  sites/all/modules/contrib/job_scheduler/modules/job_scheduler_trigger                    
module  jquery_update  jQuery Update                enabled        sites/all/modules/contrib/jquery_update                                                  
module  l10n_client    Localization client          enabled        sites/all/modules/contrib/l10n_client                                                    
module  l10n_update    Localization update          enabled        sites/all/modules/contrib/l10n_update                                                    
module  languageicons  Language Icons               enabled        sites/all/modules/contrib/languageicons                                                  
module  ldap           LDAP Authentication          not installed  sites/all/modules/contrib/ldap/ldap_authentication                                       
module  ldap           LDAP Authorization - Roles   not installed  sites/all/modules/contrib/ldap/ldap_authorization/ldap_authorization_drupal_role         
module  ldap           LDAP Authorization           not installed  sites/all/modules/contrib/ldap/ldap_authorization                                        
module  ldap           LDAP Authorization - OG      not installed  sites/all/modules/contrib/ldap/ldap_authorization/ldap_authorization_og                  
module  ldap           LDAP Feeds                   not installed  sites/all/modules/contrib/ldap/ldap_feeds                                                
module  ldap           LDAP Help                    not installed  sites/all/modules/contrib/ldap/ldap_help                                                 
module  ldap           LDAP Query                   not installed  sites/all/modules/contrib/ldap/ldap_query                                                
module  ldap           LDAP Servers                 not installed  sites/all/modules/contrib/ldap/ldap_servers                                              
module  ldap           LDAP SSO                     not installed  sites/all/modules/contrib/ldap/ldap_sso                                                  
module  ldap           LDAP Test Module             not installed  sites/all/modules/contrib/ldap/ldap_test                                                 
module  ldap           LDAP User Module             not installed  sites/all/modules/contrib/ldap/ldap_user                                                 
module  ldap           LDAP Views                   not installed  sites/all/modules/contrib/ldap/ldap_views                                                
module  libraries      Libraries                    enabled        sites/all/modules/contrib/libraries 

Sie können das ldap-Modul sicher entfernen, da nicht alle Module installiert sind, aber nicht den Job Scheduler, da eines seiner Module aktiviert ist.

Sanzante
quelle
Ich habe Fehler: Unbekannte Optionen: --fields, --format (drush stabile Version 5.10.0 bei Ubuntu). Ich denke, ich brauche mehr Neuveröffentlichung.
Dimetry
Ja, Sie sollten Ihre Drush-Installation aktualisieren
Sanzante
Ich habe Drush Update gemacht . Jetzt kann ich Befehl ausführen. Es ist keine ideale Lösung, aber jetzt sehe ich, welche Ordner sicher gelöscht werden können. ty
Dimetry
2

Ich habe zwei Vorschläge für Sie, wie Sie diesen Drush-Befehl filtern können. Einer ist mit Pfeifen und Grep. Der andere ist mit den Optionsargumenten.

Zunächst einmal denke ich, dass Sie drush pml wollen (Kleinbuchstaben "L", nicht Kleinbuchstaben "I").

(1) Pipes und Grep Siehe den folgenden Befehl, um alles mit dem Status "Nicht installiert" aufzulisten . Das Folgende kann Ihnen helfen, ein besseres Bild von der Umgebung Ihrer Website zu erhalten. Hier ist zum Beispiel, was auf meiner Entwicklungsbox vorhanden, aber "nicht installiert" ist.

$ drush pml | grep 'Not installed' | grep -v Core
 Administration                       Actions permissions (VBO) (actions_permissions)               Module  Not installed  7.x-3.2        
 BackgroundField                      BackgroundField (backgroundfield)                             Module  Not installed  7.x-1.5        
 Chaos tool suite                     Better Jump Menus (jump_menu)                                 Module  Not installed  7.x-1.4        
 Chaos tool suite                     Chaos Tools (CTools) AJAX Example (ctools_ajax_sample)        Module  Not installed  7.x-1.6        
 Chaos tool suite                     Chaos Tools (CTools) Plugin Example (ctools_plugin_example)   Module  Not installed  7.x-1.6        
 Chaos tool suite                     Custom content panes (ctools_custom_content)                  Module  Not installed  7.x-1.6        
 Chaos tool suite                     Custom rulesets (ctools_access_ruleset)                       Module  Not installed  7.x-1.6        
 Chaos tool suite                     Page manager existing pages (pm_existing_pages)               Module  Not installed  7.x-1.4        
 Chaos tool suite                     Stylizer (stylizer)                                           Module  Not installed  7.x-1.6        
 Chaos tool suite                     Term Depth access (term_depth)                                Module  Not installed  7.x-1.6        
 Chaos tool suite                     Views content panes (views_content)                           Module  Not installed  7.x-1.6        

Das ist individuell genommen

drush pml \               # Shows table of modules/themes and their status
| grep 'Not installed' \  # Filters for any line WITH 'Not installed'
| grep -v Core            # Filters OUT any line containing string 'Core'

Vorausgesetzt, Sie könnten auch Folgendes tun:

$ drush pml  | grep 'Enabled'
$ drush pml  | grep 'Disabled'

(2) Mit Optionsargumenten, um pml zu drushen

Sie können es auch mit verschiedenen Argumenten im Befehl drush pml etwas variieren

$ drush help pml
Show a list of available extensions (modules and themes).

Options:
 --core                                    Filter out extensions that are not in drupal core.                                             
 --no-core                                 Filter out extensions that are provided by drupal core.                                        
 --package                                 Filter by project packages. You can use multiple comma separated values. (i.e. --package="Core 
                                           - required,Other").                                                                            
 --pipe                                    Returns a whitespace delimited list of the names of the resulting extensions.                  
 --status=<disabled>                       Filter by extension status. Choices: enabled, disabled and/or 'not installed'. You can use     
                                           multiple comma separated values. (i.e. --status="disabled,not installed").                     
 --type=<module>                           Filter by extension type. Choices: module, theme.       

Zum Beispiel könnten Sie verwenden

$ drush pml --no-core --status="not installed" --type=module
 Package                                Name                                                                     Version             
 Administration                         Actions permissions (VBO) (actions_permissions)                          7.x-3.2             
 BackgroundField                        BackgroundField (backgroundfield)                                        7.x-1.5             
 Chaos tool suite                       Better Jump Menus (jump_menu)                                            7.x-1.4             
 Chaos tool suite                       Chaos Tools (CTools) AJAX Example (ctools_ajax_sample)                   7.x-1.6

***Note and caution:***  Always try this stuff on a development or vagrant box first. NEVER blindly do this to a production box.
Rick
quelle
Ich verstehe die Idee. Vielen Dank. Aber wie kann ich Submodule trennen? Zum Beispiel sehe ich Knoten Grenze User als nicht installiert , aber ich kann nicht löschen node_limit Ordner wegen I Haupt verwenden Knoten - Grenze
Dimetrie
Können Sie ein benanntes Beispiel für ein Modul mit Submodulen geben, die Sie entfernen möchten? Submodule sind manchmal nur im übergeordneten Modul verschachtelt. Wenn sie zusammen verpackt sind, kann es jedoch nicht schaden, sie stehen zu lassen. Wenn nicht gut verfasst, verwenden einige Module möglicherweise Bibliotheken oder Code in untergeordneten Ordnern. Mein Bauch ist, wenn es zusammen verpackt ist, lass es.
Rick
Andernfalls können Sie auch einen Probelauf in einer VM / Vagrant-Box durchführen. Haben Sie eine Entwickler- oder Wegwerf-Drupal-Installation? Installieren Sie das Modul, verwenden Sie devel_generate, um zufälligen Inhalt zu erstellen, Ordner zu entfernen und zu löschen. Sehen Sie, was bricht. Es ist immer am besten, diese Dinge zuerst auf Wegwerfmaschinen zu testen!
Rick
2

Sie können auch die Datenbank abfragen.

Liste der deaktivierten, aber NICHT deinstallierten Module (kann nicht aus der Codebasis gelöscht werden)

drush sqlq "select name from system where type = 'module' and status = 0 and schema_version NOT IN (0, -1)"

Liste der deaktivierten UND deinstallierten Module (kann aus der Codebasis gelöscht werden)

drush sqlq "select name from system where type = 'module' and status = 0 and schema_version IN (0, -1)"
Rafal Enden
quelle