Kernel module package guidelines (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Kernel module package guidelines. Data da última tradução: 2020-06-28. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.
Diretrizes de pacotes do Arch

32-bitCLRCMakeCrossDKMSEclipseElectronFonteFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustShellVCSWebWine

Separação de pacote

Pacotes que contêm módulos de kernel devem ser tratados especialmente, para suportar usuários que desejam ter mais de um kernel instalado em um sistema.

Ao empacotar software contendo um módulo do kernel e outros arquivos/utilitários de suporte não módulo, é importante separar os módulos do kernel dos arquivos de suporte.

Diretrizes

Ao empacotar tais softwares (usando os drivers NVIDIA como um exemplo), a convenção é:

  • crie um pacote nvidia contendo apenas os módulos de kernel compilado para o kernel padrão
  • crie um pacote nvidia-utils contendo os arquivos sem suporte
  • certifique-se que nvidia depende de nvidia-utils (a menos que haja um bom motivo para não fazê-lo)
  • para outro kernel, como kernel26-mm, crie nvidia-mm contendo os módulos de kernel compilados com o kernel que fornece nvidia e também depende em nvidia-utils
  • certifique-se que nvidia depende na versão de kernel atual, por exemplo:
depends=('kernel26>=2.6.24-2' 'kernel26<2.6.25-0' 'nvidia-utils')

Note que é 2.6.24-2, e não -1 no exemplo acima - isso ocorre porque houve uma alteração de configuração no subsistema de kernel importante que exigiu a recriação de todos os módulos. Você deve sempre mudar a versão depende de tais casos, caso contrário, algumas pessoas com versões fora do sync do kernel e do módulo reportarão que o módulo está quebrado.

Motivos

Enquanto os módulos do kernel construídos para diferentes kernels sempre vivem em diretórios diferentes e podem coexistir pacificamente, espera-se que os arquivos de suporte sejam encontrados em um único local. Se um pacote contivesse arquivos de módulo e de suporte, você não conseguiria instalar os módulos para mais de um kernel porque os arquivos de suporte nos pacotes causariam conflitos de arquivos do pacman.

A separação dos módulos e dos arquivos anexos permite que vários pacotes de módulos do kernel sejam instalados para múltiplos kernels no mesmo sistema, compartilhando os arquivos de suporte entre eles no local esperado.

Colocação de arquivos

Se um pacote inclui um módulo do kernel que deve substituir um módulo existente com o mesmo nome, tal módulo deve ser colocado no diretório /lib/modules/2.6.xx-ARCH/updates. Quando o depmod é executado, os módulos neste diretório terão precedência.