Ошибка rootless установщика

После обновления до El Capitan единственная проблема, которая возникла, была довольно быстро решена. Я радовался обновлённой операционной системе, однако это длилось не долго. Первое, что я заметил: пропали виджеты в панели уведомлений (Notification Center Widgets in Today View).

Apple, OS X


Рекомендация: подборка платных и бесплатных курсов Python — https://katalog-kursov.ru/

После обновления до El Capitan единственная проблема, которая возникла, была довольно быстро решена. Я радовался обновлённой операционной системе, однако это длилось не долго. Первое, что я заметил: пропали виджеты в панели уведомлений (Notification Center Widgets in Today View).

Второе: перестала работать кнопка «поделиться» (Share). В сафари, файндере… везде, где она встречалась. После того, как вы решили, например, поделиться по почте фотографией из Photos, то после этого переставали работать все кнопки в тулбаре это окна. Кроме того: приложение приходилось убивать вручную (quit переставал работать тоже), что бы восстановить его работоспособность. Если с первым я был готов хоть как-то смириться, то мириться с потерей кнопки «поделиться» и радоваться приобретению кнопки «сделай глючное приложение» я был не намерен.

В интернете попадались похожие проблемы: раз, два, три, четыре. Но всё так или иначе не подходило под мою проблему. Во первых: проблемы, в большинстве, касались OX X 10.10, а во вторых: решения типа «перезагрузить компьютер» или сменить UUID пользователя мне сразу казались либо странными, либо они не работали.

Было много всего: был и мозговой штурм, и переустановка чистой ОС, надежды и разочарования… ошибка опять давала о себе знать. Тогда было решено опять пустить в ход тяжёлую артиллерию: system.log ;) Ооо! Сколько я бы сэкономил времени, если бы слушал внутренний голос: «загляни в логи». И не слушал бы другой: «да там чёрт ногу сломит!»

Oct  8 02:31:19 vega kernel[0]: Sandbox: coresymbolicatio(540) System Policy: deny(1) file-write-create /System/Library/Caches/com.apple.coresymbolicationd
Oct  8 02:31:19 vega coresymbolicationd[540]: /System/Library/Caches/com.apple.coresymbolicationd/data does not exist, resetting cache
Oct  8 02:31:19 vega coresymbolicationd[540]: Attempt to create [/System/Library/Caches/com.apple.coresymbolicationd/data] failed. No such file or directory
Oct  8 02:31:19 vega coresymbolicationd[540]: Unable to open storage at /System/Library/Caches/com.apple.coresymbolicationd/data
Oct  8 02:31:19 vega com.apple.xpc.launchd[1] (com.apple.coresymbolicationd): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

Служба com.apple.coresymbolicationd не может открыть папку /System/Library/Caches/com.apple.coresymbolicationd/data, которая не существует и сама пытается её создать, но получает отлуп. Так почему же служба com.apple.coresymbolicationd, которая, по идее, запущена от имени рута не может создать необходимую папку в /System/Library/Caches/? Потому что, в El Capitan ничто не может модифицировать папку /System. По умолчанию в ОС включен режим «rootless» или по другому: работает System Integrity Protection (SIP), которая не даёт никому, даже руту, модифицировать системные файлы.

Выключаем rootless. Перезагружаемся в recovery mode (reboot & Cmd+R). Идём в терминал:


#csrutil disable

Перезагружаемся. Теперь защита снята и com.apple.coresymbolicationd создаст всё, что ей необходимо. После чего заведутся и уведомления и кнопка share.
После чего я вернулся обратно в recovery mode и на всякий случай включил «rootless».


#csrutil enable

Скорее всего, Apple поправит эту ошибку в ближайших обновлениях к OS X. Кроме того, есть файл
/System/Library/Sandbox/rootless.conf, но документации на него я, пока, не нашёл. Если, кто-то разберётся и сможет решить сию проблему используя его, то мне это будет очень любопытно.

Замечу, что после включения «rootless» служба продолжает «гадить» в system.log


Oct 12 01:24:49 vega kernel[0]: Sandbox: coresymbolicatio(6994) System Policy: deny(1) file-write-data /System/Library/Caches/com.apple.coresymbolicationd/data
Oct 12 01:24:49 vega kernel[0]: Sandbox: coresymbolicatio(6994) System Policy: deny(1) file-write-unlink /System/Library/Caches/com.apple.coresymbolicationd/data
Oct 12 01:24:49 vega kernel[0]: Sandbox: coresymbolicatio(6994) System Policy: deny(1) file-write-data /System/Library/Caches/com.apple.coresymbolicationd/data
Oct 12 01:24:49 vega coresymbolicationd[6994]: /System/Library/Caches/com.apple.coresymbolicationd/data did not validate, resetting cache
Oct 12 01:24:49 vega coresymbolicationd[6994]: Attempt to create [/System/Library/Caches/com.apple.coresymbolicationd/data] failed. Operation not permitted
Oct 12 01:24:49 vega coresymbolicationd[6994]: Unable to open storage at /System/Library/Caches/com.apple.coresymbolicationd/data
Oct 12 01:24:49 vega com.apple.xpc.launchd[1] (com.apple.coresymbolicationd): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

Что несколько настораживает, но тем не менее всё работает.

Напоследок: так и осталось неясным, после чего возникает данная проблема. Мне кажется, что она возникает после установки Xcode. Но опять повторять всё мне не хочется.

Надеюсь эта статья сбережёт кому-то нервы и время.
Желаю всем успешной рабочей недели.
Спасибо за внимание!

UPD.
Мне так и не удалось воспроизвести ошибку. Пытался воспроизвести, как после обновлениея до 10.11 с 10.10, так и после «чистой» установки. Такое ощущение, что важна, именно, фаза луны. Итого: счёт 2:1 в пользу Apple.

Скачиваю игру, вылазиет ошибка, не понимаю почему, может кто знает?

Вот ошибка «java.io.IOException: Failed to allocate 146678698 because only 12210176 allocatable
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.os.ParcelableException.readFromParcel(ParcelableException.java:56)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:82)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:79)
at android.os.Parcel.readParcelable(Parcel.java:2987)
at android.os.Parcel.createException(Parcel.java:2080)
at android.os.Parcel.readException(Parcel.java:2053)
at android.os.Parcel.readException(Parcel.java:2001)
at android.content.pm.IPackageInstallerSession$Stub$Proxy.openWrite(IPackageInstallerSession.java:485)
at android.content.pm.PackageInstaller$Session.openWrite(PackageInstaller.java:935)
at com.aefyr.sai.installer2.impl.rootless.RootlessSaiPackageInstaller.install(RootlessSaiPackageInstaller.java:94)
at com.aefyr.sai.installer2.impl.rootless.RootlessSaiPackageInstaller.lambda$enqueueSession$0$RootlessSaiPackageInstaller(RootlessSaiPackageInstaller.java:70)
at com.aefyr.sai.installer2.impl.rootless.-$$Lambda$RootlessSaiPackageInstaller$ivyAcunEgIkYlu_dB2vN6MOWZPU.run(Unknown Source:6)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: android.os.RemoteException: Remote stack trace:
at android.util.ExceptionUtils.wrap(ExceptionUtils.java:34)
at com.android.server.pm.PackageInstallerSession.openWrite(PackageInstallerSession.java:734)
at android.content.pm.IPackageInstallerSession$Stub.onTransact(IPackageInstallerSession.java:239)
at android.os.Binder.execTransactInternal(Binder.java:1021)
at android.os.Binder.execTransact(Binder.java:994)

» что такое не знаю, помогите.


  • Вопрос задан

    03 окт. 2022

  • 424 просмотра

Пригласить эксперта

Failed to allocate 146678698 because only 12210176 allocatable
перевожу Вы запросили 146 метров ОЗУ — фиг вам — на телефоне свободно только 122


  • Показать ещё
    Загружается…

12 февр. 2023, в 02:07

2000 руб./за проект

12 февр. 2023, в 00:06

1000 руб./в час

11 февр. 2023, в 22:57

25000 руб./за проект

Минуточку внимания

Оффлайн
alexmniv

Пробую установить Docker под Ubuntu 20.04
Сначала по документации с сайта разработчика
все остановилось на 4-м пункте

sudo apt-get install docker-ce docker-ce-cli containerd.io
    Чтение списков пакетов… Готово
    Построение дерева зависимостей       
    Чтение информации о состоянии… Готово
    Пакет docker-ce недоступен, но упомянут в списке зависимостей другого
    пакета. Это может означать, что пакет отсутствует, устарел или
    доступен из источников, не упомянутых в sources.list

        E: Для пакета «docker-ce» не найден кандидат на установку
    E: Невозможно найти пакет docker-ce-cli
    E: Невозможно найти пакет containerd.io
    E: Не удалось найти ни один пакет с помощью шаблона «containerd.io»
    E: Не удалось найти ни один пакет с помощью регулярного выражения «containerd.io


Потом пробовал по этой инструкции

Первым делом обновите существующий список пакетов:

            sudo apt update

        Затем установите несколько необходимых пакетов, которые позволяют apt использовать пакеты через HTTPS:

            sudo apt install apt-transport-https ca-certificates curl software-properties-common

        Добавьте ключ GPG для официального репозитория Docker в вашу систему:

            curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

        Добавьте репозиторий Docker в источники APT:

            sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

        Потом обновите базу данных пакетов и добавьте в нее пакеты Docker из недавно добавленного репозитория:

            sudo apt update

        Убедитесь, что установка будет выполняться из репозитория Docker, а не из репозитория Ubuntu по умолчанию:

            apt-cache policy docker-ce

        Вы должны получить следующий вывод, хотя номер версии Docker может отличаться:
    Output of apt-cache policy docker-ce

        docker-ce:
      Installed: (none)
      Candidate: 5:19.03.9~3-0~ubuntu-focal
      Version table:
         5:19.03.9~3-0~ubuntu-focal 500
            500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages

        Обратите внимание, что docker-ce не установлен, но является кандидатом на установку из репозитория Docker для Ubuntu 20.04 (версия focal).

        Установите Docker:

            sudo apt install docker-ce


На этом месте тоже все закончилось:

Распаковывается docker-ce-cli (5:20.10.8~3-0~ubuntu-bionic) …
    dpkg-deb (подпроцесс): разжимающий элемент архива: ошибка lzma: сжатые данные по
    вреждены
    dpkg-deb: ошибка: <decompress> subprocess returned error exit status 2
    dpkg: ошибка при обработке архива /tmp/apt-dpkg-install-i7eupn/2-docker-ce-cli_5
    %3a20.10.8~3-0~ubuntu-bionic_amd64.deb (--unpack):
     не удалось скопировать извлечённые данные «./usr/libexec/docker/cli-plugins/doc
    ker-buildx» в «/usr/libexec/docker/cli-plugins/docker-buildx.dpkg-new»: неожидан
    ный конец файла или потока
    Выбор ранее не выбранного пакета docker-ce.
    Подготовка к распаковке …/3-docker-ce_5%3a20.10.8~3-0~ubuntu-bionic_amd64.deb …
    Распаковывается docker-ce (5:20.10.8~3-0~ubuntu-bionic) …
    Выбор ранее не выбранного пакета docker-ce-rootless-extras.
    Подготовка к распаковке …/4-docker-ce-rootless-extras_5%3a20.10.8~3-0~ubuntu-bio
    nic_amd64.deb …
    Распаковывается docker-ce-rootless-extras (5:20.10.8~3-0~ubuntu-bionic) …
    Выбор ранее не выбранного пакета docker-scan-plugin.
    Подготовка к распаковке …/5-docker-scan-plugin_0.8.0~ubuntu-bionic_amd64.deb …
    Распаковывается docker-scan-plugin (0.8.0~ubuntu-bionic) …
    Выбор ранее не выбранного пакета liberror-perl.
    Подготовка к распаковке …/6-liberror-perl_0.17029-1_all.deb …
    Распаковывается liberror-perl (0.17029-1) …
    Выбор ранее не выбранного пакета git-man.
    Подготовка к распаковке …/7-git-man_1%3a2.25.1-1ubuntu3.1_all.deb …
    Распаковывается git-man (1:2.25.1-1ubuntu3.1) …
    Выбор ранее не выбранного пакета git.
    Подготовка к распаковке …/8-git_1%3a2.25.1-1ubuntu3.1_amd64.deb …
    Распаковывается git (1:2.25.1-1ubuntu3.1) …
    Выбор ранее не выбранного пакета slirp4netns.
    Подготовка к распаковке …/9-slirp4netns_0.4.3-1_amd64.deb …
    Распаковывается slirp4netns (0.4.3-1) …
    При обработке следующих пакетов произошли ошибки:
     /tmp/apt-dpkg-install-i7eupn/2-docker-ce-cli_5%3a20.10.8~3-0~ubuntu-bionic_amd6
    4.deb
    E: Sub-process /usr/bin/dpkg returned an error code (1)

« Последнее редактирование: 09 Августа 2021, 17:19:53 от Aleksandru »

Обычно, когда вы устанавливаете Docker, ему требуются полные права (root) на на хост-системе.

Это создает потенциальную проблему безопасности, поскольку и контейнеры, и служба (демон) Docker будут работать от имени root.

При установке Docker без права root только демон Docker работает от имени root, а контейнеры запускаются от имени обычных пользователей.

Проект Podman с открытым исходным кодом был создан для запуска контейнеров без права root.

Это заставило Docker поддержать аналогичную функцию, чтобы контейнеры запускались от имени обычных пользователей, но служба Docker (демон) работала от имени root.

Теперь такая установка без root доступна в самом Docker, и вам не нужно использовать Podman только для этой функции.

В этой статье я расскажу, как установить Docker без root-доступа.

