Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

Composer 1 zu Composer 2

Eingetragen von Martin Gr. (127)
am 28.01.2023 - 18:35 Uhr in
  • Anfängerfragen
  • Drupal 9.x oder neuer

Hallo zusammen,
ich hab meine bisherigen Projekte (Drupal 9.5.x) immer mit composer 1 gewartet. Das klappt gut, ich bin hier in der community oft dazu beraten worden und hab das etabliert. Nachdem bald eine Umstellung zu Drupal 10 ansteht, wollte ich mich da etwas einüben. Auch damit das Theme in der neuen Version funktioniert. Aber D10 läßt sich anscheinend nur mit composer 2.1 aufsetzen. Jedenfalls bekam ich die Rückmeldung dass composer api 2.1 erforderlich sei.

Ein Composer update ist mir klar, aber was passiert mit den Projekten, die noch mit Composer 1 aufgesetzt wurden? Das befindet sich alles im gleichen root nur halt in unterschiedlichen Domains/Subdomains. Eine lokale Installation habe ich leider nicht zum testen.
Könnt ihr mir da helfen?
LG Martin

‹ [gelöst] Weiterleitung nach Login auf Ursprungsziel? [gelöst] Persönliches Kontaktformular, oder interne User Nachrichten ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Composer 1 und 2 parallel nutzen

Eingetragen von C_Logemann (852)
am 28.01.2023 - 20:18 Uhr

Composer ist "nur" ein Commandline PHP Programm, das als ein eigenständiges File (im phar format) aufgerufen wird. Das ist also keine Server-Software, die man irgendwie von einem Hoster installiert bekommen muss. Man kann sich also generell sowohl eine composer1(.phar) und ein composer2(.phar) herunter laden und betreiben. Man kann diese sogar mit unterschiedlichen PHP Versionen laden. Somit kann man auf dem gleichen System mit dem gleichen System-Benutzer sowohl composer 1 parallel mit composer 2 nutzen. Wenn man das täglich benötigt ist es natürlich hilfreich, wenn man irgendwie vereinfach hat mit dem Aufruf. Wenn z.B. die Commandline auch das bin Verzeichnis im Home Verzeichnis auslesen kann, kann man da z.B. die paar Daten direkt einspeichern und umbenennen in composer1 und composer2 oder alias/symlinks anlegen. Wenn diese in der commandline nicht direkt als ausführbare Dateien interpretiert werden (z.B. via bash Konfiguration) kann man dann trotzdem einfacher aufrufen z.B. mit "~/bin/composer1". So mache ich das z.B. auf meinem Laptop und bei Hosting-Plattformen, die wir nicht selbst komplett verwalten.
Wichtig bei Composer Operationen auf unterschiedlichen Umgebungen (wie z.B. lokale Nutzung): Im Composer.json die Ziel PHP Version festlegen und beim Update mit der gleichen PHP Version oder einer höheren aufrufen. Dann sorgt Composer dafür, daß man nicht aus Versehen Paket-Versionen installiert, die z.B. PHP 8.2 schon benötigen obwohl auf dem Ziel-System 8.1 genutzt wird.
Aber selbst wenn man alles auf dem Ziel-Server ausführt, kann es sein, daß die Commandline nicht die gleich PHP Version verwendet wie der Webserver. Mit "php -v" findet man das raus. Wenn lokal und Servern unterschiedliche PHP Version verfügbar sind, kann man sich dafür auch Symlinks/aliase anlegen.

Es generell ist es ratsam für Composer Update (Massnahmen) z.B. bei einem Drupal Projekt, dies nicht direkt auf dem Produktiv Server durchzuführen, sondern z.B. Lokal und das "Ergebnis" (insbesondere die composer.lock Datei) dann hoffentlich via Git und mindestens einem Staging Test erst zum produktiv-System zu transferieren und dort dann composer install durchzuführen. Mit Composer 2 ist zwar der Speicherhunger von Composer erheblich besser geworden bei Updates aber es ist trotzdem ein gute Idee. Bei Projekten, bei denen wir (nicht mehr) den ganzen Code im Git-Repo verwalten (wollen) gehen wir aktuell dazu über, den Composer-Prozess (auch nicht install) nicht mehr direkt im Produktiv-Code Ordner durchzuführen, da beim Install Dateien aus unterschiedlichen Quellen herunter geladen werden. Selbst wenn man diese mit einem Mirror (z.B. bei Packagist.com, kostenpflichtig) absichert, kann es sein, daß das Ergebnis unvollständig ist bzw. der Install-Prozess sich zu sehr hinzieht und z.B. ein Patch nicht geladen wird usw. Wir machen dann ein Abgleich mit Rsync (bzw. haben dafür ein Script).

