Skip to content

Instantly share code, notes, and snippets.

@morkin1792
Last active January 13, 2017 12:10
Show Gist options
  • Save morkin1792/8bd72b21339ba293b3076a343c4076ed to your computer and use it in GitHub Desktop.
Save morkin1792/8bd72b21339ba293b3076a343c4076ed to your computer and use it in GitHub Desktop.
Tentativa de fazer um gerenciador de pacotes que não dependa de root e sirva para distros não baseadas em debian.
#!/bin/bash
tmp='/tmp'
tdir="$tmp"/v #local de arquivo temporario
mkdir -p "$tdir"
link='https://packages.debian.org'
search="/search?keywords="
word="gimp" #nome exemplo de pesquisa
arch='amd64'
version='jessie'
[ "$1" ] && {
word="$1"
}
lista() { #mostra resultados possíveis para a pesquisa em r1
(curl "$link""$search""$word") > "$tdir"/tname
r1=( $(cat "$tdir"/tname | grep -Ei -o "<[^>]*>Package [^<]*$word[^<]*" | grep -E -o '[^\ ]*[\ ]*$') )
}
get_link(){
r2=$(curl "$link"/"$version"/"$arch"/$1/download | grep -E -o '"(http[s]?[^<>]*[.]deb)"' | head -1 | grep -E -o 'http[^"]*[.]deb')
}
lista
c=0 #c conta a quantia de opções disponíveis
for i in ${r1[@]}; do
((c++))
echo "[$c] - $i"
done
if [ $c -gt 1 ];then #se há 1 opção ou mais encontradas
echo -n "Escolha um dos pacotes [1-$c]: "
read n
get_link "${r1[n-1]}"
if [ -z "$r2" ]; then
echo "Não foi encontrado o pacote para '$version' ou '$arch'"
else
echo "${r1[n-1]} downloading in $tmp... "
(cd "$tmp"; curl -# "$r2" -O)
echo "Done"
fi
else
echo "Nenhum pacote encontrado para '$word'."
fi
rm -rf "$tdir" 2>/dev/null
@morkin1792
Copy link
Author

Por enquanto só baixa pacote, sem verificar dependências.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment