Como ver se um ppa suporta minha distribuição

9

Costumo usar o terminal para adicionar um PPA à minha lista de recursos, apenas para descobrir depois que o PPA não suporta minha versão do Ubuntu. Allas, assim, sou recebido com um erro:

404  Not Found

Como posso verificar via terminal, se o ppa a ser adicionado suporta minha versão do Ubuntu?

blade19899
fonte
@ Wilf, de preferência. Mas, se não houver opção de terminal. Estou disposto a aceitar uma solução de GUI, após um período decente de tempo.
blade19899
Eu editei a minha resposta com um roteiro de trabalho;)
MrVaykadji
@MrVaykadji, nice one.
blade19899

Respostas:

8

Atualização :

O script agora verifica se o ppa suporta sua distribuição e, em seguida, pede confirmação se você deseja adicionar o repositório à sua lista de fontes e só depois instala os pacotes.

Use isso a seu próprio risco! Eu só testei isso em dois ppa's! Não serei responsável por pacotes quebrados!

código:

#!/bin/bash


#-----------------------------------------------
#   Author      :   Imri Paloja
#   Email       :   ****.******@*****.***
#   HomePage    :   www.eurobytes.nl
#   Version     :   3.0
#   Name        :   add-ppa
#----------------------------------------------- 

# CHANGELOG
# 
# 1. Asks for confirmation if ppa supports distro.

mkdir /tmp/add-ppa/

wget --quiet "http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists" -O /tmp/add-ppa/support.html

grep "$(lsb_release -sc)" "/tmp/add-ppa/support.html" >> /tmp/add-ppa/found.txt

cat /tmp/add-ppa/found.txt | sed 's|</b>|-|g' | sed 's|<[^>]*>||g' >> /tmp/add-ppa/stripped_file.txt

if [[ -s /tmp/add-ppa/stripped_file.txt ]] ; then

echo "$(lsb_release -sc) is supported"


read -p "Do you wish to install add the ppa to your source, and install the binaries [y/n] ?"
if [ "$REPLY" == "y" ] ; then

echo "Adding it to your sources list"
sudo add-apt-repository $1

echo "Refreshing your sources list"
sudo apt-get update 

# Searching for the needed files, and installing them

wget --quiet "http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists/$(lsb_release -sc)/main/binary-amd64/Packages" -O /tmp/add-ppa/packages.html

grep "Package:" "/tmp/add-ppa/packages.html" >> /tmp/add-ppa/packages.txt

cat /tmp/add-ppa/packages.txt | sed ':a;N;$!ba;s/\n/ /g' >> /tmp/add-ppa/packages_stripped_file.txt

cat /tmp/add-ppa/packages_stripped_file.txt | sed 's|Package:||g' >> /tmp/add-ppa/packages_stripped_file2.txt

sudo apt-get install $(grep -vE "^\s*#" /tmp/add-ppa/packages_stripped_file2.txt  | tr "\n" " ")

else
 exit 0
fi

else

echo "$(lsb_release -sc) is not supported"

fi;

#Cleanup

rm -r /tmp/add-ppa/

uso:

Nenhum ppa suportado

./support.sh ppa:m-gehre/ppa
saucy is not supported

ppa's suportados

./support.sh ppa:banshee-team/ppa
saucy is supported
Do you wish to add the ppa to your sources list, and install the binaries [y/n] ??

Adding it to your sources list
...
Refreshing your sources list
...
sudo apt-get install
....

Veja o script em ação:

Melhorou. Resposta original de Wilf

