LINUX.ORG.RU

Для тех, кто думает перейти на NixOS

 


8

6

Собственно по мотивам ТЫЦ но про NixOS и на основе моего опыта эксплуатации сабжа в течение как минимум одного года восьми месяцев и двух дней или шестьсот двенадцати дней кому как угодно. Ибо именно столько у меня стоит NixOS основной системой тыц.

Моей предыдущей системой была гента поэтому и свои сравнения я буду проводить непосредственно с ней. Все написанные мною слова выражают мои собственные мысли и не были призваны разжигать какие бы то ни было конфликты и/или жжения в любых частях тела прилегающих к седалищному нерву.

Так вот детки. Гента местами хороша… хотел бы я так написать но увы нет. Есть кардинальные проблемы с которыми она не справиться. Основная это toolchain. У вас попросту не может быть консистентной системы с самым распоследним toolchain-ом и довольно старыми выдержанными проверкой временем программами (Либо наоборот). Это не значит что такую проблему нельзя решить костылями chroot-а или некими иными методами… Это значит лишь то что такая проблема у дистрибутива как минимум есть в наличие.

Ты сейчас задвинул некую чушь. {У меня нет}/{Мне не нужны} старые программы.“ - Да дело ведь не только в этом. Те кто прожил с гентой достаточно припомнят не один случай неудачного обновления glibc в результате которого всему приходил северный полярный лис. „Бэкап спасёт“ да не без этого. Однако бэкап не исправляет саму изначальную проблему.

Так вот последние два абзаца написаны собственно только ради того что… Да детки в NixOS таких проблем нет. И быть не может by design. И я скромно умалчиваю про другие архитектуры, контейнера, FHS environment и прочие побочные плюшки.

Дальше меня ждала «ломка» поскольку во всех дистрибутивах корень системы это важная штука которую можно пощупать своими загребущими ручёнками… Да а в то время как в NixOS из всего корня так сказать материальны только /etc/nixos, /root и /nix а остальное симлинки… Тудумс! Занавес.

Немного про установку. Генту можно собрать за время от пары часов до нескольких дней. Развернуть из бинпакетов можно минут за сорок ну плюс минус около того. NixOS бинарный дистрибутив поэтому кампелять тут ничего не нужно.

Канпельять нинада. nixos ацтой. Моя отсельда мухожук.“ Однако стоит лишь переопределить дефолт и если это столь необходимо пакетный манагер сам пересоберёт то что нужно пересобрать. Вкуснятина!

Дальше сам процесс разработки. Про генту я скромно умолчу. А вот NixOS разрабатывают на гитхабе открыто, свободно и без бюрократии и 1770 запросов на слияние и 3753 проблемы тому доказательство.

Я скажу так в генте для меня всегда была головной болью настроить gnome/kde/plasma. Полные метапакеты натащат столько что ппц а минимальные как правило просто обрезаны по самое немогу и для комфортного существования приходилось искать ту самую золотую середину самостоятельно. В NixOS просто дефолтный выбор мне что называется зашел на ура. Одной проблемой меньше.

Итак вот мы прожили в системе определённое время накопились критические изменения и настало то самое время обновлять. У NixOS считай весь корень тупо набор симлинков поэтому, как не трудно додумать, он чудесно версионируется. Да у вас всегда есть не просто единственное текущее состояние системы но и всё неудалённые прошлые её состояния.

В NixOS пакетный менеджер заведует не просто версией хромиума но и всеми его настройками и да даже его расширениями.

Любые нативные игрушки steam-run спасает и делает не просто хорошо а прям прекрасно.

Да ладно… Вот прям взял и описал идеал. Не верю.“ Есть и баги. Дальше о них.

Ну не то чтобы это было проблемой но как с самой первой инсталлиции так и до сих пор - Only english language available in plasma regional settings #33987, Missing a lot of translation in plasma5-based system. #37741 Да все преведенные решения перепробовал но баг как был так и есть.

