Показать статистику
0 голосов
от (1.6тыс. баллов)
Что из себя представляет система NixOS и как ее установить, как настроить в дальнейшем?
7.8тыс. просмотров 1 ответов

1 Ответ

0 голосов
от (26.4тыс. баллов)

NixOS - это свежая операционная система. Это не производная, а новая версия Linux. Он поставляется с различными типами настольных сред и предлагает уникальный, эффективный опыт.

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

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

Более деьальный обзор вы найдете на официальном сайте https://nixos.org/

А теперь установим эту систему.

Установка NixOS

Попав на официальный веб-сайт NixOS Linux, найдите кнопку «Get NixOS» и щелкните ее мышью, чтобы перейти на страницу загрузок.

На странице загрузок для NixOS вы увидите много информации и ссылок. Найдите ссылку «Graphical Live CD» и выберите ее, чтобы немедленно начать процесс загрузки последней версии.

 

image

Размер файла составляет около 1,3 ГБ, поэтому загрузка может занять некоторое время, в зависимости от скорости вашего интернет соединения. Когда он будет завершен, он появится в папке «Загрузки» на вашем компьютере.

Создание Live CD

Теперь, когда вы получили в руки новейший файл NixOS, пришло время создать загрузочный USB, чтобы операционная система работала на вашем ПК. Для этого перейдите на сайт Etcher.io и загрузите их приложение. https://www.balena.io/etcher/

Установите приложение Etcher и запустите его на своем компьютере Mac, Linux или Windows. Затем следуйте пошаговым инструкциям, чтобы создать загрузочный диск.

image

  • Шаг 1: Найдите синюю кнопку «Выбрать изображение» внутри приложения Etcher и щелкните по ней мышью.
  • Шаг 2: После нажатия «Выбрать изображение», используйте всплывающее окно, чтобы найти ISO-образ NixOS в вашей системе, и нажмите кнопку «Открыть», чтобы добавить его.
  • Шаг 3: Извлеките флэш-накопитель USB (размером не менее 2 ГБ) и подключите его к компьютеру.
  • Шаг 4: Найдите кнопку «Выбрать диск» в приложении Etcher и используйте встроенное всплывающее меню для выбора флэш-диска.
  • Шаг 5: Найдите кнопку «Flash!» И щелкните ее мышью, чтобы начать процесс записи! Когда все будет готово, перезагрузите компьютер с Linux и настройте его для загрузки с USB.

Установка NixOS

Если вы когда-то устанавливали себе Arch Linux, у вас не возникнет сложностей.

В меню NixOS Grub выберите «Графический установщик» с помощью  клавиши Enter . После выбора этой опции вам будет предложено перейти в терминал.

Введите следующую команду, чтобы начать установку.

systemctl start display-manager

Затем вам будет представлена среда рабочего стола KDE Plasma .

image

 Отсюда найдите значок Gparted и дважды щелкните по нему, чтобы запустить программу.

В Gparted выполните следующие действия.

используете BIOS, а не UEFI? Пропустите шаги 4-6.

Выберите жесткий диск, на который вы хотите установить NixOS, в меню справа вверху.

Выберите «Создать таблицу разделов». Для UEFI установите «GPT». Для BIOS выберите «MS-DOS».

Щелкните правой кнопкой мыши по незанятому пространству в Gparted и выберите «Создать», чтобы создать новый раздел.

Во всплывающем окне для нового раздела найдите «Файловая система» и установите для него Fat32. Затем напишите «boot»  и поместите 512 в поле с надписью «New Size (MB)».

Нажмите «ОК», чтобы создать загрузочный раздел. Затем щелкните значок галочки, чтобы создать его.

Щелкните правой кнопкой мыши загрузочный раздел, выберите «manage flags». После этого установите флажки «boot» и «esp».

Щелкните правой кнопкой мыши свободное место еще раз и выберите «Новый». Затем создайте новый раздел.

Установите для файловой системы второго раздела linux-swap.

Установите метку нового раздела Swap на «Swap».

Нажмите «Новый размер (МБ)» и напишите 4096 (4 ГБ).

Выберите значок галочки, чтобы создать новый раздел подкачки.

