Como eu aplico vários perfis de uma só vez no Gentoo?

2

Estou instalando o KDE em um sistema Gentoo Linux Hardened. O wiki oficial do Gentoo diz que a maneira recomendada é aplicar o perfil da área de trabalho do KDE, emitir emerge -NDu --with-bdeps=y @world e instalar o pacote kdebase-meta . No entanto, estou no perfil Hardened e, aparentemente, só posso ter um perfil selecionado de uma só vez.

Até agora eu tenho tido sucesso com a aplicação manual dos sinalizadores de USE globais e por pacote do perfil do KDE em meus arquivos de configuração do Portage (/etc/portage/make.conf, /etc/portage/package.use e outros), mas temo que esse truque possa ser difícil de manter a longo prazo, já que a equipe de desenvolvimento do Gentoo modifica o perfil. Toda vez que eu obtiver uma atualização do Portage, precisarei reaplicar os flags e a configuração USE do desktop e desktop/kde profiles para o caso de terem sido alterados.

Existe alguma outra maneira de ter múltiplos perfis ativos do Portage de uma só vez no Gentoo Linux?

    
por RAKK 31.12.2015 / 01:02

2 respostas

1

Problema

Como você descobriu, o Gentoo permite apenas uma configuração de perfil de cada vez. Como você pode ver no meu eselect profile list :

 [1]   default/linux/amd64/13.0
 [2]   default/linux/amd64/13.0/selinux
 [3]   default/linux/amd64/13.0/desktop
 [4]   default/linux/amd64/13.0/desktop/gnome
 [5]   default/linux/amd64/13.0/desktop/gnome/systemd
 [6]   default/linux/amd64/13.0/desktop/kde *
 [7]   default/linux/amd64/13.0/desktop/kde/systemd
 [8]   default/linux/amd64/13.0/desktop/plasma
 [9]   default/linux/amd64/13.0/desktop/plasma/systemd
 [10]  default/linux/amd64/13.0/developer
 [11]  default/linux/amd64/13.0/no-multilib
 [12]  default/linux/amd64/13.0/systemd
 [13]  default/linux/amd64/13.0/x32
 [14]  hardened/linux/amd64
 [15]  hardened/linux/amd64/selinux
 [16]  hardened/linux/amd64/no-multilib
 [17]  hardened/linux/amd64/no-multilib/selinux
 [18]  hardened/linux/amd64/x32
 [19]  hardened/linux/musl/amd64
 [20]  hardened/linux/musl/amd64/x32
 [21]  default/linux/uclibc/amd64
 [22]  hardened/linux/uclibc/amd64

Solução

Tendo definido o seu perfil para hardened (14 na minha lista), agora precisamos examinar os arquivos para o perfil do KDE: (note que isso leva um pouco de escrita sem um editor de texto):

  1. cd /usr/portage/profiles/targets/desktop/kde
  2. nano -w make.defaults
  3. nano -w parent
  4. Agora você deve ver os arquivos em /usr/portage/profiles/targets/desktop/ .
  5. nano -w make.defaults

Usando o rascunho, copie os USE Flags da Etapa 2 e abrir parent na Etapa 3 revela .. , o que significa que viajamos um diretório para cima. Copie os USE Flags da Etapa 5. Como etapa final, emita emerge -v app-portage/ufed && ufed . Agora você pode definir os USE Flags copiados em /etc/portage/make.conf . Você pode querer repetir o processo para:

  • /usr/portage/profiles/desktop/kde/package.use
  • /usr/portage/profiles/desktop/package.use

colocando os pacotes listados nesses dois arquivos em /etc/portage/package.use .

Durante o Syncs, os arquivos em /etc/portage não serão sobrescritos e os USE Flags em /etc/portage/make.conf imitarão o comportamento que você está tentando alcançar. Consulte a Seção de Arquivos do Portage no Manual para obter mais informações. Em essência, suas substituições do Portage em /etc/portage serão adicionadas ao seu perfil protegido, pois o Portage usa sua configuração antes de ler seu perfil selecionado. Eu sei que é uma dor como o USE Flags nos perfis package.use arquivos podem ser atualizados com cada sincronização, então você precisa ver se algum deles é adicionado após cada sincronização. Geralmente, os arquivos de perfil não são atualizados com muita frequência.

    
por 12.02.2016 / 07:13
0

