PPA를 사용하거나 패키지 목록을 업데이트 할 때 404 오류를 어떻게 수정합니까?


266

PPA는 지속적으로 오프라인 상태 인 것 같습니다. 을 사용할 때마다이 sudo apt-get update오류가 표시됩니다.

W: Failed to fetch http://ppa.launchpad.net/ 404  Not Found

이 오류를 어떻게 해결합니까?


이것이 주요 "페치 실패"답변 중 하나 인 것 같습니다. 여기서도 source.list의 Ubuntu "파트너"URL에서도 발생할 수 있습니다. 오류가 있는지 확인하고 오류가 있는지 주석 처리하십시오. 나는 Quetzal에서 그 문제 (및 솔루션) 업그레이드에 부딪쳤다.
joseph_morris

답변:


305

자동 제거

Ubuntu 15.04 이전의 모든 우분투 버전에 대해 문제가있는 소프트웨어 소스를 제거하는 스크립트 방식은이 답변의 맨 아래로 건너 뛰십시오.

404 오류는 무엇입니까

404 또는 Not Found 오류 메시지는 클라이언트가 서버와 통신 할 수 있지만 서버가 요청한 내용을 찾을 수 없음을 나타내는 HTTP 표준 응답 코드입니다.

웹 사이트 호스팅 서버는 일반적으로 사용자가 끊어 지거나 연결이 끊어진 링크를 따라 가려고하면 "404-페이지를 찾을 수 없음"웹 페이지를 생성합니다.

업데이트 관리자에서 이러한 오류의 원인은 무엇입니까

일반적으로 세 가지 주요 영역에서 이러한 오류가 발생합니다. update-manager

  1. 사용자가 더 이상 존재하지 않는 PPA 소프트웨어 소스를 업그레이드하고 다시 활성화했습니다. 여기에 이미지 설명을 입력하십시오
  2. 사용자가 새 소프트웨어 소스를 수동으로 잘못 입력했습니다 여기에 이미지 설명을 입력하십시오
  3. PPA가 추가되었지만 관리자가 PPA의 일부 / 전체를 삭제했습니다.

이 소프트웨어 소스는 어디에 있습니까

PPA는 일반적으로 두 위치 중 하나에 저장됩니다.

  1. /etc/apt/sources.list
  2. /etc/apt/sources.list.d/예를 들어 .list 파일 확장자를 가진 적절한 이름의 파일에서webupd8team-jupiter-natty.list

이 목록 파일에는 일반적으로 다음이 포함됩니다.

deb http://ppa.launchpad.net/webupd8team/jupiter/ubuntu oneiric main
# deb-src http://ppa.launchpad.net/webupd8team/jupiter/ubuntu oneiric main

메모 #텍스트 행의 앞에 그것을 주석 및 패키지 관리자에 의해 확인되지 않음을 의미합니다.

이러한 오류를 제거하는 방법

일반적으로 sudo apt-get update터미널에서 실행 하거나 새로 고침 버튼을 누른 후 Update Manager에서 세부 정보 버튼을 클릭하면 다음과 같은 오류가 표시됩니다.

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

오류가 PPA로 인한 경우-일반적으로 오류 메시지에 표시된 URL을 사용하여 유사한 이름의 PPA를 선택 해제하면이 문제가 해결됩니다.

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

404 오류가 추가 된 추가 리포지토리로 인해 발생한 경우 문제를 일으키는 리포지토리를 주석 처리하기 위해 줄의 시작 부분에 문자를 /etc/apt/sources.list쉽게 추가#

gksu gedit /etc/apt/sources.list

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

더 많은 정보

이 문제를 해결하기 위해 업데이트 관리자에 대한 버그 보고서는 다음과 같습니다.

PPA없이 이러한 문제가 발생하면이 질문을 확인하십시오.


정말 고맙습니다.
앤드류스 B 안토니

51

404 자동 제거 스크립트를 통한 PPA를 찾을 수 없음

이것은 모든 404 Not found PPA를 자동으로 제거하는 스크립트입니다. 아래 코드를 복사하여 파일에 붙여 넣고 이름을로 지정하십시오 ppa-remove.

#!/bin/bash
sudo rm /tmp/update.txt; tput setaf 6; echo "Initializing.. Please Wait" 
sudo apt-get update >> /tmp/update.txt 2>&1; awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt; sort -u /tmp/awk1.txt > /tmp/awk2.txt
tput sgr0
if [ -s /tmp/awk2.txt ]
then
  tput setaf 1
  printf "PPA's going to be removed\n%s\n" "$(cat /tmp/awk2.txt)"
  tput sgr0
  while read -r line; do echo "sudo add-apt-repository -r ppa:$line"; done < /tmp/awk2.txt > out
  bash out
else
  tput setaf 1
  echo "No PPA's to be removed"
  tput sgr0
fi

스크립트에 실행 권한 부여

sudo chmod +x ppa-remove

ppa-remove파일을 /usr/bin디렉토리에 복사하여 붙여 넣으면 어디서나 액세스 할 수 있습니다.

용법

sudo ppa-remove

스크립트 설명

[ -f /tmp/update.txt ] && sudo rm /tmp/update.txt; tput setaf 6; echo "Initializing.. Please Wait" || echo "No update file"

tput setaf 6 명령은 터미널 텍스트 색상을 녹색으로 바꾼 다음 "초기화 중입니다. 잠시 기다려주십시오"를 녹색으로 표시합니다.

sudo apt-get update >> /tmp/update.txt 2>&1; awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt; uniq /tmp/awk1.txt > /tmp/awk2.txt
  1. sudo apt-get update >> /tmp/update.txt 2>&1;

    명령의 stdout 및 stderr이 모두 sudo apt-get update파일에 기록됩니다./tmp/update.txt

  2. awk '( /W:/ && /launchpad/ && /404/ ) { print substr($5,26) }' /tmp/update.txt > /tmp/awk.txt; awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt;

AWK가 구성되어 줄 검색 W:, launchpad, 404/tmp/update.txtfile.If는 그 라인에서 표준 출력 리디렉션 된 column5.This에서 26 위치에서 시작 (표준 출력) 모든 문자를 표시 것을 발견에 (기록) /tmp/awk.txt파일.

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

W: Failed to fetch http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages  404  Not Found

5 번째 열성- http://ppa.launchpad.net/pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

5 번째 열에서 26 번째 문자부터 pitti/postgresql/ubuntu/dists/saucy/main/binary-i386/Packages

위의 줄은 파일에 저장되었습니다 /tmp/awk.txt. 다음 명령은

awk -F '/' '{ print $1"/"$2 }' /tmp/awk.txt > /tmp/awk1.txt;  

awk /는 column1과 column2가 파일 /에서 연결 된 구분 기호 로 column1과 column2를 /tmp/awk.txt찾은 다음 stdout을 /tmp/awk1.txt파일 로 리디렉션 (쓰기) 합니다.

이제 /tmp/awk1.txt파일에 pitti/postgresql줄이 있습니다.

uniq /tmp/awk1.txt > /tmp/awk2.txt

동일한 행이 두 개이면 unique명령이 단일 행만 표시합니다.이 단일 행은 /tmp/awk2.txt 마지막으로 작성된 /tmp/awk2.txt유일한 PPA 이름 으로 구성됩니다.

tput sgr0

이 명령은 터미널 텍스트의 색상을 흰색으로 변경합니다.

마지막으로 if조건문이 실행됩니다. if [ -s /tmp/awk2.txt ]/tmp/awk2.txt 파일의 내용이 있는지 확인하십시오. 그렇다면, 첫 번째 줄부터 명령을 /tmp/awk2.txt실행 sudo add-apt-repository -r ppa:$line하고 마지막 줄까지 계속하십시오.

그렇지 않은 경우 내용이 없음을 의미하므로 "제거 할 PPA가 없습니다"라고 표시됩니다.

스크린 샷

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

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


/ usr / bin / ppa-remove : 32 행 : 구문 오류 : 예기치 않은 파일 끝
Shravan40

21

PPA 리포지토리는 Ubuntu 배포를위한 패키지를 제공하지 않기 때문에 이러한 오류가 발생합니다 (예 :) quantal.

다음 스크린 샷을보십시오.

ppa : 페르 타 키스 / wdt- 메인 런치 패드 로고

wdt- 메인

ppa : 스크린 릿 / ppa 런치 패드 로고

스크린 릿

에 대한 디렉토리 quantal가 누락되어 있으므로 알 수 있습니다 404 Not Found Error Messages.

이러한 메시지를 제거하려면 시스템에서 이러한 PPA 리포지토리를 제거해야합니다. PPA를 제거하는 방법에 대해서는이 질문을 따르십시오.


이것을 조사하고 결론에 도달하는 방법?

wdt-mainPPA에 대한 오류 메시지는 다음과 같습니다.

W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/source/Sources  404  Not Found
, W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/binary-amd64/Packages  404  Not Found
, W:Failed to fetch http://ppa.launchpad.net/petrakis/wdt-main/ubuntu/dists/quantal/main/binary-i386/Packages  404  Not Found

브라우저 탭을 열고 404 Not Found 오류가 발생하는 링크를여십시오. 이 경우 http://ppa.launchpad.net/petrakis/오류가 발생하는 링크에 따라 더 깊어집니다. 실제 문제가 무엇인지 확인할 수 있습니다.


17

