Listar aplicativos .deb

Pessoal, aqui estou eu de novo com as minhas listas.
Há algum comando que possa listar somente os aplicativos .deb instalados pelo usuário? Todos os comandos que eu conheço e os que eu procurei na internet só mostram como listar todos os aplicativos do sistema incluindo os instalados pelo usuario.
Agradeço a ajuda.

Você pode usar este comando:

comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

Tenha em mente que a lista mostra também pacotes que foram instalados em decorrência de uma instalação, como dependências por exemplo. :slight_smile:

4 curtidas

Caramba. Bem pequenino esse comando.
Quanto às dependências, como a lista já diminuiu mais, eu vou ter que usar alguma lógica pra tirá-las na hora de exibir a lista. Mas vou continuar procurando.
Valeu muito pela ajuda. Muito obrigado.

A dica é fazer um alias dele no bash ou qualquer outro shell que você use, tipo:

Compartilhe as suas alias e funções - facilitando o dia a dia

Poderia ser:

alias listdeb='comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

Aí quando você rodar o comando “listdeb” no terminal, ele vai mostrar a mesma coisa. :slight_smile:

2 curtidas

Valeu a dica. Eu não comentei o tamanho do comando como reclamação, mas é só o fato de imaginar que pra eu conseguir criar um comando, mesmo desse tamanho pra resolver algumas coisas no shell, vou ter que comer muito feijão com arroz.
A minha intenção é criar um aplicativo em Python que ajude usuários leigos a personalizar as distros que usam sem muita dificuldade e o máximo possível que não usem o terminal, bom, pelo menos, no início. Por enquanto só estou focando em distros debian-like e mais pra frente, talvez, eu crie algo pra outras. Eu quero reunir várias funções possíveis em um só aplicativo e como muita coisa depende de comandos do shell, por isso e que eu peço ajuda aqui. Até mesmo porque alguns desses tipos de comandos é bem dificil de se encontrar em pesquisas na internet.
Muito obrigado. Mais um aprendizado bem sucedido.

1 curtida

Parece ser um excelente projeto :slight_smile:

1 curtida

Essa ideia começou desde quando eu assisti um vídeo seu a respeito de automatização de configurações pós instalação do sistema e a criação do shell script pra dupla do Código Fonte. Fiz um shell script pra eu poder personalizar meu sistema também. Só que no meu caso eu fiz muita coisa pra ir direto pro sistema, tipo os temas, ícones, extensões e wallpapers. Depois fiquei pensando em fazer a mesma coisa usando o Python com interface gráfica pro meu uso e, atualmente, quero fazer isso pra que qualquer um possa usar.
Bom, se tiver sugestões a respeito do que deveria ter nesse aplicativo, elas serão bem vindas.
Por enquanto eu estou desenvolvendo a lógica de cada funcionalidade dele e depois de tudo funcionando como deveria, vou partir pra interface gráfica (PyGTK ou PyQt) e por último vou fazer o enpacotamento (Snap, Flatpak ou AppImage).
Eu já testei, via máquina virtual, no Ubuntu 20.04, Ubuntu 21.04, Linux Mint Cinnamon, Linux Mint XFCE, Xubuntu e Elementary OS até o momento. Como o notebook que eu uso já esta ficando cheio, vou fazer testes com as mais versões depois.
O que está funcionando de fato até o momento, ao menos nas máquinas virtuais que eu testei e no meu próprio sistema de uso (Ubuntu 20.04), é o seguinte:

1 - Atualização de repositórios e aplicativos instalados no sistema

2 - Instalação de dependências, download, descompactação, compilação e exclusão de arquivos do Python
Por enquanto ainda uso uma versão fixa (Python 3.9.6) pra baixar. Eu estou procurando uma forma que dê pra listar as 5 ou 10 versões mais atuais do Python direto do site Python.org. Ai ficaria mais fácil da pessoa escolher uma versão específica pra baixar e instalar. sem muita dor de cabeça.

3 - Instalar/atualizar bibliotecas do Python.
No momento estou usando bibliotecas do meu uso, mas o ideal seria o programa pegar as bibliotecas que cada usuario tem instalado no sistema pra poder atualizá-las.
Vou criar uma forma em que o usuario apenas digite o nome de uma ou mais bibliotecas separadas por qualquer sinal pra que possa instalar novas bibliotecas. Estou querendo criar essa função também pra outras linguagens de programação, se possível.