blade19899
fonte
Também legal, mas eu recentemente (haha) aprendi que if [[ -n something]]é o comando bash para "se algo como saída", que ajuda a reduzir os arquivos temporários criados.
21414 MrVaykadji
@MrVaykadji não conserte o que não está quebrado! : D
blade19899
Certo haha! Nota: eu atualizei minha resposta com a sua lsb_release -scideia e até a usei na saída;)
MrVaykadji
@MrVaykadji, aprendiz rápido! xD
blade19899
Em minha defesa, eu conhecia um pouco de C e (o mais importante) fiz algumas aulas de "princípios de programação"; a partir daí, só precisei pesquisar no Google "como fazer X no bash" e pronto.
21414 MrVaykadji
7

Um script bash para tentar um PPA para sua distribuição:

Acabei de aprender um pouco de festa para você haha. Isso funciona muito bem, estou orgulhoso (e obrigado a Wilf por sua resposta)

#!/bin/bash
# usage : bash myscript ppa:something/something

# get list of ppa's supported distribution
wget http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists -O /tmp/test-ppa.tmp -q

# check if your release is in the downloaded list
RELEASE=`cat /tmp/test-ppa.tmp | grep $(lsb_release -sc)`
if [[ -n "$RELEASE" ]] ; then 
    echo "$1 will work with $(lsb_release -si) $(lsb_release -sr) $(lsb_release -sc)"
else 
    echo "$1 won't work with $(lsb_release -si) $(lsb_release -sr) $(lsb_release -sc)"
fi

# cleaning
rm /tmp/test-ppa.tmp

Uso:

1) Copie isso em um arquivo de texto em algum lugar (no exemplo abaixo ~/myscript)

2) Use o comando:

bash myscript ppa:something/something 

Nota: você também pode copiar esse script na pasta / usr / bin / sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test para usá-lo diretamente nas linhas de comando :

ppa-test ppa:something/something


Exemplo:

(aqui eu usei: ppa: libreoffice / ppa com ~ / myscript )

ppa-check

Edit: atualizado com a ideia de blade19899 de usarlsb_release

MrVaykadji
fonte
Nota: para os franceses, fiz uma versão inicial com uma seção de ajuda e um tópico dedicado: forum.ubuntu-fr.org/viewtopic.php?id=1504971 #
MrVaykadji
4

Não testei, mas um script como este deve funcionar:

#!/bin/bash
echo "http://ppa.launchpad.net/$(echo $1 | sed -e 's/ppa://g')/ubuntu/dists"

Você deve executar isso como ./SCRIPTNAME ppa:WHATEVER/WHATEVER- este liner também funciona, mas você inseriu o nome do PPA (onde ppa:gnome3-team/gnome3está):

echo "http://ppa.launchpad.net/$(echo ppa:gnome3-team/gnome3 | sed -e 's/ppa://g')/ubuntu/dists"

Você pode abrir o link no terminal (alguns terminais mostram automaticamente links clicáveis) ou executá-lo curlpara fazer o download como texto. Ele deve apenas mostrar a lista de pastas dos releases suportados para o ppa.

Recentemente, adicionei um ppa, então olhei para ele e o software e atualizações e fiz um palpite ...

Wilf
fonte
Eu deveria ter mencionado, você tem que executá-lo como ./SCRIPTNAME ppa:WHATEVER/WHATEVER- parece-obra embora :)
Wilf
11
Upvoted ele trabalha!
blade19899
3

Bem, eu posso ter uma solução GUI para você! A melhor maneira para mim é o PPA Manager:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

quando você adicionou ppa ou ppas já adicionados ao seu sistema, abra o PPA Manager e clique em gerenciar ppas; ele será levado para uma nova janela com uma lista de ppas no sistema; clique em qualquer ppa e escolha list packagesabaixo; se houver algum pacote disponível, lista, se não, você pode excluí-lo. Trabalhou para mim até ontem. Eu tinha ppa para Saucy e Trusty, então os pacotes da lista me mostraram "0" e eu o removi :)

Palhaço
fonte
Yo dawg, ouvi dizer que você queria verificar um PPA, então há um PPA para verificar seu PPA: D
MrVaykadji
qualquer que seja o melhor :)
JoKeR 20/02/2014