-
Notifications
You must be signed in to change notification settings - Fork 0
Configuração Manual do 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
.
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.
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
.
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.
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.
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.
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.
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.
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
.
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 embin_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.
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.
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.