Як дізнатися, чи підтримує PPA мій дистрибутив


9

Я часто використовую термінал, щоб додати PPA до мого списку ресурсів, щоб потім з'ясувати, що PPA не підтримує мою версію Ubuntu. Allas, таким чином, мене зустрічають з помилкою:

404  Not Found

Як я можу перевірити через термінал, якщо доданий ppa підтримує мою версію Ubuntu?


@ Wilf, бажано. Але, якщо немає термінального варіанту. Я готовий прийняти рішення gui, після пристойної кількості часу.
blade19899

Я відредагував свою відповідь робочим сценарієм;)
MrVaykadji

@MrVaykadji, приємний.
blade19899

Відповіді:


8

Оновлення :

Тепер сценарій перевіряє, чи підтримує 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/

використання:

Жодна підтримка пап, що не підтримуються

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

Дивіться сценарій у дії:

Вдосконалили його. Оригінальна відповідь Вільфа


Також добре, але я нещодавно (ха-ха) дізнався, що if [[ -n something]]це команда bash для "якщо щось як вихід", що допомагає зменшити створені тимчасові файли.
MrVaykadji

@MrVaykadji не виправляє те, що не порушено! : D
blade19899

Правильно ха-ха! Nb: я оновив свою відповідь вашою lsb_release -scідеєю і навіть використав її на виході;)
MrVaykadji

@MrVaykadji, швидкий вчитель! xD
blade19899

На свій захист я знав деякий C і (головне), що я взяв кілька класів "принципів програмування", звідти мені просто довелося гугл "як зробити X в баш" і voilà.
MrVaykadji

7

Баш сценарій, щоб спробувати 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-чек

Редагувати: оновлено ідеєю використання blade19899lsb_release


Примітка. Для французів
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, тому я подивився на це плюс на додаток Software and Updates і здогадався ...


Я мушу сказати, ви повинні запустити це як ./SCRIPTNAME ppa:WHATEVER/WHATEVER- це, здається, працює :)
Вільф

1
Прихильне це робить!
blade19899

3

Ну, можливо, у вас є рішення для GUI! Найкращий спосіб для мене - менеджер PPA:

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

коли ви додали ppa або ppas, які вже додані у вашій системі, відкрийте диспетчер PPA та натисніть керувати ppas, він перенесе вас у нове вікно зі списком ppas у вашій системі, натисніть на будь-який ppa та виберіть list packagesнижче, якщо є якісь пакети. список, якщо ні, ви можете видалити його. Я працював для мене ще вчора, я мав ppa для Saucy і Trusty, тому список пакетів показав мені "0", і я його видалив :)


Yo dawg, я чув, що ви хочете перевірити PPA, тому є PPA, щоб перевірити ваш PPA: D
MrVaykadji

що б найкраще :)
JoKeR
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.