PPA가 더 이상 유지 관리되지 않아 제거해야 할 가능성이 가장 높습니다. 다음을 사용 하여이 작업을 수행 할 수 있습니다.

sudo rm /etc/apt/sources.list.d/ppaname-ppa-$(lsb_release -sc).list*

3
이것은 방금 질문이 게시되는 것을 막았습니다. 나는 Q의 본문을 준비했고 제목을 입력하기 시작했을 때 링크를 찾았습니다. 왜 모든 목록을 한 곳에 보관하지 않습니까! /etc/apt/sources.list내가 확인한 곳도 나와 있지만, 내가 살펴 봐야 할 줄 몰랐 /etc/apt/sources.list.d/습니다 .. 감사합니다.
정확한

이 다음 적절한 새 PPA를 추가하면 나에게 가장 적합한 (유일한) 솔루션으로 판명되었습니다.
markus-tharkun

4

이전 리포지토리 선택

해당 리포지토리 의 패키지가 실제로 필요한 경우 이전 릴리스의 미러를 사용할 수 있습니다.

그러나 모든 이전 릴리스가 이전 버전과 호환되는 것은 아닙니다 . 이들 중 일부는 기본 패키지 저장소와 충돌을 일으 킵니다.

충돌 할 때 할 수있는 유일한 일은 소스에서 빌드하거나 공급자가 Ubuntu 버전의 저장소를 해제 할 때까지 기다리는 것입니다. 패키지 제공 업체가 언제 버전에 대한 패키지를 출시할지 정확히 알지 못 하므로 릴리스의 저장소를 확인하는 담당자는 귀하입니다.

데비안 기반 저장소와 함께 사용할 수 있습니다. 그러나 이것이 성공할 것이라는 보장은 없습니다.

단계

  1. sudo apt updatePPA / 리포지토리를 추가 한 후 평소대로하십시오 . 업데이트하는 동안 404 오류가 있음을 알 수 있습니다. 이것을 무시하십시오. 404 오류
  2. 브라우저에서 404 오류를 발생시키는 저장소 디렉토리를여십시오. 이 경우에는입니다 https://dl.winehq.org/wine-builds/ubuntu. 일반적으로 사용 가능한 릴리스는에 있습니다 dists/. 거울
  3. 찾은 후 소프트웨어 및 업데이트를 열고 릴리스 이름을 사용 가능한 릴리스로 바꾸십시오. 바람직하게는 최신 또는 LTS이다. 바이너리 및 소스 코드 미러에서 '배포'섹션을 바꾸십시오. 이 경우으로 교체 bionic하고 artful있습니다. 여기에 이미지 설명을 입력하십시오
  4. 수행 sudo apt update다시.
  5. 끝났습니다! 이제 패키지 목록을 업데이트하는 동안 더 이상 404 오류가 없습니다. 여기에 이미지 설명을 입력하십시오
  6. Ubuntu 버전 용 패키지가 릴리스되면 '배포'섹션을 배포 이름으로 바꾸어 3 단계와 4 단계를 반복하십시오.

2

그것은 이미 나에게 일어 났고 나는이 상황에서 벗어났습니다. 그리고 그것은 또한 내 친구를 위해 일했습니다. 이유를 설명 할 수 없어도 그 문제를 해결 한 것이 있습니다.

  1. 모든 PPA를 비활성화하십시오.
  2. sudo apt-get update터미널에서 실행하십시오 .
  3. PPA를 다시 활성화하십시오.
  4. 실행 sudo apt-get update;

그리고 갑자기 효과가있었습니다. 나에게 왜 냐고 묻지마.


나에게 아무런 차이가 없었다. 여전히 404입니다.
kwoxer

나는 원치 않는 PPA 중 일부를 비활성화하고 시도 sudo apt-get update했으며 완벽하게 작동했습니다.
Shashanth

1

PPA가 아닌 공식 리포지토리에서 보안 또는 시스템 파일을 가져 오려고 404 오류가 발생하면이 문제를 해결하기 위해 다른 미러를 선택할 수 있습니다.

다음 중 하나를 수행 할 수 있습니다.

A) 이 목록 을 검토 하고 최신 미러를 선택하여 수동으로 하나를 결정 하십시오. (거리 및 대역폭과 같은 다른 요소를 고려할 수도 있음) 또는

B) 자동으로 하나를 선택하십시오.

다음과 같이 Software & Updates 응용 프로그램으로 시작할 수 있습니다. 그런 다음 Download from from Other를 선택하십시오. 그런 다음 목록에서 원하는 미러를 수동으로 선택하거나 일부 서버를 테스트 할 최상의 서버 선택 버튼을 클릭하고 현재 상태에 따라 가장 적합한 서버를 선택할 수 있습니다.

스누


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