LINUX.ORG.RU

Новая альтернатива flatpak и appimage - контейнер в виде одного файла

 , ,


5

6

Может кому пригодится. Conty - контейнер, упакованный в один единственный исполняемый файл. С помощью него можно запускать любые приложения, в том числе игры. В целом, это что-то вроде flatpak и AppImage в одном флаконе.

Так как это контейнер, соответственно, никакие зависимости в системе не требуются. Вы даже можете запускать 32-битные приложения на полностью 64-битном дистрибутиве. Root права не требуются.

Хотите запустить Steam? Пожалуйста:

./conty.sh steam

Wine? Тоже можно:

./conty.sh wine app.exe

Да и в целом, можно запускать все, что душе угодно.

Также поддерживается возможность изоляции файловой системы. Например:

export SANDBOX=1
export BIND="/home/username/.steam /home/username/.local/share/Steam"
./conty.sh steam

https://github.com/Kron4ek/Conty

★★★★★

Последнее исправление: maxcom (всего исправлений: 3)
Ответ на: комментарий от kardjoe

Нет, vblank_mode=0 не выставлял. Но переменные хост системы учитываются и в контейнере, так что если ты ее сам выставил, то она будет иметь эффект.

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

Но я точно могу сказать, в контйнере я только PATH сам выставляю, остальные переменные не трогаю. Получается, у тебя низкий FPS, и может даже не связанный с vsync, верно? Что выдают?

./conty.sh glxinfo | grep -i Device
./conty.sh glxinfo | grep direct

И работает ли Vulkan?

./conty.sh vkcube
Kron4ek ★★★★★
() автор топика
Ответ на: комментарий от Kron4ek
direct rendering: Yes
Device: AMD Radeon RX 5700 XT (NAVI10, DRM 3.40.0, 5.10.26, LLVM 11.1.0) (0x731f)
GL_AMD_gpu_shader_int64, GL_AMD_multi_draw_indirect,
GL_ARB_depth_clamp, GL_ARB_derivative_control, GL_ARB_direct_state_access,
GL_ARB_draw_elements_base_vertex, GL_ARB_draw_indirect,
GL_ARB_indirect_parameters, GL_ARB_instanced_arrays,
GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect,
GL_AMD_multi_draw_indirect, GL_AMD_performance_monitor,
GL_ARB_direct_state_access, GL_ARB_draw_buffers,
GL_ARB_draw_indirect, GL_ARB_draw_instanced, GL_ARB_enhanced_layouts,
GL_ARB_indirect_parameters, GL_ARB_instanced_arrays,
GL_ARB_map_buffer_range, GL_ARB_multi_bind, GL_ARB_multi_draw_indirect,
GL_EXT_copy_texture, GL_EXT_depth_bounds_test, GL_EXT_direct_state_access

Куб работает.

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

Так нормальный FPS выдает?

export vblank_mode=0
./conty.sh glxgears

Просто vblank_mode же по умолчанию (если переменная не установлена) на VSYNC настроен, так что это, по идее, нормально. Она у тебя где-то в конфиге настроена?

Kron4ek ★★★★★
() автор топика
Последнее исправление: Kron4ek (всего исправлений: 2)
Ответ на: комментарий от Kron4ek

Если переменную задавать, то и через конти нет ограничения фпс по синхронизации. Просто в системе она у меня нигде не задана, приложения работают без ограничений по фпс, поэтому я и удивился, что тесты через конти дают ограниченный фпс.

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

Видимо у Mesa где-то конфиг есть, в котором vblank_mode задается, и на Slackware видимо по умолчанию vsync отключен. У меня на Arch, если эта переменная не задана в 0, то FPS ограничен, в контейнере то же самое, так как он тоже на Arch основан.

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

Нашел в плазме vsync в настройках композитора стоит в автоматическом режиме. Может быть как-то плазма по другому относится к запуску через конти.

kardjoe
()
Ответ на: комментарий от einhander

А как тогда Вайн поменять, патч или мод поставить?

