Como eu construo juju-core a partir da fonte?

2

Estou interessado em compilar e executar o juju-core a partir do código-fonte. Como posso fazer isso? Quais são os riscos envolvidos?

    
por Marco Ceppi 28.05.2013 / 16:30

1 resposta

4

Antes de entrar nisso, de acordo com o README em juju-core:

  

Observe que o uso de --upload-tools força as instâncias a serem executadas com o mesmo   série e arquitetura do seu sistema de desenvolvimento. Atualmente a única   arquitetura suportada que pode ser implementada é amd64, então você deve desenvolver   Máquinas de 64 bits.

Se você não tem uma máquina amd64, ou está tentando compilar para i386, ARM, etc, essas etapas provavelmente não funcionarão.

Dependências de configuração

Os seguintes pacotes são necessários para construir o juju-core:

sudo apt-get install build-essential bzr zip git-core mercurial golang-go

O pacote golang-go perguntará sobre as estatísticas de uso anônimas e se você deseja ativar. Selecione Sim ou Não dependendo do seu interesse.

Após a instalação, você precisará criar um GOPATH , que é usado para baixar e compilar dependências. Você pode definir isso para qualquer diretório escolhido, por exemplo, ~/go . Você pode ler mais sobre o gopath com go help gopath

export GOPATH=${HOME}/go
mkdir -p $GOPATH

Em seguida, prefixar ou acrescentar GOPATH ao seu PATH . É recomendado que você prefixar seu PATH , pois ele fornecerá a sua versão compilada por padrão. Você ainda poderá acessar outras versões instaladas do Juju, mas terá que usar um caminho absoluto para acessá-las. Se você não deseja ter GOPATH em seu caminho, pode ignorar essa etapa.

PATH="$GOPATH/bin:$PATH"

Building & amp; Instalando

Uma vez que seu ambiente esteja configurado, o build juju-core é um processo relativamente direto. Você primeiro precisará obter o código mais recente para o juju-core de uma maneira que saiba o que fazer com ele. Basta executar o seguinte comando para buscar a fonte mais recente:

go get -v launchpad.net/juju-core/...

Isto irá buscar o juju-core e a fonte de todas as dependências. Finalmente, para construir o juju-core run:

go install -v launchpad.net/juju-core/...

Isso deve levar alguns segundos para ser concluído. Uma vez terminado, você pode verificar o juju compilado corretamente executando which juju se você prefixar seu PATH com GOPATH . Se não, você pode verificar se está instalado com $GOPATH/bin/juju version , o que deve reportar a versão compilada atual do juju-core.

Usando

Uma vez que o juju-core é construído e você pode usá-lo como quiser, há algumas advertências a serem feitas. Primeiro, sempre que você executar um bootstrap, você precisará incluir o --upload-tools flag, caso contrário, você terminará tendo a versão 'liberada' das ferramentas juju-core instaladas ao invés das recém compiladas.

juju bootstrap -e <your_environment> --upload-tools

Além disso, o juju-core não é compatível com versões de juju implantadas anteriormente, com menos de 0.7 (a versão python do juju). Você precisará criar novas definições de environments.yaml e usar diferentes control-bucket keys. Se você deseja manter dois arquivos de ambiente separados, é possível especificar uma variável de ambiente JUJU_HOME :

export JUJU_HOME=~/.juju-core
mkdir -p $JUJU_HOME
juju init -w

Isso criará um novo arquivo environments.yaml padrão em ~/.juju-core/ , onde você poderá manter seus ambientes juju-core separados das versões anteriores do juju.

Remoção

Se você deseja remover a versão compilada do juju-core, pode fazê-lo a qualquer momento executando rm -rf $GOPATH . Isso deve devolver o seu sistema a um estado anterior ao momento em que você teve sua versão compilada do juju-core.

    
por Marco Ceppi 28.05.2013 / 16:30