Jak sprawdzić, czy ppa obsługuje moją dystrybucję

9

Często używam terminala, aby dodać PPA do mojej listy zasobów, aby później dowiedzieć się, że PPA nie obsługuje mojej wersji Ubuntu. Tak więc witam się z błędem:

404  Not Found

Jak mogę sprawdzić przez terminal, czy dodany ppa obsługuje moją wersję Ubuntu?

blade19899
źródło
@ Wilk, najlepiej. Ale jeśli nie ma opcji terminalu. Jestem gotowy zaakceptować rozwiązania GUI, po przyzwoitym czasie.
blade19899
Zredagowałem swoją odpowiedź działającym skryptem;)
MrVaykadji
@MrVaykadji, nice one.
blade19899

Odpowiedzi:

8

Aktualizacja :

Skrypt sprawdza teraz, czy ppa obsługuje twoją dystrybucję, a następnie aks potwierdza, czy chcesz dodać repo do listy źródeł, a dopiero potem instaluje pakiety.

Wykorzystaj to na własne ryzyko! Testowałem to tylko na dwóch ppa! Nie będę ponosić odpowiedzialności za uszkodzone paczki!

kod:

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

stosowanie:

Żaden nie obsługuje ppa

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

obsługiwane 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
....

Zobacz skrypt w akcji:

Poprawiłem to. Oryginalna odpowiedź Wilfa

blade19899
źródło
Również miło, ale ostatnio (haha) dowiedziałem się, że if [[ -n something]]jest to polecenie bash dla „jeśli coś jako wynik”, które pomaga zmniejszyć ilość tworzonych plików tymczasowych.
MrVaykadji
@MrVaykadji nie naprawia tego, co nie jest zepsute! : D
blade19899
Racja haha! Uwaga: zaktualizowałem odpowiedź o twój lsb_release -scpomysł, a nawet użyłem go na wyjściu;)
MrVaykadji
@MrVaykadji, szybki uczeń! xD
blade19899
Na swoją obronę znałem trochę C i (co najważniejsze) wziąłem kilka klas „zasad programowania”, od tego momentu musiałem po prostu google „jak zrobić X w bash” i voilà.
MrVaykadji
7

Skrypt bash do wypróbowania PPA dla twojej dystrybucji:

Właśnie się nauczyłem dla ciebie haha. Działa to świetnie, jestem dumny (i dziękuję Wilfowi za odpowiedź)

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

Stosowanie :

1) Skopiuj go gdzieś w pliku tekstowym (w poniższym przykładzie ~/myscript)

2) Użyj polecenia:

bash myscript ppa:something/something 

Uwaga: możesz również skopiować ten skrypt do folderu / usr / bin /, sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test aby użyć go bezpośrednio w wierszach poleceń :

ppa-test ppa:something/something


Przykład:

(tutaj użyłem: ppa: libreoffice / ppa with ~ / myscript )

ppa-check

Edycja: zaktualizowano o pomysł użycia blade19899lsb_release

MrVaykadji
źródło
Uwaga: dla Francuzów
zrobiłem
4

Nie przetestowałem tego, ale taki skrypt powinien działać:

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

Musisz uruchomić to jako ./SCRIPTNAME ppa:WHATEVER/WHATEVER- ta jedna linijka również działa, ale wstawiłeś nazwę PPA (gdzie ppa:gnome3-team/gnome3jest):

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

Następnie możesz otworzyć łącze w terminalu (niektóre terminale automatycznie wyświetlają klikalne łącza) lub uruchomić je, curlaby pobrać jako tekst. Powinien po prostu pokazać listę folderów obsługiwanych wersji dla ppa.

Niedawno dodałem ppa, więc spojrzałem na to plus oprogramowanie i aktualizacje i zgadywałem ...

Wilf
źródło
Powinienem wspomnieć, że musisz go uruchomić, ponieważ ./SCRIPTNAME ppa:WHATEVER/WHATEVERwydaje się, że działa :)
Wilf
1
Pozytywne, że to działa!
blade19899
3

Cóż, mogę mieć dla ciebie rozwiązanie GUI! Najlepszym sposobem dla mnie jest Menedżer PPA:

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

kiedy dodasz PPA lub PPAS już dodane w systemie, otwórz PPA Manager i kliknij Zarządzaj PPA, przeniesie Cię do nowego okna z listą PPA w twoim systemie. Kliknij dowolne PPA i wybierz list packagesponiżej, jeśli będą dostępne jakieś pakiety, listę, jeśli nie, możesz ją usunąć. Pracowałem dla mnie nawet wczoraj miałem ppa dla Saucy i Trusty, więc listy pakietów pokazywały mi „0” i usunąłem je :)

Żartowniś
źródło
Yo dawg, słyszałem, że chcesz sprawdzić PPA, więc jest PPA do sprawdzenia PPA: D
MrVaykadji
cokolwiek najlepszego :)
JoKeR