Use em cascata

Os perfis permitem entrar em cascata , não é necessário definir manualmente as flags de utilização:

All profiles are cascading/stackable profiles composed by several subprofiles...

A mesma página também contém um capítulo específico para responder pela demanda nestas perguntas:

Combining profiles

If there isn't a profile in the Gentoo repository that meets your exact requirements, you can try combining multiple profiles into a single custom profile. An example of this would be combining a hardened profile with a desktop systemd profile, such as default/linux/amd64/17.0/desktop/plasma/systemd and default/linux/amd64/17.0/hardened. It is expected that you already have a custom repository set up.

A wikipage leva você a mais links sobre como configurar um repositório e, finalmente, criar o perfil.

HowTo

Aqui está um resumo de como eu fiz isso para uma combinação de no-multilib/plasma/systemd (ajuste às suas necessidades):

1. Crie uma estrutura de diretório para o repositório

mkdir -p /usr/portage/local/{metadata,profiles/default/linux/amd64/17.0/no-multilib/plasma/systemd}

2. Defina os pais

Edite /usr/portage/local/profiles/default/linux/amd64/17.0/no-multilib/plasma/systemd/parent para conter algo como:

/usr/portage/profiles/default/linux/amd64/17.0/desktop/plasma/systemd
/usr/portage/profiles/default/linux/amd64/17.0/no-multilib

Observe que a documentação usa caminhos relativos, mas achei o nível de recursões negativas ( ../../.. ) um pouco confuso. Caminhos absolutos funcionam tão bem, a menos que você planeje mover /usr/portage pelo sistema.

Descobri que uma linha inferior tem preferência. Portanto, se um sinalizador ou configuração estiver definido / não definido no primeiro perfil e o contrário ocorrer em uma linha inferior, a configuração do perfil da linha inferior será aplicada. Por exemplo, plasma profile permite algumas configurações de multi-lib . Se eu onde definir a linha multi-lib acima do plasma , alguns pacotes ainda serão tentados para serem compilados como multi-lib ( dando todos os tipos de falhas de compilação engraçadas). Você pode precisar brincar com a ordem dessas linhas.

3. Definir metadados do repositório

Edite /usr/portage/local/metadata/layout.conf . Sincronização automática diz a emerge --sync para não sincronizar este repositório.

masters = gentoo
auto-sync = false

Defina o nome amigável. Isso será prefixado para todas as entradas eselect profile list deste repo. /usr/portage/local/profiles/repo_name :

local

E /usr/portage/local/profiles/profiles.desc dirá eselect onde procurar por perfis. O primeiro campo é arco , segundo nome do perfil e terceiro campo estável ou experimental :

amd64 default/linux/amd64/17.0/no-multilib/plasma/systemd stable

4. Tornar o portage ciente deste novo repositório

Crie e edite /etc/portage/repos.conf/local.conf para conter:

[local]
location = /usr/portage/local

5. Definir o perfil e os dedos cruzados

~# eselect profile list
[...]
[55]  local:default/linux/amd64/17.0/no-multilib/plasma/systemd (stable)
~# eselect profile set 55
~# emerge --update --newuse --deep --ask --verbose @world

Manutenção amigável

Embora isso seja um pouco trabalhoso, é muito fácil de manter. Profileflags e configuração de perfil sempre mantêm em sincronia com a árvore principal. Mesmo que de vez em quando seja necessário atualizar a versão do perfil, fica sem muita dificuldade também. Por exemplo, se houver uma nova versão de perfil da árvore do Gentoo:

~# cd /usr/portage/local/profiles/default/linux/amd64
~# cp -av 17.0 18.0
~# vi 18.0/no-multilib/plasma/systemd/parent
/usr/portage/profiles/default/linux/amd64/18.0/desktop/plasma/systemd
/usr/portage/profiles/default/linux/amd64/18.0/no-multilib
~# vi /usr/portage/local/profiles/profiles.desc
amd64 default/linux/amd64/18.0/no-multilib/plasma/systemd stable
~# eselect [...]
    
por 05.06.2018 / 17:20

Tags