Skip to content

Configuração Manual do Script DebAppImage

LinuxDicasPro edited this page May 19, 2025 · 2 revisions

🧮 Script DebAppImage

O arquivo APP-DebAppImage em tools, pode ser configurado manualmente sem a interface de configuração. Para isso, você deve configurar as variáveis a seguir. Mas, primeiro você deve fazer uma cópia do script antes de editar.

cd ~/ArchAppImage
cp -a tools/APP-DebAppImage ./silverjuke-DebAppImage

Aqui estamos assumindo que você tem o diretório de projetos do AppImage em ~/ArchAppImage.

📦 Configuração do Pacote e Dependências

Agora, vamos às configurações:

package_name=  

Essa variável é a única que deve ser preenchida obrigatoriamente, que é o nome do pacote.

parms=     # optional

Alguns programas podem iniciar com comandos personalizados e podem ser colocados nessa configuração.

binary_name=  # opcional  

Já essa é para o nome do binário, que pode ser diferente dependendo do programa. Se ele não for preenchido, o script fará isso por você em:

binary_name="${binary_name:-"$package_name"}"

Se o binary_name não for definido, ele usará o package_name.

dependences=  # opcional  

Também é opcional, dificilmente pode ser necessário se você subir o nível de busca por dependências, a menos que seja uma dependência dinâmica, opcional ou uma que a detecção automática não foi capaz de encontrar ou também se você não quer subir muito o nível de busca por dependências.

deb_package_link=  # optional

Muitos pacotes para o Debian são disponibilizados fora dos repositórios oficiais. Então, o link para esses pacotes podem ser adicionados por aqui, para serem instalados e usados para gerar o AppImage. O nome do pacote ainda será necessário, só que não será usado para a instalação, pois é o pacote .deb que será usado.

use_font="fonts-noto"
# use_font="fonts-freefont-ttf"

Aqui geralmente você não mexe, a menos que você tenha preferência por uma fonte para testar os programas no contêiner ou quer testar um programa usando uma fonte específica. Essa configuração não terá nenhum impacto na criação do AppImage, pois geralmente é usado a fonte do sistema como opção de fonte para o AppImage.

⚙️ Configurações do AppRun

mode="default"  # default - container  

Tipo de AppImage, se vai ser no modo default ou no modo de container.

  • O modo default é recomendado para programas que são pensados para serem empacotados em AppImage.
  • O modo container é para situações em que não há uma forma efetiva de resolver problemas de localização de idioma, imagens e ícones dos programas.

O modo default é o mais compatível e o de menor risco, porém com o modo container, você consegue isolar o ambiente e contornar todos os problemas garantindo o funcionamento correto do AppImage.

use_apprun_type=0  # mode conteiner: 0 (bwrap_proot) - 1 (proot)

Variável que só vai ser configurada se o modo de contêiner for configurado. Ele serve para definir qual AppRun vai ser usado:

  • 0 - Vai ser usado o AppRun com o comando bwrap com proot como fallback;
  • 1 - Vai ser usado o AppRun com o comando proot.

🎮 Suporte NVidia

enable_nvidia=0    # mode conteiner: 0 (false) or 1 (true)

Essa configuração serve para ativar a detecção automática dos drivers da NVidia. Também é uma opção que só vai ser configurada no modo conteiner. Entretanto, mesmo com essa opção ativada, a integração dos drivers da NVidia só será feita se a placa de vídeo for detectada e reconhecida pelo sistema. A integração será feita através de um bind das libs que serão copiadas e salvas em ~/.local/share/ArchAppImage_Nvidia. Essa opção ativará também o suporte ao vulkan.

🧩 Auto Integração com o Sistema

enable_auto_integration=0  # 0 (false) ou 1 (true)  

Útil para quem quer trabalhar com AppImage que faz a integração automática com a área de trabalho. Isso altera a variável AUTO_INTEGRATION no AppRun. Assim, toda vez que o AppImage inicia, ele vai verificar se ele já está integrado no sistema e se não estiver integrado, será feita a autointegração.

enable_auto_integration_autostart=0  # 0 (false) ou 1 (true)  

Você também pode configurar o AppImage de programas como por exemplo Telegram e Discord, para iniciarem na inicialização do sistema automaticamente usando essa opção. Isso altera a variável AUTOSTART no AppRun e dessa forma é feita a verificação se o arquivo Desktop do programa está presente em ~/.config/autostart/ para poder ser autoinicializável ao iniciar a sessão do usuário.

