Difference between pages "Install/pt-br/Configuring" and "FLOP:Kerberos V implementations"

From Funtoo
< Install(Difference between pages)
Jump to navigation Jump to search
 
(FLOP on krb5 impls)
 
Line 1: Line 1:
=== Configurando seu sistema ===
{{FLOP
Como é esperado de uma distribuição Linux, Funtoo Linux tem seu compartilhamento de arquivos de configuração. O arquivo que absolutamente requer que você edite de forma a assegurar que o Funtoo Linux inicialize com sucesso é <code>/etc/fstab</code>. Os outros são opcionais.  
|Created on=2015/02/06
|Summary=Funtoo supports two binary-incompatible Kerberos V implementations: MIT and Heimdal. Ebuilds supporting both need to properly depend on them to ensure rebuilds.
|Author=Mgorny,
|FLOP Status=Pending Review
|Reference Bug=FL-2093
}}
== Overview ==
There are currently two Kerberos V implementations in Funtoo:
* MIT Kerberos V ({{Package|app-crypt/mit-krb5}}),
* Heimdal ({{Package|app-crypt/heimdal}}).


==== Utilizando o Nano ====
Both implementations use the same library names and a partially compatible API. However, they are binary incompatible and use different (non-colliding) SONAMEs.


O editor padrão incluso no ambiente chroot é chamado de <code>nano</code>. Para editar um dos arquivos abaixo, chame o nano como a seguir:
Many of Kerberos V applications support both implementations. In this case, the relevant packages depend on {{Package|virtual/krb5}}. Some applications support only one of the implementations, depending on it directly.


<console>
(chroot) # ##i##nano /etc/fstab
</console>


Quando estiver no editor, você pode utilizar as teclas de cetas para mover o cursor, e teclas comuns como backspace e delete funcionarão como esperado. Para salvar o arquivo, pressione Control-X, e responda <code>y</code> quando solicitado para salvar o buffer modificado se você gostaria de salvar suas alterações.
== Issues with the current solution ==
Virtuals are based on assumption that the providers can be switched at runtime. However, since the krb5 implementations are binary-incompatible, switching them at runtime is incorrect and results in the reverse dependencies being broken. Instead, implementation switch needs to be followed by automatic reverse dependency rebuild.


==== Configuration Files ====
Furthermore, the lack of explicit implementation control will be an issue if installing both implementations in parallel becomes possible in the future. This could be desired since there are both packages supporting only mit-krb5, as well as packages supporting only heimdal.


Aqui estão uma lista completa de arquivos que você pode queres editar, dependendo de suas necessidades:
{{TableStart}}
<tr class="active"><th>Arquivo</th>
<th>Preciso alter-á-lo?</th>
<th>Descrição</th>
</tr><tr  class="danger">
<td><code>/etc/fstab</code></td>
<td>'''SIM - exigido'''</td>
<td>Pontos de montagem para todos os filesystems a serem utilizados no momento do boot. Esse arquivo deve refletir sua configuação de partição de disco. Vamos lhe guiar através da modificação desse arquivo abaixo.</td>
</tr><tr>
<td><code>/etc/localtime</code></td>
<td>''Talvez - recomendável''</td>
<td>Seu fuso horário (timezone), que será padrão ao UTC se não definido. Esse deve ser um link simbólico para algo localizado sob /usr/share/zoneinfo (ex. /usr/share/zoneinfo/America/Montreal) </td>
</tr><tr>
<td><code>/etc/make.conf</code> (symlink) - also known as:<br/><code>/etc/portage/make.conf</code></td>
<td>''Talvêz - recomendado''</td>
<td>Parâmetros utilizado pelo gcc (compilador), pelo portage, e pelo make. É uma boa ideia definir o MAKEOPTS. Isso é coberto mais para frente nessa documentação.</td>
</tr><tr>
<td><code>/etc/conf.d/hostname</code></td>
<td>''Talvez - recomendado''</td>
<td>Utilizado para definir o hostname do sistema. Defina a variável <code>hostname</code> como nome fully-qualified (com pontos, ex. <code>foo.funtoo.org</code>) se você tiver um. Caso contrário, defina para o hostname do sistema local (sem pontos, ex. <code>foo</code>). Padrões para <code>localhost</code> se não definido.</td>
</tr><tr>
<td><code>/etc/hosts</code></td>
<td>''Não''</td>
<td> Você não precisa mais definir manual o hostname nesse arquivo. Esse arquivo é gerado manualmente pelo <code>/etc/init.d/hostname</code>.</td>
</tr><tr>
<td><code>/etc/conf.d/keymaps</code></td>
<td>Opcional</td>
<td>Arquivo de configuração de mapeamento do teclado (fara console pseudo terminais). Configure se você não possui um teclado no padrão americano (non-US). Veja [[Pt-br/Funtoo_Linux_Localization|Localização do Funtoo Linux]].</td>
</tr><tr>
<td><code>/etc/conf.d/hwclock</code></td>
<td>Opcional</td>
<td>Como o tempo de clock do hardware mantido pela bateria (battery-backed) do sistema é interpretado [UTC ou hora local (local time)]. Linux utiliza o clock do hardware mantido pela bateria para inicializar a hora do sistema quando o sistema é inicializado.</td>
</tr><tr>
<td><code>/etc/conf.d/modules</code></td>
<td>Opcional</td>
<td>Módulos do Kernel para carregar automaticamente na inicialização do sistema. Tipicamente não exigido. Veja [[Additional Kernel Resources]] para mais informações.</td>
</tr><tr>
<td><code>/etc/conf.d/consolefont</code></td>
<td>Opcional</td>
<td>Lhe permite especificar a font padrão do console. Para aplicar essa font, habilite o serviço consolefont ao executar rc-update add consolefont.</td>
</tr><tr>
<td><code>profiles</code></td>
<td>Opcional</td>
<td>Algumas configurações úteis para o portage que podem ajudar a acelerar a configuração inicial.</td>
</tr>
{{TableEnd}}