В Gparted щелкните правой кнопкой мыши раздел Swap и выберите «Swapon», чтобы активировать Swap.

С помощью мыши щелкните правой кнопкой мыши незанятое пространство в Gparted и выберите «Создать», чтобы создать третий раздел на диске.

В окне создания раздела установите файловую систему Ext4 и метку «Root». Новый раздел Ext4 использует оставшуюся часть диска.

Нажмите значок галочки в третий раз, чтобы создать третий раздел.

Когда это будет сделано, расположение разделов должно выглядеть так, как показано ниже. Обратите внимание, что в макете BIOS будет отсутствовать раздел Fat32.

image

Завершив разбиение, закройте Gparted и дважды щелкните значок Konsole на рабочем столе, чтобы получить доступ к командной строке на живом диске. Затем выполните команду lsblk .

lsblk

Посмотрите на вывод lsblk для 3 разделов, которые вы только что создали. В этом примере это:

/dev/sda1 (загрузочный)
/dev/sda2 (swap - файл подкачки)
/dev/sda3 (root - корневой раздел)

С помощью команды mount смонтируйте все разделы в папку /mnt .

image

mount /dev/sda3 /mnt
mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot

Или, если вы настраиваете только BIOS, сделайте следующее. Помните, что в этом случае корневым разделом является / dev / sda2, поскольку на диске нет загрузочного раздела.

mount /dev/sda2 /mnt

Запустите команду nixos-generate-config, чтобы создать новый файл конфигурации.

nixos-generate-config --root /mnt

Откройте файл конфигурации с помощью Nano.

nano -w /mnt/etc/nixos/configuration.nix

Сделайте следующие изменения в файле конфигурации.

image

image

Для пользователей UEFI

В файле конфигурации удалите # из:

networking.hostName = "nixos"; <- не забудьте также изменить «nixos» на предпочитаемое имя хоста.

networking.wireless.enable = true <- если вам требуется WiFi.

Для пользователей BIOS

В файле конфигурации удалите # из:

boot.loader.grub.device= "/dev/sda"

networking.hostName = "nixos"; <- не забудьте также изменить «nixos» на предпочитаемое имя хоста.

networking.wireless.enable = true <- если вам требуется WiFi.

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

чтобы сохранить с Nano  Ctrl + O .

чтобы выйти из nano ctrl+x

 

Вот как ваша система будет настроена при установке. 

После создания нового файла конфигурации выполните команду nixos-install для установки операционной системы.

image

nixos-install

image

введите reboot для загрузки в новую систему NixOS.

reboot

image

от (26.4тыс. баллов)
0

Продолжаем...

 

Установка программного обеспечения в NixOS

Все программные компоненты в NixOS устанавливаются с помощью диспетчера пакетов Nix.

Nix создаст все необходимые зависимости, если они еще не существуют в вашей системе.

Пакеты, установленные для всех пользователей, определены в выражении nix /etc/nixos/configuration.nix

Nixpkgs 

Это хранилище по умолчанию, с которым работает nix. Здесь вы можете найти много разных пакетов, и если вы хотите что-то, что в данный момент не упаковано, у вас есть возможность добавить его самостоятельно!

Для тех, кто еще не слышал о nix, это чисто функциональный менеджер пакетов. Он направлен на то, чтобы иметь возможность давать надежные и воспроизводимые сборки. Как упоминалось ранее, nixpkgs запускается из репозитория git, поэтому можно «привязать» к git ref, который вы хотите собрать. Это очень полезно, если у вас есть команда, создающая проект с помощью nix, чтобы вся ваша команда могла использовать одну и ту же версию всего программного обеспечения.

Установка

Установка очень проста. На любом компьютере с Linux или MacOS просто запустите

$ curl https://nixos.org/nix/install | sh

как пользователь, который не является пользователем root. Вы можете найти эти инструкции на главной странице для Nix.

Установка и удаление пакетов

Вы можете установить пакет с помощью утилиты nix-env командной строки.

$ nix-env -i hello

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

$ nix-env --uninstall hello

Предыдущая команда только отсоединит пакет от вашего $PATH. Чтобы фактически удалить его и все неиспользуемые пакеты, вам нужно будет запустить

