Wie man sieht, ob ein ppa meine Distribution unterstützt

9

Ich benutze das Terminal oft, um meiner Ressourcenliste eine PPA hinzuzufügen, um anschließend festzustellen, dass die PPA meine Ubuntu-Version nicht unterstützt. Allas, also werde ich mit einem Fehler begrüßt:

404  Not Found

Wie kann ich über das Terminal prüfen, ob das hinzuzufügende ppa meine Ubuntu-Version unterstützt?

Klinge19899
quelle
@ Wilf, vorzugsweise. Aber wenn es keine Terminaloption gibt. Bin bereit, eine GUI-Lösung nach einer angemessenen Zeit zu akzeptieren.
Blade19899
Ich habe meine Antwort mit einem funktionierenden Skript bearbeitet;)
MrVaykadji
@ MrVaykadji, schön.
Blade19899

Antworten:

8

Update :

Das Skript prüft nun, ob der ppa Ihre Distribution unterstützt, und fragt dann nach einer Bestätigung, ob Sie das Repo zu Ihrer Quellenliste hinzufügen möchten, und installiert erst dann die Pakete.

Verwenden Sie dies auf eigenes Risiko! Ich habe das nur auf zwei ppa getestet! Ich werde nicht für kaputte Pakete verantwortlich gemacht!

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/

Verwendungszweck:

Keiner unterstützte ppa's

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

unterstützte ppa's

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

Sehen Sie das Skript in Aktion:

Verbessert es. Ursprüngliche Antwort von Wilf

Klinge19899
quelle
Auch schön, aber ich habe kürzlich (haha) erfahren, dass dies if [[ -n something]]der Bash-Befehl für "Wenn etwas als Ausgabe ist" ist, der dazu beiträgt, die erstellten temporären Dateien zu reduzieren.
MrVaykadji
@ MrVaykadji nicht reparieren, was nicht kaputt ist! : D
Blade19899
Richtig haha! Nb: Ich habe meine Antwort mit Ihrer lsb_release -scIdee aktualisiert und sie sogar für die Ausgabe verwendet;)
MrVaykadji
@ MrVaykadji, schneller Lerner! xD
Blade19899
Zu meiner Verteidigung kannte ich C und (was am wichtigsten ist) ich nahm einige Klassen von "Programmierprinzipien", von dort musste ich nur "wie man X in Bash macht" und voilà googeln.
MrVaykadji
7

Ein Bash-Skript zum Testen einer PPA für Ihre Distribution:

Ich habe gerade etwas Bash für dich gelernt , haha. Das funktioniert super, ich bin stolz (und danke an Wilf für seine Antwort)

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

Verwendungszweck :

1) Kopieren Sie dies irgendwo in eine Textdatei (im folgenden Beispiel ist es ~/myscript)

2) Verwenden Sie den Befehl:

bash myscript ppa:something/something 

Hinweis: Sie können dieses Skript auch in den Ordner / usr / bin / kopieren, sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test um es direkt in Befehlszeilen zu verwenden :

ppa-test ppa:something/something


Beispiel:

(hier habe ich verwendet: ppa: libreoffice / ppa mit ~ / myscript )

ppa-check

Bearbeiten: aktualisiert mit der Idee von Blade19899lsb_release

MrVaykadji
quelle
Hinweis: Für Franzosen habe
MrVaykadji
4

Ich habe es nicht getestet, aber ein Skript wie dieses sollte funktionieren:

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

Sie müssen dies ausführen als ./SCRIPTNAME ppa:WHATEVER/WHATEVER- dieser eine Liner funktioniert auch, aber Sie müssen den PPA-Namen einfügen (wo ppa:gnome3-team/gnome3ist):

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

Sie können den Link dann im Terminal öffnen (einige Terminals zeigen automatisch anklickbare Links an) oder ihn ausführen curl, um ihn als Text herunterzuladen. Es sollte nur die Liste der Ordner für die unterstützten Versionen für den ppa angezeigt werden.

Ich habe kürzlich einen ppa hinzugefügt, also habe ich mir das und die Sache mit Software und Updates angesehen und eine Vermutung angestellt ...

Wilf
quelle
Ich sollte erwähnen, dass Sie es ausführen müssen als ./SCRIPTNAME ppa:WHATEVER/WHATEVER- es scheint jedoch zu funktionieren :)
Wilf
1
Upvoted funktioniert es!
Blade19899
3

Nun, ich könnte eine GUI-Lösung für Sie haben! Der beste Weg für mich ist PPA Manager:

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

Wenn Sie ppa oder ppas hinzugefügt haben, die bereits in Ihrem System hinzugefügt wurden, öffnen Sie den PPA-Manager und klicken Sie auf ppas verwalten. Sie gelangen zu einem neuen Fenster mit einer Liste von ppas in Ihrem System. Klicken Sie auf einen beliebigen ppa und wählen Sie list packagesunten aus, ob Pakete verfügbar sind Liste, wenn nicht, können Sie es löschen. Ich habe sogar gestern für mich gearbeitet. Ich hatte ppa für Saucy und Trusty, also zeigten Listenpakete "0" und ich entfernte es :)

Joker
quelle
Yo dawg, ich habe gehört, Sie wollten eine PPA auschecken, also gibt es eine PPA, um Ihre PPA zu überprüfen: D
MrVaykadji
was auch immer das Beste :)
JoKeR