Apt/TroubleShooting
Материал из ALT Linux Wiki
(→"Битые" пакеты) |
м (→Ошибка сегментирования: "раскомментировал") |
||
(26 промежуточных версий не показаны.) | |||
Строка 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}} не работает'''<br /><small>(ключик для проведения «мысленного эксперимента» вместо действия приводит к неадекватной оценке последствий)</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... | + | Preparing... ########################################### [100%] |
- | 1: | + | 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-архив (в данном случае | + | вероятней всего, rpm-архив (в данном случае «<tt>some_package</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}}. | ||
- | + | ==Ошибка сегментирования== | |
- | + | ||
- | + | ||
- | + | Если при работе {{cmd|apt-get}} падает по Segmentation fault, удалите кэш apt: | |
+ | rm /var/cache/apt/*pkgcache.bin | ||
- | + | Проверьте stack лимиты, должно быть не менее: | |
- | + | # ulimit -s | |
- | + | 8192 | |
- | + | Задать можно тут: | |
+ | /etc/security/limits.conf | ||
+ | root hard stack 8192 | ||
+ | root soft stack 8192 | ||
- | + | == Ссылки == | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | <references/> | |
+ | {{Category navigation|title=APT|category=APT|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 19:48, 1 февраля 2017
Содержание |
Превышение числа пакетов
Если команда 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:
rm /var/cache/apt/*pkgcache.bin
Проверьте stack лимиты, должно быть не менее:
# ulimit -s 8192
Задать можно тут:
/etc/security/limits.conf root hard stack 8192 root soft stack 8192
Ссылки
- ↑ На 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 способом, здесь описанным.