Como ver se um ppa suporta minha distro

9

Eu geralmente uso 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, portanto, é recebido com um erro:

404  Not Found

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

    
por blade19899 19.02.2014 / 19:58

4 respostas

8

Atualizar :

O script agora verifica se o ppa suporta sua distro e, em seguida, pergunta se deseja adicionar o repositório à sua lista de fontes e só então instala os pacotes.

Use isso por sua conta e risco! Eu só testei isso em dois ppa's! Eu 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  | 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 

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

# Searching for the needed files, and installing them

wget --quiet "http://ppa.launchpad.net/$(echo  | 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 compatível com ppa

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

suportado pelo ppa

./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:

Melhorado. Resposta original por Wilf

    
por blade19899 19.02.2014 / 22:09
7

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

Acabei de aprender um pouco de bash para você haha. Isso funciona muito bem, estou orgulhoso (e graças 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  | 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 " will work with $(lsb_release -si) $(lsb_release -sr) $(lsb_release -sc)"
else 
    echo " 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 
  
    
      

Observação: você também pode copiar o script na pasta / usr / bin / com sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test para usar diretamente nas linhas de comando :

             

ppa-test ppa:something/something

    
  

Exemplo:

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

Editar: atualizado com a ideia do blade19899 de usar lsb_release

    
por MrVaykadji 19.02.2014 / 20:19
4

Eu não testei, mas um roteiro como esse deve funcionar:

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

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

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

Você pode então abrir o link no terminal (alguns terminais mostram automaticamente links clicáveis) ou executá-lo com curl para baixá-lo como texto. Deve apenas mostrar a lista de pastas para as versões suportadas para o ppa.

Eu adicionei recentemente um ppa, então eu olhei para isso mais o software e atualizações e fiz um palpite ...

    
por Wilf 19.02.2014 / 20:52
3

Bem, eu posso ter uma solução de interface gráfica para você! A melhor maneira para mim é o gerente de PPA:

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 em seu sistema, abra o Gerenciador PPA e clique em gerenciar ppas ele levará você para nova janela com uma lista de ppas em seu sistema clique em qualquer ppa e escolha list packages abaixo, caso haja Quaisquer pacotes disponíveis serão listados se você não puder excluí-los. Trabalhei para mim mesmo ontem eu tinha ppa para Saucy e Trusty então os pacotes de lista me mostraram "0" e eu removi:)

    
por JoKeR 19.02.2014 / 21:11