【问题标题】:composer itself is managed by composer?作曲家本身是由作曲家管理的吗?
【发布时间】:2018-05-03 06:17:58
【问题描述】:

也许只是一个愚蠢的问题。 从 github.com 下载/克隆 composer 源代码后,如何运行它或将其编译成 phar 文件?

运行“php bin/composer -v”时,出现这样的错误:

php bin/composer -v
You must set up the project dependencies using `composer install`
See https://getcomposer.org/download/ for instructions on installing Composer

是不是说我必须下载另一个composer.phar文件并先运行“php composer.phar install”?

我认为这是一种递归方式,“composer”本身是由composer管理的:(

【问题讨论】:

    标签: php composer-php


    【解决方案1】:

    起初:如果有人只想使用 composer,他们一定不要从 GitHub 安装它,只需按照安装指南:https://getcomposer.org/download/

    好的,回到问题。

    “composer”本身由composer管理

    是的,为什么你认为它不好?

    请参阅official documentation for contributors。它鼓励正是这样:

    1. 运行git clone https://github.com/composer/composer.git
    2. 下载composer.phar 可执行文件
    3. 运行 Composer 以获取依赖项:cd composer && php ../composer.phar install

    然后你可以通过启动bin/composer来实际使用composer,或者你可以通过bin/compile编译成phar。

    如果您想知道 composer 二进制文件实际上是如何构建的,您可以在他们的 Travis config 中查看。他们只是抓取 Travis 提供的以前的作曲家版本,并用它构建新的作曲家版本。

    【讨论】:

    • 这里的关键见解是 Composer 是使用 Composer 构建的,但如果您只想运行它,您可以下载“phar” ,其中包含捆绑的所有内容。
    • @IMSoP,这个“phar”也来自 Composer 本身(旧版本)。
    • @Andriy Maletsky,感谢您的回复。我当然知道如何使用作曲家下载/安装。我只是觉得奇怪,如果我没有 composer.phar 文件(可能是不可能的),如何运行源代码。
    • 然后你会在源代码中找到以前没有作曲家的版本,然后用它来构建所有后续的作曲家:)
    • 我相信通过查看composer repo的第一个git标签很容易找到
    【解决方案2】:

    Composer 的工作是为特定项目定位和安装依赖项。它所做的一切都可以手动完成,主要是将文件放置在正确的位置,并引用一系列自动加载器。

    为了从头开始构建 Composer,您需要在 Composer 主存储库之外的某些代码,例如命令行和日志记录助手。您可以手动下载所有这些,但自然的方法是使用现有的 Composer 安装来获取它们。

    仅当您使用 Composer 本身时才需要这样做,因为一旦您成功构建,您就可以生成一个 PHAR 文件,其中包含所有必需的代码,包括那些第三方依赖项。这些是作为正式版本分发的文件,是大多数人需要的;该工具甚至有一个self-update 命令,它会下载一个新的 PHAR 文件并覆盖你运行的那个。

    这种引导 - 使用工具的现有构建作为其自身构建过程的一部分 - 实际上很常见。 PHP 本身的某些部分是使用 PHP 脚本生成的,我相信第一个功能完整的 C++ 编译器是用 C++ 编写的。

    【讨论】:

    • “第一个功能完整的 C++ 编译器” 你确定有吗? :D
    • @IMSoP 你是对的。 Composer 就像是具有“引导”特性的编程语言 :) 第一个 C++ 编译器(不是功能完整的),我认为它只能用 C 或其他低级语言编写。
    猜你喜欢
    • 2015-03-22
    • 2015-08-22
    • 2021-08-07
    • 1970-01-01
    • 2022-11-10
    • 2015-11-27
    • 2014-09-26
    • 2017-03-13
    • 2016-08-18
    相关资源
    最近更新 更多