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.