在 Plone 构建设置中查找需求规格
Find requirement specs in a Plone buildout setup
我有一个 Plone 站点(大约 4.2.4,从根目录中的 version.txt
得知)我想更新到最新版本(我发现 this how-to) (截至目前,4.3.4
);我继承了大量未记录且可能已过时的固定版本。
当注释掉我的 versions.cfg
时,改用 http://dist.plone.org/release/4.3-latest/versions.cfg
并用 -vvv
重新 运行 buildout
,我得到:
Develop: '.../src/collective.mathjax'
in: '.../src/collective.mathjax'
/tmp/tmpbXsnpD -q develop -mxN -d .../develop-eggs/tmp2yhe9ubuild
...
Installing 'zc.recipe.egg'.
We have the best distribution that satisfies 'zc.recipe.egg<2dev'.
Picked: zc.recipe.egg = 1.3.2
...
There is a version conflict.
We already have: zc.recipe.egg 1.3.2.
While:
Installing.
Getting section test.
Initializing section test.
Installing recipe zc.recipe.testrunner.
所以好像对zc.recipe.egg
的sub-2版本有一些要求,但我找不到。 (在我的 versions.cfg
中,它被固定到 2.0.1
- 令人惊讶的是,它曾经有效。)
我用 find
和 grep
搜索了树,在 version*.cfg
和 setup.py
文件中寻找 rc.recipe.egg
,但我找不到任何东西但是在我的项目根目录中。我什至搜索了 .../src/collective.mathjax
下面的每个文件,但都没有成功。
我怎样才能找出这种依赖关系?谢谢!
依赖项可能在第 3 方蛋中(因此:其中没有 setup.py
)。在 ./eggs/*/EGG-INFO/requires.txt
中再次搜索(如果您的 egg
目录在构建根目录中)。
可能是因为您的扩建配置没有寻找更新的版本(如果您已经在本地安装了更新版本)。应该有这样一行:
newest = false
您可以尝试删除本地缓存的 eggs 或明确设置为不使用全局缓存并使用特定缓存(空)。
类似于:
[buildout]
eggs-directory = /home/USER/SOMEWHERE/eggs
download-cache = /home/USER/SOMEWHERE/downloads
extends-cache = /home/USER/SOMEWHERE/extends
您可以使用 "eggdeps"(在 pypi 中搜索它)来获取构建中所有依赖项的树 - 也许这会有所帮助。
将鸡蛋添加到您的构建中并重新运行构建。在进行您提到的更改之前,请在您原来的、有效的扩建配置上执行此操作。 (生成 eggdeps 脚本需要 buildout 才能成功完成)。
将此添加到您的构建配置中:
parts +=
eggdeps
...
[eggdeps]
recipe = zc.recipe.egg
eggs = tl.eggdeps
${instance:eggs}
scripts = eggdeps
运行 再次扩建。
现在你有一个脚本 bin/eggdeps,它打印所有依赖项的树。
运行它:
./bin/eggdeps -n
示例输出:
zope.app.pagetemplate 3.11.2
setuptools 8.0.2
zope.browserpage 3.12.2 ...
zope.component 3.9.5 [hook] ...
zope.configuration 3.7.4 ...
zope.dublincore 3.7.0
pytz 2013b0
setuptools 8.0.2
zope.component 3.9.5 ...
zope.datetime 3.4.1 ...
zope.interface 3.6.7 ...
zope.lifecycleevent 3.6.2 ...
zope.location 3.9.1 ...
zope.schema 4.2.2 ...
zope.security 3.7.4 ...
[test]
zope.annotation 3.5.0 ...
zope.testing 3.9.7 ...
zope.i18nmessageid 3.5.3 ...
zope.interface 3.6.7 ...
zope.pagetemplate 3.6.3 ...
zope.schema 4.2.2 ...
但升级现有安装的更好方法可能是为要升级到的 plone 版本获取标准构建,然后将非标准鸡蛋添加到该构建中。最后将您的数据库和 blob 移至新安装,并按照升级指南进行操作。
基本上可以在三个地方查找版本固定:
1.) PyPi 上发布的 eggs 的 requires-files,如 Luca Fabbri 指出的那样,您可以像这样搜索引脚:
grep -r --include=requires.txt "dependency.to.search.for" path/to/eggs-cache
2.) development-eggs的setup.py文件,类似的可以搜索到:
grep -r --include=setup.py "dependency.to.search.for" path/to/dev-eggs-cache
3.) 配置文件的 [versions]
部分,在本例中 the version.cfg 通过它的 extends
选项和被拉出的选项也可能通过 extends
.
指定更多配置
你很幸运,受人尊敬的 M. v. Rees 分享了一段关于如何获取所有 Plone 版本的所有固定的片段:
https://gist.github.com/mauritsvanrees/99cb4a25b622479e7dc3
我有一个 Plone 站点(大约 4.2.4,从根目录中的 version.txt
得知)我想更新到最新版本(我发现 this how-to) (截至目前,4.3.4
);我继承了大量未记录且可能已过时的固定版本。
当注释掉我的 versions.cfg
时,改用 http://dist.plone.org/release/4.3-latest/versions.cfg
并用 -vvv
重新 运行 buildout
,我得到:
Develop: '.../src/collective.mathjax'
in: '.../src/collective.mathjax'
/tmp/tmpbXsnpD -q develop -mxN -d .../develop-eggs/tmp2yhe9ubuild
...
Installing 'zc.recipe.egg'.
We have the best distribution that satisfies 'zc.recipe.egg<2dev'.
Picked: zc.recipe.egg = 1.3.2
...
There is a version conflict.
We already have: zc.recipe.egg 1.3.2.
While:
Installing.
Getting section test.
Initializing section test.
Installing recipe zc.recipe.testrunner.
所以好像对zc.recipe.egg
的sub-2版本有一些要求,但我找不到。 (在我的 versions.cfg
中,它被固定到 2.0.1
- 令人惊讶的是,它曾经有效。)
我用 find
和 grep
搜索了树,在 version*.cfg
和 setup.py
文件中寻找 rc.recipe.egg
,但我找不到任何东西但是在我的项目根目录中。我什至搜索了 .../src/collective.mathjax
下面的每个文件,但都没有成功。
我怎样才能找出这种依赖关系?谢谢!
依赖项可能在第 3 方蛋中(因此:其中没有 setup.py
)。在 ./eggs/*/EGG-INFO/requires.txt
中再次搜索(如果您的 egg
目录在构建根目录中)。
可能是因为您的扩建配置没有寻找更新的版本(如果您已经在本地安装了更新版本)。应该有这样一行:
newest = false
您可以尝试删除本地缓存的 eggs 或明确设置为不使用全局缓存并使用特定缓存(空)。
类似于:
[buildout]
eggs-directory = /home/USER/SOMEWHERE/eggs
download-cache = /home/USER/SOMEWHERE/downloads
extends-cache = /home/USER/SOMEWHERE/extends
您可以使用 "eggdeps"(在 pypi 中搜索它)来获取构建中所有依赖项的树 - 也许这会有所帮助。 将鸡蛋添加到您的构建中并重新运行构建。在进行您提到的更改之前,请在您原来的、有效的扩建配置上执行此操作。 (生成 eggdeps 脚本需要 buildout 才能成功完成)。
将此添加到您的构建配置中:
parts +=
eggdeps
...
[eggdeps]
recipe = zc.recipe.egg
eggs = tl.eggdeps
${instance:eggs}
scripts = eggdeps
运行 再次扩建。 现在你有一个脚本 bin/eggdeps,它打印所有依赖项的树。 运行它:
./bin/eggdeps -n
示例输出:
zope.app.pagetemplate 3.11.2
setuptools 8.0.2
zope.browserpage 3.12.2 ...
zope.component 3.9.5 [hook] ...
zope.configuration 3.7.4 ...
zope.dublincore 3.7.0
pytz 2013b0
setuptools 8.0.2
zope.component 3.9.5 ...
zope.datetime 3.4.1 ...
zope.interface 3.6.7 ...
zope.lifecycleevent 3.6.2 ...
zope.location 3.9.1 ...
zope.schema 4.2.2 ...
zope.security 3.7.4 ...
[test]
zope.annotation 3.5.0 ...
zope.testing 3.9.7 ...
zope.i18nmessageid 3.5.3 ...
zope.interface 3.6.7 ...
zope.pagetemplate 3.6.3 ...
zope.schema 4.2.2 ...
但升级现有安装的更好方法可能是为要升级到的 plone 版本获取标准构建,然后将非标准鸡蛋添加到该构建中。最后将您的数据库和 blob 移至新安装,并按照升级指南进行操作。
基本上可以在三个地方查找版本固定:
1.) PyPi 上发布的 eggs 的 requires-files,如 Luca Fabbri 指出的那样,您可以像这样搜索引脚:
grep -r --include=requires.txt "dependency.to.search.for" path/to/eggs-cache
2.) development-eggs的setup.py文件,类似的可以搜索到:
grep -r --include=setup.py "dependency.to.search.for" path/to/dev-eggs-cache
3.) 配置文件的 [versions]
部分,在本例中 the version.cfg 通过它的 extends
选项和被拉出的选项也可能通过 extends
.
你很幸运,受人尊敬的 M. v. Rees 分享了一段关于如何获取所有 Plone 版本的所有固定的片段: https://gist.github.com/mauritsvanrees/99cb4a25b622479e7dc3