web-dev-qa-db-fra.com

Comment voir si un ppa supporte ma distribution

J'utilise souvent le terminal pour ajouter un PPA à ma liste de ressources, uniquement pour découvrir par la suite que le PPA ne prend pas en charge ma version d'Ubuntu. Allas, je suis donc accueilli avec une erreur:

404  Not Found

Comment puis-je vérifier via un terminal si le ppa à ajouter prend en charge ma version d'Ubuntu?

9
blade19899

Mise à jour :

Le script vérifie maintenant si le ppa prend en charge votre distribution, puis demande confirmation si vous souhaitez ajouter le référentiel à votre liste de sources et installe ensuite uniquement les packages.

Utilisez ceci à vos risques et périls! Je n'ai testé cela que sur deux ppa! Je ne serai pas tenu responsable des colis cassés!

code:

#!/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/

usage:

Aucun supporté ppa's

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

pris en charge par 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
....

Voir le script en action:

Je l'ai amélioré. Réponse originale de Wilf

8
blade19899

Un script bash pour essayer un PPA pour votre distribution:

Je viens d'apprendre quelques bash pour vous haha. Cela fonctionne très bien, je suis fier (et merci à Wilf pour sa réponse)

#!/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

Utilisation:

1) Copiez ceci dans un fichier texte quelque part (dans l'exemple ci-dessous, il s'agit de ~/myscript)

2) Utilisez la commande:

bash myscript ppa:something/something 

Remarque: vous pouvez également copier ce script dans/usr/bin/dossier avecSudo cp ~/myscript /usr/bin/ppa-test && Sudo chmod +x /usr/bin/ppa-testà utiliser directement dans les lignes de commande:

ppa-test ppa:something/something


Exemple :

(ici j'ai utilisé: ppa: libreoffice/ppa avec ~/myscript)

ppa-check

Edit: mis à jour avec l'idée de blade19899 d'utiliser lsb_release

7
MrVaykadji

Je ne l'ai pas testé, mais un script comme celui-ci devrait fonctionner:

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

Vous devez exécuter ceci en tant que ./SCRIPTNAME ppa:WHATEVER/WHATEVER - cette doublure fonctionne également, mais vous devez insérer le nom PPA (où ppa:gnome3-team/gnome3 est):

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

Vous pouvez ensuite ouvrir le lien dans le terminal (certains terminaux affichent automatiquement les liens cliquables) ou l'exécuter avec curl pour le télécharger sous forme de texte. Il devrait simplement afficher la liste des dossiers des versions prises en charge pour le ppa.

J'ai récemment ajouté un ppa, j'ai donc regardé cela, en plus des logiciels et mises à jour et fait une supposition ...

4
Wilf

Eh bien, je pourrais avoir une solution graphique pour vous! Le meilleur moyen pour moi est PPA Manager:

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

lorsque vous avez déjà ajouté ppa ou ppas dans votre système, ouvrez PPA Manager et cliquez sur gérer ppas. Une nouvelle fenêtre contenant une liste des ppas de votre système s'affiche. Cliquez sur n’importe quel ppa et choisissez list packages ci-dessous, le cas échéant. tous les paquets disponibles seront listés sinon vous pouvez le supprimer. Même hier, j'ai travaillé avec ppa pour Saucy et Trusty, donc la liste des paquets m'a montré "0" et je l'ai enlevée :)

3
JoKeR