autostart_parms=  # opcional  

Alguns programas contam com parâmetros para a auto inicialização e que podem ser definidos nessa variável para que o AppRun os adicionem durante a integração.

Note que as opções de AppRun tentam atender ao máximo o padrão POSIX, porém ainda é necessário o coreutils, grep, sed e demais ferramentas do sistema para a integração funcionar perfeitamente. Se a integração falhar, o AppImage ainda irá abrir normalmente.

🛠️ Configuração de um Ambiente Personalizado

Essa parte requer um pouco mais de atenção. Por padrão, o ArchAppImage vai usar o mesmo contêiner para empacotar vários programas em AppImage. Mas, é possível fazer uma separação.

custom_conteiner_name=  # opcional  

Essa configuração tem vários objetivos:

  • Isolar o empacotamento de um programa;
  • Criar um ambiente personalizado para empacotar os programas.

Com essa configuração você pode dedicar um contêiner especial para um programa e decidir com as configurações a seguir, o que vai conter nele. Essas são as opções:

enable_multilib=0     # 0 (false) ou 1 (true)  

Você pode ativar o multilib se você precisar dele para o contêiner dedicado ao programa. Supondo que a variável custom_conteiner_name tenha recebido o valor exemplo, o nome do contêiner será arch_exemplo_botstrap. É sempre recomendado é que você use um nome customizado e ative o multilib para não poluir muito o contêiner definido por padrão.

🎨 AppRun, Arquivo Desktop e Ícone Personalizados

use_custom_apprun=    # optional

Aqui você pode configurar um AppRun customizado para o seu AppImage. O AppRun não segue um padrão universal e pode ser necessário uma intervenção manual para que o AppImage funcione corretamente. Essa configuração é justamente para apontar para um AppRun ajustado manualmente.

use_desktop_file=  # opcional - "$CWD/usr/share/applications/desktopfile.desktop"  
use_icon_file=     # opcional - "$CWD/usr/share/pixmaps/icon.png"  

Essa parte da configuração só será definida se você precisar definir um arquivo desktop e um ícone manualmente ou se quiser usar um ícone ou um arquivo desktop diferente do fornecido pelo pacote. Geralmente, a detecção desses arquivos é automática e se não for encontrado automaticamente, será gerado um arquivo desktop no lugar e baixado um ícone padrão alternativo.

🧰 Configurações Adicionais

add_basic_stuff=  # opcional  

Essa configuração serve para adicionar ferramentas básicas ou essenciais para qualquer AppImage, principalmente se você está criando um AppImage usando as configurações de contêiner.

🗃️ Configuração dos Arquivos que Serão Salvos ou Removidos

bin_saved=    # opcional - "bin1 bin2 bin3"  
share_saved=  # opcional - "share1 share2 share3"  
lib_saved=    # opcional - "lib1 lib2.so prefixlib"  

Essa parte é útil caso seja necessário salvar alguma biblioteca, binário ou algum diretório em share. Isso, aumentará o tamanho final do AppImage, mas pode ser necessário para garantir que o AppImage vai funcionar perfeitamente. Os arquivos e diretórios configurados aqui, serão copiados separadamente e incluídos no AppDir do projeto.

remove_others_share_bloatwares=  # opcional - "dir1|dir2|dir3"  
remove_others_libs_bloatwares=   # opcional - "dir1|dir2|lib1"  
remove_others_bins_bloatwares=   # opcional - "bin1|bin2|bin3"  
remove_others_etc_bloatwares=    # opcional - "dir1|dir2|file"  

Agora, para a remoção de bloatwares, a sintaxe é diferente, pois o método para a remoção desses arquivos funciona de uma forma diferente do método para salvar os arquivos. O método consiste listar os pacotes a serem copiados com exceção dos arquivos descritos para remoção, garantindo a cópia apenas dos arquivos que serão úteis para o AppImage. Ou seja, os arquivos e diretórios configurados aqui não serão nem copiados para o AppDir.

🚀 Otimizações de Construção

config_all_locales=0  # modo container: 0 (false) - 1 (true) - 2 (autodetect)  

Essa Configuração pode ser vista como um último recurso para garantir o reconhecimento correto do idioma e as vezes pode ser o único jeito de fazer o idioma funcionar. Entretanto, esse processo leva muito tempo. Como alternativa, tem o modo autodetect que ativa o idioma conforme os idiomas disponíveis do programa, mas essa opção é compatível apenas com programas que usam GTK.

