PPA는 어떻게 제거 할 수 있습니까?


1220

add-apt-repository명령을 사용하여 많은 PPA를 추가했습니다 . 이러한 PPA를 제거하는 간단한 방법이 있습니까? 내가 체크인 한 /etc/apt/sources.list적절한 뎁 라인에 대한하지만 그들은이 없습니다.

이것은 서버 시스템에 있으므로 명령 행 솔루션이 좋습니다!


11
add-apt-repository 명령에 --remove 인수를 요청하는 런치 패드 버그 ( bugs.launchpad.net/software-properties/+bug/446216 )가 있습니다. 기능을 구현하기 위해 병합 요청 ( code.launchpad.net/~mac9416/software-properties/… )을 제출 했지만 아직 승인되지 않았습니다. 이 기능을 곧 사용할 수 있기를 바랍니다.
Michael Crenshaw

좋은 소식입니다. 추가 명령을 취소하는 명령이 없다는 것이 약간 짜증났다. 설치 만하는 적성과 비슷합니다! ppa-purge는 좋지만 공식적인 repos에는 없습니다.
David Ashford

1
관련. (특히, 물떼새와 일하게 된 것에 대한 나의 대답을ppa-purge 보라.)
Eliah Kagan

1
나는 불필요한 검색을 시도하고 그 다음에 하나씩 del (rm -rf)을 시도하도록 조언 할 수 있습니다 : grep -i WhatYouWantTosearch /etc/apt/sources.list{,.d/*}
Vladimir Ch

2
GUI : sudo synaptic> 구성> 저장소> PPA>> (PAA 선택)> 삭제
Fran

답변:


1535

--removePPA가 추가 된 방식과 유사한 플래그를 사용하십시오 .

sudo add-apt-repository --remove ppa:whatever/ppa

보다 안전한 대안으로 ppa-purge를 설치할 수 있습니다.

sudo apt-get install ppa-purge

그런 다음 PPA를 제거하여 공식 저장소에서 제공하는 패키지로 PPA를 정상적으로 다운 그레이드하십시오.

sudo ppa-purge ppa:whatever/ppa

PPA에서 제공하는 패키지는 제거되지만 공식 리포지토리에서 제공되는 패키지는 제거되지 않습니다. 그것들을 제거하려면 apt에게 알려 주어야합니다.

sudo apt-get purge package_name

디렉토리 에서 .list파일을 삭제하여 PPA를 제거 할 수도 있습니다 /etc/apt/sources.list.d.

마지막으로 마우스를 몇 번만 클릭하면 터미널이 필요하지 않은 우분투 설정의 "소프트웨어 소스"섹션에서 PPA를 비활성화하거나 제거 할 수 있습니다.


27
이렇게하면 리포지토리 목록에서 PPA가 제거되지만 패키지가 표준 저장소의 최신 버전 인 경우 나중에 패키지를 수동으로 다운 그레이드해야합니다. ppa-purge (다른 답변 참조)가 그렇게합니다.
Marcel Stimberg

30
나는 다음을 얻는다 add-apt-repository: error: no such option: --remove:-/
Rafa

7
그것은해야sudo apt-add-repository --remove ppa:repo_name/subdirectory
MountainX

7
마찬가지로, 내가 얻을 add-apt-repository: error: no such option: --removeadd-apt-repository: error: no such option: -r
virtualxtc

66
이것은 종료하기 위해 "시작"버튼을 클릭하는 것만큼이나 논리적입니다.
Gauthier

264

명령 행을 통해 추가 된 PPA를 제거하는 옵션으로 apt-add-repository를 다시 실행하면 --remove됩니다. 예를 들면 다음과 같습니다.

sudo apt-add-repository --remove ppa:kernel-ppa/ppa

그런 다음 업데이트하십시오.

sudo apt-get update

이렇게하면 해당 PPA가 영구적으로 제거됩니까?
Chirag

1
예, 영구적입니다. 다시 사용하려면 처음하는 것처럼 수동으로 추가해야합니다.
ish

5
레코드의 경우 --remove / -r 플래그가 10.10에 추가되었습니다. 출처 : askubuntu.com/a/18202/41756
Niels Bom

6
상술 한 바와 같이; 나는 13.10을 실행하고 있는데add-apt-repository: error: no such option: --remove
virtualxtc

1
@ClainDsilva PPA에서 설치했을 수있는 모든 패키지 버전이 로컬에 설치되어 있기 때문입니다. 항상 ppa-purge를 사용해야합니다.
John Scott

172

다른 방법으로 ppas저장되어 /etc/apt/sources.list.d사용자가 입력하여 제거 할 일을 찾을 수 있습니다 :

ls /etc/apt/sources.list.d

그런 다음 해당 ppa의 이름 (예 :)을 기록하면 myppa.list다음을 입력 할 수 있습니다.

sudo rm -i /etc/apt/sources.list.d/myppa.list

rm에 주의를 기울십시오 (따라서 대화식 스위치를 사용하여 조치를 확인할 수있게 된 sudo apt-get update후 나중에 실행하십시오) .

이 방법은 단지 ppa .list파일을 제거 합니다. 다른 파일을 제거하거나 ppa; ppa-purge업데이트 기능을 다시 얻은 후에 사용할 수 있습니다 (귀하의 질문에서 이것을 언급했지만 향후 독자를 위해이 점을 추가하고 있습니다) : 자세한 내용 은 여기 를 참조 하십시오ppa-purge .

또한 이전에 저장소의 키를 신뢰할 수있는 것으로 추가 한 경우 제거해야합니다 .

# list the trusted keys
sudo apt-key list
# remove the key
sudo apt-key del KEY_ID

7
받아 들인 대답은 그렇지 않지만 이것은 나를 위해 일했습니다.
philshem

나는 /etc/apt/sources.list.d/ 폴더의 전체 내용을 삭제하고 여전히 4 개 잘못된 항목이 : / 지금 실패하기 시작 이유는 ...
erm3nda

키를 나열 할 때 키와 같은 줄이 표시 pub 2048R/5044912E 2010-02-11됩니다. 이 경우이 키를 삭제하려면 KEY_IDis 5044912E입니다. askubuntu.com/a/107189/108037을 참조하십시오 . 키 ID로 전달되면 apt-key del자동으로 실패 했기 때문에 이것을 언급합니다 . OK2048R/5044912E
jamesc

125

당신은 사용할 수 있습니다

sudo ppa-purge ppa:repository-name/subdirectory

터미널에서 명령.

ppa-purge이 명령을 사용 하려면 먼저 설치해야합니다 . 이렇게하려면 sudo apt-get install ppa-purge이 버튼을 사용 하거나 클릭하십시오.

소프트웨어 센터를 통해 설치

자세한 내용은 여기를 참조 하십시오 .


5
삭제 된 리포지토리에는 작동하지 않습니다.이 경우 "경고 : PPA의 패키지 목록을 찾을 수 없습니다 : repository-name 서브 디렉토리"로 실패합니다.
Lekensteyn

우분투 11.10에서는 사용할 수 없거나 틀렸습니까?
math

9
요, 이것은 나에게 효과가 없었지만 어쨌든 나는 구문을 너무 좋아하여 투표하고 있습니다.
Conrad. Dean

@DaveJarvis는 모든 시스템에 기본적으로 설치되어 있지 않습니다 = /. 설치 방법에 대한 정보를 포함하도록 답변을 편집했습니다.
Alaa Ali

이것은 나를 위해 작동하지 않았으며, 분명히 ppa를 비활성화하지 않았으며 실제로 패키지를 다운 그레이드하지 않았습니다. 그러나 package-name / distribution과 같은 패키지 목록을 인쇄합니다. 수동으로 ppa를 비활성화 한 다음 apt-get install <완전한 패키지 목록>을 실행하면 apt-get이 출력에 따라 자동으로 다운 그레이드됩니다. 내부적으로.
Berdir

44

이 질문에 대한 답변 이 도움이 될 것입니다.

에서 System > Administration > Software Sources또는 파일을 제거하여 PPA를 관리 할 수 ​​있습니다 /etc/apt/sources.list.d/.

ppa-purge 라는 패키지를 사용할 수도 있습니다 .

그리고 위에 링크 된 질문에 대해 언급 한 것처럼

런치 패드 에 add-apt-repository 명령에 --remove 인수를 요청 하는 버그 가 있습니다 . 기능을 구현하기 위해 병합 요청 을 제출 했지만 아직 승인되지 않았습니다. 이 기능을 곧 사용할 수 있기를 바랍니다.


2
에서 찾았습니다 Ubuntu Software Center > Edit > Software Sources.
Josh M.

"ppa-purge"링크가 작동하지 않습니다. 404 오류가 발생합니다.
Cristiana Nicolae

3
참고로 Ubuntu 16.04의 PPA 목록을 찾는 방법은 다음과 같습니다.System Settings -> System -> Software & Updates -> Other Software
knocte

33

일부 사람들은 GUI를 통해 리포지토리를 추가하고 제거하는 것을 선호 할 수 있습니다. 우분투 10.10부터는 약간의 추가 작업이 필요합니다. 위키 에 대한 설명이 있습니다 . 이 질문에 대한 모든 답변을 한 곳에 모으기 위해 여기에서 중요한 세부 사항을 시도하고 요약합니다. 이 프로세스가 여전히 유효한지 확인하려면 위키를 확인하십시오 (특히 새 버전의 Ubuntu가 릴리스 된 후).

먼저 시스템-> 관리 메뉴에서 '소프트웨어 소스'를 다시 활성화하려고합니다. 애플리케이션 / 장소 / 시스템 메뉴를 마우스 오른쪽 버튼으로 클릭하고 '메뉴 편집'을 클릭하십시오.

'메뉴 편집'을 클릭하십시오

창이 열리고 아래로 스크롤하여 '관리'를 클릭하십시오. '소프트웨어 소스'옆의 확인란을 선택한 다음 '닫기'버튼을 클릭하십시오.

'소프트웨어 소스'옆의 확인란을 선택하십시오.

시스템-> 관리로 이동하면 메뉴에 '소프트웨어 소스'가 나타납니다.

이제 메뉴의 '소프트웨어 소스'

열린 창에서 상단의 '기타 소프트웨어'탭을 클릭하십시오.

'기타 소프트웨어'탭

추가 한 모든 저장소 (add-apt-repository를 통해 추가 된 PPA 포함)가 표시되어야합니다. 옆에있는 상자를 선택 취소하여 리포지토리를 일시적으로 비활성화 할 수 있습니다. 저장소를 영구적으로 제거하려면 해당 저장소를 강조 표시하고 '제거'버튼을 클릭하십시오. 완료되면 '닫기'버튼을 누르십시오.

Marcel Stimberg가 앞에서 언급했듯이 :

이렇게하면 리포지토리 목록에서 PPA가 제거되지만 패키지가 표준 저장소의 최신 버전 인 경우 나중에 패키지를 수동으로 다운 그레이드해야합니다. ppa-purge (다른 답변 참조)가 그렇게합니다.

바라건대, 이것이 도움이 될 것입니다.


메뉴를 편집 할 필요가 없습니다. 소프트웨어 센터 메뉴에 소프트웨어 소스 항목이 있습니다.
Jorge Castro

감사. 처음에 gksu의 문제로 인해 소프트웨어 소스가 처음 표시되었을 때 소프트웨어 소스가 표시되지 않았습니다. 해당 문제를 로컬에서 해결하고 답변을 업데이트하겠습니다.
nhandler

더 쉽고 신뢰할 수있는
마테우스 아브레유

25

ppa-purge당신의 친구입니다. ppa를 통해 설치 한 모든 것을 자동으로 제거한 다음 ppa를 제거합니다.

다음을 통해 ppa-purge를 설치하십시오.

sudo apt-get install ppa-purge

그리고 이것을 다음과 같이 사용하십시오 :

sudo ppa-purge ppa-url

비올라.


2
OP는 이미 ppa-purge를 시도했습니다.
jokerdino

20

Ubuntu Maverick (10.10) add-apt-repository은 PPA를 설치 한 것과 같은 방식으로 제거 하는 -r또는 --remove매개 변수를 허용 합니다. :)

그래서:

설치: sudo apt-add-repository ppa:user/repository

제거: sudo apt-add-repository -r ppa:user/repository


2
감사! sudo apt-add-repository -r ppa : user / repository를 사용하여 New Linux Counter Project에서 완고한 ppa를 제거했습니다. 나는 많은 명령 줄과 제안을 시도했지만 그중 아무것도 도움이되지 않았습니다. 감사! 하나의 정보 : 그것은 Maverick뿐만 아니라 12.04 LTS에서도 작동합니다.
Cristiana Nicolae

천만에요, @CristianaNicolae! 귀하의 조언에 따라 답변을 업데이트했습니다. 감사합니다! :)
Paulo Freitas

13.10을 실행 중이며 add-apt-repository가 발생했습니다 : 오류 : 해당 옵션이 없습니다 : -r
virtualxtc

1
@virtualxtc 저는 현재 우분투 14.04를 실행하고있어 여전히 옵션이 -r--removeapt-add-repository명령을. 따라서 수정되었거나 오래된 버전의을 사용하고 있다고 생각합니다 apt-add-repository. 이 유틸리티는 python-software-properties패키지에서 제공되며 잠금 버전을 사용 중일 수 있습니다. bazaar.launchpad.net/~ubuntu-branches/ubuntu/trusty/…에서 소스 코드를 확인할 수 있습니다. 이러한 제거 옵션은 2010 년 말 개정판 47에 도입되었습니다. 소스에서 참조하십시오.
Paulo Freitas

동일한 문제를보고하는 다른 사용자가 몇 명 있으므로이 잠금은 상당히 일반적인 것이어야합니다. 낯선 사람은 여전히 ​​-r --remove 플래그 옵션이 man / help 파일에 나열되어 있지만 여전히 명시된 오류를 생성한다는 것입니다. 다음에 우분투에있을 때 python-software-properties를 살펴 보겠습니다.
virtualxtc

18

Ubuntu Software Center를 실행하고 메뉴에서 "Software Sources"를 선택하십시오. 저장소를 추가 / 편집 / 제거 할 수 있습니다.


13

다음 명령을 실행하십시오.

sudo add-apt-repository --remove ppa:kernel-ppa/ppa 
sudo apt-get update

상술 한 바와 같이; 나는 13.10을 실행하는거야 내가 얻을add-apt-repository: error: no such option: --remove
virtualxtc

10

add-apt-repository가 전체 sources.list 행 또는 ppa로 호출되었는지 여부에 따라 /etc/apt/sources.list에 행을 추가하거나 /etc/apt/sources.list.d/ 디렉토리의 새 파일을 추가합니다 . PPA 인 경우 PPA GPG 키를 apt의 키 링으로 가져옵니다.

add-apt-repository에 의해 수행 된 작업을 취소하려면 apt 라인을 수동으로 제거하거나 "Software Sources"와 같은 도구를 사용하여 다음과 같이 apt-key를 사용하여 GPG 키를 제거하십시오.

"sudo apt-key list"는 제거하려는 저장소의 ID를 찾은 다음
7FAC5991과 같은 "sudo apt-key del id"를 찾습니다. ID는 "/"문자 뒤의 부분입니다.


9

PPA를 통해 설치된 실제 응용 프로그램에 대해 이야기하는 경우 다른 응용 프로그램과 같이 나열되며 동일한 방법으로 제거 할 수 있습니다. PPA (리포지토리) 자체는 설정-> 리포지토리 메뉴의 '기타 소프트웨어'탭에 표시됩니다. 다른 소스와 마찬가지로 제거 할 수 있습니다.

Synaptic Repository / PPA 화면의 스크린 샷


9

사용 add-apt-repository

참고 :이 솔루션은 리포지토리와 관련된 패키지를 제거 / 다운 그레이드하지 않습니다.

add-apt-repository명령에는로 지정된 저장소를 제거하는 옵션이 -r있습니다. 보내려는 PPA를 알아야합니다. 아래 명령을 사용하십시오 :

sudo add-apt-repository -r ppa:REPOSITORY/HERE

... "PPA / HERE"를 제거중인 PPA로 변경합니다.

출처 : 우분투에서 발사 대기 PPA (ADD, REMOVE, PURGE, DISABLE)를 사용하는 방법


사용 ppa-purge

참고 :이 솔루션은 PPA를 제거하고 모든 패키지를 다운 그레이드합니다.

설치하려면 다음을 사용하십시오.

sudo apt install ppa-purge

사용하려면 ppa-purge:

sudo ppa-purge ppa:REPOSITORY/HERE

... "REPOSITORY / HERE"를 제거 할 저장소로 변경하십시오.

출처 : 명령 줄을 통한 PPA 저장소 제거 또는 제거 [빠른 팁]


소프트웨어 및 업데이트 사용

참고 :이 솔루션은 리포지토리와 관련된 패키지를 제거 / 다운 그레이드하지 않습니다.

"소프트웨어 및 업데이트"를 검색하고 시작한 다음 탭-> "기타 소프트웨어"를 선택하십시오. 저장소를 제거하려면 해당 저장소를 선택 취소 한 다음 "닫기"를 클릭하고 마지막으로 "새로 고침"을 클릭하십시오.

여기에 이미지 설명을 입력하십시오


7

y-ppa-manager를 사용할 수 있습니다

설치 :

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

사용하다 :

Y PPA 관리자를 열고 Manage PPAs

여기에 이미지 설명을 입력하십시오

제거 할 PPA를 선택하고 Remove버튼을 클릭하십시오

여기에 이미지 설명을 입력하십시오


실제로 편리한 도구입니다.
Geek

5

리포지토리를 관리 할 수 ​​있습니다 System > Administration > Software Sources

당신은 또한 그들을 제거 할 수 있습니다 /etc/apt/sources.list.d/당신은 찾아 볼 수있는 곳 <repo>-ppa-<distro>.list당신은 해당 파일을 제거하거나 단순히 뎁 라인을 주석 처리 할 수있는 파일을


5

명령이 있습니다 add-apt-repository -r.

그러나 파일을 삭제하고 다시 실행 sudo apt-get update하는 것도 좋습니다.


1
이것이 어떻게 작동하는지 알지 못하지만 명령 반환 및 apt-get 업데이트 후에도 해당 파일은 여전히 ​​/etc/apt/list.sources.d에 있습니다. 수동으로 제거하고 업데이트를 다시 실행했는데 필요한지 모르겠습니다.
Ivan

1
나는 13.10을 실행하고 있으며 다음을 얻습니다add-apt-repository: error: no such option: -r
virtualxtc

1
그것 참 흥미 롭네; 13.10에 대한 add-apt-repository 매뉴얼 페이지 는이 옵션이 존재한다고 주장합니다. 실제로 12.04에 나타났습니다.
Marius Gedminas

5

이미 언급 한 솔루션과 별도로 : 해당 저장소에서 소프트웨어를 여전히 설치 한 경우 우분투와 함께 제공된 원래 버전으로 되 돌리는 것이 가장 좋습니다. ppa의 소프트웨어는 더 이상 (보안 및 기타) 업데이트를 얻지 못합니다. ppa-purge http://packages.ubuntu.com/maverick/ppa-purge


1
ppa-purge는 좋은 일이지만 강력한 것이기도합니다.
라이언 톰슨

1
링크가 오류 페이지를 엽니 다.
Cristiana Nicolae

5

따라 다릅니다. ppa에서 새 응용 프로그램을 설치 한 경우 정상적으로 제거 할 수 있습니다. 그러나 이미 설치 한 최신 버전의 프로그램 (Firefox 4, 최신 Xorg 드라이버 등)을 사용하도록 ppa를 활성화 한 경우 ppa-purge라는 프로그램을 사용해야합니다.

Ppa-purge는 Maverick 이상의 저장소에서 사용할 수 있습니다. 백 포트는 명쾌한 사용자가 사용할 수 있습니다. 그냥 설치하고 실행하십시오.

sudo ppa-purge ppa:repository-name/directory

위 명령은 소프트웨어 소스에서 ppa를 비활성화 한 다음 Ubuntu 리포지토리에서 업그레이드 된 응용 프로그램의 공식 버전을 다시 설치합니다.


5

리눅스 민트에서 이 전혀없는 --remove-r스위치add-apt-repository. 리포지토리를 제거하려면 수동으로 리포지토리를 수행해야합니다. 어렵지 않습니다 :

  1. 설치된 모든 저장소를 나열하십시오.

    ls /etc/apt/sources.list.d
    

    예를 들면 다음과 같습니다.

    getdeb.list  natecarlson-maven3-trusty.list  official-package-repositories.list
    
  2. 제거하려는 저장소의 이름을 찾으십시오.
    내 경우에는 제거하고 싶습니다 natecarlson-maven3-trusty.list.

  3. 저장소를 제거하십시오.

    sudo rm -i /etc/apt/sources.list.d/natecarlson-maven3-trusty.list
    
  4. 모든 GPG 키를 나열하십시오.

    apt-key list
    

    예를 들면 다음과 같습니다.

    /etc/apt/trusted.gpg
    --------------------
    pub   1024D/437D05B5 2004-09-12
    uid                  Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
    sub   2048g/79164387 2004-09-12
    
    pub   1024D/FBB75451 2004-12-30
    uid                  Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>
    
    pub   4096R/46D7E7CF 2009-05-15
    uid                  GetDeb Archive Automatic Signing Key <archive@getdeb.net>
    
    pub   1024R/3DD9F856 2011-04-15
    uid                  Launchpad PPA for Nate Carlson
    
  5. 제거하려는 키의 키 ID를 찾으십시오. 키 ID는의 다음 부분 /입니다.
    제 경우에는 Nate Carlson 키를 제거하고 싶습니다 3DD9F856. 따라서 ID는 입니다.

  6. 키를 제거하십시오.

    sudo apt-key del 3DD9F856
    
  7. 패키지 목록을 업데이트하십시오.

    sudo apt-get update
    

끝난!


민트 사용자는 내장 소프트웨어 소스 도구를 사용할 수도 있습니다.이 도구는 필자의 경우 가장 편리한 솔루션이었습니다.
user2428118

5

모든 PPA를 삭제하는 가장 간단한 방법은 다음과 같습니다.

cd /etc/apt/sources.list.d && sudo rm -i *list*

먼저 디렉토리가있는 디렉토리로 이동 한 sources.list.d다음 기본적으로 이름 이 단어 목록 인 모든 파일 을 rm (제거)합니다 .


4

우분투! 이 기능이 ' Tweak'PPA 에 추가되었다고 언급했습니다 .

아마도 우주에 있으면 아마 그것을 사용하여 자신을 제거 할 수 있습니다 :)


4

당신이 사용할 수있는 우분투 트윅 매우 쉽게 PPA를 편집 할 수 있습니다. ppa를 수동으로 삭제하거나 Ubuntu-Tweak에서 버튼을 클릭하면 알 수 있습니다.


4

아래 명령을 시도해 볼 수 있으며 Linux 커널 3.5 (ppa : xorg-edgers / ppa)를 제거하는 것이 좋습니다.

sudo apt-get install ppa-purge
sudo ppa-purge ppa:<XXX>/<YYY>


1

이 함수를 작성하고 (함수를 저장할 때마다 추가) 적절한 ppa 이름으로 실행하십시오.

rmppa()
{
    sudo -- sh -c 'rm /etc/apt/sources.list.d/"$1".list ; apt-get update'
}

rmppa snagglepuss

원하는 경우 오류 검사 (예 : 존재하지 않는 매개 변수)를 추가하십시오.


0

이 모든 대답은 괜찮지 만 가장 쉬운 방법은 여전히 ​​rm -rf를 사용하여 직접 제거하는 것입니다.

적절한 업데이트로 다음과 같은 오류가 발생 한다고 상상해보십시오 .

W: Failed to fetch http://ppa.launchpad.net/ondrej/php5-5.6/ubuntu/dists/trusty/main/binary-amd64/Packages  403  Forbidden

그런 다음 다음과 같은 방법으로 해결할 수 있습니다.

sudo rm -rf /etc/apt/sources.list.d/andrej*

RonJohn의 대답과 거의 동일하지만 sudo apt update나중에 달리기 가 필요 하다고 느끼지 않습니까?
WinEunuuchs2Unix

그렇습니다. 내 예제는 직접 말하지 않았지만 apt 업데이트가 위의 오류를 표시하지 못하면 소스 파일을 제거하면 다시 작동합니다. 따라서이 맥락에서 그것을 지정할 필요가 없다고 생각했습니다.) 혼란 스럽습니다. 귀하의 의견에 감사드립니다.
기 illa 르 미 에르
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.