如何查看PPA是否支持我的发行版


9

我经常使用终端将PPA添加到我的资源列表中,然后才发现PPA不支持我的Ubuntu版本。因此,阿拉斯遇到一个错误:

404  Not Found

如何通过终端检查要添加的PPA是否支持我的Ubuntu版本?


@Wilf,最好。但是,如果没有终端选项。经过一段时间后,我愿意接受gui解决方案。
blade19899

我用有效的脚本编辑了答案;)
MrVaykadji

@MrVaykadji,很好。
blade19899 2014年

Answers:


8

更新

现在,脚本将检查ppa是否支持您的发行版,然后如果您想将存储库添加到源列表中,请先确认,然后再安装软件包。

使用此方法后果自负!我只在两个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]]是bash命令,用于“将某些内容作为输出”,这有助于减少创建的临时文件。
MrVaykadji

@MrVaykadji不修复未损坏的内容!:D
blade19899

哈哈!Nb:我用您的lsb_release -sc想法更新了我的答案,甚至在输出中使用了它;)
MrVaykadji 2014年

@MrVaykadji,快速学习者!xD
blade19899

在辩护中,我曾经认识一些C,并且(最重要的是)我学了一些“编程原理”类,从那里,我只需要在Google上搜索“如何在bash中执行X”和voilà。
MrVaykadji

7

一个bash脚本,尝试为您的发行版使用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检查

编辑:更新了blade19899的使用思想lsb_release


注意:对于法国人,我做了一个fr版本,其中包含一个帮助部分和一个专门主题:forum.ubuntu-fr.org/viewtopic.php?id=1504971
MrVaykadji

4

我没有测试过,但是这样的脚本应该可以工作:

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

您必须按以下方式运行./SCRIPTNAME ppa:WHATEVER/WHATEVER-这一根衬板也可以使用,但是您要插入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-似乎确实可以运行:)
Wilf 2014年

1
投票确实有效!
blade19899 2014年

3

好吧,我可能会为您提供GUI解决方案!对我来说最好的方法是PPA Manager:

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

当您添加了系统中已添加的ppa或ppas时,打开PPA Manager,然后单击管理ppas,它将带您进入系统中有ppas列表的新窗口。单击任何ppa并选择list packages下面的选项(如果有可用的软件包)如果没有列出您可以将其删除。即使是昨天,我也为我工作,因为我为Saucy和Trusty提供了ppa,因此列表包显示我为“ 0”,因此我将其删除了:)


哟,我听说您想签出PPA,所以有一个PPA可以检查您的PPA:D
MrVaykadji 2014年

最好的是:)
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.