pkg_add Ambiente no FreeBSD

3

Suponha que você queira adicionar um pacote foo mas quando invocar pkg_add via:

pkg_add -r foo

você recebe um erro:

Error: Unable to get ftp://.../foo.tbz: File unavailable ...

Não é um problema, pois, de acordo com a página man do pkg_add, tudo o que você precisa fazer é definir a variável de ambiente PACKAGEROOT para o diretório raiz de foo:

PACKAGEROOT=ftp://root/to/package

Não tão rápido! é um problema - não funciona! Se você não exportar PACKAGEROOT, então o pkg_add usa seu local padrão e exportar o PACKAGEROOT dá a você o erro:

pkg_add: can't stat package file 'foo'

O mesmo acontece ao definir a variável PACKAGESITE.

Agora, resolvi esse problema:

pkg_add -r ftp://my/package/root/foo.tbz

funciona bem. No entanto, tenho duas perguntas:

  1. O que exatamente significa can't stat package file 'foo' ?
  2. Por que isso não funciona como anunciado?

Para os interessados, experimentei esse problema ao tentar instalar o Enlightenment. A versão do ports é antiga e eu não queria compilar de qualquer forma, já que demora um pouco. Eu configurei PACKAGEROOT e PACKAGESITE independentemente através de diferentes sessões de terminal:

export PACKAGEROOT=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.0-release/x11-wm

e

export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.0-release/x11-wm/

mas não funcionou.

    
por gvkv 06.12.2009 / 23:20

3 respostas

1

A diferença entre o PACKAGEROOT e o PACKAGESITE é que o PACKAGEROOT retém a lógica do diretório original e o PACKAGESITE não. Estes estão corretos:

PACKAGEROOT=ftp://ftp.freebsd.org

PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.0-release/Latest/

Em resposta às suas perguntas:

  1. Isso significa que o pkg_add não conseguiu encontrar o arquivo. Você está vendo isso apenas com o PACKAGESITE porque definir essa variável substitui o processo de pesquisa, o que normalmente produziria "Não foi possível encontrar o pacote foo".

  2. Sim. Quando você tem PACKAGESITE especificado, todo "pkg_add -r foo" é tentar abrir $ PACKAGESITE / foo.tbz. Você vê o problema? Vá para o seu valor PACKAGESITE e procure por enlightenment.tbz.

    Você não encontrou. O mais próximo que você encontrou foi iluminação-0.16.999.042_3,2.tbz. Então pkg_add -r "enlightenment-0.16.999.042_3,2" funcionaria. Altere seu PACKAGESITE para ftp://ftp.freebsd.org/ pub / FreeBSD / ports / i386 / packages-8.0-release / Latest / e funcionará.

    Esta é a razão pela qual o subdiretório Latest / existe.

por 15.12.2009 / 00:54
0

Só por curiosidade, você realmente leu link ou simplesmente folheou através dele? Funciona exatamente como descrito.

tente

export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/

Além disso, "não é possível declarar o pacote 'foo'" basicamente significa que ele não pode encontrar esse arquivo (ele tentou stat () o arquivo e falhou. consulte man 2 stat para obter mais detalhes)

    
por 07.12.2009 / 03:55
0

Com o 8.2-release, descobri que o problema é que eu não estava usando o BASH como meu shell de root. Eu adicionei a linha 'export PACKAGEROOT' ao meu ~ / .profile, mas ela não entrou em vigor até que eu usei o bash como meu shell. Talvez com o seu shell de root como / bin / csh é por isso que eles atribuem a variável e então a exportam como uma instrução separada em seu ~ / .profile. Eu não testei para saber com certeza

    
por 25.02.2011 / 11:17