LINUX.ORG.RU

Виртуальная надстройка над файловой системой для сборки пакетов

 ,


0

1

Всем привет,
не знаю как кратко сформулировать идею, может поможете. Нередко для сборки пакетов (у меня arch) требуется установить development или подобные им пакеты, которые в остальное время не нужны. Интересует, есть ли какая-нибудь виртуальная надстройка над файловой системой, работающая по принципу:

  • все файлы на жёстком диске доступны для чтения
  • если требуется создать новый файл, то он создаётся в виртуальном слое
  • если требуется изменить существующий на диске файл - создаётся его виртуальная копия, над ней проводятся изменения, ей отдаётся предпочтение
  • после окончания сборки виртуальный слой можно удалить одной командой
  • система осталась чистой, ничего удалять не нужно

Существует ли что-нибудь подобное? Понятна ли идея?

★★

Почему бы просто не поставить нужные для сборки пакеты, а после сборки не удалять?

установить development

Это что ещё за пакет такой?

sudopacman ★★★★★ ()
Ответ на: комментарий от sudopacman

Это что ещё за пакет такой?

Забудь.

Почему бы просто не поставить нужные для сборки пакеты, а после сборки не удалять?

Хочу поменьше насиловать ssd. Был печальный опыт с прошлым диском, когда он умер вместе с курсовиком, а сохранения делать часто привычки не было... Собираю на внешнем диске, а внутренний хочу поберечь.

rmu ★★ ()
Ответ на: комментарий от rmu

Ну так чтобы поменьше насиловать SSD, не сноси те пакеты, после того, как соберёшь. А каталог сборки монтируй в оперативку.

sudopacman ★★★★★ ()
Ответ на: комментарий от Xenius

Вообщем поковырялся в overlayfs, и ничего не получается. Создаю окружение так:

mkdir -p /tmp/overlay/upperdir_root /tmp/overlay/workdir_root /tmp/overlay/newroot
mkdir -p /tmp/overlay/upperdir_home /tmp/overlay/workdir_home
sudo mount -t overlay overlay -o lowerdir=/,upperdir=/tmp/overlay/upperdir_root,workdir=/tmp/overlay/workdir_root /tmp/overlay/newroot
sudo mount -t overlay overlay -o lowerdir=/home,upperdir=/tmp/overlay/upperdir_home,workdir=/tmp/overlay/workdir_home /tmp/overlay/newroot/home
Для сборки пакета захожу в окружение через proot, для установки зависимостей через chroot. В последнем случает при попытке поставить пакет пишет:
ошибка: не удалось открыть файл /etc/mtab: Нет такого файла или каталога
ошибка: не удалось определить точку монтирования для файловой системы
ошибка: недостаточно места на диске
ошибка: не удалось завершить транзакцию (непредвиденная ошибка)
Файла /etc/mtab нет, создать подложный не даёт. Пока в тупике.

rmu ★★ ()
Ответ на: комментарий от sudopacman

Да конечно их можно оставить, просто я люблю чистоту, да и вообще напрягают подобные бесполезные пакеты

rmu ★★ ()
Ответ на: комментарий от rmu

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

sudopacman ★★★★★ ()
Последнее исправление: sudopacman (всего исправлений: 2)

ну так жуй свой мифический kiss.

В openSUSE, даже если не брать в расчет obs, прекрасная штука build. Которая умеет собирать пакеты хоть в chroot, хоть в kvm. Я лично так и собираю: в kvm, которая создается автоматически в RAM. Чистота и порядок гарантированы.

gutaper ★★★★ ()
Ответ на: комментарий от gutaper

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

rmu ★★ ()
Ответ на: комментарий от Andrey_Utkin

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

rmu ★★ ()
Ответ на: комментарий от MadMax

Спасибо большое, MadMax! Установил clean-chroot-manager, настроил окружение на переносном диске, протестировал - пакеты отлично собираются, система остаётся чистенькая! И это всё одной командой, а если нужно что-то установить-переустановить - то это легко делается с помощью

pacman --dbpath /mnt/root/var/lib/pacman --root /mnt/root

Если кто будет так собирать, то нужно перемонтировать внешний диск с suid, например так:

mount -n -o remount,suid /dev/sdb4
Решено!

rmu ★★ ()
Ответ на: комментарий от rmu

Скажу больше, в арче так и собирают пакеты в clean chroot. По крайней мере мейнтейнеры должны так делать и советуется так делать, если пакет делаешь не только себе. Чтоб исключить влияние личных сборок. Там только то, что нужно для компиляции. С другой стороны есть пакеты необходимые для сборки, а есть и для запуска. Можно собрать в чруте, а ставить через -U, то оно предложит зависимости поставить? Я что-то забыл как это работает.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.