Как узнать, поддерживает ли ppa мой дистрибутив?

9

Я часто использую терминал, чтобы добавить PPA в свой список ресурсов, чтобы потом выяснить, что PPA не поддерживает мою версию Ubuntu. Allas, таким образом встречается с ошибкой:

404  Not Found

Как я могу проверить через терминал, если ppa для добавления поддерживает мою версию Ubuntu?

blade19899
источник
@ Вильф, желательно. Но, если нет терминальной опции. Готов принять решения графического интерфейса, после приличного количества времени.
blade19899
Я отредактировал свой ответ рабочим сценарием;)
MrVaykadji
@ MrVaykadji, хороший.
blade19899

Ответы:

8

Обновление :

Теперь скрипт проверяет, поддерживает ли ppa ваш дистрибутив, и запрашивает подтверждение, хотите ли вы добавить репозиторий в список источников, и только после этого устанавливает пакеты.

Используйте это на свой страх и риск! Я только проверил это на двух PPA! Я не буду нести ответственность за сломанные пакеты!

код:

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

Применение:

Никто не поддержал ppa's

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

поддерживается PPA

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

Смотрите сценарий в действии:

Улучшил это. Оригинальный ответ Уилфа

blade19899
источник
Также неплохо, но я недавно (хаха) узнал, что if [[ -n something]]это команда bash для «если что-то в качестве вывода», которая помогает уменьшить количество создаваемых временных файлов.
MrVaykadji
@ MrVaykadji не исправить то, что не сломано! : D
blade19899
Правильно, ха-ха! Nb: я обновил мой ответ с вашей lsb_release -scидеей, и даже использовал его на выходе;)
MrVaykadji
@MrVaykadji, быстрый ученик! xD
blade19899
В свою защиту я знал немного C и (что наиболее важно) взял некоторые классы «принципов программирования», оттуда мне просто нужно было гуглить «как сделать X в bash» и вуаля.
MrVaykadji
7

Скрипт bash, чтобы попробовать PPA для вашего дистрибутива:

Я только что узнал кое-что для тебя, ха-ха. Это прекрасно работает, я горжусь (и спасибо Уилфу за его ответ)

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

Применение :

1) Скопируйте это в текстовый файл куда-нибудь (в приведенном ниже примере это ~/myscript)

2) Используйте команду:

bash myscript ppa:something/something 

Примечание: вы также можете скопировать этот скрипт в папку / usr / bin / sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test и использовать его непосредственно в командной строке :

ppa-test ppa:something/something


Пример :

(здесь я использовал: ppa: libreoffice / ppa с ~ / myscript )

PPA-проверка

Редактировать: дополнено идеей blade19899 об использованииlsb_release

MrVaykadji
источник
Примечание: для французов я сделал fr-версию с разделом справки и отдельной темой: forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji
4

Я не проверял это, но такой скрипт должен работать:

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

Вы должны запустить это как ./SCRIPTNAME ppa:WHATEVER/WHATEVER- этот лайнер также работает, но вы должны вставить имя PPA (где ppa:gnome3-team/gnome3есть):

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

Затем вы можете открыть ссылку в терминале (некоторые терминалы автоматически показывают кликабельные ссылки) или запустить ее, curlчтобы загрузить ее в виде текста. Он должен просто показать список папок для поддерживаемых выпусков для ppa.

Я недавно добавил ppa, поэтому я посмотрел на это, а также на ПО и обновления и сделал предположение ...

Уилф
источник
Я должен упомянуть, вы должны запустить его как ./SCRIPTNAME ppa:WHATEVER/WHATEVER- он, кажется, работает, хотя :)
Уилф
1
Upvoted это работает!
blade19899
3

Ну, у меня может быть решение с графическим интерфейсом для вас! Лучший способ для меня - это PPA Manager:

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

когда вы добавили ppa или ppas, уже добавленные в вашу систему, откройте PPA Manager и нажмите «Управление ppas», откроется новое окно со списком ppas в вашей системе, щелкните любой ppa и выберите list packagesниже, если будут доступны какие-либо пакеты, он будет список, если не вы можете удалить его. У меня даже вчера работал ppa для Saucy и Trusty, поэтому список пакетов показал мне «0», и я удалил его :)

JoKeR
источник
Эй, черт, я слышал, что вы хотели проверить PPA, поэтому есть PPA, чтобы проверить ваш PPA: D
MrVaykadji
что бы ни было лучше :)
JoKeR