Но прежде чем я покажу вам эти шаги, давайте сначала обсудим недостатки этого режима.

Содержание

  1. Недостаток запуска Docker в режиме rootless
  2. Предварительные условия
  3. Установка docker в режиме rootless
  4. Установите обычные пакеты Docker
  5. Установите пакет rootless

Недостаток запуска Docker в режиме rootless

Самым большим недостатком этого режима является сеть, и эти проблемы также присутствуют в Podman.

По умолчанию Docker использует сеть rootless.

Потому что она самая быстрая, со скоростью до 30 Гбит/с и поддержкой IPv4 и IPv6.

Но у нее есть проблемы.

Контейнеры не будут иметь внешнего IP запроса, и все запросы будут появляться с адреса 127.0.0.1.

Это большая проблема, особенно если вы хотите установить защиту, ограничивающую распределенные атаки типа “отказ в обслуживании” (DDOS), поскольку все запросы будут казаться исходящими с одного и того же адреса.

Использование режима Slirp4netns решает эту проблему и показывает исходный адрес запроса.

Но у него также есть две проблемы.

  • IPv6 не поддерживается.
  • Скорость намного ниже (около 7 Гбит/с).

Предварительные условия

Режим rootless не использует стикибитс.

Для них нужны newuidmap и newgidmap.

Поэтому вы должны убедиться, что пакеты newuidmap и newgidmap установлены (через пакет uidmap) и что имеется 65 536 дочерних идентификаторов.

newuidmap проверяет, что вызывающая программа является владельцем процесса, на который указывает pid.

id -u
1001
whoami
testuser

Затем проверьте, что пользователь имеет 65 536 под UID:

grep ^$(whoami): /etc/subuid
testuser:231072:65536
grep ^$(whoami): /etc/subgid
testuser:231072:65536

Что означают эти числа? Первое число – это первый разрешенный к использованию id, а следующие говорят о том, сколько у вас id. Например, начинается с 231072, id 0 означает 231072, а id 1000 означает 241072.

Установите пакеты dbus-user-session и fuse-overlayfs.

На Debian используйте команду для установки dbus-user-session:

sudo apt install -y dbus-user-session

Затем установите fuse-overlayfs:

sudo apt install -y fuse-overlayfs

Рекомендуется использовать ядро 5.11 или более позднюю версию.

Установка docker в режиме rootless

Теперь вы переходите к основной части.

Первая часть – это обычная установка Docker, а затем переходим к установке в режиме rootless.

Я покажу шаги на Ubuntu.

Установите обычные пакеты Docker

Сначала удалите все существующие пакеты Docker:

 sudo apt remove docker docker-engine docker.io containerd runc

А затем установите Docker на Ubuntu:

 sudo apt update
 sudo apt install docker-ce docker-ce-cli containerd.io

Убедитесь, что Docker Engine установлен правильно, запустив образ hello-world.

sudo docker run hello-world

Учитывая, что демон Docker уже запущен, сначала отключите его.

sudo systemctl disable --now docker.service docker.socket

Установите пакет rootless

Теперь установите пакет docker-ce-rootless-extras, загрузив официальный скрипт с помощью команды curl:

curl -fsSL https://get.docker.com/rootless | sh

Следуйте предложениям на экране, и у вас будет установлен Docker рутлесс,

В конце экрана установки будут написаны две вещи: export=xxx.

Скопируйте и вставьте их в последний файл .bashrc или, если вы используете ZSH, в файл .zshrc.

Запустите rc-файлы, которые вы только что изменили.

После завершения установки запустите демон docker rootless:

 systemctl --user start docker

Автоматический запуск rootless docker при каждом запуске:

systemctl --user enable docker
sudo loginctl enable-linger $(whoami)

см. также:

  • 🐳 Как запустить Grafana в контейнере Docker
  • 🐳 Docker, containerd и CRI-O: Углубленное сравнение
  • 🕵️ Как локально развернуть зеркало базы уязвимостей NIST в Docker
  • 🐳 Как и зачем запускать Docker внутри Docker
  • 🐳 Docker secret – как использовать в Docker Swarm и Docker Compose
  • 🐳 Где хранятся образы, контейнеры и тома Docker в хост-системе Linux?
  • 🐳 Как отредактировать конфигурационный файл внутри Docker контейнера?
  • 🐳 3 довольно неизвестных команды Docker, которые помогут вам в самых различных ситуациях

Понравилась статья? Поделить с друзьями:
  • Ошибка root certificates installation mechanism for sputnik browser
  • Ошибка rom ваз 2114
  • Ошибка rom ваз 2107
  • Ошибка reset type 122 lse err тахограф меркурий
  • Ошибка rod vcds внутренняя