Сделать опцию, как я выше написал. Это если речь о смени wine'а конечным пользователем. А если речь про автора сборки, то ему образ придётся пересобрать конечно.

ls-h ★★★★★
()
Ответ на: комментарий от Kron4ek

я тут глянул внимательно в консоль при запуске лутриса и увидел такую штуку:

Running Conty

Gtk-Message: 09:16:42.568: Failed to load module "colorreload-gtk-module"
Gtk-Message: 09:16:42.570: Failed to load module "window-decorations-gtk-module"
Gtk-Message: 09:16:42.570: Failed to load module "appmenu-gtk-module"
Gtk-Message: 09:16:42.573: Failed to load module "appmenu-gtk-module"
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  99
  Current serial number in output stream:  100
2021-03-28 09:16:42,975: glxinfo call failed: Command '['glxinfo', '-B']' returned non-zero exit status 1.
2021-03-28 09:16:42,976: No available glxinfo output
2021-03-28 09:16:42,976: Invalid glxinfo received
2021-03-28 09:16:43,469: Couldn't find a terminal emulator.
2021-03-28 09:16:43,876: Your version of python-magic is too old.
2021-03-28 09:16:44,757: Initializing lutris
2021-03-28 09:16:46,067: Downloading DXVK releases to /home/user/.local/share/lutris/runtime/dxvk/dxvk_versions.json
2021-03-28 09:16:46,068: Runtime updated. Initialization complete.
2021-03-28 09:16:46,069: Lutris 0.5.8.3
2021-03-28 09:16:46,069: Using NVIDIA drivers 460.56 for x86_64
2021-03-28 09:16:46,069: GPU: GeForce GTX 860M
2021-03-28 09:16:46,070: GPU: 10DE:1392 1043:171D (nvidia drivers)
2021-03-28 09:16:46,070: GPU: 8086:0416 1043:171D (i915 drivers)
MESA-INTEL: warning: Haswell Vulkan support is incomplete
2021-03-28 09:16:52,694: Shutting down Lutris

и судя по всему, запускается все на встроенной карте. потому что дальше батлнета я не запускал до этого, а тут решил зайти в игрулю, а она не видит карту и не появляется в nvidia-smi. такие дела.

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

Может быть, какие-то конфиги системные нужно пробрасывать, я пока не знаю что optimus-manager делает, но если смогу разобраться, то, вероятно, смогу исправить эту проблему. Однако придется вслепую делать, так как у меня нет ноута с гибридной графикой. Но если что, я попрошу протестировать.

Если есть желание, можешь пока попробовать пробросить всякие системные конфиги типа:

./conty.sh --bind /etc/X11 /etc/X11 glxgears

И прочее подобное.

Или даже весь /etc:

./conty.sh --bind /etc /etc glxinfo | grep Device
Kron4ek ★★★★★
() автор топика
Последнее исправление: Kron4ek (всего исправлений: 3)
Ответ на: комментарий от Kron4ek

с /etc не заработало. но я пошел дальше и чудо, с /usr/lib glxgears крутится и vkcube показывает. а с /usr/ так и стим с лутрисом заработали : )

думаю проблема не в optimus-managaer, потому что он ничего особого кроме замены конфигов не делает. дело в драйверах.

fakeroot
()

Буду оригинален: ненужно, есть Nix и Flatpak, их бы доделать.

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

Интересно, значит какие-то библиотеки надо пробрасывать. В самом контейнере на данный момент ванильные Арчевые драйверы: Нвидиевский 460.67 и Mesa 20.3.4. Без ядерных модулей, конечно, контейнер все-таки. И я так полагаю, что могут быть проблемы, если в системе у кого-то модуль от старого драйвера, а в сама контейнере библиотеки от нового драйвера. С Mesa проблем не должно быть, а вот с Nvidia могут быть.

Kron4ek ★★★★★
() автор топика
Последнее исправление: Kron4ek (всего исправлений: 3)

То есть по сути это такой wsl2-через-чрут под линуксы?

Подозреваю, что могут быть проблемы, например, если версии блоба nvidia в ядре хоста и в conty разные.

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

