2015-04-23 18 views
7

Tôi có trang web Plone (khoảng 4.2.4, kể từ version.txt trong thư mục gốc) mà tôi muốn cập nhật lên phiên bản gần đây (tôi tìm thấy this how-to) (dưới dạng của bây giờ, 4.3.4); Tôi đã thừa kế rất nhiều phiên bản được ghim mà không được ghi lại và có thể đã lỗi thời.Tìm thông số kỹ thuật yêu cầu trong thiết lập xây dựng Plone

Khi nhận xét ra tôi versions.cfg, sử dụng http://dist.plone.org/release/4.3-latest/versions.cfg để thay thế và tái chạy buildout với -vvv, tôi nhận được:

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. 

Vì vậy, dường như có một số yêu cầu cho một phiên bản sub-2 của zc.recipe.egg, nhưng tôi có thể Không tìm thấy nó. (Trong versions.cfg tôi đó đã được ghim để 2.0.1 -. Mà đã từng làm việc, đáng ngạc nhiên)

Tôi đã tìm kiếm cây với findgrep, tìm kiếm rc.recipe.egg trong version*.cfgsetup.py file, nhưng tôi không thể tìm thấy bất cứ điều gì nhưng trong tôi thư mục gốc của dự án. Tôi thậm chí đã tìm kiếm mọi tệp đơn bên dưới .../src/collective.mathjax, mà không thành công.

Làm cách nào để có thể loại bỏ sự phụ thuộc này? Cảm ơn bạn!

+0

Bạn có thể kiểm tra phiên bản của zc.recipe.testrunner bạn có? Trong Plone 4.3.4 buildout của tôi, tôi có zc.recipe.testrunner pinned để 1.2.1, và zc.recipe.egg để 2.0.1 – sunew

+0

@sunew: 'zc.recipe.testrunner' được pinned để 2.0.0; cả trong thư mục trứng của tôi và bộ nhớ cache tải xuống, tôi cũng có phiên bản 1.2.1 và 1.4.0. – Tobias

+0

bạn cần phải ghim zc.recipe.testrunner để 1.2.1 trong versions.cfg bạn – sunew

Trả lời

3

Về cơ bản có ba nơi để tìm kiếm phiên bản pinnings:

1.) Các đòi hỏi-files trứng phát hành vào ngày PyPi, như Luca Fabbri chỉ ra, mà bạn có thể tìm kiếm chân như thế này:

grep -r --include=requires.txt "dependency.to.search.for" path/to/eggs-cache 

2.) các setup.py-file của phát triển trứng, tương tự như tìm kiếm như:

grep -r --include=setup.py "dependency.to.search.for" path/to/dev-eggs-cache 

3.) các [versions] -part của config-file, nơi mà trong trường hợp này các version.cfg là kéo hơn phiên bản configs trong, thông qua nó extends -option và một kéo cũng có thể chỉ định nhiều configs qua extends.

Bạn may mắn, ngưỡng mộ M. v Rees đã chia sẻ một đoạn, làm thế nào để có được tất cả pinnings của tất cả các phiên bản Plone:. https://gist.github.com/mauritsvanrees/99cb4a25b622479e7dc3

+0

Có, đệ quy thông qua tùy chọn 'mở rộng' là điểm; cảm ơn bạn! – Tobias

+0

Vòng lặp tròn, không đệ quy :-) –

+0

OK, tôi đã thử kịch bản của Maurits; nó tải xuống các phiên bản của tất cả các phiên bản Plone lên phiên bản mới nhất được mã hóa cứng đến thư mục làm việc hiện tại. Đây là một điều hữu ích để có nhưng không giúp cho các yêu cầu được chỉ định bởi các gói. – Tobias

2

