Você não está autenticado.

Anúncio

Arch Linux Brasil está precisando de sua colaboração para realizar o pagamento do domínio e do host, para colaborar, realizar doações via paypal.

Para mais informações: contato at archlinux-br.org.

#1 15/12/2012 01:15:54

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

[bash]limpac (O script paccache faz o serviço)

Não é muito recomendado utilizar os comandos pacman -Sc e pacman -Scc.
Por causa disso existem scripts que gerenciam a remoção de arquivos na pasta cache.
Com os scripts você pode determinar quantas versões do pacote deve ser mantida.

cacheclean - https://wiki.archlinux.org/index.php/CleanCache
paccache do  pacman-contrib - https://wiki.archlinux.org/index.php/Pa … lean_cache

Ambos não apagam os arquivos de pacotes desinstalados.
Na página do wiki(Pacman_Tips)  tem um comando para  mostrar os pacotes e então você pode apagá-los manualmente na pasta /var/cache/pacman/pkg

Because paccache does not remove the cache of uninstalled packages, you can display them with diff from diffutils and then optionally delete each package in the /var/cache/pacman/pkg directory:

pacman -S diff
diff -y <(pacman -Qq) <(ls /var/cache/pacman/pkg/ | sed 's/^\(.*\)-[^-]*-[^-]*-[^-]*$/\1/' | sort -u)

If you want to display the output with colors install colordiff:

pacman -S colordiff
colordiff -y <(pacman -Qq) <(ls /var/cache/pacman/pkg/ | sed 's/^\(.*\)-[^-]*-[^-]*-[^-]*$/\1/' | sort -u)

falconindy escreveu:
https://wiki.archlinux.org/index.php/Pacman_Tips#Selectively_clean_cache  escreveu:

Because paccache does not remove the cache of uninstalled packages

I've no idea what this means, but paccache can definitely remove uninstalled packages. Hell, even pacman alone can remove uninstalled packages.
I'm familiar with paccache -- I wrote it. I'm baffled as to why the wiki claims paccache doesn't do what I wrote it to do.

Allan escreveu:

I'll keave falconindy to follow-up paccahce.   But this is exactly what "pacman -Sc" does with "CleanMethod = KeepInstalled" (default) in pacman.conf


Conversando com o desenvolvedor do paccache, o script faz o serviço de limpeza de cache dos pacotes desinstalados.
A informação no arch-wiki está errada.

Para isso :

usage: paccache <operation> [options] [targets...]

paccache is a flexible pacman cache cleaning utility, which has numerous
options to help control how much, and what, is deleted from any directory
containing pacman package tarballs.

  Operations:
    -d               perform a dry run, only finding candidate packages.
    -m  <movedir>    move candidate packages to 'movedir'.
    -r               remove candidate packages.

  Options:
    -a  <arch>       scan for 'arch' (default: all architectures).
    -c  <cachedir>   scan 'cachedir' for packages (default: /var/cache/pacman/pkg).
    -f               apply force to mv(1) and rm(1) operations.
    -h               display this help message.
    -i  <pkgs>       ignore 'pkgs', which is a comma separated. Alternatively,
                     specify '-' to read package names from stdin, newline delimited.
    -k  <num>        keep 'num' of each package in 'cachedir' (default: 3).
    -u               target uninstalled packages.
    -v               increase verbosity. specify up to 3 times.
    -z               use null delimiters for candidate names (only with -v and -vv)

O número da opção keep -k deve ser igual a zero e adicione a opção -u.

paccache -dvuk0  - visualiza os arquivos dos pacotes desinstalados
paccache -rvuk0  - remove os arquivos dos pacotes desinstalados

ou
"pacman -Sc" com "CleanMethod = KeepInstalled" no pacman.conf - Não cheguei a testar

Recomendo utilizar o paccache, pois está sempre em desenvolvimento junto com o pacman. Faz parte do pacman-contrib
https://www.archlinux.org/packages/core/x86_64/pacman/

Vou deixar o script limpac aqui
- Suporte Locale LC_MESSAGES - retirado do pacman.mo

#!/bin/bash
# Remove uninstalled files in the folder
# /var/cache/pacman/pkg/
# swatquest

#shopt -s -o nounset
export TEXTDOMAINDIR=/usr/share/locale/
export TEXTDOMAIN=pacman

# Declarações Globais
declare -rx SCRIPT=${0##*/}
declare PASTA="/var/cache/pacman/pkg/"
declare ARQUIVOS=$(basename -a ${PASTA}*| sed '/-[^-]*-[^-]*-[^-]*$/ s///'| grep -Fxv -f <(pacman -Qq)| uniq)
declare VERSION=0.9

# Verificação de requesitos
[[ -z "$BASH" ]] && { printf "$SCRIPT: Please execute this scrip with the bash shell.\n" >&2; exit 192; }

[[ -d "$PASTA" ]] || { printf "$(gettext -e "could not access cache directory %s\n" )\n" "$PASTA" >&2; exit 192; }

[ "$UID" != 0 ] && SU=sudo

ajuda() {
cat << USOAJUDA
$(gettext "usage"):$SCRIPT [$(gettext "options")]
  -h  | --help       : display this help and exit
  -v  | --version    : output version information and exit
  -f  | --files      : list files uninstalled
  -r  | --remove     : remove uninstalled files
  -o  | --orphans    : view and remove orphaned files
  -p  | --pack       : list packages uninstalled
  -l  | --list       : creates two files containing the list aur and repo 

USOAJUDA
}

[[ $# -le 0 ]] && { ajuda; exit 0; }

limpar_orfaos() {
declare ORPHAN=$(pacman -Qdtq)
 [ -z "$ORPHAN" ] && printf "$(gettext -e " there is nothing to do\n")\n" || $SU pacman -Rscn ${ORPHAN}
}

arquivos() {
  if [ -n "$ARQUIVOS" ]; then
    declare GREPARQ=$(sed -e ':a;N;$!ba;s/\n/|/g' <(printf "$ARQUIVOS")) 
    declare -a ACHADOS=($(ls ${PASTA}* | grep -E "[^-]($GREPARQ)-[^-]*-[^-]*-[^-]*$"))
    declare -i NUM=${#ACHADOS[*]}
    declare CONTA=$(stat -c %s ${ACHADOS[*]} | awk '{ soma += $1 } END { print soma }')
    declare TOTAL=$(printf "$CONTA" | awk '{ soma=$1 ; unid[1024]="KiB"; unid[1024^2]="MiB"; unid[1024^3]="GiB"; for (x=1024^3; x>=1024; x/=1024){ if (soma>=x) { printf ("%.2f %s\n",soma/x,unid[x]); break }}if (soma<1024) { printf "%d %s\n",soma,"bytes"} }'| sed '/\./ s//,/') 
    basename -a ${ACHADOS[*]}
    printf "\n%20d %s %s\n" "$NUM" "$(gettext "file(s)")" "[ $TOTAL ]"
  else
    printf "$(gettext -e " there is nothing to do\n")\n"
  fi
}

remove() {
  if [ -n "$ARQUIVOS" ]; then
    declare GREPARQ=$(sed -e ':a;N;$!ba;s/\n/|/g' <(printf "$ARQUIVOS")) 
    declare -a ACHADOS=($(ls ${PASTA}* | grep -E "[^-]($GREPARQ)-[^-]*-[^-]*-[^-]*$"))

    $SU rm -rf ${ACHADOS[*]}
    basename -a ${ACHADOS[*]} | xargs -n 1 printf "%s %s\n" "$(gettext "removing")"
  else
    printf "$(gettext -e " there is nothing to do\n")\n"
  fi
}

pacotes() {
  [[ -n "$ARQUIVOS" ]] && printf "%s\n" "$ARQUIVOS" || printf "$(gettext -e " there is nothing to do\n")\n"
}

lista() {
declare AUR=$(pacman -Qqm)
    pacman -Qq |grep -Fxv "$AUR" > ~/pglistrepo
    printf "$AUR" > ~/pkglistaur
    printf "$(gettext -e "Backup Files:\n") pkglistaur | pkglistaur ($HOME)\n"
}

while [ $# -gt 0 ]; do
  case "$1" in
    -f | --files ) arquivos;;
    -r | --remove ) remove;;
    -p | --pack ) pacotes;;
    -o | --orphans) limpar_orfaos;;
    -l | --list ) lista;;
    -h | --help )  ajuda; exit 0;;
    -v | --version )  printf "%s\n" "$SCRIPT-$VERSION"; exit 0;;
    * ) ajuda; printf "%s %s\n" "$(gettext "Unknown")" ": $1"; break;;
   esac
 shift
done
exit 0

Última edição por swatquest (15/01/2013 17:23:44)

Offline

#2 15/12/2012 01:24:27

hotvic
Membro
De: Remígio - PB
Registrado: 25/07/2012
Mensagens: 475
Website

Re: [bash]limpac (O script paccache faz o serviço)

só tenho uma coisa a dizer, parabéns!!!


Google + | Twitter
“A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original.” (Albert Einstein)

Offline

#3 15/12/2012 01:38:52

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

Valeu!

Sugestões e correções serão bem-vindas.

Offline

#4 15/12/2012 02:11:16

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

O comando não estava encontrando todos os programas desinstalados.
Alvos (7): exempi-2.2.0-1  gnome-desktop-1:3.6.2-1  gtksourceview3-3.6.1-1
           libpeas-1.6.1-1  gedit-3.6.2-2  nautilus-3.6.3-1  slim-1.3.4-4