$ nix-collect-garbage -d

Опция -d  помогает освободить дисковое пространство.

Если вы хотите найти доступные пакеты, вы можете найти наиболее перечисленные здесь https://nixos.org/nixos/packages.html?channel=nixos-19.09

Начало работы с Nix Package Manager

 

У Никс много команд. Основная команда для управления пакетами - nix-env . Эта команда используется для просмотра, установки, обновления, отката, удаления, запроса пакетов. Давайте посмотрим некоторые команды с примерами.

Обновление каналов Nix

Канал Nix - это просто URL, который указывает на место, которое содержит набор выражений Nix и манифест. По умолчанию канал Nixpkgs автоматически добавляется в список «подписанных» каналов при установке Nix.

Чтобы быть в курсе новостей канала Nix, выполните следующую команду:

$ nix-channel --update

Вывод будет таким

downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’...

downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s]

unpacking channels...

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

$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable


После подписки (добавления) канала не забудьте обновить канал, чтобы получить последние доступные выражения Nix с помощью команды:

$ nix-channel --update

Чтобы удалить канал, просто запустите:

$ nix-channel --remove nixpkgs

поиск / запрос доступных пакетов

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

$ nix-env -qa

Пример вывода вышеуказанной команды будет:

2048-in-Terminal-2015-01-15 

2bwm-0.2 

389-ds-base-1.3.5.15 

3dpong-0.5 

4store-1.1.6 

8086tiny-1.25 

90secondportraits-1.01b 

915resolution-0.5.3 

9pfs 

a2jmidid-8 

a2ps-4.14 

a52dec-0.7.4p4 aacgain-1.9.0 

aacskeys- 

0.4.0e aalib 

-1.4rc5 

abc-verify-20160818 abcde 

-2.7.2 

abcl-1.4.0 


[...]

Здесь «-q» обозначает операцию запроса. «-A» обозначает все доступные (т.е. устанавливаемые) пакеты.

Вы можете запросить конкретный пакет, как показано ниже.

$ nix-env -qa chromium

Выход:

chromium-58.0.3029.110

Также вы можете использовать следующую команду для поиска определенного пакета.

$ nix-env -qaP | grep python3-3

После этого примерно такой вывод:

nixpkgs.python33 python3-3.3.6

nixpkgs.python33Full python3-3.3.6

nixpkgs.python34 python3-3.4.6

nixpkgs.python34Full python3-3.4.6

nixpkgs.python35 python3-3.5.3

nixpkgs.python35Full python3-3.5.3

nixpkgs.python3Full python3-3.6.1

nixpkgs.python36Full python3-3.6.1

nixpkgs.python3 python3-3.6.1

Чтобы вывести список всех установленных пакетов, просто запустите:

$ nix-env -q

Также возможно увидеть статус доступного пакета. Посмотрите на приведенный ниже пример.

$ nix-env -qas gcc

Образец вывода:

IPS gcc-5.4.0

Здесь «I» указывает, что указанный пакет установлен, «P» указывает, что пакет присутствует в нашей системе, а «S» указывает, существует ли так называемая замена для пакета.

Вы можете запрашивать / перечислять пакеты, используя регулярные выражения. Вот несколько примеров регулярных выражений.

chromium

Соответствует имени пакета хром и любой версии.

chromium-58.0

Соответствует имени пакета Chromium и версии 58.0.

Пример:

$ nix-env -qa chromium-58.0

gtk\\+

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

.\*

Соответствует любому имени пакета. Это значение по умолчанию для большинства команд.

‘.*zip.*’

Соответствует любому имени пакета, содержащему строку zip . Обратите внимание на точки:

‘*zip*’ не работает, потому что в регулярном выражении символ * интерпретируется как квантификатор.

‘.*(firefox|chromium).*’

Соответствует любому имени пакета, содержащему строки firefox или chromium .

Установка пакетов

Как я упоминал, все пакеты будут храниться в Nix Store , обычно это каталог / nix / store .

Чтобы установить пакет, просто запустите:

$ nix-env --install gcc

или

$ nix-env -i gcc

Приведенная выше команда установит последний доступный пакет gcc.

