Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

LinuxProativo/ArchAppImage

Repository files navigation

ArchAppImage

Empacotador de AppImage Baseado no Projeto ArchImage que usa o Conteiner Junest para criar AppImage a partir de pacotes do Arch Linux.

📜 Descrição

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.

Além disso, há outras formas disponiveis de fazer AppImage usando pacotes Debian com inclusão do GLibC, e também 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.

Aceleração de HARDWARE para o Driver NVIDIA

- ---| SUPORTE EXPERIMENTAL |--- -

Foi decidido não usar o projeto Conty para a detecção do driver da nvidia. Ao invés disso, foi usado um método simplificado e preciso para a detecção baseado em POSIX, que para um AppImage faz mais sentido, já que a ideia é que o AppImage execute no máximo de sistemas Linux possíveis. Além disso, é mais simples para manutenção.

🎯 Objetivo

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.

💡 Motivação

  • 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 distros Linux 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 ambiente oldstable 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 o ld-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 de namespaces e não funcionarão. Uma solução é o proot, 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 o Puppy 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.

⛔️ Problemas do Método Tradicional de Criação de AppImage

  • 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.

🚀 Características e Recursos

  • 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 - usando contêiner junest.
    • APP-DebAppImage - cria AppImage usando contêiner debootstrap.
    • APP-Tarball2AppImage - cria AppImage com pacotes em tarball.
  • São vários tipos de AppRun disponíveis:

    • AppRun_bwrap_proot - contêiner bwrap com proot como fallbak.
    • AppRun_default - modo padrão, sem contêiner.
    • AppRun_junest - contêiner junest.
    • AppRun_proot - contêiner proot.
    • AppRun_tarball - para AppImage em tarball.
    • AppRun_debian - modo padrão, sem contêiner, para AppImage usando Debian.
  • 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.

  • Para o modo conteiner, foi implementado suporte ao driver NVidia. Ao ativar o suporte, os drivers serão verificados toda vez que o AppImage for iniciado e atualizado automaticamente conforme a necessidade.

  • 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.

🛠️ Instalação

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

🖥️ Utilização Básica

  1. 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 ou Enter 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.

  2. 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.

⚙️ Teste do AppImage

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.

  1. 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
  2. Para uma saída mais detalhada, use LD_DEBUG. Portanto, para procurar por libs faltantes, use:

    $ LD_DEBUG=libs ./Sample-1.2.3-x86_64.AppImage
  3. 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

📖 Documentação Completa

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:

📜 Documentação Oficial do ArchAppImage

📷 Capturas de Tela

📝 Próximas Implementações

  • 📌 Empacotamento usando sharun.
  • 📌 Reempacotador de AppImage para adição de modificações.
  • 📌 Empacotamento usando flatpack.
  • 📌 Futuramente, um Software de Desenvolvimento de AppImage em QT.

🤝 Contribuindo

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.

📌 Como contribuir

  1. Faça um fork do repositório

    • Clique no botão Fork para criar uma cópia do ArchAppImage na sua conta.
  2. Clone o repositório

    • No seu terminal, execute:
      git clone https://github.com/<seu-repositorio>/ArchAppImage.git
      cd ArchAppImage
  3. Crie um branch para sua modificação

    • Escolha um nome descritivo para o branch:
      git checkout -b my-contrib
  4. 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"
  5. Envie para o repositório remoto

    • Envie seu branch para o seu fork no GitHub:
      git push origin my-contrib
  6. 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.

📢 Dicas para um Pull Request bem-sucedido

  • 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! 🚀✨

📜 Licença

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 da Free Software Foundation:

🔗 https://www.gnu.org/licenses/gpl-3.0.html

⚠️ Isenção de Responsabilidade

Este projeto tem como objetivo facilitar a criação de arquivos AppImage de forma prática e acessível, inteiramente ao benefício da Comunidade e também para uso pessoal. O autor não se responsabiliza por:

  • ❌ Problemas em relação ao conteúdo, legalidade, qualidade, integridade ou segurança dos AppImages criados com esta ferramenta. O empacotador é quem deve garantir a segurança e a integridade do AppImage.

  • ❌ Qualquer violação de direitos autorais, licenças de software ou outras leis decorrentes do uso da ferramenta. Softwares proprietários têm licenças restritivas. Geralmente, você não terá o direito de redistribuir, modificar ou empacotar eles livremente, a menos que o dono permita.

    OBS: Nesse caso, disponibilizar o script de criação para que o próprio usuário crie o AppImage para uso pessoal pode ser uma opção.

  • ❌ Danos causados a sistemas operacionais, arquivos ou dispositivos devido ao uso de AppImages gerados por essa ferramenta, principalmente AppImage contendo código malicioso, vulnerabilidades ou qualquer outro tipo de ameaça à segurança de sistemas.

  • ❌ Qualquer outro uso que viole as leis locais, nacionais ou internacionais decorrentes do uso da ferramenta.

O usuário é inteiramente responsável pelas ações que realizar utilizando esta ferramenta, incluindo o que empacota, distribui e executa. Ao utilizar este projeto, você declara estar ciente de sua responsabilidade e concorda em isentar o autor de qualquer responsabilidade civil, criminal ou legal decorrente do mau uso dessa ferramenta.

IMPORTANTE:

  • Esta ferramenta é fornecida no estado em que se encontra, sem garantias explícitas ou implícitas de qualquer tipo, incluindo garantias de funcionamento, segurança ou adequação a qualquer propósito específico, embora submetido a testes rigorosos.
  • Esta ferramenta não é destinada à criação de AppImages de software proprietário sem a devida autorização do proprietário ou entidade.
  • Este aviso de isenção de responsabilidade não altera nem restringe as liberdades garantidas pela licença GPLv3.

📩 Contato

About

Empacotador de AppImage usando Junest, debootstrap e tarball

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /