Apt/TroubleShooting: различия между версиями

Материал из ALT Linux Wiki
< Apt
(Новая: === "Битые" пакеты === Если при обновлении системы или установке отдельных пакетов выскакивает нечто вр...)
 
(→‎Ошибка сегментирования: дописал про altbug #31089)
(не показано 28 промежуточных версий 12 участников)
Строка 1: Строка 1:
=== "Битые" пакеты ===
{| style="border:1px solid #AAA; background:#F9F9F9; width:200px; margin: 0 0 1em 1em; padding:.2em; text-align:center; float: right;" class=noprint
|-
|[[Image:Gnome-dialog-warning.svg]]
|-
| '''Внимание:'''<br />'''{{cmd|apt-get -s}} не&nbsp;работает'''<br /><small>(ключик для проведения «мысленного эксперимента» вместо действия приводит к&nbsp;неадекватной оценке последствий)</small>.
|}


Если при обновлении системы или установке отдельных пакетов выскакивает нечто вроде:
== Превышение числа пакетов ==
{{main|Changes/apt}}
Если команда {{cmd|apt-get update}} завершается чем-то вроде:
 
Reading Package Lists... Error!
E: Dynamic MMap ran out of room
E: Error occured while processing ktechlab (UsePackage3)
 
или:
 
E: Wow, you exceeded the number of package names this APT is capable of.
E: Problem with MergeList /tmp/aptbox/var/lib/apt/lists/_ALT_Sisyphus_noarch_base_pkglist.classic
E: The package lists or status file could not be parsed or opened.
 
— скорее всего, apt’y приходится перелопачивать больше пакетов, чем дозволено лимитом ([https://bugzilla.altlinux.org/show_bug.cgi?id=16900 #16900]).
 
'''Решение N1<ref>На 04/04/2015 у apt в p7 недостаточный лимит для использования репозитория autoimports, а на октябрь 2015 -- у apt в Sisyphus тоже {{altbug|31410}}. В p7 это не чувствуется сейчас благодаря попаданию в p7 порта {{pkg|apt}}-0.5.15lorg2-alt50 (его лимиты см. ниже), я для Sisyphus это объехали для удобства подключения [[Autoimports]] в {{pkg|apt-conf-autoimports-sisyphus}}-1.0-alt3 способом, здесь описанным.</ref>:'''
 
в {{path|/etc/apt/apt.conf}} добавить строку (если ещё нет):
 
APT::Cache-Limit <LimitInBytes>;
 
Где ''<LimitInBytes>'' - число большее, чем размер /var/lib/rpm/Packages в байтах.
Возможно, придётся подбирать <tt>Cache-Limit</tt> несколько раз, пока ошибка не исчезнет.
 
В {{pkg|apt}} 0.5.15lorg2-alt50 лимиты выставлены следующим образом (разница обусловлена предположением подключения [[biarch]]-репозитория):
* 83886080 (80M на 32-битных архитектурах);
* 100663296 (96M на 64-битных архитектурах).
 
'''Решение N2 (если в обновлённом apt это уже увеличили):'''
 
Обновить {{pkg|apt}} и {{pkg|libapt}} из соответствующего репозитория:
apt-get update -o APT::Cache-Limit=100663296
apt-get install apt
 
'''Объезд:'''
 
Отключить лишние репозитории в {{path|/etc/apt/sources.list.d/*.list}} и вновь отдать команду:
 
apt-get update
 
== «Битые» пакеты ==
Если при обновлении системы или установке отдельных пакетов вываливается нечто вроде:


  Committing changes...
  Committing changes...
  Preparing...                 ###########################################  [100%]
  Preparing...                 ###########################################  [100%]
  1: some_package              error: unpacking of archive failed: cpio: Bad magic
  1: some_package              error: unpacking of archive failed: cpio: Bad magic
  E: Some errors occurred while running transaction
  E: Some errors occurred while running transaction


вероятней всего, rpm-архив (в данном случае "<tt>some_package</tt>") испорчен (получен неполностью).
вероятней всего, rpm-архив (в данном случае «<tt>some_package</tt>») испорчен (получен не полностью).


'''Решение:'''
'''Решение:'''


Удалить <tt>some_package.some_digits.rpm</tt> из <tt>/var/cache/apt/archives</tt> и отдать команду:
Отдать команды:


apt-get clean
  apt-get install some_package
  apt-get install some_package


==Ошибка обновления через rsync==


=== Превышение числа пакетов ===
Если при попытке обновления сведений о пакетах выходит ошибка с повторяющимися строками вроде приведённых ниже для {{cmd|apt-get update}}:
E: Программа обработки метода /usr/lib/apt/methods/rsync не найдена.
E: Tried to dequeue a fetching object
и для {{cmd|synaptic}}:
E: The method driver /usr/lib/apt/methods/rsync could not be found.
— то это означает, что в числе активных репозиториев есть подключенные через протокол rsync. Следует либо их отключить, либо доустановить пакет {{pkg|apt-rsync}}.


Если на команду <tt>apt-get update</tt> выскакивает нечто вроде:
==Ошибка сегментирования==


  Reading Package Lists... Error!
Если при работе {{cmd|apt-get}} падает по Segmentation fault, удалите кэш apt:
E: Dynamic MMap ran out of room
  mv /var/cache/apt/*pkgcache.bin /tmp
E: Error occured while processing ktechlab (UsePackage3)
Если это поможет, и если примера в {{altbug|31089}} ещё нет, приложите эти файлы к багу.


или:
Проверьте stack лимиты, должно быть не менее:
# ulimit -s
8192


E: Wow, you exceeded the number of package names this APT is capable of.
Задать можно тут:
  E: Problem with MergeList /tmp/aptbox/var/lib/apt/lists/_ALT_Sisyphus_noarch_base_pkglist.classic
  /etc/security/limits.conf
  E: The package lists or status file could not be parsed or opened.
  root hard stack 8192
 
root soft stack 8192
скорее всего, apt'y приходится перелопачивать больше пакетов, чем дозволено лимитом.
 
'''Решение:'''
 
Отключить лишние репозитории в <tt>/etc/apt/sources.list.d/*.list</tt> и вновь отдать команду:


apt-get update
== Ссылки ==


При необходимости - повторить. :)
<references/>
{{Category navigation|title=APT|category=APT|sortkey={{SUBPAGENAME}}}}

Версия от 18:08, 27 января 2018

Gnome-dialog-warning.svg
Внимание:
apt-get -s не работает
(ключик для проведения «мысленного эксперимента» вместо действия приводит к неадекватной оценке последствий).

Превышение числа пакетов

Основная статья: Changes/apt

Если команда apt-get update завершается чем-то вроде:

Reading Package Lists... Error!
E: Dynamic MMap ran out of room
E: Error occured while processing ktechlab (UsePackage3)

или:

E: Wow, you exceeded the number of package names this APT is capable of.
E: Problem with MergeList /tmp/aptbox/var/lib/apt/lists/_ALT_Sisyphus_noarch_base_pkglist.classic
E: The package lists or status file could not be parsed or opened.

— скорее всего, apt’y приходится перелопачивать больше пакетов, чем дозволено лимитом (#16900).

Решение N1[1]:

в /etc/apt/apt.conf добавить строку (если ещё нет):

APT::Cache-Limit <LimitInBytes>;

Где <LimitInBytes> - число большее, чем размер /var/lib/rpm/Packages в байтах. Возможно, придётся подбирать Cache-Limit несколько раз, пока ошибка не исчезнет.

В apt 0.5.15lorg2-alt50 лимиты выставлены следующим образом (разница обусловлена предположением подключения biarch-репозитория):

  • 83886080 (80M на 32-битных архитектурах);
  • 100663296 (96M на 64-битных архитектурах).

Решение N2 (если в обновлённом apt это уже увеличили):

Обновить apt и libapt из соответствующего репозитория:

apt-get update -o APT::Cache-Limit=100663296
apt-get install apt

Объезд:

Отключить лишние репозитории в /etc/apt/sources.list.d/*.list и вновь отдать команду:

apt-get update

«Битые» пакеты

Если при обновлении системы или установке отдельных пакетов вываливается нечто вроде:

Committing changes...
Preparing...                 ###########################################  [100%]
1: some_package              error: unpacking of archive failed: cpio: Bad magic
E: Some errors occurred while running transaction

вероятней всего, rpm-архив (в данном случае «some_package») испорчен (получен не полностью).

Решение:

Отдать команды:

apt-get clean
apt-get install some_package

Ошибка обновления через rsync

Если при попытке обновления сведений о пакетах выходит ошибка с повторяющимися строками вроде приведённых ниже для apt-get update:

E: Программа обработки метода /usr/lib/apt/methods/rsync не найдена.
E: Tried to dequeue a fetching object

и для synaptic:

E: The method driver /usr/lib/apt/methods/rsync could not be found.

— то это означает, что в числе активных репозиториев есть подключенные через протокол rsync. Следует либо их отключить, либо доустановить пакет apt-rsync.

Ошибка сегментирования

Если при работе apt-get падает по Segmentation fault, удалите кэш apt:

mv /var/cache/apt/*pkgcache.bin /tmp

Если это поможет, и если примера в altbug #31089 ещё нет, приложите эти файлы к багу.

Проверьте stack лимиты, должно быть не менее:

# ulimit -s
8192

Задать можно тут:

/etc/security/limits.conf
root hard stack 8192
root soft stack 8192

Ссылки

  1. На 04/04/2015 у apt в p7 недостаточный лимит для использования репозитория autoimports, а на октябрь 2015 -- у apt в Sisyphus тоже altbug #31410. В p7 это не чувствуется сейчас благодаря попаданию в p7 порта apt-0.5.15lorg2-alt50 (его лимиты см. ниже), я для Sisyphus это объехали для удобства подключения Autoimports в apt-conf-autoimports-sisyphus-1.0-alt3 способом, здесь описанным.