Cómo ver si un ppa admite mi distribución


9

A menudo uso el terminal para agregar un PPA a mi lista de recursos, solo para descubrir después que el PPA no es compatible con mi versión de Ubuntu. Allas, por lo tanto, soy recibido con un error:

404  Not Found

¿Cómo puedo verificar a través de la terminal, si el ppa que se va a agregar es compatible con mi versión de Ubuntu?


@Wilf, preferiblemente. Pero, si no hay una opción de terminal. Estoy dispuesto a aceptar soluciones gui, después de un tiempo decente.
blade19899

Edité mi respuesta con un guión de trabajo;)
MrVaykadji

@ MrVaykadji, agradable.
blade19899

Respuestas:


8

Actualización :

La secuencia de comandos ahora comprueba si el ppa admite su distribución, y luego solicita confirmación si desea agregar el repositorio a su lista de fuentes y solo luego instala los paquetes.

¡Usa esto bajo tu propio riesgo! ¡Solo probé esto en dos ppa's! ¡No seré responsable por paquetes rotos!

código:

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

uso:

Ninguno compatible con ppa

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

ppa soportado

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

Ver el guión en acción:

Lo mejoré. Respuesta original de Wilf


También es agradable, pero recientemente (jaja) aprendí que if [[ -n something]]es el comando bash para "si algo como salida", que ayuda a reducir los archivos temporales creados.
MrVaykadji

@MrVaykadji, ¡no arregles lo que no está roto! : D
blade19899

Correcto jaja! Nb: actualicé mi respuesta con su lsb_release -scidea, e incluso la usé en la salida;)
MrVaykadji

@ MrVaykadji, aprendiz rápido! xD
blade19899

En mi defensa, solía conocer algo de C y (lo más importante) tomé algunas clases de "principios de programación", a partir de ahí, solo tuve que buscar en Google "cómo hacer X en bash" y voilà.
MrVaykadji

7

Un script bash para probar un PPA para su distribución:

Acabo de aprender algo de fiesta para ti jaja. Esto funciona muy bien, estoy orgulloso (y gracias a Wilf por su respuesta)

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

Uso:

1) Copie esto en un archivo de texto en alguna parte (en el ejemplo a continuación está ~/myscript)

2) Usa el comando:

bash myscript ppa:something/something 

Nota: también puede copiar ese script en la carpeta / usr / bin / sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test para usarlo directamente en las líneas de comando :

ppa-test ppa:something/something


Ejemplo:

(aquí usé: ppa: libreoffice / ppa con ~ / myscript )

ppa-check

Editar: actualizado con la idea de blade19899 de usarlsb_release


Nota: para los franceses, hice una versión fr con una sección de ayuda y un tema dedicado: forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji

4

No lo he probado, pero un script como este debería funcionar:

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

Debe ejecutar esto como ./SCRIPTNAME ppa:WHATEVER/WHATEVER: este revestimiento también funciona, pero debe insertar el nombre de PPA (donde ppa:gnome3-team/gnome3está):

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

Luego puede abrir el enlace en la terminal (algunas terminales muestran automáticamente enlaces en los que se puede hacer clic), o ejecutarlo curlpara descargarlo como texto. Solo debe mostrar la lista de carpetas para las versiones compatibles para el ppa.

Recientemente agregué un ppa, así que miré eso más el software y las actualizaciones e hice una suposición ...


Debo mencionar que tienes que ejecutarlo, ./SCRIPTNAME ppa:WHATEVER/WHATEVERaunque parece funcionar :)
Wilf

1
¡Votado sí funciona!
blade19899

3

Bueno, ¡podría tener una solución GUI para ti! La mejor manera para mí es PPA Manager:

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

cuando agregue ppa o ppas que ya se agregaron en su sistema, abra el Administrador de PPA y haga clic en administrar ppas, lo llevará a una nueva ventana con una lista de ppas en su sistema, haga clic en cualquier ppa y elija a list packagescontinuación, si hay algún paquete disponible, aparecerá lista si no puede eliminarlo. Trabajó para mí incluso ayer tuve ppa para Saucy y Trusty, así que los paquetes de la lista me mostraron "0" y lo eliminé :)


Hola, escuché que querías consultar un PPA, así que hay un PPA para verificar tu PPA: D
MrVaykadji

lo que sea mejor :)
JoKeR
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.