Как установить пакеты arch linux с помощью yaourt при вызове сборки docker из Dockerfile?

740
Sven M.

Я пытаюсь создать свой собственный jira-контейнер, используя официальный образ pritunl / archlinux . Я уже установил yaourt и передал это rusk85 / archbase. Мой Dockerfile выглядит так:

1: FROM rusk85/archbase 2: CMD /bin/bash 3: RUN yaourt -Sy --noconfirm atlassian-jira 

Это приводит к ошибке:

Running makepkg as root is not allowed as it can cause permanent, catastrophic damage to your system. 

Затем я попытался добавить после строки 2:

RUN useradd -ms /bin/bash jira USER jira 

Это, в свою очередь, просит у меня пароль. Другой вариант состоял в том, чтобы использовать это вместо USER jira:

RUN su jira 

Это также возвращает первую ошибку. Затем я создал пользователя jira, установил sudo, позволил всем пользователям группового колеса выполнять любую команду без пароля и добавил jira к групповому колесу, а также назначил пароль jira пользователю jira. Я зафиксировал эти изменения в своем изображении и повторил попытку:

FROM rusk85/archbase CMD /bin/bash USER jira # fixed: was docker before RUN yaourt -Sy --noconfirm atlassian-jira 

Это снова запрашивает исходный пароль sudo. Я искал эту проблему во всех вариантах, известных мужчинам, а также просматривал несколько файлов Docker, но мои поиски вернулись без каких-либо полезных результатов, и все файлы Docker, на которые я смотрел, полностью запутали меня. Я был бы признателен за действительно простой пример того, как пройти это. Я прошу прощения, если это действительно тривиальная проблема, но я только начал с Docker, и знания, которыми я обладаю в арке на сегодняшний день, кажется, не совсем урезали ее.

3
это выглядит как очень старое изображение, вы обновили все пакеты внутри? Вы установили группу пакетов `base-devel`? quixotic 7 лет назад 0
@quixotic: Извините, я указал неправильный репо. Я на самом деле использую официальное (?) Изображение arch linux, которое называется `pritunl / archlinux`. Исправлено в моем посте. Да, у меня даже был настроен `yaourt`, который зависит от` base / devel` (частично afaik). ** Какое отношение `base / devel` связано с моей дилеммой невозможности установки пакетов из` Dockerfile`, которым так или иначе требуется root? ** Кстати, я создал свой собственный базовый образ с помощью alpine linux, используя их мини-root версия файловой системы. Создайте свой собственный обратный прокси-сервер nginx с тем, что работает. Смотрите https://goo.gl/qCu7py и https://goo.gl/xoM5vJ. Все еще нужен ответ, хотя. Sven M. 7 лет назад 0
я не использую yaourt, поэтому я предполагаю. я думаю, `yaourt` будет создавать новый пакет каждый раз, когда вы запускаете этот контейнер; вам может понадобиться сначала запустить RUN pacman -S base-devel (или аналогичный), если ваше изображение еще не включает эти пакеты. ошибка `makepkg`, которую вы видите, может указывать на то, что вам нужен` fakeroot`, который включен в пакеты base-devel. `` yaourt`, по-видимому, не зависит от устанавливаемых пакетов base-devel, так что если он у вас есть, это не означает, что у вас есть другие. quixotic 7 лет назад 0
Ну, вы правы, у меня были установлены только части devel, а fakeroot действительно отсутствует. Еще не пробовал это с fakeroot, но, насколько я понимаю, один из его вариантов использования - сборка пакетов без привилегий root / root. Это верно? Sven M. 7 лет назад 0

1 ответ на вопрос

0
funilrys

Прежде всего, НЕ ИСПОЛЬЗУЙТЕ YAOURT .

Затем позвольте мне процитировать официальную вики-страницу Arch makepkg :

Запуск makepkgсебя от имени root запрещен . Помимо того, что a PKGBUILDможет содержать произвольные команды, сборка как root обычно считается небезопасной. Пользователи, которые не имеют доступа к обычной учетной записи пользователя, должны работать makepkgкак пользователь nobody .

Итак, вернемся к вашей проблеме, вы не должны пытаться делать то, что пытаетесь сделать.

Но если вы все еще хотите:

  • Вы можете установить yaourt, но можете установить его только как пользователь без полномочий root .

или же

  • Вы можете попробовать (на свой страх и риск) решение Allan McRae, которое считается хорошим объяснением замены старой makepkg --asrootкоманды.