Подозреваю, что могут быть проблемы, например, если версии блоба nvidia в ядре хоста и в conty разные.

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

Flatpak с этим как-то справляется, вроде, хотя там тоже bubblewrap контейнер.

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

Не факт, что в хосте они есть. Выше по треду есть пример слаки без мультилиба, запускающей 32-битные вещи в wine.

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

Такое возможно, да, но в таком случае я ничего не смогу сделать, по крайней мере не в случае с Nvidia. С AMD и Intel никаких проблем не должно быть, там, как правило, версия ядерного модуля не важна от слова совсем, в том смысле, что Mesa любой версии почти с любыми версиями ядра работает.

А того человека со Слакой без мультилиба я спрашивал насчет GPU - у него интеграшка Intel.

Kron4ek ★★★★★
() автор топика
Последнее исправление: Kron4ek (всего исправлений: 3)

Было три так себе работающих штуки - стало четыре.

fornlr ★★★★★
()
Ответ на: комментарий от ls-h

Я смотрю со стороны пользователя, как правило авторы сборок не обновляют wine внутри сборок, да и сами сборки порой тоже. А так вещь нужная, хотя бы для нового софта на старых системах.

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

MD5 буду прикладывать.

Одно MD5 легко обходится подбором «мусора», SHA1 - аналогично.

Нужно выкладывать именно оба хэша (так везде и принято) - в этом случае почти невозможно подобрать «мусор», удовлетворяющий одновременно и MD5, и SHA1.

Честно говоря, я не верю, что GitHub может такое учудить

Когда SourceForge продался корпорастам, то всё стало объяснимо. После продажи Github корпорации Microsoft можно также ожидать любой пакости.

За каждой корпорацией торчат уши спецслужб, а они обожают присунуть в расслабившуюся попку.

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

И я так полагаю, что могут быть проблемы, если в системе у кого-то модуль от старого драйвера, а в сама контейнере библиотеки от нового драйвера.

после обновления драйверов до 460.67 все заработало.

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

А до этого какая версия была? Просто интересно, версия модуля и библиотек прям совсем идентична должна быть или можно немного разные - например, 460.67 и 460.56. Но это все равно проблема, которую надо будет как-нибудь решить, так как не у всех новый драйвер, а у кого-то даже новее чем в контейнере.

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

Понятно, значит совсем идентичны должны быть. Ладно, буду думать, как решить.

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

У тебя работает такая команда? Вроде как, должна только номер версии драйвера выводить, ничего лишнего.

nvidia-smi --query-gpu=driver_version --format=csv,noheader

И работает ли она без root прав?

Kron4ek ★★★★★
() автор топика
Последнее исправление: Kron4ek (всего исправлений: 2)
Ответ на: комментарий от Kron4ek

nvidia-smi не работает если драйвер не загружен. но позже проверю.

fakeroot
()
Ответ на: комментарий от Kron4ek

А если переключиться на интегрированную графику, то все равно номер версии показывает?

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
fakeroot
()
Ответ на: комментарий от Novator

Нужно выкладывать именно оба хэша (так везде и принято) - в этом случае почти невозможно подобрать «мусор», удовлетворяющий одновременно и MD5, и SHA1.

так везде и принято

Было принято лет пятнадцать тому назад, по совершенно другим причинам. Сейчас давно используется как минимум sha256, и, что намного важнее, подписи PGP (они и использовались в пакетных менеджерах, с хэшем SHA1, ещё во времена популярности MD5).

Когда SourceForge продался корпорастам, то всё стало объяснимо.

Ну, Dice.com не то, чтобы крупная ТНК.

После продажи Github корпорации Microsoft можно также ожидать любой пакости.

После приобретения гитхаба корпорацией «Майкрософт» вероятность произвола уменьшилась в разы.

За каждой корпорацией торчат уши спецслужб

Хвост вертит собакой?

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 2)
Ответ на: комментарий от esperantisto

