ProgramCrafter 545 Опубликовано: 26 августа, 2022 (изменено) Ваша программа требует особую версию какой-нибудь библиотеки и мешается другим программам в системе? Опасаетесь, что необходимые библиотеки потеряются в истории? Надо разворачивать одно и то же окружение на много опенкомпов?* Представляю вашему вниманию программу, позволяющая собрать программу и все её библиотеки в один файл! wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/enum-files.lua Программа, сохраняющая "образ" файловой системы компьютера, на котором запущена. Чтобы не сохранять образ всей OpenOS, сохраняется только разность между корневой папкой и дискетой с чистой OpenOS. Путь к этой дискете необходимо прописать на строке 6. Образ сохраняется по пути /home/archive.bin. wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/unpack-files.lua Программа, распаковывающая образ поверх файловой системы. Осторожно, не открывайте зловредные архивы, потому что они могут затереть даже EEPROM (указав путь для распаковки /dev/eeprom)! wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/container.lua Сам полу-докер - скрипт, позволяющий запустить программу с подменой её файловой системы на образ. Так как OpenOS не записывается в образ, этой программе тоже необходимо указать путь к дискете с чистой OpenOS. Подменяется только io.open - to be fixed soon, потому что из-за этого могут грузиться неправильные версии библиотек. Образ является read-only - неясно, каким образом фиксить это. *Kubernetes (для управления множеством контейнеров) в комплект поставки не входит. Изменено 26 августа, 2022 пользователем ProgramCrafter доработана загрузка модулей в контейнере 6 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 545 Опубликовано: 26 августа, 2022 6 часов назад, ProgramCrafter сказал: Подменяется только io.open - to be fixed soon, потому что из-за этого могут грузиться неправильные версии библиотек. Теперь полу-докер подменяет не просто io.open, а всю библиотеку filesystem и package - а это значит, что теперь загрузка модулей через require происходит внутри контейнера, как и должна! Минус - некоторые программы могут крашиться. Баг-репорты принимаются, хоть здесь, хоть на гитхабе, хоть на гитлабе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 545 Опубликовано: 26 августа, 2022 Новая версия архиватора (enum-files.lua) спрашивает для каждого файла, включать его в архив или нет. Старую версию скрипта можно скачать здесь: https://gitlab.com/ProgramCrafter/lua-utils/-/raw/82d66b04b02118499cc577344fa4de924c177105/half-docker/enum-files.lua. Хотя смысла в этом немного - чтобы добавить в архив всё, достаточно запустить yes | enum-files. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 545 Опубликовано: 27 августа, 2022 Добавлен скрипт save-same-files: wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/save-same-files.lua Запаковывает в контейнер только те файлы, которые были в старой версии архива. Можно использовать для того, чтобы копировать только нужные файлы с рабочего компьютера и не раздавать оттуда все секреты и печеньки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 545 Опубликовано: 29 августа, 2022 Контейнер был обновлён! Новая фича: правильная работа библиотеки process, /dev/null и /dev/full. Чтобы запустить команду с перенаправлением, можно пользоваться sh. Если sh не работает, убедитесь, что у вас установлена самая новая OpenOS (например, проверьте ту же команду в хост-системе). Похоже, что шелл не работал минимум 2 года (требовал первым аргументом таблицу, которую невозможно передать из терминала), и фикс был всего три месяца назад. Запись файлов внутри контейнера всё ещё не поддерживается. /home # container sh "echo 1 >/dev/null" /home # container sh "echo 1 >/dev/full" /home # container ls /dev components eeprom eeprom-data null random zero /home # container sh time "set >/dev/null" real 0m0.250s cpu 0m0.012s /home # container save-same-files /home/container.lua:155: unsupported open type: wb: stack traceback: ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах