私はよくターミナルを使用してPPAをリソースリストに追加しますが、PPAが私のUbuntuバージョンをサポートしていないことを後で確認するだけです。Allas、したがって、エラーで迎えられます:
404 Not Found
追加するppaがUbuntuのバージョンをサポートしているかどうか、ターミナルから確認するにはどうすればよいですか?
私はよくターミナルを使用してPPAをリソースリストに追加しますが、PPAが私のUbuntuバージョンをサポートしていないことを後で確認するだけです。Allas、したがって、エラーで迎えられます:
404 Not Found
追加するppaがUbuntuのバージョンをサポートしているかどうか、ターミナルから確認するにはどうすればよいですか?
回答:
更新:
スクリプトは、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
....
実際のスクリプトをご覧ください。
改善しました。ウィルフによる元の答え
if [[ -n something]]
が "if something as a output"のbashコマンドであることを学びました。これは、作成される一時ファイルを減らすのに役立ちます。
lsb_release -sc
考えで私の答えを更新し、出力にも使用しました;)
私はあなたのためにいくつかのバッシュを学びました これはうまく機能し、私は誇りに思っています(そして、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)
編集:blade19899の使用のアイデアで更新されましたlsb_release
私はそれをテストしていませんが、次のようなスクリプトは機能するはずです。
#!/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
それは次のように実行する必要があります
まあ私はあなたのための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」を示し、それを削除しました:)