Não tinha sido encontrado o gtksourceview3 como mostra na imagem
0.1
limpac.jpg

Versão 0.2
- Fixado erro na busca por programas desinstalados.
- Adicionado versão do pacote
limpac3.jpg

Última edição por swatquest (16/12/2012 20:16:37)

Offline

#5 16/12/2012 20:11:07

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

versão 0.3

- removido sort -u
- removido o caminho dos arquivos, agora só mostra o nome do arquivo em localizar e apagar
- modificado printf para echo

Última edição por swatquest (02/01/2013 01:29:15)

Offline

#6 18/12/2012 11:47:02

leoarcher
Admin
De: Arapiraca - AL
Registrado: 13/07/2006
Mensagens: 1.286
Website

Re: [bash]limpac (O script paccache faz o serviço)

Muito bom!


Se copiarem, forneçam a fonte de origem. Se alguma resposta te ajudou a solucionar o problema, por favor edite o título do tópico e adicione "[Resolvido]" a ele (sem as aspas). Obrigado!

Offline

#7 18/12/2012 23:36:24

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

versão 0.4
- Adicionado busca e limpeza de arquivos órfãos ( opção -o) . O próprio pacman  mostra os arquivos que serão desinstalados.

Última edição por swatquest (18/12/2012 23:38:13)

Offline

#8 19/12/2012 14:04:05

leoarcher
Admin
De: Arapiraca - AL
Registrado: 13/07/2006
Mensagens: 1.286
Website

Re: [bash]limpac (O script paccache faz o serviço)

swatquest escreveu:

versão 0.4
- Adicionado busca e limpeza de arquivos órfãos ( opção -o) . O próprio pacman  mostra os arquivos que serão desinstalados.

Mandei um email pra você, no ig.com.br!


Se copiarem, forneçam a fonte de origem. Se alguma resposta te ajudou a solucionar o problema, por favor edite o título do tópico e adicione "[Resolvido]" a ele (sem as aspas). Obrigado!

Offline

#9 27/12/2012 00:36:32

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

Versão 0.5
  - Versão otimizada
  - Consertado alguns erros
  - Consertado erros críticos na busca de arquivos e remoção
  - Adicionado informações de quantidade e tamanho na procura de arquivos
  - Adicionado um gerador de 2 arquivos com a lista repo e aur em ~/


Erros crítico na busca - imagens da versão 0.4 e 0.5
Foi  removido o gsreamer com o comando  pacman -Rscndd gstreamer
tela4.jpg
tela3.jpg

Otimização
Executei um makepkg -sc para instalar o libreoffice-gnome. Ele 33 arquivos e então cancelei.
Passei limpac -o  e ele removeu os 33 arquivos.

Comando limpac -f
Execução terminada: 33 arquivo(s) (Tamanho total: 37.70MiB)

versão 0.4
real    0m0.287s
user    0m0.289s
sys    0m0.058s

versão 0.5
real    0m0.065s
user    0m0.058s
sys    0m0.008s


versão 0.5
tela1.jpg

Última edição por swatquest (27/12/2012 02:06:08)

Offline

#10 29/12/2012 20:02:04

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

versão 0.6
- modificado algumas opções nas declarações
ex
declare -i
declare -r

Última edição por swatquest (29/12/2012 20:02:45)

Offline

#11 02/01/2013 01:17:14

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

versão 0.7

- verifica se a pasta /var/cache/pacman/pkg/ existe
- corrigido um erro de texto em ajuda --file para --files
- modificado human-readable
- a variável ACHADOS agora é uma array

Última edição por swatquest (02/01/2013 01:37:44)

Offline

#12 07/01/2013 00:35:10

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

versão 0.8
-fixado saida da verficação da pasta
- modificado a exibição da versão.
- a saida do total substitui o ponto por vírgula .

Última edição por swatquest (07/01/2013 00:44:56)

Offline

#13 07/01/2013 14:46:00

hotvic
Membro
De: Remígio - PB
Registrado: 25/07/2012
Mensagens: 475
Website

Re: [bash]limpac (O script paccache faz o serviço)

swatquest, tenho uma sugestão, não sei se vai gostar.

não seria melhor criar um projeto no github, ou gitorious ?
ao meu ver usar GIT ficária mais fácil.

espero que goste big_smile


Google + | Twitter
“A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original.” (Albert Einstein)

Offline

#14 07/01/2013 23:16:20

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

valeu..

vou ver o github, mas não devo fazer grandes modificações.

Offline

#15 15/01/2013 16:17:19

swatquest
Moderador
Registrado: 05/10/2010
Mensagens: 1.962

Re: [bash]limpac (O script paccache faz o serviço)

Não há necessidade do script limpac

O próprio paccache já faz o serviço de limpeza de pacote desinstalados

Offline

Rodapé do site