Phụ thuộc có thể là bên trong trứng của bên thứ 3 (vì vậy: không có setup.py trong đó). Tìm kiếm lại bên trong ./eggs/*/EGG-INFO/requires.txt (nếu thư mục egg của bạn nằm trong thư mục gốc).

+0

Đáng buồn là không thành công; chỉ các yêu cầu không có phiên bản, hoặc với '> = 1.2.0' hoặc'> = 1.3.0' được tìm thấy theo cách này ... – Tobias

+0

nếu bạn đã xác định một 'thư mục trứng tùy chỉnh' trong' ~/.buildout/default.cfg' bạn cũng sẽ cần phải tìm kiếm những quả trứng này. ngoài việc phụ thuộc có thể nằm trong tệp trứng nén – fRiSi

+0

@fRisi: Có một quả trứng nén, nhưng không có may mắn - nó không chứa sự phụ thuộc ... – Tobias

1

Có thể bạn có cấu hình xây dựng để không tìm phiên bản mới hơn nếu bạn đã có phiên bản cục bộ. Nên có một dòng như sau:

newest = false 

Bạn có thể thử loại bỏ bộ đệm trứng cục bộ hoặc đặt rõ ràng để sử dụng bộ nhớ trứng toàn cầu và sử dụng một cái cụ thể (trống).

Cái gì như:

[buildout] 
eggs-directory = /home/USER/SOMEWHERE/eggs 
download-cache = /home/USER/SOMEWHERE/downloads 
extends-cache = /home/USER/SOMEWHERE/extends 
+0

Một điều hữu ích để thử, nhưng trong trường hợp của tôi buồn bã không giúp đỡ. – Tobias

1

Bạn có thể sử dụng "eggdeps" (tìm kiếm pypi cho nó) để có được một cây của tất cả phụ thuộc vào buildout của bạn - có lẽ đây có thể hữu ích. Thêm trứng vào quá trình xây dựng và chạy lại. Làm điều đó trên cấu hình ban đầu, làm việc của bạn, trước khi thực hiện các thay đổi bạn đã đề cập. (Tạo tập lệnh eggdeps yêu cầu buildout để kết thúc thành công).

thêm video này vào cấu hình buildout của bạn:

parts += 
    eggdeps 

...

[eggdeps] 
recipe = zc.recipe.egg 
eggs = tl.eggdeps 
     ${instance:eggs} 
scripts = eggdeps 

Run buildout một lần nữa. Bây giờ bạn có một kịch bản bin/eggdeps, mà in một cây của tất cả các phụ thuộc. Run nó:

./bin/eggdeps -n 

Ví dụ đầu ra:

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 ... 
+0

Tôi đã cài đặt đĩa trứng và chạy nó. Nó có vẻ hoạt động, nhưng cho đến nay tôi đã không thể sản xuất bất kỳ đầu ra nào được nêu ra có chứa 'zc.recipe' ở tất cả ... – Tobias

+0

ah, xin lỗi. Tôi nhớ rằng vấn đề của bạn phải làm với một công thức. Công thức nấu ăn vv chỉ được kéo vào trong quá trình xây dựng và không phải là một phần của môi trường cuối cùng. Do đó chúng không xuất hiện trong trứng vì nó cho thấy trứng trong pythonpath kết quả của công trình xây dựng. - Kiểm tra nhận xét của tôi cho câu hỏi của bạn. – sunew

+0

Các gợi ý 'eggdeps' là rất hữu ích trong các trường hợp khác anyway; Tôi đã có một trường hợp sử dụng như vậy ngay bây giờ. – Tobias

2

nhưng một cách tốt hơn để nâng cấp cài đặt hiện có lẽ là để có được một buildout tiêu chuẩn cho phiên bản Plone bạn muốn nâng cấp lên, và sau đó thêm trứng không chuẩn của bạn để xây dựng này.Cuối cùng di chuyển cơ sở dữ liệu và các blob của bạn sang cài đặt mới, và làm theo hướng dẫn nâng cấp.

+0

Cuối cùng tôi có thể cần phải làm theo cách này ... – Tobias

Các vấn đề liên quan