4 - Instalação de aplicativos flatpaks (sugeridos)
É uma lista de aplicativos que eu imagino serem muito baixados pelos usuários de Linux. Na lista tem coisas do tipo Discord, Firefox, VLC, KDenlive, Gedit, Steam e outros. São 53 sugestões no total.

5 - Instalação de aplicativos de escolha própria do usuario.
Caso o usuário queira um aplicativo mais específico e não esteja presente na lista de sugestões, vai ser possível digitar o nome do aplicativo em um campo de texto e instalá-lo.
O problema aqui, por enquanto, é a forma como se faz o download via terminal porque, geralmente não é usado somente o nome do aplicativo, tipo flatpak install gimp -y, mostra no terminal uma lista de coisas referentes ao GIMP e não somente instala o aplicativo e suas dependências. Pra instalar o aplicativo direto sem muita enrolação, teria que digitar flatpak install org.gimp.GIMP -y e resolveria a situação.
O ruim é que teria que saber o ID de aplicação de cada aplicativo que o usuário poderia escolher. Fazer essa lista com 53 aplicações como no caso de aplicativos sugeridos, é “tranquilo”, o problema é fazer essa lista pra todos os aplicativos disponíveis em flatpak e manter sempre atualizada essa lista. Mas, eu vou pesquisar algumas coisas sobre webscrapping com Python porque eu penso que isso possa resolver. Bom, eu acho.

6 - Atualização de aplicativos flatpak. (Isso aí é moleza)

7 - Desinstalação de aplicativos flatpak.
Aqui está o motivo porque eu fico pedindo o comando pra listar aquilo ou aquilo outro, pois é mostrada uma lista com todos os flatpaks instalados e o usuario escolhe o que quer desinstalar. Aí entra aquela mesma questão do uso do ID de aplicação. Mas eu vou conseguir resolver.

8 - Snaps
Eles tem as mesmas funções que os flatpaks tem e dificuldades parecidas, pois pra instalar alguns aplicativos precisa de um nome específico tipo snap install telegram-desktop poi se colocar snap install telegram o snap não reconhece o comando e não instala nada. E a grande maioria dos usuários leigos não digitaria telegram-desktop, no mínimo seria telegram desktop sem o hífen.

9 - Instalação de drivers da NVidia

10 - Wallpapers personalizados
Essa função está OK, mas somente se tiver que transferir as imagens direto pra pasta de wallpapers do sistema. No caso do Ubuntu 20.04, Ubuntu 21.04 e Linux Mint Cinnamon, eu consegui criar até os arquivos .xml que sáo armazenados no diretório contest e no gnome-background-properties. No Elementary OS ainda não encontrei nenhum diretório contest ou gnome-background-properties. Vou tentar colocar direto na pasta backgrounds.
Mas eu acho meio perigoso deixar que um usuário leiogo tenha essa capacidade de fazer isso e quebre o sistema. Acho que vou tirar essa função do aplicativo.

11 - Modificação do Plymouth
Estou fazendo testes usando só um tema por enquanto e está funcionando. Vou ter que baixar mais alguns pra poder ver como eles são instalados no sistema pois alguns deles tem um instalador junto com os arquivos de personalização.

12 - Instalar extensões do gnome-shell
No Ubuntu, naturalmente, funciona sem problemas. Quando o aplicativo é aberto, por exemplo, no Linux Mint Cinnamon, essa função não aparece na lista porque o programa reconhece pela distro onde ele está rodando. Eu uso o comando lsb_release -icrs pra descobrir o nome, codinome e versão da distro.

13 - Mudar wallpaper da tela de login
Por enquanto está funcionando somente no Ubuntu. Ainda não descobri como fazer isso no Linux Mint e outros pois eu tentei e não funcionou.

14 - Instalação de temas e ícones personalizados.
No Ubuntu e no Elementary está funcionando como deveria. Ainda não fiz testes com o Linux Mint, mas creio que deve usar o mesmo princípio.

15 - Reinicialização do sistema
Imagino que isso é algo que não dê trabalho, mesmo pra um usuário leigo, fazer pelo próprio sistema. Mas vai que…

Até então estou fazendo uns testes e aperfeiçoando algumas funcionalidades. Mas, como disse antes, se tiver sugestões, elas serão muito bem vindas.

4 curtidas

Parece um projeto super divertido de fazer e útil, parabéns! :slight_smile:

2 curtidas

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.