Среда разработки песочницы
Каков стандартный способ изолировать среду разработки от системы при разработке в Linux? Например, когда я работаю над приложениями или пакетами, которые система уже использует. Я знаю, могу ли я использовать виртуальную машину. Могут ли также использоваться контейнеры Linux? Как выполнялась эта изоляция до виртуализации и контейнеров? Был ли "chroot" инструментом для этого? Я занимаюсь разработкой на C и C++.
3 ответа
Там нет реального общего стандарта, но есть более или менее стандартные подходы в зависимости от технологического стека. Например, virtualenv вездесущ в Python. У узла есть как минимум два популярных варианта.
Многие люди используют виртуальные машины, особенно в сочетании с такими инструментами, как vagrant (или docker и docker-compose для более легкого решения).
Насколько я понимаю, c и C++ довольно легки с точки зрения необходимых инструментов. См. Есть ли какой-нибудь virtualenv-подобный инструмент для C++?, Но если вы включите зависимости уровня ОС, такие как драйверы БД и тому подобное, вам, вероятно, понадобится что-то, чтобы справиться с разными средами для разных проектов.
Посмотрите на vagrant вместе с некоторыми технологиями виртуальных машин или docker плюс docker-compose.
Red Hat делает доступными более новые версии GCC (например, 5.2) через набор инструментов разработчика (DTS). Эти новые версии GCC работают вдоль системной цепочки инструментов, так что вы не испортите все, как установлено в другой части файловой системы. Этого может быть достаточно для того, что вы хотите сделать, но если вы также хотите изолировать контейнер, есть также версия образа DTS Docker, которую можно использовать с помощью комплекта разработки контейнера Red Hat ( CDK).
Контейнеры Linux настолько близки, насколько вы можете добраться до стандартной изолированной среды в Linux, будь то для разработки или других целей. Вы можете найти множество образов для разработки, например, эти образы GCC Docker, или создать их самостоятельно на основе вашего любимого дистрибутива и включить все необходимые вам встроенные инструменты и зависимости.
Vagrant - еще один полезный инструмент, который помогает управлять средами сборки, но он наиболее полезен, если вы работаете с виртуальными машинами для нескольких платформ. Если вы планируете использовать только контейнеры Linux, вам, вероятно, не нужен Vagrant.