ppa가 내 배포판을 지원하는지 확인하는 방법


9

나는 종종 터미널을 사용하여 PPA를 내 자원 목록에 추가하고 나중에 PPA가 내 우분투 버전을 지원하지 않는다는 것을 알게됩니다. Allas는 따라서 오류가 발생했습니다.

404  Not Found

ppa를 추가하여 Ubuntu 버전을 지원하는 경우 터미널을 통해 어떻게 확인할 수 있습니까?


@Wilf, 바람직하게는. 그러나 터미널 옵션이 없으면. 적절한 시간이 지나면 GUI 솔루션을 기꺼이 수락합니다.
blade19899

나는 작업 스크립트로 내 대답을 편집했다;)
MrVaykadji

@MrVaykadji, 좋은 하나.
blade19899

답변:


8

업데이트 :

스크립트는 이제 ppa가 배포판을 지원하는지 확인한 다음 소스 목록에 저장소를 추가하고 패키지 만 설치하려는 경우 확인을 요청합니다.

당신의 책임하에 이것을 사용하십시오! 나는 이것을 2 파파에서만 테스트했습니다! 파손 된 패키지에 대해서는 책임을지지 않습니다!

암호:

#!/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의 원래 답변


또한 좋지만 최근에 (haha) if [[ -n something]]"생성하는 경우 출력"에 대한 bash 명령을 사용하여 생성 된 임시 파일을 줄이는 데 도움이됩니다.
MrVaykadji

@MrVaykadji는 깨지지 않은 것을 고치지 않습니다! : D
blade19899

하하! Nb : 나는 당신의 lsb_release -sc생각으로 대답을 업데이트 했고 심지어 그것을 출력에도 사용했습니다.)
MrVaykadji

@MrVaykadji, 빠른 학습자! xD
blade19899

내 방어에서 나는 C를 알고 있었으며 (가장 중요한 것은) "프로그래밍 원칙"의 클래스를 가져갔습니다. 거기에서 Google은 "bash에서 X를 수행하는 방법"과 voilà 만했습니다.
MrVaykadji

7

배포를 위해 PPA를 시도하는 bash 스크립트 :

방금 당신에게 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 with ~ / myscript )

ppa-check

편집 : blade19899의 사용 아이디어로 업데이트되었습니다 .lsb_release


참고 : 프랑스 사람들을 위해 도움말 섹션과 전용 주제로 fr 버전을 만들었습니다
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

1
작동한다고 생각했습니다!
blade19899

3

글쎄, 당신을위한 GUI 솔루션이있을 수 있습니다! 나에게 가장 좋은 방법은 PPA 관리자입니다.

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

시스템에 이미 추가 된 ppa 또는 ppas를 추가 한 경우 PPA 관리자를 열고 ppa 관리를 클릭하면 시스템에 ppa 목록이있는 새 창으로 이동하여 ppa를 클릭하고 list packages사용 가능한 패키지가있는 경우 아래를 선택하십시오. 당신이 그것을 삭제할 수없는 경우 목록. 어제 나에게도 Saucy and Trusty에 대한 PPA가 있었으므로 목록 패키지에 "0"이 표시되어 제거했습니다. :)


Yo dawg, PPA를 확인하고 싶다고 들었습니다. PPA를 확인하는 PPA가 있습니다. D
MrVaykadji

최고 :)
JoKeR
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.