Composer Installieren Sie .tar.gz

1626
DanFromGermany

Versuch, node.js über Composer zu installieren (für die Automatisierung).

"repositories": [ "type": "package", "package": { "name": "nodejs/nodejs", "version": "0.12.6", "dist": { "type": "gzip", "url": "https://nodejs.org/dist/v0.12.6/node-v0.12.6-linux-x64.tar.gz" } } } ], "require": { "nodejs/nodejs": "0.12.*" } 

Das Problem ist, ich kann das Archiv entweder benutzen tar oder gzip auspacken.

Available types: git, svn, hg, perforce, zip, rar, tar, gzip, phar, file. 

Das nodejs-Paket verwendet offensichtlich beide .

Wie kann ich komprimierte .tar.gzDateien mit Composer entpacken ?

Ich weiß, dass ich Entar / Gunzip verwenden post-update-cmdund post-install-cmdBefehle ausführen und manuell ausführen kann, aber so sollte Composer nicht sein.

3
Verwendet es nicht tar mit der -z-Flagge? Hennes vor 8 Jahren 0
Bei der Verwendung von "tar" wird nichts ausgepackt. Wenn ich "gzip" verwende, wird es nicht entpackt. DanFromGermany vor 8 Jahren 0
'tar' hat gerade ein tar.gz aus google code archive installiert und entpackt. Gute Sache auch - kein Repo-Zugriff mehr auf Google Code und einige Projekte sind noch nicht anderswo umgezogen! Joey T vor 7 Jahren 0
Der gleiche Anwendungsfall für die Installation des Ace-Editors über den Composer von https://github.com/ajaxorg/ace/archive/v1.2.6.tar.gz Xavi Montero vor 7 Jahren 0

1 Antwort auf die Frage

4
A.B. Carroll

Die „Teer“ Option versteht beide kahl .tar, .tar.gzund sogar.tar.bz2 so geben Sie einfach "type": "tar"und es gibt keine Notwendigkeit, die angeben "gz". Es ermittelt die Dekompression allein.

Ich stieß auf dieses Problem und war anfangs verwirrt, als ich versuchte, eine PHP-App, die eine proprietäre Bibliothek verwendete, automatisch bereitzustellen. Ich habe aber nur "tar" ausprobiert, es hat funktioniert! Mein repositoriesJSON-Teil wirkt aufgrund der ungewöhnlichen Struktur des tar-Archivs etwas doof, aber es funktioniert. Es sah ungefähr so ​​aus:

"repositories": [ { "type": "package", "package": { "name": "RocketShipIt/RocketShipIt", "version": "1.4.9.3", "dist": { "url": "https://secret-deployment-server/RocketShipIt.tar.gz", "type": "tar" }, "autoload": { "files": [ "RocketShipIt/RocketShipIt.php" ], "psr-0": { "RocketShipIt\\": "RocketShipIt/RocketShipIt/RocketShipIt/" } } } } ] 

In der Composer-API-Dokumentation (nicht im Endbenutzerhandbuch) können Sie feststellen, dass dies etwas undeutlich ist .tar, .tar.gzund .tar.bz2alle drei werden offiziell von unterstützt "type": "tar". Anscheinend wird es intern vom Komponisten von der Composer\Downloader\TarDownloaderKlasse gehandhabt .