apt-get install dá 404 não encontrado, mas o URL funciona

4

Estou tentando configurar um repositório apt .

Este repositório está realmente substituindo um que já existe e está funcionando bem. Não consigo instalar um pacote deste repositório.

No meu /etc/apt/sources.list , eu tenho a linha:

deb http://mirror.cs50.net/appliance50/2014/debs/dists/trusty/main/binary-i386 /

Um apt-get update passa perfeitamente bem. Mas então algo como apt-get install appliance50 (um pacote nesse repositório) me dá:

Err http://mirror.cs50.net/appliance50/2014/debs/dists/trusty/main/binary-i386/  appliance50 2014-0
  404  Not Found
E: Failed to fetch http://mirror.cs50.net/appliance50/2014/debs/dists/trusty/main/binary-i386/./appliance50_2014-0_i386.deb  404  Not Found

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Mas, em seguida, copiar esse URL em um navegador faz o download do arquivo muito bem! Existe algum passo fundamental que estou perdendo? Isso tem que fazer alguma coisa com o fato de que esse servidor está redirecionando a solicitação para o S3?

Editar:

Aqui está a saída de "sudo apt-get -o Debug :: Acquire :: Http = true install appliance50", de acordo com o comentário:

root@ubuntu:~# sudo apt-get -o Debug::Acquire::Http=true install appliance50
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apt-clone archdetect-deb cifs-utils dmraid dpkg-repack
  gir1.2-appindicator3-0.1 gir1.2-json-1.0 gir1.2-timezonemap-1.0
  gir1.2-xkl-1.0 kpartx kpartx-boot libdebian-installer4
  libdevmapper-event1.02.1 libdmraid1.0.0.rc16 libldb1 libntdb1 libtalloc2
  libtevent0 libtimezonemap1 libwbclient0 localechooser-data lvm2 lzma
  python-crypto python-ldb python-ntdb python-samba python-talloc python-tdb
  python3-icu python3-pam rdate samba-common samba-common-bin samba-libs
  watershed
Use 'apt-get autoremove' to remove them.
The following packages will be upgraded:
  appliance50
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,205 kB of archives.
After this operation, 4,096 B of additional disk space will be used.
0% [Working]GET /appliance50/2014/debs/dists/trusty/main/binary-i386/./appliance50_2014-0_i386.deb HTTP/1.1
Host: mirror.cs50.net
User-Agent: Debian APT-HTTP/1.3 (1.0.1ubuntu2)


HTTP/1.1 404 Not Found
Cache-control: no-cache="set-cookie"
Content-Type: text/html; charset=UTF-8
Date: Mon, 04 Aug 2014 14:23:53 GMT
Server: Apache
Set-Cookie: AWSELB=27CBB9F102866AACDE415904FB505399868B9DB4E22AC5183099E4BEEC583EF1DFA3B6E45DCB1D708481F98DC786A644C763A900F7898475BA865AD219D4E4F1F157545837;PATH=/;MAX-AGE=3600
Content-Length: 0
Connection: keep-alive

Err http://mirror.cs50.net/appliance50/2014/debs/dists/trusty/main/binary-i386/  appliance50 2014-0
  404  Not Found
E: Failed to fetch http://mirror.cs50.net/appliance50/2014/debs/dists/trusty/main/binary-i386/./appliance50_2014-0_i386.deb  404  Not Found

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
    
por Rob Bowden 04.08.2014 / 14:58

1 resposta

2

É um erro no apt-get , que não está enviando os cabeçalhos GET corretos, então o servidor responde com o 404.

Por exemplo, telnet para o servidor mirror.cs50.net na porta 80 (HTTP) e insira o seguinte (emulando uma solicitação do apt-get):

GET /appliance50/2014/debs/dists/trusty/main/binary-i386/./appliance50_2014-0_i386.deb HTTP/1.1
User-Agent: Debian APT-HTTP/1.3 (1.0.1ubuntu2)
Host: mirror.cs50.net
Accept: */*

Então você verá o seguinte:

telnet mirror.cs50.net 80
Trying 54.84.6.206...
Connected to mirror.cs50.net.
Escape character is '^]'.
GET /appliance50/2014/debs/dists/trusty/main/binary-i386/./appliance50_2014-0_i386.deb HTTP/1.1
User-Agent: Debian APT-HTTP/1.3 (1.0.1ubuntu2)
Host: mirror.cs50.net
Accept: */*

HTTP/1.1 404 Not Found
Cache-control: no-cache="set-cookie"
Content-Type: text/html; charset=UTF-8
Date: Mon, 04 Aug 2014 18:31:01 GMT
Server: Apache
Set-Cookie: AWSELB=27CBB9F102866AACDE415904FB505399868B9DB4E22AC5183099E4BEEC583EF1DFA3B6E45DFCB95EFBFF7B8F8F555126DCFFF8A461898475BA865AD219D4E4F1F157545837;PATH=/;MAX-AGE=3600
Content-Length: 0
Connection: keep-alive

Se deixarmos de fora o ponto ( /./ ) na solicitação GET, a solicitação responderá com um redirecionamento, ou seja, 302, o que está correto.

GET /appliance50/2014/debs/dists/trusty/main/binary-i386/appliance50_2014-0_i386.deb HTTP/1.1
Host: mirror.cs50.net
User-Agent: Debian APT-HTTP/1.3 (1.0.1ubuntu2)

HTTP/1.1 302 Found
Cache-control: no-cache="set-cookie"
Content-Type: text/html; charset=UTF-8
Date: Mon, 04 Aug 2014 19:03:27 GMT
Location: http://dkui3cmikz357.cloudfront.net/appliance50/2014/debs/dists/trusty/main/binary-i386/appliance50_2014-0_i386.deb
Server: Apache
Set-Cookie: AWSELB=27CBB9F102866AACDE415904FB505399868B9DB4E22AC5183099E4BEEC583EF1DFA3B6E45DFCB95EFBFF7B8F8F555126DCFFF8A461898475BA865AD219D4E4F1F157545837;PATH=/;MAX-AGE=3600
Content-Length: 0
Connection: keep-alive

Eu verifiquei isso com outros espelhos e eles relatam o mesmo:

Trying 64.50.233.100...
Connected to ftp-nyc.osuosl.org.
Escape character is '^]'.
GET /debian/pool/main/e/./efivar_0.10-5_i386.deb HTTP/1.1         
Host: ftp-nyc.osuosl.org
User-Agent: Debian APT-HTTP/1.3 (1.0.6)

HTTP/1.1 404 Not Found
Date: Mon, 04 Aug 2014 18:47:03 GMT
Server: Apache
Content-Length: 307
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /debian/pool/main/e/efivar_0.10-5_i386.deb was not found on this server.</p>
<hr>
<address>Apache Server at ftp-nyc.osuosl.org Port 80</address>
</body></html>
Connection closed by foreign host.

Você deve incluir no seu relatório de bug que o apt-get deve remover os cabeçalhos get do ponto-n-slash.

    
por 04.08.2014 / 20:49

Tags