Plone5.1.2中如何pin住所有组件的版本号

在buildout时如果组件的requires.txt文件没有pin依赖组件版本号,zc.buildout总是从pypi中取回最新版本,以前在使用Plone 3.3.5时被这个特性害的不轻,就算组件中新版本已明确说明已经不支持python2.4,(甚至不支持python2.5、python2.6),在明知运行的是python2.4的情况下,zc.buildout也会将最新版本组件构建为一个不能用的egg,不报任何错误,说明pypi中没有记录组件对python最低版本要求的信息。在[versioins]下pin住相关组件的版本号成为非常痛苦的一件事。参考下面的文章

https://maurits.vanrees.org/weblog/archive/2010/04/nonewplone

如果同一组件pin过不同的版本,你会发现eggs目录中有多个冲突版本,但Plone只使用最后buildout时pin的版本,那么猜测一定在某个地方记录了使用的egg信息,用grep搜索了一下,对于Plone5.1.2的zeo缺省安装情况下,以下六个文件中记录了使用的egg位置和版本号

/opt/plone/zeocluster/bin/client2
/opt/plone/zeocluster/bin/client1
/opt/plone/zeocluster/bin/zopepy
/opt/plone/zeocluster/parts/client2/bin/interpreter
/opt/plone/zeocluster/parts/client1/bin/interpreter

前一段时间都是拷贝出文本信息在EXCEL中用减号“-”分列来制作组件和版本号,在网上找到一篇文章,提供了高效的方法

https://davidjb.com/blog/2011/06/extracting-a-buildout-versions-cfg-from-a-zope-instance-script/

正好适用,现将命令行记录一下(稍微修改了一下)

cat /opt/plone/zeocluster/bin/zopepy | grep eggs | sed -r 's#.*eggs/(.*)-py2.[0-9].*#\1#g' | sed -r 's#-# = #g' | sed -r 's#_#-#g' | grep -E ' = [0-9\.]' | xargs -0 echo -e "[versions]\n" | sed -r 's#^\s+##g' >> /opt/plone/zeocluster/buildout.cfg

另外几篇参考文章

https://maurits.vanrees.org/weblog/archive/2008/01/easily-creating-repeatable-buildouts
https://maurits.vanrees.org/weblog/archive/2008/01/creating-repeatable-buildouts
https://maurits.vanrees.org/weblog/archive/2010/08/fake-version-pinning

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值