3

Попытка установить node.js через composer (для автоматизации).

"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.*"
}

Проблема в том, что я могу использовать tar или gzip для распаковки архива.

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

Пакет nodejs, очевидно, использует оба.

Как я могу распаковать упакованные файлы .tar.gz используя composer?

Я знаю, что могу использовать команды post-update-cmd и post-install-cmd и вручную запускать untar/gunzip, но это не тот способ, которым должен быть композитор.

1 ответ1

4

Опция "tar" понимает как голые .tar , .tar.gz , так и даже .tar.bz2 поэтому просто укажите "type": "tar" и нет необходимости указывать "gz" . Это вычисляет декомпрессию самостоятельно.

Я столкнулся с этой проблемой, а также был в замешательстве, пытаясь автоматически развернуть приложение php, использующее проприетарную библиотеку. Однако я попробовал только "tar", это сработало! JSON-часть моего repositories выглядит немного глупо из-за необычной структуры архива tar, но она работает. Это выглядело примерно так:

"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/"
        }
      }
    }
  }
]

В документации по Composer API (не в руководстве для конечного пользователя) вы можете найти несколько непонятные сведения о том, что .tar , .tar.gz и .tar.bz2 официально поддерживаются с помощью "type": "tar" По-видимому, он обрабатывается внутренне композитором с помощью класса Composer\Downloader\TarDownloader .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .