Если нужно много проприетарщины, то лучше попробовать NixOS. Там достаточно nixpkgs.config.allowUnfree = true и можно ставить скайпы и прочую проприетарщину прямо из бинарных репозитариев. В guix с проприетарщиной гораздо хуже отношения (GNU как-никак).
Как раз на лине масштабируется легко, в отличие от Win. Времени на настройку уходит не сильно больше (в пределах одного порядка, по личному опыту), а вот квалификация требуется сильно повыше. Так что если нужна надёжная система с высокой масштабируемостью — берут линукс и нанимают профессионала, если нужно просто вот сейчас сервачок — то берут сына ген. директора и win.
В nixpkgs есть древние версии gcc и средств сборки специально для таких случаев. Даже пинить ничего не надо — просто выбираем версию постарше в buildInputs.
А у меня остальную систему (включая всякие glib и прочие системные вещи) можно обновлять отдельно от libfoobar с его зависимостями (скорее всего, пинить нужно не libfoobar, а приложения, которым он нужен. Тогда libfoobar автоматически запинится для этих приложений). В этом прелесть чистых ПМ — можно держать сколько угодно версий чего угодно одновременно в системе, и они не будут друг другу мешать.
Да, он действительно несложный, но меня очень напрягает читаемость и неявные сайд-эффекты. Я бы предпочёл, чтобы условный guix был написан на условном Haskell.
Еще раз повторяю, мы каждый раз явно выбираем, откуда ставить пакет. (Всё немного сложнее на самом деле, мы выбираем не репозиторий, мы выбираем нужный package set, а собственно репозиторий в смысле место хранения бинарного файла выбирается автоматически)
Итак, у нас декларативный язык, который решает проблему update-alternatives… исполнением mkdir и ln. Это точно, guile, а не bash?
Это не guile, это nix
Если мы не ограничены присутствием другого пакетного менеджера в системе (т.е. мы находимся на nixos/guixsd), у нас есть куча других способов добавить в PATH бинарник с нужным именем, указывающий на другой бинарник. (А мне лично удобнее пользоваться alias'ами, которые у меня декларативно указывают на нужное мне приложение, например e -> emacsclient)
Не вижу ничего плохого в использовании UNIX-утилит. Те, кто видят в этом плохое, используют guix и пишут установочные скрипты на scheme.
Дальше, я написал простое: apt-mark hold libfoobar-3.2-3-nmu3
И через пару апдейтов всё сломалось, а у меня будет работать (условно) всегда, пока github.com онлайн и старая версия libfoobar с зависимостями не удалена из интернетов. Ну и я забыл упомянуть, что pin можно сделать один на всю конфигурацию, и потом писать просто [ pin.libfoobar pin.bash pin.hello ].
Мда, вот вам и результат веры в RedHat. К сожалению, остальные системы инициализации уже проиграли, и теперь нам остается только надеяться, что инженеры из шапки будут затыкать дырки этого тонущего судна быстрее, чем оно тонет.
Nixos/guixsd очень хорош, когда машин больше десяти. Тогда ты пишешь один раз конфиг (да, это может занять пару дней или даже неделю), а потом просто раскатываешь его по всем машинам. Если всё правильно сделать, то изменения настроек можно делать просто редактированием конфига и после этого nixos-rebuild switch --target-host .... Когда машина одна, преимущества тоже есть (атомарность + декларативность + rollbacks + изолированность + повторяемость + легкость оверрайдов a-la gentoo, только эти оверрайды ещё и аддитивны, и т.д.)
не так важно, какая там у тебя операционная система под капотом
nix тоже запускается на всём POSIX-совместимом.
А вообще — относитесь ко мне с подозрением, ведь я уже потратил месяц на написание конфига и теперь ни за что не признаю ошибки :)
Ну не знаю. Когда мне упарывают комментарии в минус просто из-за другого мнения, они обычно вылезают в итоге в небольшой плюс. Я надеюсь, что с кармой произойдет что-нибудь подобное.
Раз уж этот пост про раскручивание гаек, напишу свое важное (нет) мнение:
Карма — это не очень хороший инструмент саморегулирования системы. В карму ставят оценки чаще те, кто недоволен человеком (или даже его позицией). В результате получается, что набрать карму очень сложно, а слить её — очень легко. Это заставляет людей подумать лишний раз — а стоит ли высказать своё мнение, если оно не очень популярно? Ведь если выскажу один раз, заминусуют и сольют карму, и больше высказывать уже не получится. Это ведет к тому, что на ресурсе остается только одно мнение, а все остальные вытесняются.
Возможные варианты решения (ИМХО):
1) Менять права только на основании рейтинга, оставив карму исключительно для того, чтобы человек понимал, что он неправильно себя ведёт. Если человек пишет откровенную чушь или троллит на постоянной основе, его рейтинг упадёт даже быстрее, чем карма. А вот если пишет адекватно, но его мнение не совпадает с мнением большинства голосующих, то рано или поздно найдутся адекватные люди, которые восстановят рейтинг путём плюсования.
2) Показывать карму рядом с ником. Тогда те, кому гадят в карму из-за мнения, будут получать плюсы от людей, чьё мнение совпадает с мнением человека (в отличие от текущей системы, где люди с похожим мнением забывают ставить плюсы в карму или просто ленятся делать три клика вместо одного).
Всё, что выше — просто ИМХО от человека, у которого очень низкая карма, относитесь с недоверием :)
Так в nix/guix вся сборка и установка происходит на 100% изолированно, и сделать какую-либо операцию (даже чтение) вне собственного каталога сборщик попросту не может. Ну а если поверх довесить firejail, то изоляция будет и на уровне рантайма. Вот вам и изоляция полная.
Предположим, что для сборки cmake-проекта foobar нужен gcc версии 4 и утилиты, которые идут с этим gcc. Пишем
И получаем именно то, что нам нужно.
Если нужно много проприетарщины, то лучше попробовать NixOS. Там достаточно
nixpkgs.config.allowUnfree = trueи можно ставить скайпы и прочую проприетарщину прямо из бинарных репозитариев. В guix с проприетарщиной гораздо хуже отношения (GNU как-никак).Как раз на лине масштабируется легко, в отличие от Win. Времени на настройку уходит не сильно больше (в пределах одного порядка, по личному опыту), а вот квалификация требуется сильно повыше. Так что если нужна надёжная система с высокой масштабируемостью — берут линукс и нанимают профессионала, если нужно просто вот сейчас сервачок — то берут сына ген. директора и win.
В nixpkgs есть древние версии gcc и средств сборки специально для таких случаев. Даже пинить ничего не надо — просто выбираем версию постарше в
buildInputs.Хотите эстетики?
Это как я бы написал у себя в конфиге.
Теперь к настоящей красоте nix: оверрайдам. Хочу, чтобы compton с анимациями!
И мне не нужно заботится о процессе сборки compton.
Хочу телеграм с wide-baloons!
Ещё одно преимущество, вытекающее из повторяемости — хорошая "оффлайновость." Нужно поставить пакет на компьютер без интернета?
out кидаем на флешку, переносим на компьютер без интернета,
Получаем нужную софтину, которая гарантированно работает (ибо все зависимости идут вместе с ней).
Да, он действительно несложный, но меня очень напрягает читаемость и неявные сайд-эффекты. Я бы предпочёл, чтобы условный guix был написан на условном Haskell.
Еще раз повторяю, мы каждый раз явно выбираем, откуда ставить пакет. (Всё немного сложнее на самом деле, мы выбираем не репозиторий, мы выбираем нужный package set, а собственно репозиторий в смысле место хранения бинарного файла выбирается автоматически)
emacsclient)И через пару апдейтов всё сломалось, а у меня будет работать (условно) всегда, пока github.com онлайн и старая версия libfoobar с зависимостями не удалена из интернетов. Ну и я забыл упомянуть, что pin можно сделать один на всю конфигурацию, и потом писать просто
[ pin.libfoobar pin.bash pin.hello ].Nixos/guixsd очень хорош, когда машин больше десяти. Тогда ты пишешь один раз конфиг (да, это может занять пару дней или даже неделю), а потом просто раскатываешь его по всем машинам. Если всё правильно сделать, то изменения настроек можно делать просто редактированием конфига и после этого
nixos-rebuild switch --target-host .... Когда машина одна, преимущества тоже есть (атомарность + декларативность + rollbacks + изолированность + повторяемость + легкость оверрайдов a-la gentoo, только эти оверрайды ещё и аддитивны, и т.д.)nix тоже запускается на всём POSIX-совместимом.
А вообще — относитесь ко мне с подозрением, ведь я уже потратил месяц на написание конфига и теперь ни за что не признаю ошибки :)
Раз уж этот пост про раскручивание гаек, напишу свое важное (нет) мнение:
Карма — это не очень хороший инструмент саморегулирования системы. В карму ставят оценки чаще те, кто недоволен человеком (или даже его позицией). В результате получается, что набрать карму очень сложно, а слить её — очень легко. Это заставляет людей подумать лишний раз — а стоит ли высказать своё мнение, если оно не очень популярно? Ведь если выскажу один раз, заминусуют и сольют карму, и больше высказывать уже не получится. Это ведет к тому, что на ресурсе остается только одно мнение, а все остальные вытесняются.
Возможные варианты решения (ИМХО):
1) Менять права только на основании рейтинга, оставив карму исключительно для того, чтобы человек понимал, что он неправильно себя ведёт. Если человек пишет откровенную чушь или троллит на постоянной основе, его рейтинг упадёт даже быстрее, чем карма. А вот если пишет адекватно, но его мнение не совпадает с мнением большинства голосующих, то рано или поздно найдутся адекватные люди, которые восстановят рейтинг путём плюсования.
2) Показывать карму рядом с ником. Тогда те, кому гадят в карму из-за мнения, будут получать плюсы от людей, чьё мнение совпадает с мнением человека (в отличие от текущей системы, где люди с похожим мнением забывают ставить плюсы в карму или просто ленятся делать три клика вместо одного).
Всё, что выше — просто ИМХО от человека, у которого очень низкая карма, относитесь с недоверием :)
Готов прям сейчас. У меня там только
env, и тот — симлинк для совместимости с shebangs.Не съест. Прав у nix-builder-0 не хватит на удаление этой папки, в "худшем" случае удалится только $out, т.е. сам пакет.
Одна строка в конфиге — это пылящийся бубен? Серьёзно?
В nixos по-сути так и сделано. Выставляем опцию
nixpkgs.config.allowUnfree = true;и ставим несвободные пакеты в своё удовольствие.