web-dev-qa-db-ja.com

PPAが私のディストリビューションをサポートしているかどうかを確認する方法

私はよく端末を使用してPPAをリソースリストに追加しますが、その後はPPAがUbuntuバージョンをサポートしていないことがわかります。 Allas、したがってエラーが表示されます:

404  Not Found

追加するppaが私のUbuntuバージョンをサポートしている場合、どのようにターミナル経由で確認できますか?

9
blade19899

更新

スクリプトは、PPAがディストリビューションをサポートしているかどうかを確認し、リポジトリをソースリストに追加するかどうかの確認を求めてから、パッケージをインストールするだけです。

ご自身の責任でこれを使用してください!私はこれを2つの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
....

動作中のスクリプトを参照してください。

改善しました。 Wilf による元の回答

8
blade19899

ディストリビューションのPPAを試すbashスクリプト:

Bash for yo笑これはうまく機能し、私は誇りに思っています(そして彼の答えに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/folder withSudo cp ~/myscript /usr/bin/ppa-test && Sudo chmod +x /usr/bin/ppa-testコマンドラインで直接使用するため

ppa-test ppa:something/something


例:

(ここで私は使用しました:ppa:libreoffice/ppa with 〜/ myscript

ppa-check

編集:lsb_releaseを使用するblade19899のアイデアで更新

7
MrVaykadji

私はそれをテストしていませんが、このようなスクリプトは動作するはずです:

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

これを./SCRIPTNAME ppa:WHATEVER/WHATEVERとして実行する必要があります-この1つのライナーも機能しますが、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を見て推測しました...

4
Wilf