Composer global installieren und auf Stand halten

Der de facto Standard Dependency Manager for PHP ist Composer. Mit Composer kann man sich bequem u. a. (Open Source) Bibliotheken, Komponenten laden und braucht sich um Abhängigkeiten kaum noch Gedanken zu machen. Zudem liefert Composer einen Autoloader.

Inhalt


 

Composer global für alle User installieren

Composer global installieren (bedingt installiertes PHP):

# become root
su

# get composer file
cd /tmp
curl -sS https://getcomposer.org/installer | php

# move it to bin dir (for global access)
mv composer.phar /usr/local/bin/composer

 

Komponenten global für einen User installieren

Für die Entwicklung machen sich Programme wie phpDocumenter, PHP_CodeSniffer und natürlich vor allem PHPUnit sehr nützlich. Diese können bequem global (pro User) installiert werden und sind dann für alle Projekte des Linux Users verfügbar.

Standardpakete global für die einzelnen User installieren:

# as desired user run:
composer global require phpdocumentor/phpdocumentor:*
composer global require phpunit/phpunit:*
composer global require sebastian/phpcpd:*
composer global require squizlabs/php_codesniffer:*

# add symlink (or make global user composer bin dir available as you like):
ln -s ~/.config/composer/vendor/bin/ ~

Eventuell noch den Fehler „Unable to find the `dot` command of the GraphViz package. Is GraphViz correctly installed and present in your path?“ beheben, wenn phpDocumenter (phpdoc) genutzt wird:

# become root
su

# if you want to use phpdoc:
apt-get install graphviz

 

Composer nutzen / Pakete pro Projekt installieren

Grob zusammengefasst geht man so vor:

  1. Ins Projekthauptverzeichnis wechseln
  2. Mit composer init Composer einmalig für das Projekt initialisieren
  3. Mit composer search <query> Pakete suchen
  4. Mit composer require package Pakete installieren
  5. Mit composer show die installierten Pakete einsehen
  6. Mit composer update die installieren Pakete aktualisieren

Alternativ zur Suche der Pakete über die Konsole kann man auch Packagist nutzen („Package Repository“ für Composer).

In dem konkreten Beispiel (Bootstrap & Font-Awesome installieren und nutzen) sieht das dann so aus:

cd /path/to/project

# init composer (creates composer.json which can be changed at any time later)
composer init

# search for package
composer search ansas/php-component

# install
composer require ansas/php-component

Viel mehr muss man auch schon nicht machen. In der Regel beschränkt sich das Ganze (bei mir) auf die wenigen genannten Befehle oben.


 

Composer Pakete pro Projekt aktuell halten

Nun sind die Pakete zwar installiert, jedoch müsste man regelmäßig manuell mittels composer update --dry-run prüfen, ob es für die einzelnen installierten Pakete Updates gibt.

Einfacher geht es mit diesem kleinen Einzeiler, den man einfach als täglichen oder wöchentlichen Cronjob einrichten kann (in diesem Beispiel wird der Job immer sonntags um 8:45 Uhr ausgeführt):

45 08 * * 00 <user> cd </path/to/project> && [ -f composer.json ] && /usr/local/bin/composer update --dry-run 2>&1 | grep '\- Updating' | sed 's!^ *- Updating !!'

Nun gibt es einmal pro Woche automatisch eine schlichte Email mit den Paketen zu denen es ein Update gibt. Wenn es keine neuen Updates gibt, dann wird auch keine Email verschickt.

Wichtig: Bitte darauf achten <user> gegen den aktuellen User des Projekts auszutauschen genau wie </path/to/project>.


 

Composer selbst aktuell halten

Um Composer selbst zu aktualisieren, geht man wie folgt vor:

# become root
su

# update composer
composer self-update

 

Weitere nützliche Composer Befehle

Details zu einem Paket (auch wenn nicht installiert) anzeigen:

composer show -a ansas/php-component

 

Alle installierten Pakete anzeigen:

cd /path/to/project

# show all installed packages (one per line)
composer show

# all versions
composer show [--all] [-N|--name-only] [-P|--path] [-t|--tree] [-l|--latest] [-o|--outdated] [<package>] [<version>]

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte beachte die Hinweise zum Datenschutz