# DrupalCenter-Moderator # Mitglied im Drupal e.V. # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: CMS Security & Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke - sehr hilfreich!

Eingetragen von Martin Gr. (127)
am 28.01.2023 - 21:32 Uhr

Deine Antwort gehört ins "how to compose with composer"Handbuch - vielen Dank. Ich bin da ein Einsteiger - ein Profi hat für mich ein bash script erstellt, ich werd mir das abschauen und für composer 2 adaptieren.

Das mit den unterschiedlichen PHP Versionen hat mich auch schon verwirrt und ist als Frage im Forum abgehandelt worden, wichtige Info!

Deine beschriebene Vorgangsweise mit lokale Version...via Git...etc. habe ich erst einmal in den Anfängen versucht, da hatte mir "sammelzwerg" eine gute Anleitung gegeben, und ich war mit den shell Befehlen bzw. dem Grundverständnis noch nicht so weit. Kommt auch.

Mein bash script sieht wie folgt aus - und da ist die Frage, wo ich composer 2 "beauftragen" kann - oder ist die composer Version in einem weiteren script angeführt?

# ##############################################################################################################
# Aliases for all sites. jetzt noch die Aenderung auf php8.0
# ##############################################################################################################

userdir='/var/www/vhosts/xxxxx.yyyyy.dingshost-server.at'

# Set PHP 8.0 as default PHP version on commandline interface. Aenderung M.Geiger
alias php="php80"
alias ll="ls -hl"

# Composer
alias composer="php80 -d memory_limit=-1 $userdir/composer/composer"

# Drush
alias drush="php80 -d memory_limit=-1 $userdir/drush/vendor/bin/drush"

# ########################################################################
# Aliases for management of xxx Website und PHP Versionsaenderung auf 8.0
# ########################################################################

# Drush
# Achtung: Default php cli version am Server ist 5.x. Hier muss vendor/bin/drush gepatcht werden, um nicht /usr/bin/php sondern /usr/bin/php74 zu verwenden.
alias kpt9_drush="php80 -d memory_limit=-1 $userdir/kpt9/vendor/drush/drush/drush --root='$userdir/kpt9'"

# Composer
alias kpt9_composer="php80 -d memory_limit=-1 $userdir/composer/composer"

# Show security and non security updates
alias kpt9_showupdates="bash $userdir/kpt9/bin/showupdates.sh"

# Update Drupal core
alias kpt9_updatecore="bash $userdir/kpt9/bin/updatecore.sh"

  • Anmelden oder Registrieren um Kommentare zu schreiben

Composer Upgrade bei bestehendem Projekt

Eingetragen von C_Logemann (852)
am 30.01.2023 - 12:54 Uhr

Das Bash Script kann man so machen, es ist für meinem Geschmack allerdings zu unflexibel. Wir haben da intern eine Script-Sammlung, die sich sogar in sehr unterschiedlichen Hosting-Umgebungen nutzen lässt durch Konfigurations-Dateien und dem Auslesen von Meta-Daten etc.

Mit ist aber aufgefallen, daß ich folgende Frage noch nicht wirklich beantwortet habe weil ich (auch aus Gewohnheit) von unterschiedlichen Projekten ausgehe, da wir immer mehr als eines z. B. lokal betreuen und Drupal 7 noch mit Composer 1 und Drupal 9 Projekte bereits alle mit Composer 2 pflegen und wir deshalb lokal und auf Servern beide Composer Versionen benötigen:

> Ein Composer update ist mir klar, aber was passiert mit den Projekten, die noch mit Composer 1 aufgesetzt wurden?

Wenn es darum geht, ein Projekt, daß mit Composer 1 aufgesetzt wurde und dann mit Composer 2 weiter gepflegt werden soll. Wenn es gut läuft, ist ein fliegender Wechsel möglich. Das kann klappen, wenn man noch mit Composer 1 alle Bibliotheken (d.h. nicht nur Drupal Module) auf den neuesten Stand gebracht hat. Denn auch die Composer Packages müssen Composer 2 API kompatibel sein. Da "nörgelt" Composer 2 aber beim Upgrade und dann kann man sich auf die Suche begeben, welche Bibliothek da noch "quer" steht. Das sind inzwischen seltener Bibliotheken, die vom Core oder gut gepflegten Modulen als Requirement angegeben werden sondern oft eher jene, die man manuell hinzugefügt hat aus ganz unterschiedlichen Gründen und diese irgendwann mal begrenzt hat in der Versions-Angabe usw. Da muss man sich dann ran testen und zur Not sich auch mal von etwas trennen bzw. es anders organisieren und zur Not Patches arbeiten. Da gibt es jetzt keine pauschale Anleitung für.

