Como saber a soma do tamanho dos aplicativos instalados?  [Resolvido]

Reporte aqui dúvidas sobre aplicativos diversos, instalação e utilização.
Regras do fórum Leia as Regras Gerais do Manjaro Brasil em "Normatividade" e pesquise antes de postar.
Se sua dúvida foi respondida, não esqueça de marcar RESOLVIDO em seus tópicos, botão com a marca verde Imagem

Como saber a soma do tamanho dos aplicativos instalados?

Mensagempor Daniel Dutra » 26 Ago 2016, 01:04  •  MS 1

Boa noite pessoal tudo bem? Espero que sim!

Venho mais uma vez com uma duvida simplista novamente.

Gostaria de saber a soma do tamanho de todos os aplicativos (pacotes) que tenho instalado no manjaro.

No pamac ele mostra a informação do tamanho de cada aplicativo:
Imagem

Mas eu gostaria de ver o tamanho de uma maneira geral de todos os aplicativos juntos. Ou seja quanto ficaria o tamanho em GB de todos os aplicativos que tenho instalado.

Existe algum comando para eu obter essa informação?

Desde já agradeço!
Como devo me comportar? Interessantes regras de etiqueta para minha pessoa.

Data do primeiro contato e da instalação do manjaro em meu notebook: (01/08/2016) Manjaro Daniella 16.06.1 XFCE
Avatar do usuário
Daniel Dutra
Membro

 
Mensagens: 143
Artigos: 3
Registro: 01 Ago 2016, 21:25
Agradeceu: 28 vez(es)
Agradecido: 23 vez(es)
Distro utilizada: Manjaro
Versão: 16.06.1 Daniella- 16.08 Ellada
Ambiente: XFCE
Repositório: Stable
Habilidade: Novice

Como saber a soma do tamanho dos aplicativos instalados?  [Resolvido]

Mensagempor chmercesmoreira » 26 Ago 2016, 21:06  •  MS 2

Olá Daniel, eu procurei por algum comando que faça isso mas não encontrei, o que encontrei foi algumas pessoas que criaram maneiras de ordenar os pacotes por tamanho:
https://bbs.archlinux.org/default.html"postlink" href="https://bbs.archlinux.org/default.html" onclick="window.open(this.href);return false;">https://bbs.archlinux.org/default.html"codebox">
Código: Selecionar todos
#!/bin/bash

# Calculates the total size of all the packages installed on the system

B=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ B | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
KiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ KiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
MiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ MiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
GiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ GiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)

if [ -z "$B" ]; then let "B = 0"; fi
if [ -z "$KiB" ]; then let "KiB = 0"; fi
if [ -z "$MiB" ]; then let "MiB = 0"; fi
if [ -z "$GiB" ]; then let "GiB = 0"; fi

echo $(bc <<< $B+$KiB*1024+$MiB*1024*1024+$GiB*1024*1024*1024 | sed 's/\./,/g' | numfmt --to=iec-i --suffix=B)


Você vai precisar instalar o pacote bc para realizar as operações aritméticas:
Código: Selecionar todos
# pacman -S bc


O script calcula o tamanho total dos pacotes oficiais instalados no sistema, se você quiser saber a soma dos tamanhos dos pacotes do AUR (externos) altere esse trecho do script:
Código: Selecionar todos
B=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ B | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
KiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ KiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
MiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ MiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
GiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ GiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)

