The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Доступен Composer 2.0.0, менеджер зависимостей для PHP

02.11.2020 09:15

Представлен релиз Composer 2.0.0, менеджера для установки зависимостей в проектах на языке PHP. Composer позволяет определить какие библиотеки функций необходимы для работы проекта, после чего берёт на себя работу по установке недостающих зависимостей и обновлению новых версий. Доступные для установки библиотеки размещены в репозитории Packagist, который насчитывает более 287 тысяч пакетов. Код Composer написан на PHP и распространяется под лицензией MIT.

Composer позиционируется как система установки зависимостей, спроектированная с оглядкой на возможности пакетных менеджеров npm и bundler, используемых в сообществах разработчиков Node.js и Ruby. Система оперирует пакетами в привязке к конкретным проектам и рассчитана на установку зависимостей в локальные каталоги проектов (в качестве опции имеется и режим глобальной установки для всей системы). По умолчанию предлагается установка стабильных выпусков библиотек, но также имеется возможность использования экспериментальных обновлений (alpha/beta) и снапшотов (срезы находящейся в разработке кодовой базы), которые полезны при организации тестовых сборок в системах непрерывной интеграции.

В выпуске:

  • Проведена значительная оптимизация производительности и сокращено потребление памяти. Очень многое переработано, от протокола для обращения к packagist.org до методов определения зависимостей. Обеспечена загрузка в несколько потоков метаданных и zip-архивов. Реализован режим параллельной установки пакетов. Добавлены оптимизации в код для вычислений. За счёт загрузки только метаданных пакета значительно ускорены операции require/remove и частичные обновления. В некоторых проектах отмечается ускорение до 50%.
  • Переработан механизм обновления зависимостей, который избавлен от привязки к состоянию каталога в локальной ФС. После завершения обновления процесс установки теперь запускается автоматически с предварительным выполнением всех операций, для которых необходим доступ к сети. Выполнение сетевых операций до фактического начала установки позволяет исключить ситуации возникновения не полностью обновлённых каталогов в случае возникновения сетевого сбоя в процессе установки. По возможности загрузки по сети выполняются в несколько потоков.
  • По умолчанию в runtime добавлена дополнительная стадия проверки платформы при инициализации vendor/autoload.php, которая проверяет соответствие версии PHP и используемых расширений с версиями, поддерживаемыми в зависимостях. В случае несоответствия выводится ошибка. Проверка выполняется с использованием нового класса Composer\InstalledVersions, который загружается для каждого проекта и позволяет определить какие пакеты и версии доступны в проекте.
  • Переработаны сообщения об ошибках, связанные с проблемами определения зависимостей. Данные сообщения стали короче, яснее и с меньшим числом дубликатов.
  • Добавлена поддержка частичных обновлений со временными ограничениями, которые можно использовать когда требуется временно обновить или откатить назад версию одного пакета с целью тестирования или ожидания исправления ошибки. Для временного ограничения версий при обновлении следует использовать конструкцию "composer update vendor/package:1.0.*", которая не изменит содержимое блока "require" в "composer.json" и не пометит файл с блокировкой устаревшим. При полном обновлении для задания ограничений можно использовать опцию "--with vendor/package:1.0.*".
  • Реализовано автоматическое удаление пакетов, которые больше не требуются.
  • В репозитории добавлены новые опции only, exclude и canonical.
  • Добавлены новые события pre-operations-exec, pre-pool-create и post-file-download.
  • Добавлено большое число новых флагов.


  1. Главная ссылка к новости (https://blog.packagist.com/com...)
  2. OpenNews: Доступен Composer 1.0.0, менеджер зависимостей для PHP
  3. OpenNews: Проект Python представил новый каталог пакетов PyPI и пакетный менеджер Pip 10
  4. OpenNews: Выявлены следы взлома PHP-репозитория PEAR и модификации пакетного менеджера
  5. OpenNews: Для Qt 6 развивается пакетный менеджер
  6. OpenNews: Доступен пакетный менеджер NPM 7.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/54003-composer
Ключевые слова: composer, php
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Qwerty (??), 09:54, 02/11/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –9 +/
     

     ....ответы скрыты (6)

  • 1.8, YetAnotherOnanym (ok), 10:09, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > спроектированная с оглядкой на возможности пакетных менеджеров npm и ...

    Ура! Теперь малварь можно будет распространять централизованно, одним кликом мышки вместо простукивания тысяч сайтов.

     
     
  • 2.10, Онаним (?), 10:34, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Хипстеры добрались и до PHP.
    Сидели бы в своих хрустах уже.
     
  • 2.11, Аноним (-), 11:06, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Теперь малварь можно будет распространять централизованно

    Ой, можно подумать после вот такого кто-то будет ждать когда завезут свежей малвари в репы

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

     
     
  • 3.14, Аноним (14), 11:40, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Это малвари от производителя. Нужно еще докачать малварей от Васянов
     
  • 3.15, пох. (?), 11:42, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну че ты, в самом деле, докапываешься - всегда ж так делали!
    И вон, смотри, смотри - https! Надежна, сикьюрна, летсшиткрипта зуб дает!

    Нет, ты можешь, конечно, как правильный пацан, curl > installer.php ; php installer.php - а то вдруг завтра переставлять а интернет отменят?

    Если что - эта рекомендация (причем повторяющаяся несколько раз для разных софтин) мной с некоторым удивлением обнаружена в "system administration handbook" (пятой, да, Эви уже не было), которую я когда-то считал хорошей книжкой.

    Дивный новый мир, привыкайте.

     
     
  • 4.18, Аноним (18), 12:21, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ПХПшники всегда отличались умом и сообразительностью
     
     
  • 5.35, пох. (?), 16:34, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Чего это только пехепешники?

    curl -o /tmp/install -sSL https://get.rvm.io
    sudo bash /tmp/install stable

    Эви Немет очень вовремя, кажется, утонула.

     
     
  • 6.70, Рева RarogCmex Денис (?), 06:11, 04/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И даже Хаскеллисты!!!
    wget -qO- https://get.haskellstack.org/ | sh
     
  • 3.19, Аноним (19), 12:25, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > curl -sS https://getcomposer.org/installer | php

    Не ведись на провокации! Делай как чоткие пацаны:
    curl -sS https://getcomposer.org/installer | sudo php

     
     
  • 4.22, Аноним (22), 13:10, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Какой еще sudo? Чоткие пацаны не будут себя ограничивать, они работают под рутом.
     
     
  • 5.36, пох. (?), 16:35, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В книжке для чотких пацанов (ну либо в копипасте со стековерфлова) так написано.

    Говорят, любая команда выполненная с sudo, становится от этого в два раза круче.


     

  • 1.9, Аноним (9), 10:28, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Знаю только Composer из Seamonkey.
     
     
  • 2.40, Аноним (40), 17:51, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ага. Еще когда-то давно был html-редактор KompoZer, который в то время единственный умел привести кашу кода в божеский вид (вроде сейчас эта функция tidy в редакторах), разбив все по строчкам, абзацам и т.д.
     

  • 1.13, пох. (?), 11:36, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    TL;DR - они совместимость с версией 1 сломали, как положено?
     
     
  • 2.59, istepan (ok), 07:49, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Сломался один глобальный пакет где прописана версия composer ^1.0
     
  • 2.62, SubGun (??), 10:03, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да)
     

  • 1.23, rshadow (ok), 13:22, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Самое забавное что все так долго пилили эти менеджеры чтобы все работало в каталоге проекта.... а потом пришол докер и сказал что одна программа на контейнер. И все это опять стало не нужным. Лучше бы deb/apk пакеты собирали.
    Не говоря уж о том что в дистрах пакетные менеджеры более отлажены и продуманы.
     
     
  • 2.25, d (??), 13:25, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Кодеры, програмисты, сопровождающие - это разные люды. Весь сопровождающий головняк всегда валится на 3х. Поэтому у вторых (и особненно первых) в голове смузи.
     
     
  • 3.26, rshadow (ok), 13:39, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это точно. Конечно было бы не плохо упрощать и популизировать сборку именно пакетов и написание программы с оглядкой на дистрибуцию. А то понапишут такого, что кроме как ручкмаи потом не запустить.
    Докеры отчасти из-за этой же проблемы и придуманы. Тот кто пишет, тот и собирает (кое как, лишь бы работало) контейнер.
     
  • 2.32, hshhhhh (ok), 15:20, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    каким образом докер избавляет от необходимости использовать композер?
     
     
  • 3.65, rshadow (ok), 14:57, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Никаким, при чем тут теплое и мягкое? Композер заменить могут deb пакеты.
     
  • 2.38, пох. (?), 17:14, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Лучше бы deb/apk пакеты собирали.

    Это для макаки очень-очень сложна. Во-первых "тыщи их, милеёны этих форматов!" (на самом деле аж два, но не разбираться же ж) Во-вторых под виндой (где и сидит весь такой модный-современный разработчик) это вообще нетривиально.

    А докер, докер тоже надо уметь использовать, вот, например, так:
    FROM: scratch (в принципе, тут может быть alpine или еще что, не важно)
    COPY 250mb.archive.tar.gz /
    ...

    и что там в том архиве за мусор, что с этим делать если что-то сломается - макак его знает.

    P.S. впрочем, движение должно быть обоюдно, а его тоже нет.
    Только у freebsd и только для перла сделана нормально работающая интеграция - pkg знает про cpan и видит установленные таким образом пакеты как отдельные пакеты. cpan -l видит пакеты, установленные pkg и использует их при проверках зависимостей.
    Но это ж кодить надо было - и в самом cpan предусмотреть такую возможность, и в пакетном менеджере специальных хуков. Для перла осилили, поскольку это было давно и были еще те, нормальные разработчики, а уже для питона - хрен там ночевал.

     
     
  • 3.64, Gemorroj (ok), 12:04, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    сейчас можно под этими вашими маками да убунтами сидеть. типа я нитакой как все. венда не тру и прочая малолетняя чушь.
     
     
  • 4.68, пох. (?), 15:38, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Умения собрать deb от этого, что характерно, не появляется.

     
  • 3.66, rshadow (ok), 15:00, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Касательно перла например в дебиане утилита есть cpan2deb. Которая основана на утилитах dh помощников для сборки пакетов.
    Короче, одной командой с именем пакета, через пару минут получаешь deb пакет с модулем. Причем все зависимости ведут так же на пакеты, либо сообщается что его тоже надо бы собрать.

    Для языков там нормально написано автоматизаций. Но конечно собрать таким образом пакет для себя, не значит добавить его в основной реп. Это все так же сложно.

     
     
  • 4.67, пох. (?), 15:35, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Касательно перла например в дебиане утилита есть cpan2deb.

    А, ну молодцы, хотя бы попытались (на мой взгляд правильно как у фри - когда вообще не нужны никакие сокровенные знания о волшебных утилитах, и все делается автоматически - ставишь пакет cpan - он появляется и управляется pkg (с характерным именем, чтоб не перепутать со штатными)

    Жаль что пользы от этого зверя почти никакой сегодня.

    Пипл требует composer и pypy. И никак необучаем не гадить себе под ноги.

    > Но конечно собрать таким образом пакет для себя, не значит добавить его в основной реп.

    так и не надо - и бессмысленно, и на всяк лефтпад не напасешься места.
    У него уже есть репо - языкоспецифичный. Достаточно того чтобы после установки из него - пакет был виден в общем списке и управлялся общими системными средствами.

     

  • 1.28, Иваня (?), 14:13, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ох, давно же я ничего не писал на php, над попробовать, говорят 8 версия вообще топчик по сравнению с 5.3
     
     
  • 2.31, Аноним (-), 14:46, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Новый, нисчем несравнимый синтаксис для банальных казалось бы вещей. Только для гурманов разбирающихся в сортах
     
     
  • 3.41, пох. (?), 18:24, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Новый, нисчем несравнимый синтаксис для банальных казалось бы вещей.

    зато проклятущий pear выломали! Поди плохо!

    Все на компостер. Весь навоз - в хомяк макаке! (Хомяк в архивчик, архивчик в докер, докер на прод - красавчег! Ой, там, кажется были ssh ключи? Удобно-то как, можно прямо с прода скриптом куда хошь ходить!)

     

  • 1.29, Аноним (29), 14:21, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Только вот composer 2.0.0 уже больше недели, и доступен уже composer 2.0.4.
     
     
  • 2.58, a (??), 06:46, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    уже 4 бага нашли? O_o
     

  • 1.33, Ля (?), 15:35, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хз че все на пых так бугортят, если собственно 80 процентов всего веба на нем вертится? Пилим сук на котором сидим? Или сайты на джаве кто то всерьез собрался пилить? Лол
     
     
  • 2.46, Аноним (46), 20:32, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    полезного веба - менее 20%, остальной шлак как раз на пыхе.
     
     
  • 3.47, твой банк (?), 20:47, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    За зарплатой в этот раз можешь не приходить.

    Мы отменили шлак на пыхе и твой бухгалтер не может перевести деньги. Любимое тобой "приложеньице" в любимой твоей лопатке -  к сожалению только для частных пользователей. Для остальных клиент-банк был на php.

    P.S. твоя страховая просит передать, что если заболеешь - беги к знахарю. У нее тоже все на php, она тоже по твоей просьбе его отменила и больше не работает.

     
     
  • 4.48, Антифрактал (?), 21:05, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    а чо хорошего-то в этом?
     
     
  • 5.51, пох. (?), 22:55, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А плохого-то что? Ну вон там выше цитата из "библии" очень уважаемых людей, точно так же ставящих какую-то аналогичную хрень для ruby, только зачем-то сохраняя ее в /tmp - хз зачем (нет, возможность аудита не упомянута ни разу). То есть язык тут вообще непричем - понатащить в проект прямиком git clone с гитхаба на текущую секунду - можно на любом.

    И так будут делать, потому что вон - учебник, на котором училось четыре поколения юникс-адмнов - именно такую ересь и рекомендует. А про пакеты дистрибутива там вообще полтора слова с фактографическими ошибками. Авторы явно вообще очень плохо в этом разбираются.

    А сам по себе пехепе для веб-разработки, как просто еще один язык программирования - ничем не хуже опять же всего остального, ногу себе отстрелить можно, ну так на чем нельзя?

    Дерьмокод исключается не фичами языка, а обычными оргмерами (пятничными порками, децимацией, отправкой на рудники....извините, это не из того документа) - ревью, codestyle, и так далее.

    И разработчики дешевые, ты же не хочешь тому же банку за обслуживание счета юрлица еще больше платить, только ради счастья что банк-клиент перепишут на j2ee?

     
  • 4.49, Аноним (-), 21:13, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Мы отменили шлак на пыхе и твой бухгалтер не может
    > твоя страховая просит

    Ты что вообще такое несешь, что за бухгалтер, какой знахарь страховой. Совсем об угол стукнулся ?
    Во неадекватов развелось.

     
     
  • 5.69, Аноним (69), 21:43, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Последователи Кастанеды
     

  • 1.50, Аноним (-), 21:55, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как это совместимо с инфраструктурой *BSD ports?
     
  • 1.52, Юрий Иванов (?), 22:59, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    очередной глюкодром
     
  • 1.53, Дима (??), 23:11, 02/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я одного не пойму, зачем этот компосер нужен, если большинстве случаев все зависимости легко подключаются вручную?
     
     
  • 2.54, Анонимыч (?), 23:33, 02/11/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В других высокоуровневых ЯП есть такие же аналоги.

    Но вот я одного не понимаю... В python или node.js я подключаю гигабайт зависимостей, поднимаю процесс и далее работаю с ним. Не передрачивая постоянно тысячи или десятки тысяч файлов.
    Пых - создаётся для того чтобы умереть. У тебя сайт и ты используешь композер, через сколько десятков запросов в секунду сервер начнёт отдавать 503-ю ошибку?

    Если поковыряться в github, в разделе php, то можно заметить, что 75% кода тянет зависимости с помощью Composer. Это потом копируют и используют в проектах, даже не включая головного мозга.

     
     
  • 3.55, Аноним (55), 00:00, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Но вот я одного не понимаю... В python или node.js я подключаю гигабайт зависимостей, поднимаю процесс и далее работаю с ним. Не передрачивая постоянно тысячи или десятки тысяч файлов.
    > Пых - создаётся для того чтобы умереть.

    Чего?

     
     
  • 4.56, Анонимыч (?), 02:43, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Процесс на пыхе, создаётся для того чтобы умереть. Так как основное применение php - это веб-сайты, то на каждую запрашиваемую страницу веб-сервер вызывает отдельный процесс.

    Не умеет пых в адекватную асинхронность (чудовищные лаги между событиями) и многопоточность (шаг в сторону - и ты упал в swap). Так что либо через жопу, либо никак.

     
  • 2.60, istepan (ok), 07:53, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Устанешь подключать и обновлять 100500 пакетов.
    Все современные фреймворки работают через composer.
    composer позволяет вообще не думать о подключении библиотек, всё подключается автоматом по namespace.
    Так же соблюдается некий порядок в иерархии 100500 файлов.
     

  • 1.57, Аноним (57), 03:59, 03/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Убогая поделка для тупеньких неосиляторов git submodules
     
     
  • 2.61, istepan (ok), 07:55, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не все проекты на git.
    В git submodules нет плюшек из composer.json.
     
     
  • 3.63, Аноним (57), 10:52, 03/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если проект в 2020 году не на git значит его авторы идиоты
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру