Size: a a a

2021 May 19

аᶘ

асоциальный пикотран... in pro.bash
Я имел в виду не инструкцию, а вообще идею: я концептуально не понимаю, что значит запустить nixos на шиндоус или мак. chroot/jail? в виртуалке? или оно мне магичесим образом нативно соберёт пакетный менеджер под макось и будет пересобирать все пакеты?
источник

n

nod in pro.bash
А, понял. Nixos - это операционная система, которая построена вокруг пакетного менеджера nix. Ставится она как любая операционная система - на железо, в виртуалку или запускается в контейнере.
В свою очередь nix - это пакетный менеджер (и экосистема для работы). Он идет отдельно от операционной системы и может использоваться без неё. Это чем-то похоже на snap или flatpak. Или на docker (именно в этом контексте). Сам nix работает на любом линуксе, макоси или винде c wsl.
Еще nix'ом называется язык программирования, на котором написано большинство утилит и на котором декларативно описывается вообще всё, начиная от конфига и заканчивая описанием пакета.
Nix соотносится с nixos примерно так же, как flatpak с coreos - это связанные, но отдельные вещи.
источник

n

nod in pro.bash
Да, пакет будет нативный в рамках экосистемы nix. То есть не будет никакой виртуализации (если не брать случай с WSL).
Если в бинарном кэше нету пакета, то он будет собран.
источник

n

nod in pro.bash
Вот например где у меня лежит бинарник tree и с чем он линкуется
источник

n

nod in pro.bash
А это файловая структура с nix программами, которые установлены у меня пользователем. Не на никсоси /nix/store будет скорее всего находиться в ~/.nix/store
источник

Лс

Лень с Самосознанием... in pro.bash
Да нет, PKGBILD из AUR это просто баш скрипт с нужными функциями, его спокойно можно запустить вне арча с пакмэном и собрать
источник

аᶘ

асоциальный пикотран... in pro.bash
Теперь понятно, спасибо.

Я прекрасно понимаю плюсы запуска нативного кода, но nix же всё равно будет собирать обычные апстримовые версии софта, а значит с высокой вероятностью в нём будут ifdef'ы уровня «#ifdef MACOS, #ifdef LINUX» и прочие штуки.

А значит есть очень высокая вероятность разного поведения на разных системах.
Если ты что-то разрабатываешь, что потом будет ставиться на сервера в одном и том же окружении, то лучше уж взять контейнер и потратить некоторые ресурсы на контейнеризацию (к слову, на линуксе околонулевые ресурсы в плане RAM и CPU) и/или виртуализацию, чем потом встречаться с ошибками на уровне различий работы нативного софта на разных системах.
источник

Лс

Лень с Самосознанием... in pro.bash
Особенно на Alpine
источник

n

nod in pro.bash
Да, тут уже все зависит только от самого софта. Чтобы не было этой проблемы, нужно виртуализировать - архитектуру, систему итд. Прям полную гарантию можно получить только в рамках одной архитектуры в одном семействе осей. Условный firefox скомпилированный под x86_64-linux может по-другому себя вести, если он же был собран под M2 на darwin.
Нет, контейнеризация не решает эту проблему и по сути доступна только в линуксах с cgroups (если мы говорим о докере). Во всех остальных осях - это виртуальная машина с линуксом, в котором уже поднимаются контейнеры.
источник

n

nod in pro.bash
Но стоит учитывать, что поведение нативного докера под линем, в виртуалке на макоси и на hyper-v в винде тоже может быть разным. Например, проблемы за счет разной организации сети в вмах
источник

EK

Evgeny Kuchkov in pro.bash
нубский вопрос конечно, но что за "s" на месте "х"?
drwxrwsr-x 1450 oracle oinstall 264K May 19 15:38 invoice.files
источник

∀lǝxǝʎ in pro.bash
Sgid бит наверное
источник

EK

Evgeny Kuchkov in pro.bash
да, точно
источник

IS

Ivan Stepanov in pro.bash
if [[ $(uname -r) =~ Microsoft$ ]]; then
   foo
fi

Как в одну строчку записать?

Как-то вот так хочу:
IS_WSL=`test $(uname -r) =~ Microsoft$`
источник

OM

Oleg Makarikhin in pro.bash
test не возвращает текст в стдоут,
а присваивание из субшела присваивает значение того текста.
источник

OM

Oleg Makarikhin in pro.bash
IS_WSL=`test $(uname -r) =~ Microsoft$ && echo YES`
источник
2021 May 20

∀lǝxǝʎ in pro.bash
как-то извратно выглядит
[[ $(uname -r) =~ Microsoft$ ]] && IS_WSL=true
источник

OM

Oleg Makarikhin in pro.bash
👌🏿
источник

Лс

Лень с Самосознанием... in pro.bash
[[ $(uname -r =~ Microsoft$ ]] && foo
источник

VP

Vadim "Oxyd&quo... in pro.bash
источник