Portage do Gentoo Linux USE flags: qual é a diferença entre remover um padrão vs. não ter um padrão, como os padrões são comparados, no-multilib?

2

Gentoo Linux portage depende de USE flags para customizar opções de compilação para o software. Veja um exemplo mostrando como organizar sinalizadores USE em um arquivo make.conf :

# ************ USE **************
# ******** profile 'kde' ********
MYPROFILE="apache2 mysql"
HW="3dnow -bluetooth directfb fbcon hddtemp lm_sensors mmx nvidia smp svga xcomposite xvmc"
SYSTEM="caps -cups curl -fortran java nsplugin -oss syslog"
NET="-ipv6 -isdnlog -ldap ppp wifi"
CMDL="bash-completion gpm offensive vim-syntax"
KDE="htmlhandbook plasma semantic-desktop"
GNOME_DEPS="gstreamer -gtk"
DEV="tidy vhosts"
MMEDIA="aalib cdda cddb css dvb exif ffmpeg fontconfig gd gimp gphoto2 imagemagick libcaca lame matroska mplayer musicbrainz quicktime theora v4l v4l2 xine xpm xscreensaver"

USE="${MYPROFILE} ${HW} ${SYSTEM} ${NET} ${CMDL} ${GNOME_DEPS} ${KDE} ${DEV} ${MMEDIA}"

E esta configuração destina-se ao upstage (devido à precedência) do 13.0 cumulativo profile contendo os flags padrão por exemplo:

(This example is the sum of the settings in base, default/linux,
 default/linux/x86 and default/linux/x86/13.0/)
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"
  • Qual é a diferença entre remover o suporte para um recurso que aparece nos padrões usando -useflag no arquivo make.conf versus não ter um recurso no os padrões cumulativos de todo e não ter nada relacionado a ele ou no arquivo make.conf?
  • Um aplicativo originado do perfil padrão pode ser qualificado em relação a uma aplicação padrão compilada em um dos padrões Distribuições Linux? (é o perfil padrão perto de algum "padrão" ou já é um subconjunto praticamente personalizado?)
  • Atualmente, é realmente um problema selecionar um perfil sem multililab para toda a compilação?
por jus cogens prime 08.01.2014 / 22:23

1 resposta

3

What is the difference between removing support for a feature that appears in the defaults by using -useflag in the make.conf file vs. not having a feature in the cumulative defaults at all and having nothing related to it either in the make.conf file?

É mais complexo do que isso, a ordem do sinalizador USE conforme visto pelo Portage é determinada por USE_ORDER = "env:pkg:conf:defaults:pkginternal:repo:env.d" (o padrão pode ser substituído em /etc/{,portage/}make.conf ; consulte man make.conf para obter mais detalhes), o que significa que todos esses locais substituir o que é definido nos últimos locais mencionados nessa variável.

Para simplificar, sua pergunta é sobre pkginternal e repo aqui; respectivamente os flags de USE do pacote interno e o repositório, você notará aqui que o pacote pode sobrescrever os padrões no repositório.

Isso acontece quando um pacote usa explicitamente a sintaxe +flag ou -flag , caso em que isso é usado em consideração posterior; se, no entanto, apenas flag sem sufixo for usado, a configuração padrão que vem do repositório (ou env.d) será usada.

Se não houver nenhuma configuração padrão, o padrão é desativado; isso faz sentido, já que os perfis permitem coisas tão bem quanto o fato de ter todos os recursos ativados por padrão permitiria demais.

Se você fizer uma bolha (passando adiante conf , que é /etc/{,portage/}make.conf ); o mesmo continua a ser aplicado, uma configuração padrão não existente em qualquer lugar significa que o sinalizador USE está desativado.

Can an application sourced from the default profile be qualified in relation to a standard application compiled in one of the standard Linux distributions? (is the default profile close to some "standard" or is it already a pretty much customized subset?)

Em uma distribuição Linux padrão, você receberia um pacote com muitos recursos habilitados; no entanto, no Gentoo você pode escolher quais recursos você deseja ativar. As mais sadias bandeiras de USE que a maioria deseja são on-line; mas além disso, suporte para diferentes tipos de formatos, protocolos, recursos ... e assim por diante, você precisa especificamente ativá-lo.

Para ter uma ideia melhor sobre isso; Dê uma olhada nos flags USE em emerge -pv media-video/vlc . Para obter uma lista descrita mais detalhada disso; do emerge gentoolkit e, em seguida, equery u media-video/vlc .

Em uma nota lateral, você encontrará alguns sinalizadores de USE relacionados à área de trabalho habilitados no perfil da área de trabalho; bem como as opções de USE relacionadas ao servidor ativadas no perfil do servidor, e assim por diante ...

Is it really an issue nowadays to select a no-multilib profile for the whole build?

Nenhum comentário sobre isso, você pode tentar pedir pro e contras nos fóruns; Eu corro um perfil multilib para estar no lado seguro. Eu diria que isso só faz sentido se você executar um sistema no qual saiba que não precisará de aplicativos de 32 bits; você pode notar pela lista daqueles que existem que não há nenhum desktop ou servidor específico presente:

 $ find /usr/portage/profiles/ -name '*no-multilib*'
/usr/portage/profiles/hardened/linux/amd64/no-multilib
/usr/portage/profiles/arch/amd64/no-multilib
/usr/portage/profiles/default/linux/amd64/10.0/no-multilib
/usr/portage/profiles/default/linux/amd64/13.0/no-multilib

Assim, escolher esse perfil também faria com que você perdesse os padrões que o desktop / servidor pode fornecer; no entanto, a quantidade de padrões é bastante limitada, você pode muito bem replicá-los em seu make.conf se realmente acredita que precisa de um perfil sem multilib para o seu fluxo de trabalho.

    
por 05.02.2014 / 10:17

Tags