使用Composer下载私有GitHub存储库

7

我无法使用composer下载github私有仓库。

php composer.phar update 

我遇到了以下错误:

无法下载文件 "https://api.github.com/repos/company/private1" (HTTP/1.1 404 Not Found)

但是我可以使用 git clone 轻松地下载这些私有 repos。
Composer.json
"repositories": [
    {
        "type": "vcs",
        "url": "git@github.com:company/private1.git",
        "options": {
            "ssh2": {
                "username": "githubusername",
                "pubkey_file": "/home/username/.ssh/id_rsa.pub",
                "privkey_file": "/home/username/.ssh/id_rsa"
            }
        }
    },
    {
        "type": "vcs",
        "url": "git@github.com:company/private2.git",
        "options": {
            "ssh2": {
                "username": "githubusername",
                "pubkey_file": "/home/username/.ssh/id_rsa.pub",
                "privkey_file": "/home/username/.ssh/id_rsa"
            }
        }
    }
],

"require": {
    "php": ">=5.4.3",
    "zendframework/zendframework": ">2.1.3",
    "doctrine/mongodb-odm": "dev-master",
    "doctrine/doctrine-mongo-odm-module": "dev-master",
    "company/private": "dev-master",
    "company/private2": "dev-master"
}

我尝试使用这个方法,但它并没有起作用。

SSH2 PECL也已启用。

我还创建了配置文件vim ~/home/.ssh/config,具体细节如下:

host www.github.com
User githubusername
HostName github.com
IdentityFile /home/username/.ssh/id_rsa

但我仍然无法使用Composer下载私有存储库。
1个回答

8
在composer.json文件中,您不需要在存储库部分使用选项,只需要typeurl

SSH

在GitHub上,在"个人资料...设置"下,有一个"SSH和GPG密钥"标签。这是您加载SSH公钥的位置,以便从您的计算机(私钥所存储的地方)访问GitHub。
参见他们的文档生成SSH密钥,该文档将为您介绍此过程。它还将引导您完成用于存储密钥私钥的SSH代理。

个人访问令牌

当您调用composer install时,如果您尚未设置访问令牌但需要一个,则Composer将提示您生成它以及用于完成此操作的URL。您可以使用该URL,它将生成一次性API令牌,然后在composer上加载该令牌以访问GitHub。从GitHub网站:

个人访问令牌与普通OAuth访问令牌类似。 它们可以用来替换Git over HTTPS的密码。

如果您没有看到此自动提示,请按以下方式手动执行:
  • 进入GitHub... 设置... 个人访问令牌
  • 点击生成新令牌按钮
  • 令牌说明中输入您认为有意义的内容
  • 选择repo复选框(它将自动检查下面的三个复选框)
  • 按页面底部的生成令牌按钮
  • 复制令牌
回到服务器,告诉composer令牌:
  • composer config -g github-oauth.github.com <token>
  • composer install

不知道为什么,php composer.phar update 不起作用,但 php composer.phar install 可以... - Gabf Hann
奇怪,我没有遇到过这个问题。你可能想要删除锁定文件(或将其重命名以备份)。然后,您可以执行一次更新以生成新的锁定文件,并查看安装是否正常工作,也许Composer有点困惑 :) - Katie
个人令牌/CI/CD令牌和GitHub令牌之间有什么区别? - famas23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接