我有一个像这样的目录结构:
composer.json < Main
packages/
balunker/
testpackage/
composer.json < Package
src/
TestPackage.php
主composer.json
看起来像这样:
{
"name": "vagrant/composer-test",
"repositories": [
{
"type": "path",
"url": "packages/*/*"
}
],
"require": {
"balunker/testpackage": "*"
}
}
虽然包composer.json
看起来像这样:
{
"name": "balunker/testpackage",
"autoload": {
"psr-4": {
"Balunker\\": "src/"
}
}
}
在composer update
上我简单地收到一条消息,说明无法解析包。没有创建符号链接,也没有安装任何包。我已经花了一半的时间来搞清楚这一点,但没有任何成功。
我还上传了composer update -vvv
详细输出:http://pastebin.com/mMRHsACk。
我的作曲家版本是最新的(截至2016年4月20日下午2:39 UTC),所有这些都在Vagrant(Debian)中运行。
非常感谢来自此处的任何建议。我真的不知道还能做什么。
答案 0 :(得分:46)
我也在Github上发布了这个问题,结果证明文档有点误导。它说:
int v1 = row.Field<int>("Value1");
int v2 = row.Field<int>("Value2");
var inRangeRows = from r in dtCurrentTable.AsEnumerable()
where (r.Field<Int32>("Value1") <= v1 && r.Field<Int32>("Value2") > v1)
|| (r.Field<Int32>("Value1") < v2 && r.Field<Int32>("Value2") >= v2)
select r;
bool inRange = inRangeRows.Any();
但是,如果您只有一个没有版本的本地仓库,则必须使用:
{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package"
}
],
"require": {
"my/package": "*"
}
}
版本{
"repositories": [
{
"type": "path",
"url": "../../packages/my-package"
}
],
"require": {
"my/package": "dev-master"
}
}
是此处的关键(假设您正在处理主分支)。这有点令人愤怒,但多亏了一些有用的作曲家贡献者,我终于可以抓住这个了。
我希望这可能在将来帮助某人。
祝你好运!答案 1 :(得分:1)
对我有用的与上面非常相似,但是我必须专门针对正在开发的分支。
假设目录/ newapp中的代码与/ app位于同一级别,并且分支名为feature / the-new-package:
"repositories": [
{
"type": "path",
"url": "newapp"
}
],
"require": {
"package/newapp": "dev-feature/the-new-package"
},
\ *无效,dev-master也无效。它必须是dev-feature / the-new-package。
答案 2 :(得分:0)
对于将来的Google员工,请将您的版本添加到composer.json
,然后要求该软件包带有--prefer-source
选项。
例如:composer require your-vendor/package:1.0.* --prefer-source
答案 3 :(得分:0)
帮助我解决的是composer clear-cache
,然后运行composer update
。
说明:最初,我尝试composer install my/package
在依赖版本上失败。因此,我需要进行一些本地修改以使其与Laravel 6.0一起使用。但是,它继续检查Laravel软件包的错误版本,这使我认为它看不到我用repositories
在"type": "path"
键中设置的本地存储库。我首先确保该路径存在并且位于正确的分支上(master
,这就是为什么我在dev-master
中使用composer.json
的原因)。一旦我清除了作曲家的缓存并运行了更新程序,便使用我的本地路径对其进行了更新,而没有任何依赖关系问题。
"repositories": [
{
"type": "path",
"url": "../libs/package-name"
}
],
"require-dev": {
"pkg-maintainer/package-name": "dev-master"
}
答案 4 :(得分:0)
如果已从原始存储库中安装了软件包,Composer似乎会感到困惑:它会获取本地存储库并从其 composer.json 中刷新 composer.lock ,但不会甚至不会尝试将更改提取到供应商目录中。
首先将其删除似乎可以解决该问题:
composer remove foo/bar
composer require foo/bar @dev