The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Compactação de executáveis nativos com UPX

O Ultimate Packer for eXecutables (UPX) é uma ferramenta de compactação que reduz o tamanho dos executáveis. O Quarkus pode compactar o executável nativo produzido para reduzir seu tamanho. Essa compactação é interessante quando:

  • Criando ferramentas CLI, e se você pretende reduzir o espaço ocupado pelo disco,

  • construir pequenas imagens de containers.

Note que a compactação UPX:

  1. aumenta o tempo de build, principalmente se você utilizar níveis de compactação elevados

  2. aumenta a utilização do RSS de startup da aplicação

Sistema vs. Container

A compressão UPX requer:

  • o comando upx deve estar disponível no PATH;

  • ou ter construído o executável nativo usando uma compilação dentro de um container.

Se você tiver o comando upx disponível seu path, o Quarkus o utilizará. Caso contrário, se você construiu a imagem nativa usando uma construção no container (usando quarkus.native.container-build=true ) e se a imagem do builder fornecer o comando upx , o Quarkus comprime o executável de dentro do container.

Se você não estiver em num destes casos, a compactação falha.

O upx é multiplataforma.

upx pode comprimir executáveis utilizando uma arquitetura e um sistema operacional diferentes dos da sua máquina anfitriã. Por exemplo, upx numa máquina macOS pode compactar um executável Linux de 64 bits.

Configuração da compactação UPX

Em seguida, na configuração da aplicação, ative a compactação, configurando o nível de compactação pretendido:

quarkus.native.compression.level=5

Se o nível de compactação não for definido, a compactação será desativada. A compactação ocorrerá quando o executável nativo for criado e substituirá o executável.

Nível de compactação

O nível de compactação vai de 1 a 10:

  • 1: compactação mais rápida

  • 9: melhor compactação

  • 10: melhor compactação (pode ser lenta para pastas grandes)

Parâmetros adicionais

Você pode passar parâmetros adicionais para o upx, como --brute ou --ultra-brute , usando o parâmetro quarkus.native.compression.additional-args . O valor é uma lista de argumentos separados por vírgula:

quarkus.native.compression.level=3
quarkus.native.compression.additional-args=--ultra-brute,-v

A lista exaustiva de parâmetros pode ser consultada na documentação UPX.

Conteúdo Relacionado