use_lib_browser_launcher=0  # 0 (false) ou 1 (true)  

Essa configuração serve para ativar a inclusão de bibliotecas e arquivos necessários para iniciar o navegador padrão.

noupdate=0           # 0 (false) ou 1 (true)  

Nessa parte geralmente você não mexe, a menos que queira ganhar tempo. Essa configuração serve para não verificar as atualizações dos pacotes após a criação do contêiner. A ideia é ganhar tempo enquanto as configurações e dependências vão sendo ajustadas para o empacotando do AppImage até o programa finalmente funcionar. Então essa opção só vai fazer sentido nos testes durante a configuração do script até conseguir fazer o programa funcionar perfeitamente. Depois disso, a variável deve ser redefinida novamente para 0.

no_save_bins=0       # 0 (false) ou 1 (true)  

Essa configuração serve para remover os binários desnecessários para o funcionamento do programa apenas no momento da criação do AppImage. Antes disso, tem alguns binários que são executados na etapa de configuração do AppDir. Por isso, são removidos apenas durante o empacotamento.

O que será mantido durante a criação do AppImage:
​ ​ ​ ​ ●​ ​ O arquivo binário do pragrama;
​ ​ ​ ​ ●​ ​ Os binários definidos em bin_saved.

recreate_appdir=0    # 0 (false) ou 1 (true)  

Essa configuração serve para recriar o AppDir toda vez que o script é executado. Geralmente não há a necessidade de ativar essa opção a menos que você queira se certificar de que o AppDir vai ser gerado corretamente ao executar o script.

📥 Criação do AppImage

create_appimage=0    # 0 (false) ou 1 (true)  

Sim, essa opção é desativada por padrão, porque não faz sentido criar o AppImage sem saber se o programa vai funcionar ou não. O processo de empacotamento demanda bastante tempo e se após o empacotamento o AppImage não funcionar você terá que fazer os ajustes e empacotar de novo, o que significa ter que fazer isso até o AppImage funcionar e que provavelmente nunca será de primeira. Assim, você terá que esperar muito tempo para saber se o AppImage funcionou. Então, ao invés de testar o AppImage, você testa o AppRun dentro do AppDir e só depois que tudo estiver funcionando perfeitamente aí sim você ativa o empacotamento em AppImage.

Preferencialmente essa configuração deve ser mantida após a criação do AppImage ser bem sucedida, porque agora sim faz sentido a criação imediata do Appimage quando um usuário executar o script, pois tudo estará funcionando perfeitamente.

use_uruntime=0      # 0 (type2runtime) - 1 (uruntime) - 2 (uruntime-dwarfs)

Aqui você seleciona a runtime que você quer usar. O recomendado e manter o padrão do projeto que é o type2runtime e que inclusive é baixado automaticamente se nenhuma runtime for especificada. Mas você pode usar uma alterantiva e até mesmo com suporte a dwarfs.

appimage_dest_dir=  # optional

Finalmente o último parâmetro, que é para setar um local diferente para gerar o AppImage que por padrão é o diretório atual do projeto.

💫 Funções para Configurações Extras

function _extra_config
{
    return 0 # ADD EXTRA CONFIG
}


function _remove_others_bloatwares
{
    etc_remove="gcc makepkg.conf pacman"
    bin_remove="gcc"
    lib_remove="gcc"
    share_remove="gcc"

    declare -A remove_dirs=(
        [etc]="$etc_remove"
        [bin]="$bin_remove"
        [lib]="$lib_remove"
        [share]="$share_remove"
    )

    for dir in "${!remove_dirs[@]}"; do
        for r in ${remove_dirs[$dir]}; do
            rm -rvf "${appdir:?}/usr/$dir/$r"*
        done
    done
}

O script pode ser alterado da forma que você quiser, afinal as configurações padrões nem sempre são o suficiente para o correto funcionamento do AppImage. Portanto, foi adicionados funções complementares para facilitar esses ajustes:

  • 📌 A função _extra_config foi feita para adicionar instruções extras para que o script seja alterado o mínimo possível, facilitando a adição de modificações necessárias para que o programa funcione corretamente.
  • 📌 Bloatwares posteriores também podem ser removidos usando as variáveis da função _remove_others_bloatwares que já estão aí pra isso.