Composer

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Composer is een PHP dependency manager, zoiets als "Drush voor PHP". Drupal Commerce 2.x kun je uitsluitend via Composer installeren, omdat de hoeveelheid afhankelijkheden handmatige installatie te complex maakt.

Composer werkt op locale basis: Per project wordt er voor gezorgd dat de juiste packages beschikbaar zijn.

Installatie (algemeen)

sudo apt-get install werkt niet (begin 2017), omdat ik daarmee een te oude versie krijg. Wat wel werkt:

sudo mkdir /usr/local/bin/composer
cd /usr/local/bin/composer
curl -sS https://getcomposer.org/installer | php

In .bashrc de PATH-variabele uitbreiden, bv. met PATH=/usr/local/bin/composer:$PATH en source ~/.bashrc

Waarschijnlijk is het script dat in de officiele documentatie wordt genoemd, ook ok.

Bijwerken (algemeen)

Waarschijnlijk werk je 'm bij door 'm opnieuw te installeren.

Installatie van libraries voor Drupal

Voorbeeld:

cd /modules/commerce
composer install

Composer leest vervolgens het bestand composer.json en ziet dat er drie libraries benodigd zijn, en installeert ze:

commerceguys/intl library
commerceguys/tax library
commerceguys/addressing library

Vervolgens wordt het composer.lock-bestand weggeschrijven. Deze beschrijft de specifieke versies van de betreffende libraries. Altijd handig om versie-conflicten te vermijden.

Casus: Handmatige installatie (2016)

Onduidelijk of dit nog relevant is.

Je kunt Composer per project installeren, of globaal, dus één installatie voor alle projecten op dezelfde webserver. Ik kies deze laatste optie.

Installer downloaden & uitvoeren

cd ~/Downloads
curl -sS https://getcomposer.org/installer | php

met als uitvoer:

#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /home/strompf/Downloads/Composer/composer.phar
Use it: php composer.phar

Verplaatsen naar een globaal bereikbare locatie + naam aanpassen

sudo mkdir /usr/local/bin/composer
sudo mv composer.phar /usr/local/bin/composer/composer

Locatie toevoegen aan $PATH

Betreffende regel in .bashrc wordt zoiets als:

PATH=/usr/local/bin/composer:$PATH

Bestand uitvoerbaar maken

Als Composer niet uitvoerbaar is, moet je 'm zo aanroepen: php composer.phar, en als-ie uitvoerbaar is, wordt dat composer.phar:

chmod +x /usr/local/bin/composer/composer

Test

Niet zo moeilijk:

composer

Wat ik in oktober 2015 een paar keer kreeg als uitvoer (eerste paar regels):

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (f85d965732d9505b69242a070dc0b381c9f6bbab) 2015-10-19 10:04:38

Casus: Installatie apt-get (begin 2017)

sudo apt-get install composer

Geef daarna desgewenst het commando composer om te verifiëren dat het werkt.

Achterafgezien blijkt dit niet te werken: Ik krijg een te oude versie!

Casus: Composer bijwerken (mrt. 2017)

Ik heb een te oude versie, want foutmelding

Drupal-project requires Composer version 1.0.0 or higher. Please update your Composer before continuing.

Commando

composer -V

geeft:

Composer version @package_branch_alias_version@ (1.0.0-beta2) 2016-03-27 16:00:34

Commando's

sudo apt-get update && sudo apt-get upgrade

helpen niet.

Verwijderen & opnieuw installeren, werkt ook niet, want ik krijg opnieuw een te oude versie:

sudo apt-get purge composer
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  jsonlint php-cli-prompt php-composer-semver php-composer-spdx-licenses php-json-schema php-symfony-console
  php-symfony-filesystem php-symfony-finder php-symfony-process
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  composer*
0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
After this operation, 1,657 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 211352 files and directories currently installed.)
Removing composer (1.0.0~beta2-1) ...
Processing triggers for man-db (2.7.5-1) ...

sudo apt-get install composer

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  php-zip
Recommended packages:
  mercurial
The following NEW packages will be installed:
  composer
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 0 B/283 kB of archives.
After this operation, 1,657 kB of additional disk space will be used.
Selecting previously unselected package composer.
(Reading database ... 211053 files and directories currently installed.)
Preparing to unpack .../composer_1.0.0~beta2-1_all.deb ...
Unpacking composer (1.0.0~beta2-1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up composer (1.0.0~beta2-1) ...

Wat wel werkt

sudo mkdir /usr/local/bin/composer
cd /usr/local/bin/composer
curl -sS https://getcomposer.org/installer | php
PATH=/usr/local/bin/composer:$PATH

Zie ook

Bronnen