Назад | Перейти на главную страницу

apt-get: Несоответствие размеров

Я создал частный репозиторий deb для распространения программного обеспечения и его обновлений на 600 нетбуков Ubuntu. Каждый раз, когда сеть подключается, мой сценарий пытается выполнить обновление apt-get.

Но иногда (на самом деле довольно часто) у меня возникает такое:

Failed to fetch https://myserver/ubuntu/dists/maverick/main/binary-i386/voosicomat.deb  **Size mismatch**

Сервер - это 2.2 Apache, только HTTPS. В его журналах нет ошибок.

Вот сценарий:

apt-get update
apt-get dist-upgrade --force-yes --yes

Вот полный вывод apt-get

Ign https://myserver maverick Release.gpg
Ign https://myserver/ubuntu/ maverick/main Translation-en
Ign https://myserver maverick Release
Ign https://myserver maverick/main i386 Packages/DiffIndex
Ign https://myserver maverick/main i386 Packages
Ign https://myserver maverick/main i386 Packages
Hit https://myserver maverick/main i386 Packages
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
  majdb utilitaires voosicomat
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 6207kB/6273kB of archives.
After this operation, 0B of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  utilitaires voosicomat majdb
Get:1 https://myserver/ubuntu/ maverick/main voosicomat all 2.0.1 [4755kB]
Get:2 https://myserver/ubuntu/ maverick/main majdb all 1.0.17 [1452kB]
Failed to fetch https://myserver/ubuntu/dists/maverick/main/binary-i386/voosicomat.deb  Size mismatch
Fetched 7091kB in 21s (324kB/s)
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Вероятно, ваша проблема связана с ошибкой репо. Если индекс не обновляется в репо, вы получите (не очень полезно) Size mismatch ошибка.

Возможное исправление - обновить репо с помощью

  1. Удалить пакеты проблем
  2. Скопируйте пакеты обратно в репозиторий
  3. Запустите скрипт обновления репозитория sudo /usr/local/deb/update

Вы также можете отредактировать свой apt sources.list, чтобы удалить все репозитории, кроме вашего локального.

Ни один из приведенных выше ответов не помог мне. Оказалось, что проблема была связана с некоторым прокси и конвейером HTTP / 1.1.

apt-get -o Debug::Acquire::http=true update

показал несколько сумасшедших заголовков Last-Modified с 2012 года ... У нас также была проблема, что загруженные пакеты имели другой контент, чем мы ожидали, это было очень странно

Решением было отключить конвейерную обработку http для apt

1) создать файл /etc/apt/apt.conf.d/00httppipeline

2) скопировать и вставить Acquire::http::Pipeline-Depth "0";

3) удалить apt cache rm -rf /var/cache/apt/*

после этого исчезли ошибки несоответствия размера или несоответствия размера хэша, и я мог обновить свои пакеты

Я запускаю Ubuntu 11 и удалил все * .deb в / var / cache / apt / archives /

Затем запустил: apt-get --fix-install install

Казалось, работает.

Я использую Elementary OS:

Чтобы удалить загруженные пакеты (.deb), которые уже установлены (и больше не нужны)

sudo apt-get clean

Чтобы удалить все архивы, хранящиеся в вашем кэше, для пакетов, которые больше не могут быть загружены (т.е. пакетов, которых больше нет в репозитории, или для которых в репозитории есть более новая версия).

sudo apt-get autoclean

Чтобы удалить ненужные пакеты (после удаления приложения могут быть пакеты, которые вам больше не нужны)

sudo apt-get autoremove

Это исправило мои ошибки.