Из того что заметил в последнее время HDD not mounted, system don't boot #32588 это про btrfs на luks. Но оно тоже странное то есть то нет… В общем закономерности я не заметил но у себя наблюдал.

Ну и покамест на этом всё. Надеюсь мои многобукав помогут кому нибудь сделать свой выбор.

★★★★★

Последнее исправление: init_6 (всего исправлений: 1)
Ответ на: комментарий от artenox-naki

Если старой библиотеки нет в репозитории, где я ее возьму, если она понадобиться?

Если она была но её удалили можно поставить весь nixpkgs версии до удаления либо вытащить её себе оставив неизменным nixpkgs. Сценариев масса. И как правило необходимое не удаляют.

init_6 ★★★★★
() автор топика

Спасибо за пост, присмотрюсь к системе. Однако, недостатков как-то маловато будет.

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

Однако, недостатков как-то маловато будет.

Ну это те баги с которыми столкнулся конкретно я.

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

Что мешало решить все проблемы, которые решает NixOS, в рамках пакетного менеджера portage ?

А этот вопрос не мне задавай.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от artenox-naki

Во первых тут релизы. Сюрприиз. Во вторых вот тебе 2.2.8 не благодари. В третьих называть NixOS обычным… Я даже боюсь спрашивать что ж для тебя тогда необычное?

init_6 ★★★★★
() автор топика
Ответ на: комментарий от artenox-naki

Не все старые пакеты есть.

Не все старые пакеты востребованы. И да дерево чистят и иногда что то удаляют. Но тут штука в том, что никто не запрещает либо устанавливать nixpkgs конкретно того коммита который интерисует тебя. Либо утащить нужный тебе vlc2 в свой локальный оверлей. Да и они тут есть. Либо наоборот если у тебя нестабильная система а нужна некая версия проги из стабильной ветки так можно смешать ветки и собрать нестабильную систему с единственной прогой из стабильной. Вариантов море.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от artenox-naki

Все эти нестандартности ведь из исходников собирать?

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

А внешние диски (разделы) NixOS монтирует без запроса пароля, как Убунту?

Это не эксклюзивная фича убунты а udisks. И он есть во всех дистрибутивах кому эта фича была востребована.

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

Что мешало решить все проблемы, которые решает NixOS, в рамках пакетного менеджера portage ?

Это означало бы выкинуть portage и написать клон Nix на питоне.

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

А кому, pinkbyte-у ?

Ну можешь своей левой пятке почему бы и нет…

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

Ну paludis же написали на C++, так что не важно на чём.

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

init_6 ★★★★★
() автор топика

Бывший гентушник и ни слова про USE-флаги - глобальные, локальные, абы какие.

Вот, например, сервер у меня без монитора и без звука. Как сказать, чтоб не было мусора и дополнительных дыр в виде иксов, алсы и пульсы?

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

Бывший гентушник и ни слова про USE-флаги - глобальные, локальные, абы какие.

Насколько я осведомлён USE флаги дальше генты особо то никуда и не вырвались. А так идея неплохая.

Как сказать, чтоб не было мусора и дополнительных дыр в виде иксов, алсы и пульсы?

А с чего ты взял что в NixOS у тебя будут по дефолту "иксы, алса и пульса" если ты их не звал? Если ты их специально не устанавливал или если они не зависимость то их и не будет. В дефолтном ядре там да будет звук. Как и много иного всякого. Но на то оно и дефолтное ядро. Не устраивает? Переопределяй конфиг и собирай сам.

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

Если ты их специально не устанавливал или если они не зависимость

Я их специально не устанавливал. Они сами подтянулись по зависимостям. Хрен-знает-какой(ие)-то пакет(ы) подтянул(и) пульсу, алсу, да еще иксы в придачу. Примерно, это ffmpeg, который притянул чуть ли не все мультимедиа пакеты nixos. Спасибо, не надо.

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

А так идея неплохая.

Очень плохая. 100 глобальных флагов, и у каждого гентушника своя уникальная комбинация типа:

