apt-get tentando buscar URL estranho

0

OBSERVAÇÃO: estou ocultando meus hiperlinks porque não tenho reputação suficiente para incluir tantos links em uma pergunta. Quando você ver "ht tp:" entender que é realmente "http:"

Acho que essa pergunta é diferente de outras possíveis duplicatas. No meu caso, eu tenho meu próprio repositório debian hospedando meus próprios pacotes debian, puxando-os para um cliente usando o apt-get.

Antecedentes: tudo isso é novo. Não é algo que costumava funcionar e depois quebrou. É algo que estou lutando em meu caminho. Minha crença é que esse problema é causado pelo fato de eu ter construído o repositório incorretamente de alguma forma.

Quando invoco o apt-get update, tudo parece bem. Estas são as linhas relevantes que mostram que o apt foi atualizado usando meu repositório (10.1.20.65)

$ sudo apt-get update
Get:4 ht tp://10.1.20.65/debian/ota xenial-testing InRelease [3,114 B]
Get:5 ht tp://10.1.20.65/debian/ota xenial-testing/main amd64 Packages [559 B] 

Quando tento instalar meu aplicativo de amostra, o problema aparece:

sudo apt-get install sample
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sample
0 upgraded, 1 newly installed, 0 to remove and 52 not upgraded.
Need to get 4,304 B of archives.
After this operation, 17.4 kB of additional disk space will be used.
Err:1 ht tp://10.1.20.65/debian/ota xenial-testing/main i386 sample amd64 1.0-1
  400  Bad Request
Err:1 ht tp://10.1.20.65/debian/ota xenial-testing/main i386 sample amd64 1.0-1
  400  Bad Request
E: Failed to fetch ht tp://10.1.20.65/debian/ota//var/www/html/debian/ota/pool/main/sample/sample_1.0-1_amd64.deb  400  Bad Request

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

Um problema óbvio é o URL. Eu sei que está errado.

ht tp://10.1.20.65/debian/ota//var/www/html/debian/ota/pool/main/sample/sample_1.0-1_amd64.deb

Deveria ser assim:

ht tp://10.1.20.65/debian/ota/pool/main/sample/sample_1.0-1_amd64.deb

Mas não sei como está sendo gerado. Aqui está a hierarquia de arquivos no meu repositório

user@machine:/var/www/html/debian/ota$ ll -R

.:
drwxrwsr-x 3 user www-data 4096 Jan 26 09:51 dists/
-rw-r--r-- 1 root www-data 1609 Jan 26 10:47 keyFile
drwxrwsr-x 3 user www-data 4096 Jan 26 09:27 pool/

./dists:
drwxrwsr-x 3 user www-data 4096 Jan 26 11:31 xenial-testing/

./dists/xenial-testing:
-rw-rw-r-- 1 user www-data 3114 Jan 26 11:31 InRelease
drwxrwsr-x 4 user www-data 4096 Jan 26 11:14 main/
-rw-rw-r-- 1 user www-data 2246 Jan 26 11:31 Release
-rw-rw-r-- 1 user www-data  819 Jan 26 11:31 Release.gpg

./dists/xenial-testing/main:
drwxrwsr-x 2 user www-data 4096 Jan 26 11:30 binary-amd64/
drwxrwsr-x 2 user www-data 4096 Jan 26 11:14 binary-i386/

./dists/xenial-testing/main/binary-amd64:
-rw-rw-r-- 1 user www-data  776 Jan 26 11:30 Packages
-rw-rw-r-- 1 user www-data  559 Jan 26 11:30 Packages.gz

./dists/xenial-testing/main/binary-i386:
-rw-rw-r-- 1 user www-data  789 Jan 26 11:14 Packages
-rw-rw-r-- 1 user www-data  572 Jan 26 11:14 Packages.gz

./pool:
drwxrwsr-x 3 user www-data 4096 Jan 26 11:06 main/

./pool/main:
drwxrwsr-x 2 user www-data 4096 Jan 26 09:22 sample/

./pool/main/sample:
-rw-r--r-- 1 user www-data 4650 Jan 26 09:18 sample_1.0-1_amd64.build
-rw-rw-r-- 1 user www-data 1430 Jan 26 09:18 sample_1.0-1_amd64.changes
-rw-r--r-- 1 user www-data 4304 Jan 26 09:18 sample_1.0-1_amd64.deb
-rw-r--r-- 1 user www-data 1296 Jan 26 09:18 sample_1.0-1.debian.tar.xz
-rw-rw-r-- 1 user www-data  809 Jan 26 09:18 sample_1.0-1.dsc
-rw-rw-r-- 1 user www-data  672 Jan 26 09:22 sample_1.0.orig.tar.xz

Meu cliente é 16.04

user@machine:/var/www/html/debian/ota$ dpkg --print-architecture
amd64
user@machine:/var/www/html/debian/ota$ dpkg --print-foreign-architectures
i386

O arquivo ota / pool / main / binary-amd64 / Packages tem isto:

Package: sample
Priority: optional
Section: misc
Installed-Size: 17
Maintainer: User Name (Comment) <[email protected]>
Architecture: amd64
Version: 1.0-1
Depends: libc6 (>= 2.2.5)
Filename: /var/www/html/debian/ota/pool/main/sample/sample_1.0-1_amd64.deb
Size: 4304
MD5sum: f9438161fbbbbcdcc121bde6117eec62
SHA1: 0fcf04736a638bea6c2737c06a2cad1452db4fbc
SHA256: 1afa50b3147d30065af90ba8cff49a3d18028baadf2a5502c691592fecad37bd
SHA512: 34a1c4b2f404aeb8ab00c7a032d59ac83ca188c69a92778cb394dd7fb1bfb85990cb43b44533d90ceb77bf79b76ac8ca8fe247e5cdb72ebd96318264c9cdb69d
Description: A sample program
 This Debian binary package was auto-generated by the
 debmake(1) command provided by the debmake package.
Multi-Arch: foreign
Homepage: <insert the upstream URL, if relevant>

O arquivo ota / dists / xenial-testing / Release tem isto:

Date: Thu, 26 Jan 2017 16:31:30 UTC
MD5Sum:
 d41d8cd98f00b204e9800998ecf8427e                0 Release
 a89ecbbf9f4aea63fa014bf572577e16              776 main/binary-amd64/Packages
 53e475fd10fe0944b2eb25e53feef886              559 main/binary-amd64/Packages.gz
 7bcf648b5326f5939e384d7fc1c67bf4              789 main/binary-i386/Packages
 ef22faf6ed3912ac493422bc9c31f1dd              572 main/binary-i386/Packages.gz
SHA1:
 da39a3ee5e6b4b0d3255bfef95601890afd80709                0 Release
 5f63449fd9ff95190d518d4841352f8971a9b9e7              776 main/binary-amd64/Packages
 35ce11e83154c2c2259b5894f913384192d5baee              559 main/binary-amd64/Packages.gz
 4ed047da6b795d2a6cd1231cec50820bf74dfdd9              789 main/binary-i386/Packages
 ac8c6c27279477131e008c230332f816c67f0068              572 main/binary-i386/Packages.gz
SHA256:
 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855                0 Release
 ad638125ee8ca88f9239da6248e2c3143cc62171d18ff9e51b47d8f1fba091c4              776 main/binary-amd64/Packages
 b82270e96b9bd9c0c2426dee989274e606ee3fbbeda6cdc9a59227c438c1a373              559 main/binary-amd64/Packages.gz
 aeb658d8aa0222005f1aad5c83ced0efe8343114710c62f07affe7a6c9775be7              789 main/binary-i386/Packages
 8c715600c2401e97f391a9c8f40f6e17d257ee76a1b4b2bd9653d89fc2dd765e              572 main/binary-i386/Packages.gz
SHA512:
 cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e                0 Release
 c19e015cefb344dc7cf1344700e43577bd7854bb60e1f3a778feff4b7c076dde43ae2e2a7cb4a3fbefaf59268df9c8a7d25d08d9162413418ffdf541d8b21404              776 main/binary-amd64/Packages
 1a6630388293428330416bf15d643aaf540792c449f2a60217cff32641b6d11a752645ee8ef20d3563c52575fb3653a6693621320c672178d538f3280bd1d420              559 main/binary-amd64/Packages.gz
 6b0766e30a366f3ca065f56979c31f129dc0d406a8d27e8147e5029e04fce0ad891256cd4da70dbba92b411e25e6fc7ab1c5192e6ad7848dff4530b29eb5236d              789 main/binary-i386/Packages
 926dfa28405aef42c9f9deae454376fa8b42a4db411aee03da8844bf361e96950022aeabe7f70a6264f8a2cf1a8bf9d166fedebf5bef3a2f8b9f4fc54834dba7              572 main/binary-i386/Packages.gz

Pergunta:

Onde / como é possível obter essa URL "estranha"?

E: Failed to fetch ht tp://10.1.20.65/debian/ota//var/www/html/debian/ota/pool/main/sample/sample_1.0-1_amd64.deb  400  Bad Request
    
por Brian Withun 26.01.2017 / 18:15

1 resposta

1

Eu encontrei a solução!

Acontece que o nome do arquivo dentro de um arquivo Packages é na verdade anexado à raiz do arquivo .. Eu suponho que esteja sendo feito pelo programa apt-get.

Minha raiz do arquivo é esta:

/var/www/html/debian/ota/

Dentro do meu arquivo Packages estava esta linha:

Filename: /var/www/html/debian/ota/pool/main/sample/sample_1.0-1_amd64.deb

Eles são concatenados para produzir o URL final para baixar o DEB:

/var/www/html/debian/ota//var/www/html/debian/ota/pool/main/sample/sample_1.0-1_amd64.deb

Essa confusão é causada por um ARQUIVO DE PACOTE MAU . NÃO deve conter um caminho absoluto.

Um caminho correto no meu arquivo de pacote seria:

Filename: pool/main/sample/sample_1.0-1_amd64.deb

Veja como corrigi-lo

Anteriormente eu estava invocando apt-ftparchive packages dentro da minha pasta binária:

/var/www/html/debian/ota/dists/xenial-testing/main/binary-amd64/$ apt-ftparchive packages /var/www/html/debian/ota/pool > Packages

(Note que eu tive que usar um caminho absoluto para me referir ao local do pool dos meus debs)

Essa não é a pasta adequada a partir da qual o arquivo Packages será criado. Eu encontrei a pista neste belo pedaço de texto do debian:

The 'packages' and 'sources' command should be run in the root of the
tree. BinaryPath should point to the base of the recursive search and 
override file should contain the override flags. Pathprefix is
appended to the filename fields if present. Example usage from the 
Debian archive:
   apt-ftparchive packages dists/potato/main/binary-i386/ > \
               dists/potato/main/binary-i386/Packages

Depois que comecei a fazer as coisas dessa maneira, meu arquivo Packages começou a ter caminhos relativos dentro deles.

Minha nova linha de comando:

/var/www/html/debian/ota/$ apt-ftparchive packages pool/binary-amd64/ > dists/xenial-testing/main/binary-amd64/Packages

E o meu arquivo Packages agora contém esta linha:

Filename: pool/main/sample/sample_1.0-1_amd64.deb
    
por Brian Withun 27.01.2017 / 20:25