Descubra as opções de configuração / compilação de um pacote no Gentoo

7

Em uma caixa do Gentoo Linux que não estou administrando (e à qual não tenho acesso root), como posso descobrir as opções que foram usadas para compilar o pacote?

(Por favor, note que eu nunca trabalhei com o Gentoo antes, mas tenho um bom conhecimento das distribuições baseadas no Debian)

    
por andreas-h 24.07.2012 / 16:14

3 respostas

1

Se o gerenciador de pacotes do portage for usado (provavelmente é), os sinalizadores da CPU podem ser encontrados em /etc/make.conf as CFLAGS e CXXFLAGS . Observe que ebuilds individuais podem filtrar determinados sinalizadores, portanto, os sinalizadores que você vê em /etc/make.conf podem não ser os que foram usados para compilar o pacote. Olhando para o ebuild (em /usr/portage/<category name>/<program name>/ ) pode dizer se esse é o caso.

Isso pressupõe, é claro, que o conteúdo de /etc/make.conf não tenha sido alterado após a compilação do pacote.

    
por 24.07.2012 / 18:46
8

Por favor, esteja ciente de que os atuais flags de USE e outras configurações definidas em /etc/make.conf podem ter mudado desde que o pacote foi instalado. Uma maneira mais confiável de verificar as opções de configuração e compilação é verificar var/db/pkg .

Exemplo para o apache-2.2.22:

$ cat /var/db/pkg/www-servers/apache-2.2.22-r1/CFLAGS
-mtune=native -O2 -pipe -g
    
por 24.07.2012 / 19:08
2

É importante notar que make.conf não é confiável, para verificar como um pacote é compilado. Na verdade, é apenas um dos arquivos de configuração suplementares em toda uma lista.

Do man make.conf :

USE_ORDER = "env:pkg:conf:defaults:pkginternal:repo:env.d"
Determines the precedence of layers in the incremental stacking of the USE 
variable. Precedence decreases from left to right such that env overrides 
pkg, pkg overrides conf, and so forth.

Portanto, a prioridade é tratada como:

  1. Ambiente do shell ao chamar emerge
  2. Configuração de USE específica do pacote em /etc/portage/package.use
  3. make.conf
  4. Padrões do perfil selecionado
  5. Padrões definidos no pacote .ebuild file
  6. Padrões de distribuição
  7. Configurações definidas em /etc/env.d

Portanto, basicamente, um sinalizador USE pode ser definido sem ser mencionado em make.conf . Da mesma forma para CFLAGS (embora sua ordem de processamento seja fixa, mas funciona de maneira semelhante)

Da mesma forma, os sinalizadores USE podem ser mascarados em um perfil sem nenhum no ebuild ou qualquer outra fonte mencionada acima. Em suma, com base em arquivos de configuração, você não pode.

Se você deseja conhecer as configurações globais resultantes usadas atualmente pelo sistema, use emerge --info . Isso deve lhe dar uma enorme quantidade de detalhes. Geralmente CFLAGS não são frequentemente substituídos por um único pacote, então você pode considerar essa saída definitiva.

Se você quiser saber os sinalizadores USE de um pacote específico que está instalado, você pode usar equery u <package> , desde que o pacote gentoolkit esteja instalado.

    
por 30.01.2015 / 21:00

Tags