Composer Instale .tar.gz

3

Tentando instalar node.js via composer (para automação).

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

O problema é que posso usar tar ou gzip para descompactar o arquivador.

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

O pacote nodejs obviamente usa ambos .

Como posso descompactar .tar.gz arquivos compactados usando o compositor?

Eu sei que eu poderia usar os comandos post-update-cmd e post-install-cmd e executar manualmente o untar / gunzip, mas não é assim que o compositor deve ser.

    
por DanFromGermany 06.07.2015 / 11:43

1 resposta

4

A opção "tar" compreende nus .tar , .tar.gz e até .tar.bz2 , portanto, basta especificar "type": "tar" e não há necessidade de especifique o "gz" . Ele descobre a descompressão por conta própria.

Eu me deparei com esse problema e também fiquei inicialmente confuso, tentando implantar automaticamente um aplicativo php que usava uma biblioteca proprietária. No entanto eu tentei apenas "tar", funcionou! Minha parte repositories JSON parece um pouco boba devido à estrutura incomum do arquivo tar, mas funciona. Parecia algo assim:

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

Você pode encontrar, de maneira um tanto obscura, a documentação da Composer API (não o usuário final manual) que os .tar , .tar.gz e .tar.bz2 são todos os três suportados oficialmente por "type": "tar" . Aparentemente, ele é tratado internamente pelo compositor pela classe Composer\Downloader\TarDownloader .

    
por 06.11.2016 / 09:22