Empacotador de AppImage Baseado no Projeto ArchImage que usa o Conteiner Junest para criar AppImage a partir de pacotes do Arch Linux.
O ArchAppImage
facilita o empacotamento de programas no no formato AppImage
usando pacotes do Arch Linux. Ele automatiza a criação de pacotes e melhora a
compatibilidade com o sistema, além de contar com vários métodos de criação de AppImage e
inclusão do GLibC
. Também é possível empacotar programas autocontidos em
TarBall
para quem optar por AppImages mais leves, porém com uma menor garantia
de funcionalidade, por não incluir o GLibC
.
O objetivo do ArchAppImage
é oferecer uma solução simplificada para facilitar a
criação de AppImage
em qualquer sistema usando vários métodos, principalmente via
contêiner, reduzindo a complexidade do processo e garantindo maior compatibilidade
entre vários sistemas Linux.
-
O formato
AppImage
permite rodar aplicativos de forma portátil sem necessidade de instalação. No entanto, a criação de AppImage pode ser trabalhosa. O método convencional de empacotamento, pode exigir muitos testes em várias distrosLinux
para garantir o máximo de compatibilidade possível. Portanto, é muito difícil garantir que o AppImage vai funcionar na maioria das distros. -
O método tradicional de criação de AppImage, sugere que você use um sistema mais antigo para criar seus AppImages por conta do
GLibC
, o que faria com que fosse necessário usar ou dedicar um ambienteoldstable
separado do seu host ou uma VM dedicada para a criação de Appimage. -
Para cobrir o problema de compatibilidade com o
GLibC
, o mais recomendado é a adição do próprio recurso ao AppImage, pois assim é possível usar old-linux
para abrir os programas. -
O projeto
ArchImage
é uma excelente ferramenta de criação de AppImage. Mas, segundo meus testes, o desempenho e o modo como ele funcionava, não era satisfatório e as vezes precisava esperar muito tempo ao repetir a criação do AppImage. Por isso, eu decidi que eu queria uma solução extremamente rápida para criar AppImages sem precisar esperar o AppImage empacotar de imediato para saber se o programa ia funcionar perfeitamente após a criação do AppImage. -
A ideia de empacotar por
Contêiner
funciona bem, mas nem todos os programas precisam ser empacotados dessa forma, então é necessário um modo de empacotamento que criasse o AppImage, sem precisar de um contêiner para isso. -
Soluções como
bwrap
, podem falhar em sistemas com restrições denamespaces
e não funcionarão. Uma solução é oproot
, que é um pouco mais lento para iniciar programas via conteiner, mas que é totalmente funcional. -
Não é possível a execução do
Junest
usando superusuário. É preciso uma conta de usuário comum para poder executar o AppImage. Distros modulares como oPuppy
costumam usar conta root por padrão, o que faz do AppImage baseado no Junest incompatível com o sistema sem uma conta de usuário comum. -
Alguns programas podem precisar acessar o sistema
host
para poder realizar alguma função no sistema. Eles podem acabar assumindo o contêiner como se fosse o host. -
Trabalhar com AppImage é uma forma de entender como o
Sistema Linux
funciona.
-
Se o seu Sistema for muito desatualizado, você vai se deparar com um erro parecido com esse:
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/libstdc++.so.6)
-
Não é possível garantir a adição de todas as dependências, uma vez que bibliotecas de baixo nível não costumam ser recomendadas para adição no AppImage.
-
Ainda há programas que não foram pensados para serem portáteis e podem exigir acesso a caminhos absolutos em seus códigos.
-
É difícil criar Appimages de programas desenvolvidos em
Python
.
-
O Projeto conta com uma interface de linha de comando para a configuração mais básica. Os ajustes mais refinados devem ser feitos normalmente no script de construção conforme a necessidade.
-
Várias opções de Scripts de Construção:
- ✅
APP-ArchAppImage
- usa contêiner junest. - ✅
APP-Tarball2AppImage
- cria AppImage com pacotes em tarball.
- ✅
-
São vários tipos de
AppRun
disponíveis:- ✅
AppRun_bwrap
- conteiner bwrap. - ✅
AppRun_bwrap_proot
- conteiner bwrap com proot como fallbak. - ✅
AppRun_default
- modo padrão, sem conteiner. - ✅
AppRun_junest
- conteiner junest. - ✅
AppRun_proot
- conteiner proot. - ✅
AppRun_tarball
- para AppImage em tarball.
- ✅
-
Não há a necessidade de separar os projetos de
AppImage
em vários diretórios. Pode ser usado o mesmo contêiner para empacotar vários AppImages diferentes, economizando espaço em disco. -
Se for preciso, pode ser criado um conteiner só para uma aplicação específica da mesma forma que é feito no projeto do
ArchImage
e escolher se vai ser preciso uma dessas opções para a construção do AppImage:- ✅
Mutilib
- para programas que precisam de multilib. - ✅
ChaoticAUR
- para programas do repositório do ChaoticAUR. - ✅
ArchLinuxCN
- para programas do repositório do ArchLinuxCN. - ✅
AUR
- para programas que serão compilados do repositório AUR.
- ✅
-
Possui resolução automática de dependências, podendo ser ajustado usando diferentes níveis de busca por dependências.
-
Em programas binários, pode ser habilitado uma busca por
libs
, que pode ajudar a executar o programa usando menos níveis de busca por dependências, o que pode reduzir o tamanho do AppImage. -
Você pode ativar a autointegração na área de trabalho e a autointegração de inicialização durante a primeira execução do AppImage.
-
Possui uma forma alternativa para configurar a detecção correta do idioma de forma definitiva em caso de programas que não detectam o idioma de forma alguma.
-
O método padrão conta com um método automático para resolver o cache do gdk-pixbuf2 para ajudar na compatibilidade de programas que usam
GTK
.
Não há a necessidade de instalação, basta clonar o repositório e, se quiser, colocar em
algum local no sistema e linkar no /bin
ou em algum local para ser adicionado na
variável PATH
.
$ git clone https://github.com/LinuxDicasPro/ArchAppImage.git
$ cd ArchAppImage
$ sudo ln -s ArchAppImageGen /usr/bin/ArchAppImageGen
-
A primeira coisa que você vai fazer, é abrir o utilitário via terminal:
$ ArchAppImageGen
Isso vai abrir uma ferramenta de configuração do script de construção do AppImage, que você pode configurar o local padrão do projeto pressionando
C
ouEnter
para iniciar a configuração. Após a configuração, o script de construção será salvo no diretório padrão~/ArchAppImage
ou no local que você configurou. -
Depois você vai até o script gerado para a construção do AppImage no diretório do projeto que foi configurado, faça os ajustes e execute o script para criar o AppImage:
$ cd ~/ArchAppImage $ kate package-ArchAppImage # Faça os ajustes com o editor de sua preferência. $ ./package-ArchAppImage
Se tudo der certo e o script estiver configurado corretamente, o AppImage será criado.
O RECOMENDADO
é configurar o script para não criar o AppImage de imediato.
Assim, os testes serão feitos usando o AppRun. Entretanto, mesmo que o AppImage abra
corretamente, é sim necessário verificar seu funcionamento a procura de algum bug ou
alguma inconsistência.
-
Execute o AppImage no terminal e verifique se não há nenhum erro durante a execução do programa:
$ ./Sample-1.2.3-x86_64.AppImage
-
Para uma saída mais detalhada, use
LD_DEBUG
. Portanto, para procurar porlibs
faltantes, use:$ LD_DEBUG=libs ./Sample-1.2.3-x86_64.AppImage
-
Para ver os arquivos ausentes, use:
$ LD_DEBUG=files ./Sample-1.2.3-x86_64.AppImage
Para uma deparação mais aprimorada, consulte:
🔹The LD_DEBUG environment variable
Para mais detalhes sobre o uso e as funcionalidades do ArchAppImage
, projetos
incorporados e como solucionar problemas, consulte a documentação na wiki do github:
- ✏️ Suporte a
NVidia
no modo de Conteiner -> a caminho. - ✏️ Mais scripts alternativos de empacotamento.
- ✏️ Empacotamento usando
sharun
. - ✏️ Ferramentas extras.
- ✏️ Possível implementação com debootstrap.
- ✏️ Reempacotador de AppImage para adição de modificações.
- ✏️ Possível ferramenta de autointegração.
- ✏️ Possível empacotamento usando flatpack.
- ✏️ Interface de desenvolvimento de Appimage.
Contribuições são sempre Bem-Vindas!
Se você deseja ajudar a melhorar este projeto,
siga as diretrizes abaixo para garantir um fluxo organizado e eficiente.
-
Faça um fork do repositório
- Clique no botão
Fork
para criar uma cópia doArchAppImage
na sua conta.
- Clique no botão
-
Clone o repositório
- No seu terminal, execute:
git clone https://github.com/<seu-repositorio>/ArchAppImage.git cd ArchAppImage
- No seu terminal, execute:
-
Crie um branch para sua modificação
- Escolha um nome descritivo para o branch:
git checkout -b my-contrib
- Escolha um nome descritivo para o branch:
-
Faça as alterações e commit
- Após editar os arquivos necessários, adicione suas mudanças:
git add . git commit -m "description my contrib"
- Após editar os arquivos necessários, adicione suas mudanças:
-
Envie para o repositório remoto
- Envie seu branch para o seu fork no GitHub:
git push origin my-contrib
- Envie seu branch para o seu fork no GitHub:
-
Crie um Pull Request (PR)
- Acesse o repositório original no GitHub e clique em
New Pull Request
. - Escolha o branch do seu fork e descreva suas alterações de forma clara.
- Acesse o repositório original no GitHub e clique em
- ✅ Explique suas mudanças: Escreva um título e uma descrição detalhada das alterações.
- ✅ Siga o padrão do código: Mantenha a consistência do projeto.
- ✅ Faça commits pequenos e organizados: Isso facilita a revisão.
- ✅ Revise seu código antes de enviar: Evite bugs e erros desnecessários.
Agradecemos sua contribuição! 🚀✨
Este projeto é distribuído sob os termos da
GNU General Public License version 3
.
Para mais detalhes sobre a licença, consulte o arquivo LICENSE ou acesse o texto completo da licença no site daFree Software Foundation
:
- 📧 Email: [email protected]
- 💬 Telegram: LinuxDicasPro
▶️ YouTube: LinuxDicasPro- 👥 Reddit: r/LinuxDicasPro