Como atualizar uma única biblioteca com o Composer?


311

Eu preciso instalar apenas 1 pacote para minha distribuição SF2 (DoctrineFixtures).

Quando eu corro

php composer.phar update

eu recebo

  - Updating twig/twig (dev-master 39d94fa => v1.13.0)
    The package has modified files:
    M CHANGELOG
    M doc/filters/batch.test
    M doc/filters/index.rst
    M doc/filters/url_encode.rst
    M doc/functions/index.rst
    M doc/tags/index.rst
    M doc/tests/index.rst
    M lib/Twig/Autoloader.php
    M lib/Twig/Compiler.php
    M lib/Twig/CompilerInterface.php
-10 more files modified, choose "v" to view the full list

Parece que o último desenvolvedor editou muitos arquivos dentro do fornecedor.

Para contornar isso, tentei

php composer.phar update <package_name>

Mas isso não parece funcionar. Como posso atualizar / instalar apenas uma biblioteca do compositer.json?


Você está usando o comando certo. Você pode nos mostrar o seu composer.json?
— cheesemacfly

por favor tente com os comandos fornecidos na minha resposta de outra forma, por favor fornecer uma descrição do erro que você começa (saída compositor ou seja, se o compositor está reclamando)
— Nicolai Fröhlich

Seu compositer.json pode se referir a uma bifurcação alternativa de um projeto.
— Iconoclast

Atualizei uma dependência específica no meu projeto laravel e especificando o componente específico para instalar explicitamente: atualização do compositor laravelcollective / html. Isso pareceu funcionar.
— Marko

Respostas:


526

Para instalar doctrine/doctrine-fixtures-bundlecom versão 2.1.*e estabilidade mínima, @devuse este:

composer.phar require doctrine/doctrine-fixtures-bundle:2.1.*@dev

para atualizar apenas este pacote único:

composer.phar update doctrine/doctrine-fixtures-bundle

9
Podem ser úteis: correndo atualizar / instalar com -vvv (verbose modo: composer.phar atualização -vvv pacote / pacote) às vezes pode ser melhor como, ocasionalmente, um prompt interativo aparecerá que pode ser de outra forma oculta
— timhc22

1
E se houver erros em outros pacotes? (No meu caso, a instalação parou).
— Thomas Decaux

2
E o requisito aciona uma atualização de um pacote diferente?
— hakre

1
o que exatamente você gostaria de saber? você pode ser mais específico, por favor? Deseja saber se pode acontecer que outro pacote - explicitamente requireantes ou baixado anteriormente como dependência - seja atualizado automaticamente ao executar o composer require <package>:<version-constraint>@<stability-flag>comando?
— Nicolai Fröhlich

7
> composer.phar update doctrine / doctrine-fixtures-bundle também atualiza todos os outros pacotes (((
— podarok

184

Se você deseja atualizar apenas alguns pacotes e não todos, é possível listá-los da seguinte forma:

php composer.phar update vendor/package:2.* vendor/package2:dev-master

Você também pode usar curingas para atualizar vários pacotes de uma vez:

php composer.phar update vendor/*
  • --prefer-source : instala pacotes a partir de sourcequando disponíveis.
  • --prefer-dist : instala pacotes a partir de distquando disponíveis.
  • --ignore-Platform-reqs : ignorar php, hhvm, lib-*e ext-*exigências e forçar a instalação, mesmo que a máquina local não cumprir estes. Veja também a platform opção de configuração .
  • --dry-run : simula o comando sem realmente fazer nada.
  • --dev : instala os pacotes listados em require-dev(este é o comportamento padrão).
  • --no-dev : ignora a instalação dos pacotes listados em require-dev. A geração do carregador automático ignora as autoload-devregras.
  • --no-autoloader : ignora a geração do carregador automático.
  • --no-scripts : ignora a execução dos scripts definidos em composer.json.
  • --no-plugins : desativa plugins.
  • --no-progress : Remove a exibição de progresso que pode interferir em alguns terminais ou scripts que não manipulam caracteres de backspace.
  • --optimize-autoloader (-o) : converte o carregamento automático PSR-0/4 em mapa de classe para obter um carregador automático mais rápido. Isso é recomendado especialmente para produção, mas pode demorar um pouco para ser executado, portanto, atualmente não é feito por padrão.
  • --lock : atualiza apenas o hash do arquivo de bloqueio para suprimir o aviso de que o arquivo de bloqueio está desatualizado.
  • --with-dependencies : adicione também todas as dependências de pacotes na lista de permissões.
  • --prefer-estável : Prefere versões estáveis de dependências.
  • --prefer-lower : prefere as versões mais baixas das dependências. Útil para testar versões mínimas de requisitos, geralmente usadas com --prefer-stable.

Observe que os usuários do ZSH podem precisar incluir vendor/*aspas:composer update "vendor/*"
— ZeroThe2nd

51

Diferença entre instalar, atualizar e exigir

Suponha o seguinte cenário:

compositer.json

"parsecsv/php-parsecsv": "0.*"

arquivo composer.lock

  "name": "parsecsv/php-parsecsv",
            "version": "0.1.4",

Última versão é 1.1.0. A 0.*versão mais recente é0.3.2

instalar: composer install parsecsv/php-parsecsv

Isso instalará a versão 0.1.4conforme especificado no arquivo de bloqueio

atualizar: composer update parsecsv/php-parsecsv

Isso atualizará o pacote para 0.3.2. A versão mais alta em relação ao seu compositer.json. A entrada composer.lockserá atualizada.

exigir: composer require parsecsv/php-parsecsv

Isso atualizará ou instalará a versão mais recente 1.1.0. Seu composer.lockarquivo e seu composer.jsonarquivo também serão atualizados.


incríveis, portanto, para atualizar um pacote dentro a versão restrita é composer update author/packagee depoiscomposer install author/package
— William Randokun

@WilliamRandokun se você instalou-lo antes, então só composer update packageé o suficiente, não há necessidade de chamar instalar depois
— Adam

1
exatamente o que estou procurando. bem explicado. upvoted
— Kapitan

15

Basicamente, você pode seguir um para instalar o novo pacote também.

php composer.phar require

o terminal solicitará que você digite o nome do pacote para pesquisa.

$ Search for a package []: //Your package name here

O terminal perguntará a versão do pacote (se você quiser ter a versão mais recente, deixe em branco)

$ Enter the version constraint to require (or leave blank to use the latest version) []: //your version number here

Então você apenas pressiona a tecla Enter. O Terminal solicitará outro pacote, se você não quiser instalar outro, basta pressionar a tecla Enter e pronto.


6

Você pode usar o seguinte comando para atualizar qualquer módulo com suas dependências

composer update vendor-name/module-name --with-dependencies

5

Para garantir que o compositor atualize um pacote já instalado para a última versão, dentro das restrições de versão definidas em composer.json, remova o pacote do fornecedor e execute:

php composer.phar update vendor/package

4
Você encontrará a mesma sugestão neste post: github.com/composer/composer/issues/3112 . PS: Voto sem explicação é tão fácil e inútil.
— Tsounabe 27/10/16

5

Apenas use

composer require {package/packagename}

gostar

composer require phpmailer/phpmailer

se o pacote não estiver na pasta do fornecedor .. o composer o instala e, se o pacote existir, atualize o pacote para a última versão.


2

Como você queria instalar um pacote específico "Eu preciso instalar apenas 1 pacote para minha distribuição SF2 (DoctrineFixtures)".

php composer.phar require package/package-name:package-version seria o suficiente

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.