# DrupalCenter-Moderator # Mitglied im Drupal e.V. # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: CMS Security & Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Immer noch composer 1 zu 2

Eingetragen von Martin Gr. (127)
am 30.01.2023 - 21:55 Uhr

Ich hab bei meinen beiden Drupal 9.5.2 Projekten von Anfang an mit composer gearbeitet und den Betrieb immer mit c. aktuell gehalten. Händisch hinzugefügt habe ich soweit erinnerlich nichts. Das ganze im Hinblick auf die Vorbereitung auf Drupal 10. Module habe ich nicht so viele in Verwendung und werde es so halten, dass ich auf das eine oder andere verzichte, wenn es zwickt.

Hab jetzt am Wochenende wieder mit composer "geübt" - den composer in anderer suobdomain frisch installiert, dann diese Version 1.x sogar auf 2.x upgedated - da murrte er erst herum, keine .json Datei zu haben, also hab ich eine "gebastelt". Dann den Versuch wieder abgebrochen. Zudem schien es so, wie wenn der andere "alte" bereits installierte composer gleich mitgeupdated worden wäre. Bei der Versionskontrolle zeigte er es so an. Da ist mir noch einiges unklar.

So wie ich es verstanden habe ist der composer wenn dann sinnvollerweise für alles im root zuständig, global verfügbar. Kann ich aber dennoch in einem Unterverzeichnis eine andere composer Version betreiben? Da muß die composer.phar eben dort liegen und dort auch angesprochen werden. Stimmt die Annahme? Und so ein bash script würde mir die Mühe abnehmen, dass ich immer wieder Pfade eingebe - siehe obiges Beispiel, das hatte mir ein Profi gebaut - für Kurzbefehle.

Wo ich noch völlig im Dunklen tappe ist: In den diversen tutorials ist immer die Rede von dem Ordner /bin, dann auch von der bash - darüber sind die Infos bunt verstreut - wahrscheinlich weil jeder annimmt, dass es Grundlagenwissen sei.
Was tun, wenn man(n) nicht in der IT-Branche aufgewachsen sondern enthusiasmierter Laie ist? Na im Forum fragen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Serverseite in MAMP, Local, zum laufen bringen?
  • DSGVO-konforme Share Buttons - wie macht Ihr das?
  • Toolbar "Verwaltung" weg
  • Button der direkt eine Mail verschickt
  • Theme Classy sei installiert, ist aber nicht bei Themes
  • Paragraphs und Bootstrap Paragraphs Probleme mit Bootstrap 4
  • [gelöst]felder in view zusammenführen
  • Web Inspektor in safari
  • D6 Views Data Export Multi Images -> D7
  • CORS Einstellungen scheinen nicht zu greifen - Was muss ich ändern?
  • Fehlermeldung
  • [gelöst]Composer Grundsatzfrage
Weiter

Neue Kommentare

  • ach so. dann kann ich nicht
    vor 19 Stunden 58 Minuten
  • Hallo caw, also, ich hab die
    vor 20 Stunden 25 Minuten
  • evtl per css ausblenden...
    vor 23 Stunden 30 Minuten
  • Die admin Toolbar erscheint
    vor 1 Tag 1 Stunde
  • Das ist doch das
    vor 1 Tag 2 Stunden
  • Habe gerade probiert die
    vor 1 Tag 4 Stunden
  • danke aber das habe ich alles bereits probiert
    vor 1 Tag 4 Stunden
  • DA musst du entsprechend die
    vor 1 Tag 6 Stunden
  • Normale Share Buttons haben
    vor 1 Tag 6 Stunden
  • Danke für die Antwort
    vor 1 Tag 20 Stunden

Statistik

Beiträge im Forum: 248551
Registrierte User: 19783

Neue User:

  • Andreas0815
  • Btinrusable
  • juli_91

» Alle User anzeigen

User nach Punkten sortiert:
wla9305
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 5 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association