Se você estiver instalando uma versão em Inglês do Funtoo Linux, você está com sorte desde que muitos dos arquivos de configuração pode ser utilizadas como é. Se estiver instalando para outra localidade, não se preocupe. Vamos lhe orientar através dos passos para a configuração necessária na página [[Pt-br/Funtoo_Linux_Localization|Localização do Funtoo Linux]], e se necessário, sempre há muito suporte amigável e útil. (Veja [[#Community portal|Community]])
== Suggested solution ==
The simplest solution seems to be introducing a USE flag in all reverse dependencies that support both mit-krb5 and heimdal. The flag would decide which of the two implementation is used.


Vamos seguir em frente e ver o que temos que fazer. Utilize <code>nano -w <name_of_file></code> para editar os arquivos -- o "<code>-w</code>" desabilita empacotamento de palavras (word-wrapping), que útil quando editar arquivos de configurações. Você pode copiar e colar a partir dos exemplos.
An example reverse dependency would look like:
{{File|name=example-1.ebuild|body=
IUSE="heimdal"
RDEPEND="
    heimdal? ( app-crypt/heimdal:0= )
    !heimdal? ( app-crypt/mit-krb5:0= )"
}}


{{fancywarning|É importante editar seu arquivo <code>/etc/fstab</code> antes de você reinicializar! Você precisará modificar ambas as colunas  "fs" e "type" para equiparar as configurações para as suas partições e filesystems que você criou com o <code>gdisk</code> ou <code>fdisk</code>. Pulando esses podem impedir que o Funtoo Linux de inicializar com sucesso.}}
If Kerberos V support is optional, the flags would be combined with the ''kerberos'' feature flag:
{{File|name=example-1.ebuild|body=
IUSE="heimdal kerberos"
RDEPEND="
    kerberos? (
        heimdal? ( app-crypt/heimdal:0= )
        !heimdal? ( app-crypt/mit-krb5:0= )
    )"
}}


==== /etc/fstab ====
This implementation implies that:
 
# user is given an explicit choice of Kerberos V implementation.
<code>/etc/fstab</code> é utilizado pelo comando <code>mount</code> que é executado quando seu sistema inicializa. Afirmações desse arquivo informam <code>mount</code> a respeito das partições a serem montadas e como elas são montadas. No intuito que o sistema inicialize devidamente, você deve editar <code>/etc/fstab</code> e assegurar de que isso reflita a configuração de partições que você utilizou anteriormente:
# Switch of a Kerberos V implementation would cause a rebuild through ''--changed-use'', therefore resolving breakage caused by ABI change.
 
{{FLOPFooter}}
<console>
(chroot) # ##i##nano -w /etc/fstab
</console>
 
<pre>
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
#
# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#
# See the manpage fstab(5) for more information.
#
# <fs>     <mountpoint>  <type>  <opts>        <dump/pass>
 
/dev/sda1    /boot        ext2    noauto,noatime 1 2
/dev/sda2    none          swap    sw            0 0
/dev/sda3    /            ext4    noatime        0 1
#/dev/cdrom  /mnt/cdrom    auto    noauto,ro      0 0
</pre>
 
{{Note|Atualmente, noso <code>/etc/fstab</code> padrão tem o filesystem root como <code>/dev/sda4</code> e a partição swap como <code>/dev/sda3</code>. Esses precisarão ser alterados para <code>/dev/sda3</code> e <code>/dev/sda2</code>, respectivamente.}}
 
{{Note|Se você estiver utilizando UEFI para inicializar (boot), altere a linha <code>/dev/sda1</code> então ela diz <code>vfat</code> ao invés de <code>ext2</code>. Similarmente, certifique-se de que a linha <code>/dev/sda3</code> especifica ou <code>xfs</code> ou <code>ext4</code>, dependendo de qual filesystem você escolher em filesystem-creation time.}}
 
==== /etc/localtime ====
 
<code>/etc/localtime</code> é utilizado para especificar o fuso horário (timezone) em que sua sua máquina está, e os padrões para o UTC. Se você quiser que seu sistema Funtoo Linux utilize fuso horário, você deve substituir <code>/etc/localtime</code> por um link simbólico para o fuso horário que você deseja utilizar.
 
<console>
(chroot) # ##i##ln -sf /usr/share/zoneinfo/MST7MDT /etc/localtime
</console>
 
O comando acima define o fuso horário para montar o horário padrão (com horário de verão). Digite <code>ls /usr/share/zoneinfo</code> para verificar quais fuso horários estão disponíveis. Há também subdiretórios contendo fuso horários descritos por local.
 
==== /etc/make.conf ====
 
MAKEOPTS pode ser utilizado para definir quantas compilações paralelas devem ocorrer quando você compilar um pacote, que pode acelerar compilação significativamente. uma regra de thumb é o número de CPUs (ou CPU threads) em seu sistema mais um (plus one). Se por exemplo você possui um processador dual core sem [[wikipedia:Hyper-threading|hyper-threading]], então você definiria MAKEOPTS para 3:
 
<pre>
MAKEOPTS="-j3"
</pre>
 
Se você não estiver certo sobre quantos processadores/threads você possui, então utilize nproc para ajudá-lo.
<console>
(chroot) # ##i##nproc
16
</console>
 
Defina MAKEOPTS para esse número mais um:
 
<pre>
MAKEOPTS="-j17"
</pre>
 
Flgas USE definem qual funcionalidade está habilitada quando pacotes são construídos. Não é recomendado adicionar um monte dele durante a instalação; Você deve esperar até que obtenha um, sistema inicializável, funcional antes de alterar suas flags USE. Uma flag USE prefixada com um sinal de menos ("<code>-</code>") diz ao Portage para não utilizar a flag quando compilar. Um guia do Funtoo para as flags USE estarão disponíveis no futuro. Por hora, você pode descobrir mais informações sobre as flags USE no [http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?part=2&chap=2 Gentoo Handbook].
 
LINGUAS diz ao Portage em qual idioma local compilar o sistema e as aplicações (aqueles que utilizam variável LINGUAS como o OpenOffice). Geralmente não é necessário definir essa se você utiliza em inglês. Se você quiser um outro idioma tal qual francês (fr) ou Alemão (de), defina LINGUAS apropriadamente:
 
<pre>
LINGUAS="fr"
</pre>
 
==== /etc/conf.d/hwclock ====
Se você realizar dual-boot com Windows, você precisará editar esse arquivo e alterar o valor de '''clock''' de '''UTC''' para '''local''', por que o Windows definirá seu hardware clock para a hora local toda vêz que inicializar (boot) o Windows. Caso contrário você normalmente não precisaria editar esse arquivo.
<console>
(chroot) # ##i##nano -w /etc/conf.d/hwclock
</console>
 
==== Localization ====
 
By default, Funtoo Linux is configured with Unicode (UTF-8) enabled, and for the US English locale and keyboard. If you would like to configure your system to use a non-English locale or keyboard, see [[Funtoo Linux Localization]].

Latest revision as of 19:36, February 6, 2015

Created on
2015/02/06
Original Author(s)
Mgorny
Status
Pending Review
Reference Bug
FL-2093

Funtoo Linux Optimization Proposal: Kerberos V implementations

Funtoo supports two binary-incompatible Kerberos V implementations: MIT and Heimdal. Ebuilds supporting both need to properly depend on them to ensure rebuilds.

Overview

There are currently two Kerberos V implementations in Funtoo:

  • MIT Kerberos V (No results),
  • Heimdal (No results).

Both implementations use the same library names and a partially compatible API. However, they are binary incompatible and use different (non-colliding) SONAMEs.

Many of Kerberos V applications support both implementations. In this case, the relevant packages depend on No results. Some applications support only one of the implementations, depending on it directly.


Issues with the current solution

Virtuals are based on assumption that the providers can be switched at runtime. However, since the krb5 implementations are binary-incompatible, switching them at runtime is incorrect and results in the reverse dependencies being broken. Instead, implementation switch needs to be followed by automatic reverse dependency rebuild.

Furthermore, the lack of explicit implementation control will be an issue if installing both implementations in parallel becomes possible in the future. This could be desired since there are both packages supporting only mit-krb5, as well as packages supporting only heimdal.


Suggested solution

The simplest solution seems to be introducing a USE flag in all reverse dependencies that support both mit-krb5 and heimdal. The flag would decide which of the two implementation is used.

An example reverse dependency would look like:

   example-1.ebuild
IUSE="heimdal"
RDEPEND="
    heimdal? ( app-crypt/heimdal:0= )
    !heimdal? ( app-crypt/mit-krb5:0= )"

If Kerberos V support is optional, the flags would be combined with the kerberos feature flag:

   example-1.ebuild
IUSE="heimdal kerberos"
RDEPEND="
    kerberos? (
        heimdal? ( app-crypt/heimdal:0= )
        !heimdal? ( app-crypt/mit-krb5:0= )
    )"

This implementation implies that:

  1. user is given an explicit choice of Kerberos V implementation.
  2. Switch of a Kerberos V implementation would cause a rebuild through --changed-use, therefore resolving breakage caused by ABI change.