Tags de compatibilidade de plataforma

As tags de compatibilidade de plataforma permitem que ferramentas de construção marquem as distribuições como sendo compatíveis com plataformas específicas e permitem que os instaladores entendam quais distribuições são compatíveis com o sistema em que estão executando.

O modelo de tag de compatibilidade de plataforma usado para o formato de distribuição wheel é definido em PEP 425.

Tags de plataforma para Windows

O esquema definido em PEP 425 cobre a distribuição pública de arquivos wheel para sistemas executando Windows.

Tags de plataforma para macOS (Mac OS X)

O esquema definido em PEP 425 cobre a distribuição pública de arquivos wheel para sistemas que executam macOS (anteriormente conhecido como Mac OS X).

Tags de plataforma para distribuições Linux comuns

O esquema definido em PEP 425 é insuficiente para distribuição pública de arquivos wheel (e arquivos wheel do *nix em geral) para plataformas Linux, devido ao grande ecossistema de plataformas Linux e diferenças sutis entre elas.

Em vez disso, a PEP 600 define o padrão manylinux, que representa um subconjunto comum de plataformas Linux, e permite a construção de wheels com a tag de plataforma manylinux que pode ser usada na maioria das distribuições Linux.

Houve várias iterações da especificação manylinux, cada uma representando o subconjunto comum de plataformas Linux em um determinado ponto no tempo:

  • manylinux1 (PEP 513) oferece suporte às arquiteturas x86_64 e i686 e é baseado em uma plataforma Linux compatível de 2007.

  • manylinux2010 (PEP 571) oferece suporte às arquiteturas x86_64 e i686 e atualiza a especificação anterior para se basear em uma plataforma Linux compatível a partir de 2010.

  • manylinux2014 (PEP 599) adiciona suporte para várias arquiteturas adicionais (aarch64, armv7l, ppc64, ppc64le e s390x) e atualiza a plataforma base para uma plataforma Linux compatível de 2014.

manylinux_x_y (PEP 600) substitui todas as PEPs anteriores para definir um padrão à prova de futuro. Ele define x e y como as versões principais e secundárias do glibc suportadas (por exemplo, manylinux_2_24 deve funcionar em qualquer distro usando glibc 2.24+). Tags anteriores ainda são suportadas para compatibilidade com versões anteriores.

Em geral, as distribuições construídas para versões mais antigas da especificação são compatíveis com versões futuras (o que significa que as distribuições manylinux1 devem continuar a funcionar em sistemas modernos), mas não compatíveis com versões anteriores (significando que distribuições manylinux2010 não devem trabalhar em plataformas que existiam antes de 2010).

Os mantenedores do pacote devem tentar atingir a especificação mais compatível possível, com a ressalva de que o ambiente de compilação fornecido para manylinux1 e manylinux2010 atingiu o fim da vida, o que significa que essas imagens não receberão mais atualizações de segurança.

Suporte a compatibilidade de manylinux

Nota

  • A especificação de manylinux2014 é relativamente nova e ainda não é amplamente reconhecida pelas ferramentas de instalação.

  • A especificação de manylinux_x_y é relativamente nova e não é amplamente reconhecida pelas ferramentas de instalação.

A tabela a seguir mostra as versões mínimas de projetos relevantes para oferecer suporte aos vários padrões manylinux:

Ferramenta

manylinux1

manylinux2010

manylinux2014

manylinux_x_y

pip

>=8.1.0

>=19.0

>=19.3

>=20.3

auditwheel

>=1.0.0

>=2.0.0

>=3.0.0

>=3.3.0 1

Tags de plataforma para outras plataformas *nix

O esquema definido na PEP 425 geralmente não é suficiente para a distribuição pública de arquivos wheel para outras plataformas *nix. Esforços estão atualmente (embora de forma intermitente) em andamento para definir esquemas de marcação de compatibilidade aprimorados para AIX e Alpine Linux.

1

Suporte somente para manylinux_2_24 foi adicionado em auditwheel 3.3.0