Come vedere se un ppa supporta la mia distribuzione


9

Uso spesso il terminale per aggiungere un PPA al mio elenco di risorse, solo per scoprire in seguito che il PPA non supporta la mia versione di Ubuntu. Allas, quindi sono accolto con un errore:

404  Not Found

Come posso verificare tramite terminale, se il ppa da aggiungere supporta la mia versione di Ubuntu?


@Wilf, preferibilmente. Ma se non esiste un'opzione terminale. Sono disposto ad accettare soluzioni gui, dopo un discreto periodo di tempo.
blade19899,

Ho modificato la mia risposta con una sceneggiatura funzionante;)
MrVaykadji,

@MrVaykadji, bello.
blade19899,

Risposte:


8

Aggiornamento :

Lo script ora verifica se ppa supporta la tua distribuzione, quindi chiede conferma se desideri aggiungere il repository all'elenco delle fonti e solo successivamente installa i pacchetti.

Usalo a tuo rischio e pericolo! L'ho provato solo su due ppa! Non sarò responsabile per i pacchetti rotti!

codice:

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

utilizzo:

Nessuno supportato ppa

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

ppa supportati

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

Guarda lo script in azione:

Migliorato. Risposta originale di Wilf


Anche bello, ma recentemente (haha) ho imparato che if [[ -n something]]è il comando bash per "se qualcosa come output", che aiuta a ridurre i file temporanei creati.
MrVaykadji,

@MrVaykadji non aggiusta ciò che non è rotto! : D
blade19899,

Ahah! Nb: ho aggiornato la mia risposta con la tua lsb_release -scidea e l'ho persino usata sull'output;)
MrVaykadji,

@MrVaykadji, studente veloce! xD
blade19899,

A mia difesa, conoscevo un po 'di C e (soprattutto) ho preso alcune classi di "principi di programmazione", da lì ho dovuto semplicemente cercare su Google "come fare X in bash" e voilà.
MrVaykadji,

7

Uno script bash per provare un PPA per la tua distribuzione:

Ho appena imparato un po 'di bash per te ahah. Funziona benissimo, sono orgoglioso (e grazie a Wilf per la sua risposta)

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

Utilizzo:

1) Copia questo in un file di testo da qualche parte (nell'esempio sotto è ~/myscript)

2) Utilizzare il comando:

bash myscript ppa:something/something 

Nota: è anche possibile copiare lo script in / / bin / usr cartella con sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test da utilizzare direttamente in righe di comando :

ppa-test ppa:something/something


Esempio :

(qui ho usato: ppa: libreoffice / ppa con ~ / myscript )

ppa-check

Modifica: aggiornato con l'idea di blade19899 di utilizzarelsb_release


Nota: per i francesi ho realizzato una versione fr con una sezione di aiuto e un argomento dedicato: forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji,

4

Non l'ho provato, ma uno script come questo dovrebbe funzionare:

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

Devi eseguirlo come ./SCRIPTNAME ppa:WHATEVER/WHATEVER- funziona anche questo liner, ma devi inserire il nome PPA (dove si ppa:gnome3-team/gnome3trova):

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

È quindi possibile aprire il collegamento nel terminale (alcuni terminali mostrano automaticamente collegamenti selezionabili) oppure eseguirlo curlper scaricarlo come testo. Dovrebbe solo mostrare l'elenco delle cartelle per le versioni supportate per il ppa.

Di recente ho aggiunto un ppa, quindi ho guardato oltre a software e aggiornamenti e ho fatto un'ipotesi ...


Dovrei menzionarlo, devi eseguirlo come ./SCRIPTNAME ppa:WHATEVER/WHATEVER- sembra funzionare però :)
Wilf

1
Eseguito l'upgrade funziona!
blade19899,

3

Beh, potrei avere una soluzione GUI per te! Il modo migliore per me è PPA Manager:

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

quando hai aggiunto ppa o ppas già aggiunti nel tuo sistema, apri PPA Manager e fai clic su gestisci ppas ti porterà in una nuova finestra con un elenco di ppas nel tuo sistema fai clic su qualsiasi ppa e scegli list packagessotto, se ci sono pacchetti disponibili lo farà in caso contrario puoi eliminarlo. Ha funzionato per me anche ieri avevo ppa per Saucy e Trusty, quindi i pacchetti dell'elenco mi hanno mostrato "0" e l'ho rimosso :)


Ciao, ho sentito che volevi
provare

qualunque sia il migliore :)
JoKeR
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.