Всё это на самом деле несущественно, главная причина ненужности фатпака и ему подобного говна в том, что задача распространения ПО и обновлений к нему была решена ещё в 90-е годы, и нефиг un-решать её.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 4)
Ответ на: комментарий от token_polyak

Было принято лет пятнадцать тому назад, по совершенно другим причинам.

Именно по тем причинам, которые я назвал.

Сейчас давно используется как минимум sha256, и, что намного важнее, подписи PGP (ими и пользовались пакетные менеджеры ещё во времена MD5).

Одно другому не мешает.

Ну, Dice.com не то, чтобы крупная ТНК.

Документы Сноудена показали, что у той же ЦРУ куча мелких карманных юрлиц.

Хвост вертит собакой?

И собака хвостом, и хвост собакой: с одной стороны у спецслужб есть свои фирмы, с другой - во всем мире корпорации по новым законам (годов примерно с 2014-2015) обязаны давать полный доступ к базам, в англосаксонских странах, например, обязаны вставить бекдоры, а в Австралии, к примеру, рядовые программисты обязаны выполнять распоряжения спецслужб даже не уведомляя своё начальство.

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

Документы Сноудена показали

Сноуден лишь с эпатажом пересказал то, что тридцать лет было в открытом доступе. (ну и показал красивые паверпоинты, которые всё равно были у «вероятных противников»)

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Сноуден лишь с эпатажом пересказал то, что тридцать лет было в открытом доступе.

Ты пытаешься обесценить его поступок.

Но по факту, предоставить журналистам документы с грифами и печатями - это гораздо весомее, чем трепаться в подворотне.

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

Ты пытаешься обесценить его поступок.

Не «пытаюсь», это и было бесполезное шоу.

Но по факту, предоставить журналистам документы с грифами и печатями - это гораздо весомее, чем трепаться в подворотне.

И что с ними журналисты сделают? А у тех, кто делом, а не словом соревнуется с ЦРУ, эти сведения всё равно уже были.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 3)
Ответ на: комментарий от token_polyak

Не «пытаюсь», это и было бесполезное шоу.

Твоя вторая попытка обесценить Сноудена выдаёт в тебе конторского шныря.

И что с ними журналисты сделают? А у тех, кто делом, а не словом соревнуется с ЦРУ, такие сведения давно были.

Третья настойчивая попытка обесценить поступок Сноудена.

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

В этом всё достижение Сноудена (который продолжает быть активным сотрудником) - запуганные хомячки намного охотнее идут в стойло ради «прайваси».

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 2)
Ответ на: комментарий от token_polyak

Нельзя обесценить то, что ценности не имеет.

Четвертая попытка обесценить Сноудена. С конторскими спорить бесполезно - вас много и вы на жаловании круглосуточно по сменам сидите.

Вы имени Сноудена боитесь и везде пытаетесь его обесценить. Кстати, спроси у начальника, почему меня в Инстаграмме заблокировали сразу, как я Сноудена поздравил с рождением сына, а мой коммент потёрли?

Сейчас проверим, здесь потрёте или нет :)

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

Понятно, практическое применение наработок MKULTRA с целью вызвания шизофрении среди населения - удалось.

А, ну ясно, «сам дурак» в действии...

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

Разве ты не понимаешь, что именно для этого затеяли всю эту шумиху со Сноуденом? Со времён его первых выступлений зондов стало лишь больше, только теперь они под предлогом «прайваси».

token_polyak ★★★★★
()
Ответ на: комментарий от Kron4ek
SANDBOX=1 BIND="/home/user/.steam /home/user/.local/share/Steam" bash conty\(1\).sh steam
Running Conty
Filesystem sandbox is enabled
Binded items: /home/user/.steam /home/user/.local/share/Steam

Running Steam on arch rolling 64-bit
STEAM_RUNTIME is enabled automatically
Pins potentially out-of-date, rebuilding...
No protocol specified
Unable to init server: Could not connect: Connection refused

(zenity:16141): Gtk-WARNING **: 14:33:58.499: cannot open display: :0
Can't find 'steam-runtime-check-requirements', continuing anyway
kardjoe
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.