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?
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!
#!/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/
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
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
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 avec
Sudo 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
(ici j'ai utilisé: ppa: libreoffice/ppa avec ~/myscript)
Edit: mis à jour avec l'idée de blade19899 d'utiliser lsb_release
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 ...
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 :)