para
Código: Selecionar todos
B=$(pacman -Qi $(pacman -Qm | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ B | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
KiB=$(pacman -Qi $(pacman -Qm | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ KiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
MiB=$(pacman -Qi $(pacman -Qm | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ MiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
GiB=$(pacman -Qi $(pacman -Qm | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ GiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)


Os resultados que obtive foram:
6,0GiB para os pacotes oficiais e 1006MiB para os pacotes externos.

Pelos testes que fiz o script está funcionando corretamente, se ele não funcionar corretamente reporta aqui que eu tento corrigir.

Pronto já chega de bash por hoje rs.
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por chmercesmoreira em 26 Ago 2016, 21:13, em um total de 1 vez.
Razão: Correção
Imagem Imagem

Esta mensagem de chmercesmoreira recebeu agradecimentos de
Daniel Dutra (26 Ago 2016, 23:23)
chmercesmoreira
Especial

 
Mensagens: 751
Artigos: 1
Registro: 31 Jan 2016, 10:58
Agradeceu: 15 vez(es)
Agradecido: 223 vez(es)
Distro utilizada: Manjaro
Versão: 2018
Ambiente: KDE
Repositório: Stable
Habilidade: Intermediate

Como saber a soma do tamanho dos aplicativos instalados?

Mensagempor Daniel Dutra » 26 Ago 2016, 23:19  •  MS 3

Nossa companheiro moreira você criou um script para responder a minha duvida? kkkk
Sua resposta foi muito completa. Obrigado creio que vai ser util para muitas pessoas viu. Sim, funcionou perfeitamente!

Digitei primeiro o comando pacman -Q |wc -l para ver quantos pacotes tenho instalado e em seguida rodei o script.

Veja só:
Imagem


Só queria entender o funcionamento dele. Ele realmente apresenta apenas o resultado do tamanho dos pacotes instalados é?

Ps.: Você poderia postar esse script no forum do manjaro ingles quem sabe os desenvolvedores do manjaro não implementam ele ou criam uma ferramenta que faça algo parecido rsrs
Editado pela última vez por Daniel Dutra em 26 Ago 2016, 23:20, em um total de 1 vez.
Razão: Acrescentar informações
Como devo me comportar? Interessantes regras de etiqueta para minha pessoa.

Data do primeiro contato e da instalação do manjaro em meu notebook: (01/08/2016) Manjaro Daniella 16.06.1 XFCE
Avatar do usuário
Daniel Dutra
Membro

 
Mensagens: 143
Artigos: 3
Registro: 01 Ago 2016, 21:25
Agradeceu: 28 vez(es)
Agradecido: 23 vez(es)
Distro utilizada: Manjaro
Versão: 16.06.1 Daniella- 16.08 Ellada
Ambiente: XFCE
Repositório: Stable
Habilidade: Novice

Como saber a soma do tamanho dos aplicativos instalados?

Mensagempor chmercesmoreira » 27 Ago 2016, 00:00  •  MS 4

Eu já "estagiei" na minha universidade e trabalhei com desenvolvimento para Linux, na verdade não foi estágio, e sim uma bolsa de iniciação científica, e lá eu acabei aprendendo dentre outras coisas a criar scripts bash. Desde então eu gosto de praticar e vi seu pedido como uma oportunidade. Acabei conhecendo as ferramentas bc e numfmt durante o desenvolvimento desse script, valeu a pena no final rs.

Para entender o funcionamento desse script você precisa executar os comandos por partes para ir entendendo como ele constrói a solução final, talvez a única coisa que você possa ter dificuldades em entender seja o uso de expressões regulares, pois isso eu aprendi no meu curso de graduação, aqui tem informações sobre isso: https://pt.wikipedia.org/wiki/Express%C3%A3o_regular

Vou tentar explicar o script por partes:
Código: Selecionar todos
pacman -Qi *nomeDoPacote*

Exibi informações de um pacote.

Código: Selecionar todos
pacman -Q

Exibi o nome de todos os pacotes instalados juntamente com a versão.

Código: Selecionar todos
pacman -Q | cut -d' ' -f1

o comando cut da forma como está sendo invocado "recorta" apenas a primeira coluna da saída do comando pacman -Q, dessa forma eu obtenho apenas os nomes dos pacotes e descarto a versão.

Código: Selecionar todos
pacman -Qi $(pacman -Q | cut -d' ' -f1)

Eu exibo informações de todos os pacotes instalados no sistema, incluindo o tamanho de cada pacote. A saída desse comando é enorme mas ela contém tudo o que preciso para o meu objetivo final que é calcular a soma do tamanho de todos esses pacotes.

Código: Selecionar todos
grep -oiE [0-9]+,[0-9]+\ B

É aqui que entra a expressão regular, meu objetivo com o comando grep é recortar da saída do comando anterior apenas o tamanho dos pacotes, descartando todas as outras informações, através dessa expressão regular eu filtro a saída do comando anterior e consigo esse objetivo, para isso eu reparei que o tamanho dos pacotes sempre segue o padrão números,números B ou números,números KiB ou números,números MiB ou números,números GiB. Através da expressão eu filtro esse padrão.

Código: Selecionar todos
cut -d' ' -f1

Com a saída do comando anterior eu tenho em mãos um stream de texto com o tamanho de todos os pacotes seguido da unidade de armazenamento (B, KiB, MiB, GiB), com o comando cut eu removo essa unidade e mantenho apenas o número.

Código: Selecionar todos
paste -s -d+

Com esse comando eu começo a preparar a operação aritmética que vai ser realizada pelo último comando da cadeia de pipes (bc), eu tenho um stream de texto com todos os números referentes ao tamanhos de todos os pacotes, para preparar esse stream para ser a entrada do comando bc eu adiciono o sinal delimitador + entre cada um desses números, é isso que esse comando está fazendo.

Código: Selecionar todos
sed 's/,/./g'

Aqui foi outra preparação para o comando bc, alguns dos números que eu tenho em mãos no stream de texto possuem parte fracionária e estão em um formato em que a parte decimal é separada da parte fracionária por uma virgula, ex: 121,20. O comando bc não aceita essa notação com vírgula, então eu usei o comando sed para substituir todas as vírgulas por pontos.

Código: Selecionar todos
B=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ B | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
KiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ KiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
MiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ MiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)
GiB=$(pacman -Qi $(pacman -Q | cut -d' ' -f1) | grep -oiE [0-9]+,[0-9]+\ GiB | cut -d' ' -f1 | paste -s -d+ | sed 's/,/./g' | bc)

Repare que eu executei o mesmo comando 4 vezes, para armazenar os tamanhos dos pacotes referentes a cada tipo de unidade de armazenamento (B, KiB, MiB, GiB), eu fiz isso porque preciso diferenciar entre as unidades durante a leitura do tamanho dos arquivos.

Código: Selecionar todos
if [ -z "$B" ]; then let "B = 0"; fi
if [ -z "$KiB" ]; then let "KiB = 0"; fi
if [ -z "$MiB" ]; then let "MiB = 0"; fi
if [ -z "$GiB" ]; then let "GiB = 0"; fi

Aqui basicamente estou usando a estrutura de seleção "if" para verificar se algum dos valores anteriores não foi calculado (quando não existe nenhum pacote no sistema com uma determinada unidade, o que é frequente para a unidade GiB), e estou armazenando o valor zero na variável que ficou vazia para não ocorrerem erros no próximo comando.

Código: Selecionar todos
$B+$KiB*1024+$MiB*1024*1024+$GiB*1024*1024*1024

Aqui estou convertendo todas as unidades para bytes, e somando todos os valores para no final obter o tamanho total de todos os pacotes em bytes.

Código: Selecionar todos
sed 's/\./,/g'

Diferentemente do comando bc que faz a leitura de números fracionários usando . "ponto", o comando numfmt usa o formato com , "virgula", então estou substituindo o ponto pela vírgula novamente.

Código: Selecionar todos
numfmt --to=iec-i --suffix=B

Aqui converto o número em bytes para a unidade de armazenando mais apropriada (calculada pelo comando numfmt automaticamente).

Tentei resumir como o script funciona por partes, no meu caso é mais fácil entender pois eu estudo isso (faço ciência da computação como curso de graduação), não sei se será simples para alguém que não tem familiaridade com programação. Mas como você parece que está querendo aprender deixo aqui essa ajuda rs.
Editado pela última vez por chmercesmoreira em 27 Ago 2016, 00:09, em um total de 5 vezes.
Razão: Correção
Imagem Imagem

Esta mensagem de chmercesmoreira recebeu agradecimentos de
Daniel Dutra (27 Ago 2016, 13:16)
chmercesmoreira
Especial

 
Mensagens: 751
Artigos: 1
Registro: 31 Jan 2016, 10:58
Agradeceu: 15 vez(es)
Agradecido: 223 vez(es)
Distro utilizada: Manjaro
Versão: 2018
Ambiente: KDE
Repositório: Stable
Habilidade: Intermediate

Como saber a soma do tamanho dos aplicativos instalados?

Mensagempor Daniel Dutra » 27 Ago 2016, 13:18  •  MS 5

Muito obrigado companheiro chmercesmoreira apesar de não ser da area eu compreendi sim a explicação. Claro que não completamente porque como você disse quem realmente é da area vai ter um melhor entendimento mas deu para entender a logica usada por você. Vai ser bom para outros membros que quiserem aprender mais a respeito.

Agradeço!
Como devo me comportar? Interessantes regras de etiqueta para minha pessoa.

Data do primeiro contato e da instalação do manjaro em meu notebook: (01/08/2016) Manjaro Daniella 16.06.1 XFCE
Avatar do usuário
Daniel Dutra
Membro

 
Mensagens: 143
Artigos: 3
Registro: 01 Ago 2016, 21:25
Agradeceu: 28 vez(es)
Agradecido: 23 vez(es)
Distro utilizada: Manjaro
Versão: 16.06.1 Daniella- 16.08 Ellada
Ambiente: XFCE
Repositório: Stable
Habilidade: Novice


Tópicos Semelhantes Estatísticas Última mensagem

Como listar pacotes instalados de um repositório específico?

por Ricardo Almeida » 05 Abr 2020, 23:42

Respostas: 2

Exibições: 361

07 Abr 2020, 07:48

por Ricardo Almeida Ver última mensagem

Voltar para Aplicativos



Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes

^ Voltar ao Topo