[code] USE=«crypt dbus mime truetype udev -cjk smp latex ncurses encode v4l
slang curl mtp -xattr -kerberos -branding -graphviz
-accessibility -gsm -offensive -smartcard -lirc -mms -dvb -syslog -emboss
-nas -xinetd -cddb -nntp rss git bzip2 gzip lzo -postgres
sqlite bash-completion -zsh-completion usb ieee1394 -joystick
-tk -motif xft X -xinerama cdr dvd dvdr cdda -kde ffmpeg
imagemagick -sox -libav emacs -vim-syntax cups scanner -fortran
-java sound alsa -oss -jack ssl jpeg gif png svg tiff -xpm -raw
-jpeg2k -mng flac mp3 -wavpack x264 -xvid pdf -postscript
-subversion -cvs aac opus -xmpp cairo -xmp css xml -snmp
-libressl libass opengl -aim -bidi cdparanoia -connman -dv -fltk
-freetds -freewnn -gcj -gnuplot gphoto2 -gps -graphicsmagick
hddtemp -icq imap -ios -ipod javascript -jingle -kolab -kontact
lm_sensors matroska -migemo mp4 mplayer -msn -mssql -mule
-musepack musicbrainz -mysqli -netboot -ocaml -oci8 -ofx -oracle
-oscar -pcmcia -pda -plasma -quicktime -radius -rdp
-seamonkey -semantic-desktop -shorten -speex -sybase -sybase-ct
-tokenizer -vcd videos -wayland -wddx -wmf -xemacs -xine -yahoo
-yaz systemd ipv6 unicode -bindist vorbis qt5 -aalib cxx python
perl lua -mozilla -multilib -neXt -nis -Xaw3d -afs -ayatana
-blas -bsf -canna -caps -cdb -cgi cracklib -dbi -dbm expat
-fam -fastcgi -fbcon -filecaps fontconfig gd -geoip -ggi gmp
-gpm -hdf5 -hscolour icu -idn -imlib -infiniband -inotify
-iodbc -jbig -ladspa lame -lapack -lash -libcaca -mikmod -modplug
modules -netcdf -ocamlopt -oci8-instant-client -openexr -osc
-portaudio -qdbm -qmail-spp ruby -sctp -slp -szip -tcl
-timidity -geolocation -qt4 -apache2 -zeroconf -bcmath -bluetooth
-dts -guile -milter -mpeg -mysql -odbc -openal -php -plotutils
-simplexml -sndfile -taglib -webp -djvu gnutls lcms -libedit
libffi -libsamplerate -orc -recode -skey -tidy webkit sdl
mad berkdb -cdinstall -dga -directfb -enscript -fftw -firebird
-flatfile -foomaticdb -glut -gsl -handbook -hardened -inifile
-libwww lzma -m17n-lib -maildir -mbox -mhash -nsplugin -ppds
-profile -sasl -savedconfig -soap -sockets -socks5
-static-libs -suid -symlink -tcmalloc -upnp -upnp-av -vaapi -vdpau
-vhosts xcb -xface xmlrpc -xosd -xscreensaver xv zlib -adns -ao
-apm -atm -audiofile -audit -avahi ftp ogg spell vnc
-xcomposite -samba -theora -pulseaudio -policykit -upower -wifi -pam
-a52 -acpi -calendar -eds -elogind -evo -exif -gimp -gnome
-gnome-keyring -gstreamer -udisks -wxwidgets -networkmanager
-gtk -introspection -ldap -mono -mpi clamav -vala» [/code]

Это на корню убивает всю воспроизводимость и бинарное кэширование. Зато у каждого свои уникальные баги при каждом обновлении, хотя у мейнтернеров всё УМВР.

Далее, как легко заметить, use-флаги используются в основном не для добавления функциональности, а для её обрезания. У гентишников какая-то мания ОБРЕЗАТЬ ВСЁ НИНУЖНОЕ, прям как у гномеров. «Зачем мне GTK, если у меня кеды? Зачем мне CUPS, если у меня нет принтера?» Цель двоякая: сэкономить на времени компиляци и сэкономить место на диске. Что смешно, сама необходимость компилять мир на локалхосте вызвана именно обилием USE-флагов. В NixOS такой проблемы нет, 99.9% пакетов тащатся в уже собранном виде с cache.nixos.org. Далее, обрезание фич помогает сэкономить место на диске. Если очень постараться, можно, наверно, сэкономить целых 10 ГБ. При нынешних ценах, 1 ГБ на SSD стоит около десяти рублей. То есть, гентушник экономит целых СТО РУБЛЕЙ единовременно ценой ежедневных страданий и многочасовых компиляций. Видимо, оно того стоит.

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

Они сами подтянулись по зависимостям.

Что и требовалось доказать. Кстати в официальной wiki есть сылка на коллекции конфигов юзеров. Там есть всякие разные примеры и чисто серверные в том числе. Так что ты там это… Держись. Счастья тебе и здоровья.

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

У меня для почты одноевровый сервак с десятью гигами диска. NixOS занимает около 1.5 GB. Мне пофиг, что там алса и иксовые библиотеки. Ну будет без них не 1.5, а 1.4 GB. И чо?

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

Они сами подтянулись по зависимостям.

Что и требовалось доказать.

Предлашаешь костыле-override’ить 100500 пакетов, чтоб они случайно не подтянули иксы, алсы, пулсы, русты, хрусты, шмусты?

А костыле-override - это верх дебилизма nix(-lang).

Спасибо, не надо.

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

Очень плохая.

У всего есть несколько сторон. Говорят и на родной сестре можно трипер поймать. Так что не всё так однозначно.

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

Спасибо, не надо.

Ты не привёл ни когфигов ничего. Просто голые слова о том что накачало многа ненужна… Ну а я ж человек доверчивый. Верю. Ну не нужно так не нужно. Проходи мимо не задерживайся.

init_6 ★★★★★
() автор топика

Имхо, тему не читал, ОП осилил на половину)
Это все про что? Какие-то тулчейны и всякую такую белиберду?
Зачем все это? Я с Линухом уже лет 15, как минимум, и с Гентой провел пару веселых лет))) Поставил Бубунту/Манжару и пользуешься, разве нет?
В чем резон таких издевальтеств над собой? Мазо?

athost ★★★★★
()

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

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

Подумал, а зачем мне все это?

Ну я пока таких упорных бинарников не встречал но в их существование охотно верю..

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

Ты не привёл ни когфигов ничего.

Потому что эти конфиги успешно уничтожены года 2-3 назад.

А то, что ты еще не постиг кривизну override, как самого языка nix-lang, так и nixpkgs, говорит что ты просто жрешь то, что дают.

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

То ли дело ебилды на баше!

Получше полной пересборки мира при незначительном изменении glibc.

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

Потому что эти конфиги успешно уничтожены года 2-3 назад.

Ааа просто мопед не твой!

А то, что ты еще не постиг кривизну override, как самого языка nix-lang, так и nixpkgs, говорит что ты просто жрешь то, что дают.

В то время как истинные дартаньяны затаскивают, сами не зная как, пульс с иксами на сервер а после этого удаляют всё к чертям и уходят в закат на своём бравом коне.

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

Ааа просто мопед не твой!

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

дартаньяны

Слышь кардинал, тут тебе конкретную проблему nixpkgs показали. А ты, в ромашку играешь - «верю - не верю», принадлежность мопедов вычисляешь.

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

Пересборка на одной билд-ферме взамен пересборки на каждом локалхосте.

И какая же халавная билд-ферма пересоберет мне мой новый мир с моим чуть исправленным glibc?

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

тут тебе конкретную проблему nixpkgs показали

Где? Я в упор проблемы не вижу. А вот в то что при желании можно натягать на сервер всяконенужного верю охотно. Так плохому танцору всегда дистрибутив мешает.

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

Разница есть. Конфигурация системы описывается декларативно и восстанавливается/клонируется одним движением - это позиционируется как ключевая киллер-фича, так?

