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

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

404 Not Found 

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

Обновление :

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

Используйте это на свой страх и риск! Я тестировал это только на двух 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

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

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

  • Автоматический ppa checker и сумматор – YouTube
  • gist.github.com: blade1989 – add-ppa
    • Для более актуального скрипта проверьте ссылку gist

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

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

Я только что узнал, что ты хочешь . Это отлично работает, я горжусь (и благодаря Wilf за его ответ)

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

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

 #!/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, поэтому я посмотрел на это, а также на «Программное обеспечение и обновления» и сделал предположение …

Ну, у меня может быть GUI-решение для вас! Лучший способ для меня – это 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», и я удалил ее 🙂