Я часто использую терминал, чтобы добавить PPA в свой список ресурсов, чтобы потом выяснить, что PPA не поддерживает мою версию Ubuntu. Allas, таким образом, встречается с ошибкой:
404 Not Found
Как я могу проверить через терминал, если ppa для добавления поддерживает мою версию Ubuntu?
Обновление :
Сценарий теперь проверяет, поддерживает ли ppa ваш дистрибутив, и запрашивает подтверждение, хотите ли вы добавить репозиторий в список источников, и только после этого устанавливает пакеты . [+1112]
Используйте это на свой страх и риск! Я проверял это только на двух 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
....
См. Скрипт в действии:
Улучшено. Оригинальный ответ Уилфа sup>
Я просто изучил некоторый удар для Вас ха-ха. Это работает отлично, я горд (и благодаря 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)
Править: обновленный с идеей 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, поэтому я посмотрел на это, плюс на «Программное обеспечение и обновления» и сделал предположение ...
Ну, у меня есть решение с графическим интерфейсом для вас! Лучший способ для меня - это 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», и я удалил его:)