pacotes em diretorios de alto nivel que contenham um conjunto de diretorios de produto (pacotes aninhados), ou com pacotes que tenham um numero de versao no nome do diretorio e, portanto, precisa ser renomeado para obter o diretorio do produto real (pacote com versao como sufixo).Considere as seguintes distribuicoes:# Uma distribuicao tipica ExampleProduct-1.0.tgz | |- ExampleProduct | |- __init__.py |- (codigo do produto)# Uma distribuicao com versao como sufixoAnotherExampleProduct-2.0.tgz | |- AnotherExampleProduct-2.0 | |- __init__.py |- (codigo do produto)# Uma distribuicao com pacotes aninhadosExampleProductBundle-1.0.tgz | |- ExampleProductBundle | |- ProductOne | |- __init__.py | |- (codigo do produto) | |- ProductTwo |- __init__.py |- (codigo do produto)A seguir temos como esta secao devera ser configurada para tentar instalar as tres distribuicoes listadas acima:[productdistros]recipe = plone.recipe.distrosurls = http://example.com/dist/ExampleProduct-1.0.tgz http://example.com/dist/AnotherExampleProduct-2.0.tgz http://example.com/dist/ExampleProductBundle-1.0.tgznested-packages = ExampleProductBundle-1.0.tgzversion-suffix-packages = AnotherExampleProduct-2.0.tgzVoce pode especificar multiplos downloads em linhas separadas. Quando a recipe e executada, os diretorios dos produtos importados sao localizados em parts/productdistros.A secao [instance]A secao [instance] poe tudo junto. Ela configura uma instancia do Zope atraves do script plone.recipe.zope2instance. Aqui esta com que ela se parece:[instance]recipe = plone.recipe.zope2instancezope2-location = ${zope2:location}user = admin:adminhttp-address = 8080# comente as duas opcoes abaixo para sites em producaodebug-mode = onverbose-security = oneggs = Plone ${buildout:eggs}zcml = products = ${buildout:directory}/products ${productdistros:location}Aqui, nos referenciamos a instalacao do Zope2 configurada na secao [zope2] - se voce especificou um local quando criou o buildout voce o veria aqui. Entao nos especificamos o usuario admin e a senha inicial que sera usada apenas quando da criacao do banco de dados inicial, e a porta na qual o Zope sera vinculado. Nos tambem ativamos o modo de depuracao e o modo de seguranca detalhado. Eles sao uteis para o desenvolvimento, mas lembre-se de desliga-los para sites em producao, uma vez que podem comprometer a seguranca do seu site. Estas opcoes sao usadas para gerar um arquivo zope.conf apropriado para a instancia. Acesse pagina da recipe na Cheese Shop para maiores detalhes sobre as opcoes disponiveis.Em seguida, nos especificamos quais eggs serao disponibilizados para o Zope. Isto faz referencia ao "global" eggs da secao [buildout], bem como ao proprio Plone. Voce pode incluir eggs adicionais aqui, porem geralmente e mais facil especifica-los no comeco do arquivo, de modo que eles sejam referenciados pela variavel ${buildout:eggs}.Arquivos configure.zcml do Zope 3 nao sao carregados automaticamente por eggs ou pacotes que nao suportem z3c.autoinclude e que nao estao no namespace Products. Para que pacotes comuns carreguem arquivos ZCML, nos podemos fazer o buildout criar uma ZCML slug listando os pacotes sob a opcao zcml:zcml = my.package my.package-overridesAqui assume-se que my.package foi referenciado anteriormente no buildout. Isto carregaria os arquivos tanto o configure.zcml principal quanto o overrides.zcml deste pacote. A necessidade dessa entrada tende a desaparecer na medida que o uso do z3c.autoinclude se torna generalizado.Finalmente, nos listamos os diretorios que contenham os produtos no formato Zope 2 - identico a pasta Products/ de uma instancia convencional. Perceba que o diretorio products/ na pasta do buildout principal vem primeiro, seguido pelos produtos baixados definidos na secao [productdistros].Quando a recipe e executada, o diretorio home da instancia