1 | #+TITLE: @w96k: GNU Guix
|
---|
2 | #+LANGUAGE: ru
|
---|
3 |
|
---|
4 | * GNU Guix
|
---|
5 | #+BEGIN_abstract
|
---|
6 | For now the text is available only in Russian language. It describes
|
---|
7 | what is gnu guix, how to use it and how to bypass ip bans for russian/belarussian
|
---|
8 | ips
|
---|
9 | #+END_abstract
|
---|
10 |
|
---|
11 | #+CAPTION: Логотип GNU/Guix
|
---|
12 | [[https://upload.wikimedia.org/wikipedia/commons/8/81/Guix_logo.svg]]
|
---|
13 |
|
---|
14 | ** Что такое GNU Guix
|
---|
15 | *GNU GUIX* (произносится гикс /ɡiːks/) — функциональный пакетный
|
---|
16 | менеджер и операционная система, разработанные [[https://people.bordeaux.inria.fr/lcourtes/][Ludovic Courtès]] и
|
---|
17 | сообществом. Отличительной особенностью является создание полностью
|
---|
18 | [[/posts/reproducible-builds.html][воспроизводимых билдов]] и декларативное описание. Guix можно поставить
|
---|
19 | на существующий дистрибутив GNU/Linux или в качестве отдельной системы
|
---|
20 | на базе Linux или GNU Hurd. Раньше существовало разделение менеджера
|
---|
21 | пакетов Guix и операционной системы GuixSD.
|
---|
22 |
|
---|
23 | Определения пакетов описываются на диалекте языка [[https://en.wikipedia.org/wiki/Scheme_(programming_language)][Scheme]] –
|
---|
24 | [[https://gnu.org/software/guile/][GNU/Guile]]. Большая часть исходников написана на нём же. Система
|
---|
25 | изначально была основана на [[https://nixos.org/][Nix]]. Отличиями от Nix(OS) являются
|
---|
26 | язык для описания пакетов и сервисов, система инициализации (GNU
|
---|
27 | Shepherd), использование ядра [[https://www.fsfla.org/ikiwiki/selibre/linux-libre/][Linux-Libre]] (Linux без блобов) и
|
---|
28 | отсутствие проприетарных пакетов.
|
---|
29 |
|
---|
30 | О том чем опасны проприетарные пакеты можно ознакомиться на сайте
|
---|
31 | проекта [[https://www.gnu.org/philosophy/free-sw.html][GNU]] или посмотреть [[https://www.fsf.org/blogs/rms/20140407-geneva-tedx-talk-free-software-free-society][выступление Ричарда Столлмана]]. Не смотря на
|
---|
32 | отсутствие проприетарных пакетов, при должном старании их возможно
|
---|
33 | поставить при помощи сторонних каналов, но их поддержка оставляет
|
---|
34 | желать лучшего по сравнению со свободными пакетами, доступными в Guix.
|
---|
35 |
|
---|
36 | GNU Guix (из коробки) не имеет проприетарного firmware. Потому при
|
---|
37 | переходе на эту систему надо учитывать, что возможно wifi адаптер, gpu
|
---|
38 | и другие компоненты системы могут не работать частично или
|
---|
39 | полностью. Совместимость оборудования со свободным программным
|
---|
40 | обеспечением можно смотреть на сайте [[https://h-node.org/][H-node]].
|
---|
41 |
|
---|
42 | Архитектуры пакетного менеджера: ~i686~, ~x86_64~, ~ARMv7~, ~AArch64~
|
---|
43 | Архитектуры системы: ~i686~, ~x86_64~ (~arm~ и ~riscv~ в разработке)
|
---|
44 |
|
---|
45 | Система инициализации Guix: [[https://www.gnu.org/software/shepherd/][GNU Shepherd]]
|
---|
46 |
|
---|
47 | *** Обзорные видео
|
---|
48 | youtube:eWXoKjWCh60
|
---|
49 | youtube:iBaqOK75cho
|
---|
50 |
|
---|
51 | Также есть [[https://guix.gnu.org/en/videos/][серия небольших видео на сайте проекта]].
|
---|
52 |
|
---|
53 | *** Полезные Ссылки
|
---|
54 | - [[https://habr.com/ru/post/436938/][Обзорная статья о возможностях GNU Guix]]
|
---|
55 | - [[https://gist.github.com/sirikid/2817f36d67d1480a428cbf33b220cfcc][Список свободных wifi адаптеров]]
|
---|
56 |
|
---|
57 | - [[https://guix.gnu.org/][Сайт проекта]]
|
---|
58 | - [[https://guix.gnu.org/en/manual/devel/en/html_node/][Документация]] (~info guix~)
|
---|
59 | - [[https://guix.gnu.org/en/cookbook/en/guix-cookbook.html][Cookbook]] (~info guix-cookbook~)
|
---|
60 | - [[https://git.savannah.gnu.org/cgit/guix.git/][Исходный код]]
|
---|
61 | - [[https://guix.gnu.org/guix-refcard.pdf][Шпаргалка]]
|
---|
62 | - [[https://guix.gnu.org/en/videos/][Видео-туториалы]]
|
---|
63 | - [[https://hpc.guix.info/browse][Веб-интерфейс поиска пакетов]]
|
---|
64 | - [[https://issues.guix.gnu.org][Баг-трекер]]
|
---|
65 | - [[https://emacs-guix.gitlab.io/website/manual/latest/emacs-guix.html][Emacs интерфейс Guix]]
|
---|
66 | - [[https://translate.fedoraproject.org/projects/guix/guix/ru/][Перевод Guix на русский язык]]
|
---|
67 | ** Каналы
|
---|
68 | Guix позволяет установить недостающие пакеты, если подключить канал с
|
---|
69 | нужными определениями пакетов. [[https://guix.gnu.org/manual/en/html_node/Channels.html][Guix Channels в документации]].
|
---|
70 |
|
---|
71 | *** Публичные каналы
|
---|
72 | - https://gitlab.com/nonguix/nonguix
|
---|
73 | - https://gitlab.com/mbakke/guix-chromium
|
---|
74 | - https://gitlab.com/guix-gaming-channels
|
---|
75 | ** Конфигурации пользователей
|
---|
76 | - [[https://github.com/guix-ru/configs][Репозиторий с конфигурациями русскоязычных пользователей]]
|
---|
77 | - [[https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/system/examples][Примеры из кода проекта]]
|
---|
78 | ** Доклады
|
---|
79 | - [[https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/talks][Репозиторий докладов Guix]]
|
---|
80 | - [[https://video.host.w96k.dev/w/p/wdGQRSWLg9ZePrGajFRuiN][Guix Days 2020]]
|
---|
81 | - [[https://video.host.w96k.dev/w/p/9WHxpCmwetqL6tsMkc4Tg1][Guix Days 2022]]
|
---|
82 |
|
---|
83 | Также выступления есть на прошедших [[https://fosdem.org/archives/][FOSDEM]].
|
---|
84 |
|
---|
85 | ** Ответы на вопросы
|
---|
86 | *** Как завести систему с несвободным железом (не рекомендуется)
|
---|
87 | - [[https://gitlab.com/nonguix/nonguix][Канал с несвободными пакетами NonGuix]]
|
---|
88 | - [[https://github.com/SystemCrafters/guix-installer][Установочный образ с несвободным ядром и firmware]]
|
---|
89 |
|
---|
90 | *** Как обойти блокировки guix.gnu.org
|
---|
91 | ~ci.guix.gnu.org~ недоступен у некоторых пользователей в РФ
|
---|
92 | Сервера Guix хостятся на территории Германии у провайдера, который
|
---|
93 | недавно заблокировал российские ip-адреса.
|
---|
94 |
|
---|
95 | Из-за этого не работают ~guix install~, ~guix pull~ и т.д.
|
---|
96 |
|
---|
97 | [[https://lists.gnu.org/archive/html/help-guix/2022-03/msg00019.html][Подробнее о проблеме]]
|
---|
98 |
|
---|
99 | ***** Исправление установочного образа
|
---|
100 | Можно создать свой установочный образ с нужными зеркалами для демона
|
---|
101 | guix. Если вы не можете собрать его сами, то можете воспользоваться
|
---|
102 | образом, который я собрал (коммит
|
---|
103 | ~cabda1197e7925f58a8532534afc1bde6c5eb377~, ветка ~master~):
|
---|
104 | [[https://nextcloud.host.w96k.dev/s/XayzT5BiiC3S2QT/download/guix-1.3.0-bypass-ru-ip-ban-image.iso][Установочный образ с зеркалами]]
|
---|
105 |
|
---|
106 | Чтобы сделать установочный образ с фиксом бана сабститьютов
|
---|
107 | ci.guix.gnu.org, надо склонировать репу guix'а, найти файл
|
---|
108 | gnu/system/install.scm, найти переменную %installation-services и
|
---|
109 | добавить туда сервисы:
|
---|
110 |
|
---|
111 | #+begin_src scheme
|
---|
112 | (service tor-service-type
|
---|
113 | (tor-configuration
|
---|
114 | (config-file (plain-file "tor-config"
|
---|
115 | "HTTPTunnelPort
|
---|
116 | 127.0.0.1:9250"))))
|
---|
117 |
|
---|
118 | (service guix-service-type
|
---|
119 | (guix-configuration (authorize-key? #t)
|
---|
120 | (substitute-urls
|
---|
121 | (append (list "https://4zwzi66wwdaalbhgnix55ea3ab4pvvw66ll2ow53kjub6se4q2bclcyd.onion"
|
---|
122 | "https://bordeaux.guix.gnu.org"
|
---|
123 | "http://ci.guix.trop.in")
|
---|
124 | %default-substitute-urls))))
|
---|
125 | #+end_src
|
---|
126 |
|
---|
127 | Далее выполнить ~guix system image -t iso9660 gnu/system/install.scm~,
|
---|
128 | после чего должен появится образ .iso в /gnu/store, который можно
|
---|
129 | ставить на установочный носитель через dd~.
|
---|
130 |
|
---|
131 | ***** Исправление локальной конфигурации системы
|
---|
132 | Доступно зеркало ~bordeaux.guix.gnu.org~
|
---|
133 |
|
---|
134 | Поменяйте/добавьте bordeaux.guix.gnu.org в ~/.config/guix/channels.scm
|
---|
135 | или системной конфиге сервис guix-service-type. Также должно помочь
|
---|
136 | простое удаление из channels.scm функции
|
---|
137 | channel-with-substitutes-available, если такая функция у вас
|
---|
138 | используется.
|
---|
139 |
|
---|
140 | [[https://guix.gnu.org/manual/en/html_node/Getting-Substitutes-from-Other-Servers.html][Документация Guix: как менять substitutes url в системной конфиге]]
|
---|
141 |
|
---|
142 | Как настроить substitutes под tor:
|
---|
143 | #+begin_src scheme
|
---|
144 | (use-modules (gnu))
|
---|
145 | (use-service-module base networking)
|
---|
146 |
|
---|
147 | (operating-system
|
---|
148 | …
|
---|
149 | (services
|
---|
150 | (cons
|
---|
151 | (service tor-service-type
|
---|
152 | (tor-configuration
|
---|
153 | (config-file (plain-file "tor-config"
|
---|
154 | "HTTPTunnelPort
|
---|
155 | 127.0.0.1:9250"))))
|
---|
156 | (modify-services %base-services
|
---|
157 | (guix-service-type
|
---|
158 | config => (guix-configuration
|
---|
159 | (inherit config)
|
---|
160 | ;; ci.guix.gnu.org's Onion service
|
---|
161 | (substitute-urls
|
---|
162 | "https://bp7o7ckwlewr4slm.onion")
|
---|
163 | (http-proxy "http://localhost:9250")))))))
|
---|
164 | #+end_src
|
---|
165 |
|
---|
166 | [[https://guix.gnu.org/en/cookbook/en/guix-cookbook.html#Getting-substitutes-from-Tor][Подробнее в Guix Cookbook]]
|
---|
167 |
|
---|
168 | ***** Одноразовое исправление демона guix
|
---|
169 | Без сохранения изменений.
|
---|
170 |
|
---|
171 | Добавлять к командам guix флаг
|
---|
172 |
|
---|
173 | ~--subtitutes-urls="https://bordeaux.guix.gnu.org"~
|
---|
174 |
|
---|
175 | Или для Tor:
|
---|
176 |
|
---|
177 | ~sudo herd set-http-proxy guix-daemon http://localhost:9250~
|
---|
178 |
|
---|
179 | ~guix build --substitute-urls=https://bp7o7ckwlewr4slm.onion ...~
|
---|
180 | *** Где искать помощь
|
---|
181 | Посмотреть архив списков рассылки:
|
---|
182 | https://lists.gnu.org/archive/html/help-guix/
|
---|
183 | Если там нет, то можно самому задать вопрос, отправив письмо на
|
---|
184 | help-guix@gnu.org.
|
---|
185 | *** Как создать пакет
|
---|
186 | https://guix.gnu.org/blog/2018/a-packaging-tutorial-for-guix/
|
---|
187 |
|
---|
188 | *** Как "закрепить" версии пакетов:
|
---|
189 | https://guix.gnu.org/manual/en/html_node/Inferiors.html
|
---|
190 |
|
---|
191 | *** Как выводить логи:
|
---|
192 | Флаг ~-v~ или ~--verbosity~ со значением от ~0~ до ~2~ для пользователя.
|
---|
193 | Например ~guix build hello -v 2~
|
---|
194 | ** Зеркала и прокси
|
---|
195 | **** Прокси trop.in
|
---|
196 | Andrew Tropin пишет:
|
---|
197 | #+begin_src text
|
---|
198 | Поднял зеркала ci, issues и самого сайта. Сёрвятся только по http,
|
---|
199 | но доступны как и в инете, так в yggdrasil.
|
---|
200 |
|
---|
201 | Достаточно https поменять на http, gnu.org на trop.in или
|
---|
202 | ygg.trop.in, например:
|
---|
203 |
|
---|
204 | https://issues.guix.gnu.org/52388 -> http://issues.guix.trop.in/52388
|
---|
205 |
|
---|
206 | Зеркало CI можно использовать как сабститьют сервер.
|
---|
207 |
|
---|
208 | Остальная инфа на https://trop.in, если что-то не работает - пишите.
|
---|
209 | #+end_src
|
---|
210 |
|
---|
211 | **** TODO Зеркало от w96k
|
---|
212 | [[https://fosstodon.org/@w96k/108053233765822857][Подробнее]]
|
---|
213 |
|
---|
214 |
|
---|