Вот у меня есть конфигурация с 14 версиями libblabla и я ее хочу развернуть на свежей машине. Откуда в процессе развертки эти 14 версий там возьмутся?

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

У всего есть несколько сторон. Говорят и на родной сестре можно трипер поймать.

Интересно, где это так говорят, впервые слышу. И вдвойне интересно, где же у этой ситуации хорошая сторона, по мнению «говорящих».

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

Где? Я в упор проблемы не вижу.

Повторяю. Есть сервер. На нем нужен ffmpeg для создания слайдшоу (надергать картинок) из видеофайла. Иксы, алса и пульсу не надо.

Прикол в том, что не только ffmpeg может весь этот мусор притянуть. Но и другие пакеты, написанные сообществом без понимания, что нужно и не нужно дергать по зависимостям, без способов глобального (централизованного) управления этими пакетами, например посредством use-флагов.

И все это было сказано в контексте «бывший гентушник».

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

А если на сервере будут иксовые либы, алса и пульса - то что?

То приходится думать, что делать с ними.

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

И все это было сказано в контексте «бывший гентушник».

В NixOS можно устанавливать ПО по гентушному запихиванием в „мир“ с последующим засиранием системы всяким ненужным. Кроме этого есть такая вкусность как nix-env а это уже не в „мир“ а конкретному юзеру и никакого срача потому что магическая nix-env -e '*' отправит всё что было понаустановлено этим юзером к праотцам. Но если и этого было мало ещё есть nix-shell тут у меня даже слов нет поскольку вкуснятина и в гентах сравнивать вообще не с чем.

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

То приходится думать, что делать с ними.

Ты забываешь о том, что это ты в генте добавил USE="pulsaudio" в make.conf и оно тебе прилетело в систему. В NixOS, родной, всё установленное ПО которое доступное некому юзеру это набор симлинков на /nix. Так что да если ты изначально водружал на сервер десктопный конфиг с поэтессами и шампанским я тебя поздравляю. Но вот только в этом случае это проблема не дистрибутива а твоя.

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

Вот, например, сервер у меня без монитора и без звука. Как сказать, чтоб не было мусора и дополнительных дыр в виде иксов, алсы и пульсы?

services.xserver.enable = false;
sound.enable = false;
hardware.pulseaudio.enable = false;

Я их специально не устанавливал. Они сами подтянулись по зависимостям. Хрен-знает-какой(ие)-то пакет(ы) подтянул(и) пульсу, алсу, да еще иксы в придачу.

$ nixos-option services.xserver.enable
Value:
true

Default:
false

Example:


Description:

"Whether to enable the X server.\n"

Declared by:
"/nix/var/nix/profiles/per-user/root/channels/nixos/nixos/modules/services/x11/xserver.nix"

Defined by:
"/etc/nixos/configuration.nix"
toyo-chi
()
Ответ на: комментарий от init_6

В NixOS можно устанавливать ПО по гентушному…

Зачем ты меня учишь азам nix, которые я успешно подзабыл за ненадобностью. Ты еще расскажи про то, как там хранятся профили, симлинки, и как устроена сборка мусора. Знал я всё это.

Но по озвученной проблеме - ничего.

Потому что об этом не думали в nixos. Не думали дальше того, что дает пакетный менеджер. Просто тупо настрочили много бездумного кода на nix, вперемешку с баш.

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

Просто тупо настрочили много бездумного кода на nix, вперемешку с баш.

Вот оно чё. А пацаны то там и не знают. Ну ок. Спасибо за ценную инфу бро.

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

А зачем nixos?

А почему бы и да. Или тебя это волнует и ты хотел бы об этом поговорить?

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

Вот оно чё. А пацаны то там и не знают.

Пацаны не знают про use-флаги? Вроде был issue на гитхабе и решили только локально для конкретных пакетов.

Пацаны не знаю про проблемы nix-env, профили? Знают. Вроде пытаются что-то новое родить. Но я не очень в теме.

Пацаны то знают, некоторые. А ты жри, что дают, товарищ кардинал.

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