Сборка из исходных кодов стабильной версии lxc для Centos 7 с поддержкой python.
Поддержка python необходима, например для работы команды lxc-ls --fancy
Установка зависимостей:
Скачивание исходных кодов:
Т.к. у нас Centos и тут не всекак у людей как в других дистрибутивах, изменим в исходниках путь до исполняемого файла Python, но сперва найдем файлы, которые нужно модифицировать:
Для запуска Centos 7 контейнера необходимо проделать еще несколько манипуляций: В файле /usr/share/lxc/config/centos.common.conf нужно найти опцию lxc.cap.drop, содержащую значения setfcap и setpcap их нужно убрать, например для хоста Ubuntu 14.04 нужно сделать примерно так:
Ссылки по теме:
1. Bug 1176816 - booting a centos 7 container is extremely slow
2. centos 7 needs setpcap capability
3. systemd does not boot in a container
4. [lxc-devel] [PATCH] Various fixes for Fedora/CentOS/OpenSUSE templates and systemd.
5. big big login delays in CentOS 7 systemd #340
6. Linux Containers: Downloads
7. LXC 1.0: Troubleshooting and debugging [10/10]
yum install -y epel-release yum install -y gcc git rpm-build automake make python34 python34-devel yum install -y libcap-devel docbook2X graphvizСогласно официальному сайту на момент написания статьи доступно 3 версии LXC, я выбрал LTS stable-1.0
Скачивание исходных кодов:
git clone git://github.com/lxc/lxc -b stable-1.0 cd lxcПочитав немного доку и исходники, получился такой порядок действий:
./autogen.sh ./configure --enable-python PYTHON=/usr/bin/python3.4 PYTHONDEV_CFLAGS=-I/usr/include/python-3.4m PYTHONDEV_LIBS=-l/usr/include/python-3.4mКак можно заметить, конфигурация происходит с явным указанием версии python3.4, он появился сравнительно недавно в EPEL, его и будем использовать далее.
Т.к. у нас Centos и тут не все
grep -Rn '^#.*/python3'В результате у меня получился такой небольшой скрипт:
for f in config/apparmor/lxc-generate-aa-rules.py src/lxc/lxc-device src/lxc/lxc-ls.in src/lxc/lxc-start-ephemeral.in src/lxc/lxc-ls src/lxc/lxc-start-ephemeral src/python-lxc/examples/api_test.py src/python-lxc/examples/pyconsole-vte.py src/python-lxc/examples/pyconsole.py src/python-lxc/setup.py src/python-lxc/setup.py.in; do sed -i 's|#!/usr/bin/python3|#!/usr/bin/python3.4|' $f done sed -i 's|Requires: python3|Requires: python34|' lxc.spec sed -i 's|BuildRequires: python3-devel|BuildRequires: python34-devel|' lxc.spec sed -i 's|/python3.3/site-packages/|/python3.4/site-packages/|' lxc.specПосле изменений проверим результат:
grep -Rn '^#.*/python3'Теперь соберем rpm пакеты используя Python3.4:
make rpm PYTHON=/usr/bin/python3.4 PYTHONDEV_CFLAGS=-I/usr/include/python-3.4m PYTHONDEV_LIBS=-l/usr/include/python-3.4mНайти собранные пакеты можно в каталоге cd /root/rpmbuild/RPMS/x86_64, а установить командой:
yum localinstall lxc-libs-1.0.7-1.el7.centos.x86_64.rpm lxc-1.0.7-1.el7.centos.x86_64.rpmНе будем останавливаться на этом!
Для запуска Centos 7 контейнера необходимо проделать еще несколько манипуляций: В файле /usr/share/lxc/config/centos.common.conf нужно найти опцию lxc.cap.drop, содержащую значения setfcap и setpcap их нужно убрать, например для хоста Ubuntu 14.04 нужно сделать примерно так:
#lxc.cap.drop = mac_admin mac_override setfcap setpcap lxc.cap.drop = mac_admin mac_overrideНе зависимо от дистрибутива нужно в тот же файл еще добавить в конец сроки:
# This lets LXC SUSE containers run on hosts with apparmor. # It does nothing on hosts which do not have apparmor enabled. lxc.aa_profile = unconfined # https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1347020 lxc.kmsg = 0
Ссылки по теме:
1. Bug 1176816 - booting a centos 7 container is extremely slow
2. centos 7 needs setpcap capability
3. systemd does not boot in a container
4. [lxc-devel] [PATCH] Various fixes for Fedora/CentOS/OpenSUSE templates and systemd.
5. big big login delays in CentOS 7 systemd #340
6. Linux Containers: Downloads
7. LXC 1.0: Troubleshooting and debugging [10/10]
Комментариев нет:
Отправить комментарий