Пример вывода вышеуказанной команды будет:

installing ‘gcc-5.4.0’

download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds...

download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds...

download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds...

these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked):

 /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin

 /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0

 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11

 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25

 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man

 /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10

 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev

 /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib

 /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info

fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’...


[...]


fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...


*** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...

 % Total % Received % Xferd Average Speed Time Time Time Current

 Dload Upload Total Spent Left Speed

100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k


building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’

created 78 symlinks in user environment

 

Давайте проверим, установлен ли gcc или нет с помощью команды:

$ gcc -v

Образец вывода:

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper

Target: x86_64-unknown-linux-gnu

Configured with: 

Thread model: posix

gcc version 5.4.0 (GCC)

Как вы заметили , в приведенном выше выводе gcc находится в подкаталоге с именем “dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0” под /nix/store. Здесь мы называем dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 в качестве уникального идентификатора. Этот подкаталог содержит все необходимые зависимости и библиотеки пакета gcc.

от (26.4тыс. баллов)
0

Продолжаем тему...

 

Тестовые пакеты без установки

Еще одна примечательная особенность диспетчера пакетов Nix заключается в том, что вы можете протестировать пакет, не устанавливая его в своей системе. Обратитесь к следующему руководству, чтобы узнать, как протестировать пакет без его установки.

Например, допустим, вы хотите протестировать свой код C ++. Вам не нужно устанавливать GCC. Просто запустите следующую команду:

$ nix-shell -p gcc

Эта команда создает или загружает пакет gcc и его зависимости, а затем переводит вас в оболочку Bash, где присутствует команда gcc  , и все это без ущерба для вашей обычной среды.

Проверьте версию GCC:

$ gcc -v

Теперь идем дальше и тестируем код. Когда вы закончите, введите команду exit, чтобы вернуться на консоль.

[nix-shell: ~] $ exit 

exit

После выхода из nix-оболочки вы не можете использовать GCC.

Вот еще один пример.

$ nix-shell -p hello

Это создает или загрузит GNU Hello и его зависимости, а затем переводит вас в оболочку Bash, где присутствует команда hello , и все это не влияет на вашу обычную среду:

[nix-shell:~]$ hello

Hello, world!

Введите команду exit, чтобы вернуться к консоли.

[nix-shell: ~] $ exit

Теперь проверьте, доступна ли привет программа Hello

$ hello 

hello: command not found

Обновление пакетов

Чтобы обновить пакет до следующей доступной версии, просто запустите:

$ nix-env --upgrade vim

Или просто:

$ nix-env -u vim

Приведенная выше команда обновит пакет vim только при наличии «более новой» версии.

Кроме того, вы можете обновить все установленные пакеты одновременно, выполнив следующую команду:

$ nix-env -u

Откатить пакеты

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

$ nix-env --rollback

Удаление пакетов

Чтобы удалить пакет, запустите:

$ nix-env -e gcc

Приведенная выше команда удалит пакет с именем gcc из вашей системы.

Вы можете удалить несколько пакетов, как показано ниже.

$ nix-env -e gcc vim

Образец вывода:

uninstalling ‘vim-8.0.0442’

uninstalling ‘gcc-5.4.0’

building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’

created 6 symlinks in user environment

Удаление неиспользованных пакетов

Когда пакет удаляется, он не удаляется из Nix Store (т. Е. / Nix / store / directory). Только символические ссылки будут удалены из вашего профиля.

Чтобы фактически удалить неустановленные пакеты, запустите:

$ nix-collect-garbage -d

Образец вывода:

finding garbage collector roots...

deleting garbage...

deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’

deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’

deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’


[...]

deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’

deleting ‘/nix/store/trash’

deleting unused links...

note: currently hard linking saves -0.00 MiB

1447 store paths deleted, 12.65 MiB freed

 

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

И это все на данный момент. Надеюсь, у вас есть представление о базовом использовании менеджера пакетов Nix. То, что я только что описал, достаточно для начала работы. Конечно, есть много команд. Чтобы узнать больше о командах Nix, обратитесь к официальному руководству Nix.https://nixos.org/nix/manual/

...