Bir ppa dağıtımımı destekleyip desteklemediğini nasıl görebilirim?


9

Terminali, kaynaklar listeme bir PPA eklemek için sık sık kullanıyorum, ancak daha sonra PPA'nın Ubuntu sürümümü desteklemediğini öğrenmek için. Allas, dolayısıyla bir hatayla karşılaşıyorum:

404  Not Found

Eklenecek ppa Ubuntu sürümümü destekliyorsa terminal üzerinden nasıl kontrol edebilirim?


@Wilf, tercihen. Ancak, terminal seçeneği yoksa. İyi bir süre sonra gui çözümlerini kabul etmeye hazırım.
blade19899

Cevabımı çalışan bir senaryo ile düzenledim;)
MrVaykadji

@MrVaykadji, iyi olan.
blade19899

Yanıtlar:


8

Güncelleme :

Komut dosyası şimdi ppa dağıtımınızı destekleyip desteklemediğini kontrol eder ve daha sonra repo'yu kaynaklar listenize eklemek ve yalnızca paketleri yüklerseniz onaylamak için aks.

Bunu kullanmak kendi sorumluluğunuzdadır! Bunu sadece iki ppa üzerinde test ettim! Kırık paketlerden sorumlu tutulmayacağım!

kod:

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

kullanımı:

Desteklenen ppa'lar yok

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

desteklenen ppa'lar

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

Senaryoyu çalışırken görün:

Geliştirildi. Wilf tarafından orijinal cevap


Ayrıca güzel, ama son zamanlarda (haha) bu if [[ -n something]]oluşturulan geçici dosyaları azaltmaya yardımcı olan "çıktı olarak bir şey" için bash komut olduğunu öğrenmek .
MrVaykadji

@ MrVaykadji kırık olmayan şeyleri tamir etmeyin! : D
blade19899

Doğru haha! Not: Cevabınızı lsb_release -scfikrinizle güncelledim ve hatta çıktıda kullandım;)
MrVaykadji

@MrVaykadji, çabuk öğrenen! xD
blade19899

Savunmamda biraz C tanıyordum ve (en önemlisi) bazı "programlama ilkeleri" dersleri aldım, oradan sadece "bash'da X nasıl yapılır" ve voilà'yı google'a gitmek zorunda kaldım.
MrVaykadji

7

Dağıtımınız için bir PPA denemek için bir bash betiği:

Sadece biraz Bash öğrenilen sizin için haha. Bu harika çalışıyor, gurur duyuyorum (ve cevabı için Wilf'e teşekkürler)

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

Kullanımı:

1) Bunu bir yerde bir metin dosyasına kopyalayın (aşağıdaki örnekte ~/myscript)

2) Şu komutu kullanın:

bash myscript ppa:something/something 

Not: Doğrudan komut satırlarında kullanmak için bu komut dosyasını / usr / bin / klasöründe de kopyalayabilirsiniz :sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test

ppa-test ppa:something/something


Misal :

(burada kullandım: ~ / myscript ile ppa: libreoffice / ppa )

ppa-çek

Düzenleme: blade19899'un kullanma fikri ile güncellendilsb_release


Not: Fransız insanlar için bir yardım bölümü ve özel bir konu içeren bir fr sürümü yaptım: forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji

4

Ben test değil, ama böyle bir komut dosyası çalışması gerekir:

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

Bunu şu şekilde çalıştırmanız gerekir ./SCRIPTNAME ppa:WHATEVER/WHATEVER- bu bir astar da çalışır, ancak PPA adını girmelisiniz (nerede ppa:gnome3-team/gnome3):

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

Daha sonra bağlantıyı terminalde açabilir (bazı terminaller otomatik olarak tıklanabilir bağlantıları gösterir) veya curlmetin olarak indirmek için ile çalıştırabilirsiniz . Sadece ppa için desteklenen sürümler için klasör listesini göstermelidir.

Son zamanlarda bir ppa ekledim, bu yüzden buna ek olarak Yazılım ve Güncellemeler'e baktım ve bir tahmin yaptım ...


Bahsetmeliyim, onu çalıştırmak zorunda ./SCRIPTNAME ppa:WHATEVER/WHATEVER- olsa işe yarıyor gibi görünüyor :)
Wilf

1
Upvoted it does work!
blade19899

3

Senin için bir GUI çözümüm olabilir! Benim için en iyi yol PPA Manager:

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

sisteminize zaten eklenmiş ppa veya ppas eklediğinizde, PPA Manager'ı açın ve ppas yönet'i tıklayın, sisteminizdeki ppas listesiyle sizi yeni bir pencereye götürecek herhangi bir ppa'yı tıklayın ve list packagesaşağıdan seçin , mevcut herhangi bir paket varsa listeniz yoksa silebilirsiniz. Dün bile benim için çalıştı Saucy ve Trusty için ppa vardı, bu yüzden liste paketleri bana "0" gösterdi ve kaldırdım :)


Hey, bir PPA kontrol etmek istediğini duydum, bu yüzden
PPA'nızı

ne olursa olsun en iyi :)
JoKeR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.