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