Comment voir si un ppa prend en charge ma distribution

9

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

404  Not Found

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

blade19899
la source
@Wilf, de préférence. Mais, s'il n'y a pas d'option de terminal. Suis prêt à accepter une solution gui, après un laps de temps décent.
blade19899
J'ai édité ma réponse avec un script de travail;)
MrVaykadji
@MrVaykadji, chouette.
blade19899

Réponses:

8

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 les packages.

Utilisez-le à 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é par les ppa

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

ppa pris en charge

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

Amélioré. Réponse originale de Wilf

blade19899
la source
Aussi sympa, mais j'ai récemment (haha) appris que if [[ -n something]]c'est la commande bash pour "si quelque chose en tant que sortie", ce qui aide à réduire les fichiers temporaires créés.
MrVaykadji
@MrVaykadji ne corrige pas ce qui n'est pas cassé! : D
blade19899
Haha! Nb: J'ai mis à jour ma réponse avec votre lsb_release -scidée, et je l'ai même utilisée sur la sortie;)
MrVaykadji
@MrVaykadji, apprenant rapide! xD
blade19899
Pour ma défense, je connaissais un peu le C et (surtout) j'ai pris quelques classes de "principes de programmation", à partir de là, je devais simplement google "comment faire X en bash" et voilà.
MrVaykadji
7

Un script bash pour essayer un PPA pour votre distribution:

Je viens d'apprendre quelque 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, c'est ~/myscript)

2) Utilisez la commande:

bash myscript ppa:something/something 

Remarque: vous pouvez également copier ce script dans le dossier / usr / bin / avec sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test pour l'utiliser directement en ligne 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'utiliserlsb_release

MrVaykadji
la source
Remarque: pour les français, j'ai fait une version fr avec une section d'aide et un sujet dédié: forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji
4

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 cela comme ./SCRIPTNAME ppa:WHATEVER/WHATEVER- cette doublure fonctionne également, mais vous avez inséré le nom PPA (où ppa:gnome3-team/gnome3est):

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 des liens cliquables), ou l'exécuter avec curlpour le télécharger sous forme de texte. Il devrait simplement afficher la liste des dossiers pour les versions prises en charge pour le ppa.

J'ai récemment ajouté un ppa, alors j'ai regardé cela plus le logiciel et les mises à jour et j'ai fait une supposition ...

Wilf
la source
Je devrais mentionner, vous devez l'exécuter comme ./SCRIPTNAME ppa:WHATEVER/WHATEVER- cela semble fonctionner cependant :)
Wilf
1
A voté ça marche!
blade19899
3

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 ajouté du ppa ou des ppas déjà ajoutés dans votre système, ouvrez le gestionnaire PPA et cliquez sur gérer les ppas, cela vous amènera à une nouvelle fenêtre avec une liste des ppas dans votre système, cliquez sur n'importe quel ppa et choisissez list packagesci-dessous, s'il y a des packages disponibles, il sinon, vous pouvez le supprimer. J'ai travaillé pour moi même hier, j'avais ppa pour Saucy et Trusty, donc les paquets de liste m'ont montré "0" et je l'ai supprimé :)

Joker
la source
Yo dawg, j'ai entendu que vous vouliez vérifier un PPA, donc il y a un PPA pour vérifier votre PPA: D
MrVaykadji
quel que soit le meilleur :)
JoKeR