Cara melihat apakah ppa mendukung distro saya

9

Saya sering menggunakan terminal untuk menambahkan PPA ke daftar sumber daya saya, hanya untuk mengetahui setelah itu bahwa PPA tidak mendukung versi Ubuntu saya. Allas, dengan demikian saya disambut dengan kesalahan:

404  Not Found

Bagaimana saya dapat memeriksa melalui terminal, jika ppa yang ditambahkan mendukung versi Ubuntu saya?

blade19899
sumber
@ Will, lebih baik. Tapi, jika tidak ada opsi terminal. Bersedia menerima solusi gui, setelah waktu yang layak.
blade19899
Saya mengedit jawaban saya dengan skrip yang berfungsi;)
MrVaykadji
@MrVaykadji, bagus.
blade19899

Jawaban:

8

Perbarui :

Script sekarang memeriksa apakah ppa mendukung distro Anda, dan kemudian meminta konfirmasi jika Anda ingin menambahkan repo ke daftar sumber Anda dan hanya kemudian menginstal paket.

Gunakan ini dengan risiko Anda sendiri! Saya hanya menguji ini pada dua ppa! Saya tidak akan bertanggung jawab atas paket yang rusak!

kode:

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

pemakaian:

Tidak ada yang mendukung ppa

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

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

Lihat skrip dalam aksi:

Memperbaikinya. Jawaban asli oleh Wilf

blade19899
sumber
Juga bagus, tapi saya baru-baru ini (haha) belajar bahwa itu if [[ -n something]]adalah perintah bash untuk "jika sesuatu sebagai output", yang membantu mengurangi file sementara yang dibuat.
MrVaykadji
@MrVaykadji tidak memperbaiki apa yang tidak rusak! : D
blade19899
Benar haha! Nb: Saya memperbarui jawaban saya dengan lsb_release -scide Anda , dan bahkan menggunakannya pada output;)
MrVaykadji
@MrVaykadji, pelajar cepat! xD
blade19899
Dalam pembelaan saya, saya dulu kenal beberapa C dan (yang paling penting) saya mengambil beberapa kelas "prinsip pemrograman", dari sana, saya hanya perlu google "bagaimana melakukan X dalam bash" dan voilà.
MrVaykadji
7

Skrip bash untuk mencoba PPA untuk distribusi Anda:

Saya baru saja belajar beberapa bash untuk Anda haha. Ini bekerja dengan baik, saya bangga (dan terima kasih kepada Wilf atas jawabannya)

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

Penggunaan:

1) Salin ini dalam file teks di suatu tempat (dalam contoh di bawah ini ~/myscript )

2) Gunakan perintah:

bash myscript ppa:something/something 

Catatan: Anda juga dapat menyalin skrip itu di / usr / bin / folder sudo cp ~/myscript /usr/bin/ppa-test && sudo chmod +x /usr/bin/ppa-test untuk digunakan secara langsung di baris perintah :

ppa-test ppa:something/something


Contoh:

(di sini saya menggunakan: ppa: libreoffice / ppa with ~ / myscript )

periksa ppa

Sunting: diperbarui dengan gagasan blade19899 untuk menggunakanlsb_release

TuanVaykadji
sumber
Catatan: untuk orang Prancis, saya membuat fr-versi dengan bagian bantuan dan topik khusus: forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji
4

Saya tidak mengujinya, tetapi skrip seperti ini seharusnya berfungsi:

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

Anda harus menjalankan ini karena ./SCRIPTNAME ppa:WHATEVER/WHATEVER- liner yang satu ini juga berfungsi, tetapi Anda harus memasukkan nama PPA (di mana ppa:gnome3-team/gnome3):

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

Anda kemudian dapat membuka tautan di terminal (beberapa terminal secara otomatis menampilkan tautan yang dapat diklik), atau menjalankannya dengan curlmengunduhnya sebagai teks. Seharusnya hanya menampilkan daftar folder untuk rilis yang didukung untuk ppa.

Saya baru-baru ini menambahkan ppa, jadi saya melihat hal itu ditambah Perangkat Lunak dan Pembaruan dan membuat perkiraan ...

Wilf
sumber
Saya harus menyebutkan, Anda harus menjalankannya ./SCRIPTNAME ppa:WHATEVER/WHATEVER- tampaknya bekerja meskipun :)
Wilf
1
Diperbaharui itu berhasil!
blade19899
3

Yah saya mungkin punya solusi GUI untuk Anda! Cara terbaik bagi saya adalah PPA Manager:

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

ketika Anda menambahkan ppa atau ppas yang sudah ditambahkan dalam sistem Anda, buka PPA Manager dan klik kelola ppas itu akan membawa Anda ke jendela baru dengan daftar ppas di sistem Anda klik pada ppa apa saja dan pilih di list packagesbawah, jika ada paket yang tersedia itu akan daftar jika tidak, Anda dapat menghapusnya. Bekerja untuk saya bahkan kemarin saya punya ppa untuk Saucy dan Trusty sehingga daftar paket menunjukkan kepada saya "0" dan saya menghapusnya :)

Pelawak
sumber
Yo dawg, saya dengar Anda ingin memeriksa PPA, jadi ada PPA untuk memeriksa PPA Anda: D
MrVaykadji
apapun yang terbaik :)
JoKeR