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


9

私はよくターミナルを使用してPPAをリソースリストに追加しますが、PPAが私のUbuntuバージョンをサポートしていないことを後で確認するだけです。Allas、したがって、エラーで迎えられます:

404  Not Found

追加するppaがUbuntuのバージョンをサポートしているかどうか、ターミナルから確認するにはどうすればよいですか?


@Wilf、できれば。ただし、端末オプションがない場合。まともな時間の後に、GUIソリューションを受け入れる用意があります。
blade19899 2014

私は実際のスクリプトで私の回答を編集しました;)
MrVaykadji '19

@MrVaykadji、いいね。
blade19899 2014

回答:


8

更新

スクリプトは、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
....

実際のスクリプトをご覧ください。

改善しました。ウィルフによる元の答え


またいいですが、私は最近(haha)、それif [[ -n something]]が "if something as a output"のbashコマンドであることを学びました。これは、作成される一時ファイルを減らすのに役立ちます。
MrVaykadji 2014

@MrVaykadjiは壊れていないものを修正しないでください!:D
blade19899

そうだね!Nb:私はあなたのlsb_release -sc考えで私の答えを更新し、出力にも使用しました;)
MrVaykadji 14

@MrVaykadji、素早い学習者!xD
blade19899

私の弁護では、私はCをいくつか知っていましたが、(最も重要なことに)「プログラミングの原則」のクラスをいくつか取り入れました。そこから、「bashでXを実行する方法」をググる必要がありました。
MrVaykadji 2014

7

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

はあなたのためにいくつかのバッシュ学びました これはうまく機能し、私は誇りに思っています(そして、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

ppa-check

編集:blade19899の使用のアイデアで更新されましたlsb_release


注:フランス人の場合、私はヘルプセクションと専用トピックでfrバージョンを作成しました:forum.ubuntu-fr.org/viewtopic.php
id=

4

私はそれをテストしていませんが、次のようなスクリプトは機能するはずです。

#!/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を追加したので、それに加えてソフトウェアとアップデートを見て、推測しました...


私は言及すべきですが、./SCRIPTNAME ppa:WHATEVER/WHATEVERそれは次のように実行する必要があります
それでも

1
それはうまくいきます!
blade19899 2014

3

まあ私はあなたのためのGUIソリューションがあるかもしれません!私にとって最良の方法はPPAマネージャーです。

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

あなたは既にシステム、オープンPPA Managerで追加PPAかのPPAを追加したとのPPAの管理]をクリックしたときには、任意のPPAにお使いのシステムのクリックでのPPAのリストを新しいウィンドウにお連れして選択しますlist packages、それは意志利用可能なパッケージがある場合には、以下のリストされていない場合は削除できます。昨日も私のために働きました、私はSaucyとTrustyのppaを持っていたので、リストパッケージは私に「0」を示し、それを削除しました:)


Yo Dawg、あなたはPPAをチェックアウトしたいと聞いたので、PPAをチェックするためのPPAがあります:D
MrVaykadji 14

最高のものは何でも:)
JoKeR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.