A mensagem de erro crítico (abaixo) me confundiu um pouco até que eu passei exatamente pelo que o cowbuilder
(e a ferramenta pbuilder
subjacente) está tentando fazer.
Package cowdancer is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
É uma mensagem confusa porque aparece apenas ao executar cowbuilder --create
. Em outras palavras, quando invoco esse comando, ele reclama da falta de um pacote que eu já instalei . Estranho.
Aqui está o elo perdido: cowbuilder
- e por extensão, pbuilder
- estão tentando criar um ambiente chroot limpo e mínimo, dentro do qual não há pacotes extras instalados. Mesmo que o cowbuilder
já esteja instalado fora do chroot, ele parece querer ser instalado dentro do chroot também. Dentro e fora do chroot existem mundos totalmente diferentes. Fora do chroot (o ambiente regular), o seu arquivo /etc/apt/sources.list
é o rei. Mas por dentro, é um conjunto diferente de regras. O ambiente pbuilder
padrão inclui apenas os repositórios mais críticos e mínimos necessários para uma instalação de base / limpeza.
A resposta aceita fala sobre adicionar o argumento "COMPONENTES" e especificar alguns repositórios adicionais. Não funcionou para mim. Eu tentei adicionar o valor COMPONENTS ao arquivo /etc/pbuilderrc
, meu arquivo .pbuilderrc
local e também fazer isso na linha de comando como uma variável de ambiente. Sem sorte. Eu encontrei algumas referências que mencionaram como o argumento COMPONENTS não é suportado para cowbuilder
.
Por fim, me deparei com post de blog que falamos sobre adicionar uma variável chamada OTHERMIRROR
ao arquivo /etc/pbuilderrc
. Para mim, eu simplesmente adicionei o seguinte:
OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu saucy main restricted universe multiverse | deb http://archive.ubuntu.com/ubuntu saucy-backports main restricted universe multiverse | deb http://archive.ubuntu.com/ubuntu saucy-security main restricted universe multiverse | deb http://archive.ubuntu.com/ubuntu saucy-updates main restricted universe multiverse"
[Observe que você pode atualizar / alterar saucy
para o que quiser (por exemplo, trusty
, raring
, precise
ou mesmo wheezy
e sid
, desde que você tenha os espelhos debian apropriados, etc.).
Depois, simplesmente executei o seguinte na linha de comando e tudo foi criado com sucesso e consegui prosseguir:
sudo cowbuilder --create # defaults to using current distribution
Obviamente, você pode alterar as distribuições usando o argumento de linha de comando "--distribution". Leva alguns minutos para estabelecer o ambiente inicial, mas uma vez criado, você pode atualizar facilmente os pacotes, etc. usando cowbuilder
.
A página cowbuilder no site do Debian fala sobre a criação de um criador de vaqueiros específico do Ubuntu. Ele menciona que cowdancer
foi movido para o repositório universe
. Eles fazem referência ao seguinte comando para construir um ambiente de cowbuilder no Ubuntu:
DIST=trusty sudo cowbuilder --create --distribution trusty --components "main universe"
A --components="main universe"
flag é a peça fundamental para garantir que o processo de criação tenha acesso a todos os repositórios necessários.