gnu: polkit: Update to 0.116 [fixes CVE-2019-6133].
[jackhill/guix/guix.git] / po / doc / guix-manual.zh_CN.po
1 # Chinese (simplified) translation of the Guix manual.
2 # Copyright (C) 2013-2019 the authors of Guix (msgids)
3 # This file is distributed under the same license as the guix package.
4 # Meiyo Peng <meiyo@riseup.net>, 2019.
5 #
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: guix-manual 1.0.1-pre1\n"
9 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
10 "POT-Creation-Date: 2019-05-10 20:53+0200\n"
11 "PO-Revision-Date: 2019-05-14 14:31+0800\n"
12 "Last-Translator: Meiyo Peng <meiyo@riseup.net>\n"
13 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
14 "Language: zh_CN\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "X-Bugs: Report translation errors to the Language-Team address.\n"
19
20 #. #-#-#-#-# contributing.pot (guix 1.0.1-pre1) #-#-#-#-#
21 #. type: chapter
22 #. #-#-#-#-# guix.pot (guix 1.0.1-pre1) #-#-#-#-#
23 #. type: menuentry
24 #: doc/contributing.texi:1 doc/contributing.texi:2 doc/guix.texi:139
25 #, no-wrap
26 msgid "Contributing"
27 msgstr "贡献"
28
29 #. type: Plain text
30 #: doc/contributing.texi:9
31 msgid "This project is a cooperative effort, and we need your help to make it grow! Please get in touch with us on @email{guix-devel@@gnu.org} and @code{#guix} on the Freenode IRC network. We welcome ideas, bug reports, patches, and anything that may be helpful to the project. We particularly welcome help on packaging (@pxref{Packaging Guidelines})."
32 msgstr "这个项目是大家合作的成果,我们需要你的帮助以更好地发展。请通过@email{guix-devel@@gnu.org} 和 Freenode IRC 上的 @code{#guix} 联系我们。我们欢迎您的想法、bug反馈、补丁,以及任何可能对项目有帮助的贡献。我们特别欢迎帮助我们打包(@pxref{Packaging Guidelines})。"
33
34 #. type: cindex
35 #: doc/contributing.texi:10
36 #, no-wrap
37 msgid "code of conduct, of contributors"
38 msgstr "行为准则和贡献者"
39
40 #. type: cindex
41 #: doc/contributing.texi:11
42 #, no-wrap
43 msgid "contributor covenant"
44 msgstr "贡献者契约"
45
46 #. type: Plain text
47 #: doc/contributing.texi:17
48 msgid "We want to provide a warm, friendly, and harassment-free environment, so that anyone can contribute to the best of their abilities. To this end our project uses a ``Contributor Covenant'', which was adapted from @url{http://contributor-covenant.org/}. You can find a local version in the @file{CODE-OF-CONDUCT} file in the source tree."
49 msgstr "我们希望提供一个温暖、友好,并且没有骚扰的的环境,这样每个人都能尽最大努力贡献。为了这个目的,我们的项目遵循“贡献者契约”,这个契约是根据@url{http://contributor-covenant.org/}制定的。你可以在源代码目录里的@file{CODE-OF-CONDUCT}文件里找到一份本地版。"
50
51 #. type: Plain text
52 #: doc/contributing.texi:21
53 msgid "Contributors are not required to use their legal name in patches and on-line communication; they can use any name or pseudonym of their choice."
54 msgstr "贡献者在提交补丁和网上交流时不需要使用法律认可的名字。他们可以使用任何名字或者假名。"
55
56 #. type: section
57 #: doc/contributing.texi:29 doc/contributing.texi:31 doc/contributing.texi:32
58 #, no-wrap
59 msgid "Building from Git"
60 msgstr "从Git构建"
61
62 #. type: menuentry
63 #: doc/contributing.texi:29
64 msgid "The latest and greatest."
65 msgstr "最新的并且最好的。"
66
67 #. type: section
68 #: doc/contributing.texi:29 doc/contributing.texi:103
69 #: doc/contributing.texi:104
70 #, no-wrap
71 msgid "Running Guix Before It Is Installed"
72 msgstr "在安装之前运行Guix"
73
74 #. type: menuentry
75 #: doc/contributing.texi:29
76 msgid "Hacker tricks."
77 msgstr "黑客技巧。"
78
79 #. type: section
80 #: doc/contributing.texi:29 doc/contributing.texi:167
81 #: doc/contributing.texi:168
82 #, no-wrap
83 msgid "The Perfect Setup"
84 msgstr "完美的配置"
85
86 #. type: menuentry
87 #: doc/contributing.texi:29
88 msgid "The right tools."
89 msgstr "正确的工具。"
90
91 #. type: section
92 #: doc/contributing.texi:29 doc/contributing.texi:231
93 #: doc/contributing.texi:232
94 #, no-wrap
95 msgid "Packaging Guidelines"
96 msgstr "打包指导"
97
98 #. type: menuentry
99 #: doc/contributing.texi:29
100 msgid "Growing the distribution."
101 msgstr "帮助发行版成长。"
102
103 #. type: section
104 #: doc/contributing.texi:29 doc/contributing.texi:680
105 #: doc/contributing.texi:681
106 #, no-wrap
107 msgid "Coding Style"
108 msgstr "代码风格"
109
110 #. type: menuentry
111 #: doc/contributing.texi:29
112 msgid "Hygiene of the contributor."
113 msgstr "开发者的卫生情况"
114
115 #. type: section
116 #: doc/contributing.texi:29 doc/contributing.texi:778
117 #: doc/contributing.texi:779
118 #, no-wrap
119 msgid "Submitting Patches"
120 msgstr "提交补丁"
121
122 #. type: menuentry
123 #: doc/contributing.texi:29
124 msgid "Share your work."
125 msgstr "分享你的工作。"
126
127 #. type: Plain text
128 #: doc/contributing.texi:36
129 msgid "If you want to hack Guix itself, it is recommended to use the latest version from the Git repository:"
130 msgstr "如果你想折腾Guix本身,建议使用Git仓库里最新的版本:"
131
132 #. type: example
133 #: doc/contributing.texi:39
134 #, no-wrap
135 msgid "git clone https://git.savannah.gnu.org/git/guix.git\n"
136 msgstr "git clone https://git.savannah.gnu.org/git/guix.git\n"
137
138 #. type: Plain text
139 #: doc/contributing.texi:44
140 msgid "When building Guix from a checkout, the following packages are required in addition to those mentioned in the installation instructions (@pxref{Requirements})."
141 msgstr "当从Git检出构建Guix时,除安装指导(@pxref{Requirements})里提及的软件包之外还需要这些包。"
142
143 #. type: item
144 #: doc/contributing.texi:46
145 #, no-wrap
146 msgid "@url{http://gnu.org/software/autoconf/, GNU Autoconf};"
147 msgstr "@url{http://gnu.org/software/autoconf/, GNU Autoconf};"
148
149 #. type: item
150 #: doc/contributing.texi:47
151 #, no-wrap
152 msgid "@url{http://gnu.org/software/automake/, GNU Automake};"
153 msgstr "@url{http://gnu.org/software/automake/, GNU Automake};"
154
155 #. type: item
156 #: doc/contributing.texi:48
157 #, no-wrap
158 msgid "@url{http://gnu.org/software/gettext/, GNU Gettext};"
159 msgstr "@url{http://gnu.org/software/gettext/, GNU Gettext};"
160
161 #. type: item
162 #: doc/contributing.texi:49
163 #, no-wrap
164 msgid "@url{http://gnu.org/software/texinfo/, GNU Texinfo};"
165 msgstr "@url{http://gnu.org/software/texinfo/, GNU Texinfo};"
166
167 #. type: item
168 #: doc/contributing.texi:50
169 #, no-wrap
170 msgid "@url{http://www.graphviz.org/, Graphviz};"
171 msgstr "@url{http://www.graphviz.org/, Graphviz};"
172
173 #. type: item
174 #: doc/contributing.texi:51
175 #, no-wrap
176 msgid "@url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}."
177 msgstr "@url{http://www.gnu.org/software/help2man/, GNU Help2man (可选)}。"
178
179 #. type: Plain text
180 #: doc/contributing.texi:58
181 msgid "The easiest way to set up a development environment for Guix is, of course, by using Guix! The following command starts a new shell where all the dependencies and appropriate environment variables are set up to hack on Guix:"
182 msgstr "设置Guix开发环境的最简单的方式当然是使用Guix!下面这些命令启动一个shell,所有的依赖和环境变量都为折腾Guix设置好了:"
183
184 #. type: example
185 #: doc/contributing.texi:61
186 #, no-wrap
187 msgid "guix environment guix\n"
188 msgstr "guix environment guix\n"
189
190 #. type: Plain text
191 #: doc/contributing.texi:65
192 msgid "@xref{Invoking guix environment}, for more information on that command. Extra dependencies can be added with @option{--ad-hoc}:"
193 msgstr "这个命令更多的信息请参考@xref{Invoking guix environment}。额外的依赖可以通过@option{--ad-hoc}选项添加:"
194
195 #. type: example
196 #: doc/contributing.texi:68
197 #, no-wrap
198 msgid "guix environment guix --ad-hoc help2man git strace\n"
199 msgstr "guix environment guix --ad-hoc help2man git strace\n"
200
201 #. type: Plain text
202 #: doc/contributing.texi:72
203 msgid "Run @command{./bootstrap} to generate the build system infrastructure using Autoconf and Automake. If you get an error like this one:"
204 msgstr "运行 @command{./bootstrap} 以使用Autoconf和Automake生成构建系统的基础框架。如果你的得到这样的错误:"
205
206 #. type: example
207 #: doc/contributing.texi:75
208 #, no-wrap
209 msgid "configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES\n"
210 msgstr "configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES\n"
211
212 #. type: Plain text
213 #: doc/contributing.texi:84
214 msgid "it probably means that Autoconf couldn’t find @file{pkg.m4}, which is provided by pkg-config. Make sure that @file{pkg.m4} is available. The same holds for the @file{guile.m4} set of macros provided by Guile. For instance, if you installed Automake in @file{/usr/local}, it wouldn’t look for @file{.m4} files in @file{/usr/share}. In that case, you have to invoke the following command:"
215 msgstr "它可能意味着Autoconf无法找到由pkg-config提供的@file{pkg.m4}。请确保@file{pkg.m4}可用。由Guile提供的@file{guile.m4}宏也类似。假如你的Automake安装在@file{/usr/local},那么它不会从@file{/usr/share}里寻找@file{.m4}文件。这种情况下,你必须执行下面这个命令:"
216
217 #. type: example
218 #: doc/contributing.texi:87
219 #, no-wrap
220 msgid "export ACLOCAL_PATH=/usr/share/aclocal\n"
221 msgstr "export ACLOCAL_PATH=/usr/share/aclocal\n"
222
223 #. type: Plain text
224 #: doc/contributing.texi:91
225 msgid "@xref{Macro Search Path,,, automake, The GNU Automake Manual}, for more information."
226 msgstr "参考@xref{Macro Search Path,,, automake, The GNU Automake Manual}."
227
228 #. type: Plain text
229 #: doc/contributing.texi:96
230 msgid "Then, run @command{./configure} as usual. Make sure to pass @code{--localstatedir=@var{directory}} where @var{directory} is the @code{localstatedir} value used by your current installation (@pxref{The Store}, for information about this)."
231 msgstr "然后,像正常一样运行@command{./configure}。确保提供@code{--localstatedir=@var{directory}}参数,@var{directory}是你当前系统的@code{localstatedir}的值。(@pxref{The Store})"
232
233 #. type: Plain text
234 #: doc/contributing.texi:101
235 msgid "Finally, you have to invoke @code{make check} to run tests (@pxref{Running the Test Suite}). If anything fails, take a look at installation instructions (@pxref{Installation}) or send a message to the @email{guix-devel@@gnu.org, mailing list}."
236 msgstr "最后,用@code{make check}执行测试(@pxref{Running the Test Suite})。如果遇到任何错误,请参考“安装指导”(@pxref{Installation})或者给@email{guix-devel@@gnu.org, 邮件列表}发邮件。"
237
238 #. type: Plain text
239 #: doc/contributing.texi:110
240 msgid "In order to keep a sane working environment, you will find it useful to test the changes made in your local source tree checkout without actually installing them. So that you can distinguish between your ``end-user'' hat and your ``motley'' costume."
241 msgstr "为了保持一个合适的工作环境,你会发现在你的本地代码树里测试修改而不用安装它们会很有用。TODO: So that you can distinguish between your ``end-user'' hat and your ``motley'' costume."
242
243 #. type: Plain text
244 #: doc/contributing.texi:121
245 msgid "To that end, all the command-line tools can be used even if you have not run @code{make install}. To do that, you first need to have an environment with all the dependencies available (@pxref{Building from Git}), and then simply prefix each command with @command{./pre-inst-env} (the @file{pre-inst-env} script lives in the top build tree of Guix; it is generated by @command{./configure}), as in@footnote{The @option{-E} flag to @command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set such that @command{guix-daemon} and the tools it uses can find the Guile modules they need.}:"
246 msgstr "这样,即使你没有运行@code{make install},所有的命令行工具都可以使用。为此,你先要有一个包含全部依赖的环境(@pxref{Building from Git}),然后,为所有的命令添加前缀@command{./pre-inst-env}(@file{pre-inst-env}脚本在Guix构建树的最顶层,它由@command{./configure}生成),如@footnote{@command{sudo}命令的@option{-E}参数确保@code{GUILE_LOAD_PATH}被正确设置,从而@command{guix-daemon}和它使用的工具可以找到它们需要的Guile模块。}:"
247
248 #. type: example
249 #: doc/contributing.texi:125
250 #, no-wrap
251 msgid ""
252 "$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild\n"
253 "$ ./pre-inst-env guix build hello\n"
254 msgstr ""
255 "$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild\n"
256 "$ ./pre-inst-env guix build hello\n"
257
258 #. type: Plain text
259 #: doc/contributing.texi:129
260 msgid "Similarly, for a Guile session using the Guix modules:"
261 msgstr "类似的,对于使用Guix模块的Guile会话:"
262
263 #. type: example
264 #: doc/contributing.texi:132
265 #, no-wrap
266 msgid ""
267 "$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'\n"
268 "\n"
269 msgstr ""
270 "$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'\n"
271 "\n"
272
273 #. type: example
274 #: doc/contributing.texi:134
275 #, no-wrap
276 msgid ";;; (\"x86_64-linux\")\n"
277 msgstr ";;; (\"x86_64-linux\")\n"
278
279 #. type: cindex
280 #: doc/contributing.texi:137
281 #, no-wrap
282 msgid "REPL"
283 msgstr "REPL"
284
285 #. type: cindex
286 #: doc/contributing.texi:138
287 #, no-wrap
288 msgid "read-eval-print loop"
289 msgstr "read-eval-print loop"
290
291 #. type: Plain text
292 #: doc/contributing.texi:141
293 msgid "@dots{} and for a REPL (@pxref{Using Guile Interactively,,, guile, Guile Reference Manual}):"
294 msgstr "@dots{} and for a REPL (@pxref{Using Guile Interactively,,, guile, Guile Reference Manual}):"
295
296 #. type: example
297 #: doc/contributing.texi:156
298 #, no-wrap
299 msgid ""
300 "$ ./pre-inst-env guile\n"
301 "scheme@@(guile-user)> ,use(guix)\n"
302 "scheme@@(guile-user)> ,use(gnu)\n"
303 "scheme@@(guile-user)> (define snakes\n"
304 " (fold-packages\n"
305 " (lambda (package lst)\n"
306 " (if (string-prefix? \"python\"\n"
307 " (package-name package))\n"
308 " (cons package lst)\n"
309 " lst))\n"
310 " '()))\n"
311 "scheme@@(guile-user)> (length snakes)\n"
312 "$1 = 361\n"
313 msgstr ""
314 "$ ./pre-inst-env guile\n"
315 "scheme@@(guile-user)> ,use(guix)\n"
316 "scheme@@(guile-user)> ,use(gnu)\n"
317 "scheme@@(guile-user)> (define snakes\n"
318 " (fold-packages\n"
319 " (lambda (package lst)\n"
320 " (if (string-prefix? \"python\"\n"
321 " (package-name package))\n"
322 " (cons package lst)\n"
323 " lst))\n"
324 " '()))\n"
325 "scheme@@(guile-user)> (length snakes)\n"
326 "$1 = 361\n"
327
328 #. type: Plain text
329 #: doc/contributing.texi:160
330 msgid "The @command{pre-inst-env} script sets up all the environment variables necessary to support this, including @env{PATH} and @env{GUILE_LOAD_PATH}."
331 msgstr "@command{pre-inst-env}脚本设置为此好了所有必要的的环境变量,包括@env{PATH}和@env{GUILE_LOAD_PATH}。"
332
333 #. type: Plain text
334 #: doc/contributing.texi:165
335 msgid "Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the local source tree; it simply updates the @file{~/.config/guix/current} symlink (@pxref{Invoking guix pull}). Run @command{git pull} instead if you want to upgrade your local source tree."
336 msgstr "@command{./pre-inst-env guix pull} @emph{不} 会更新本地源代码树,它只更新符号链接@file{~/.config/guix/current} (@pxref{Invoking guix pull})。如果你想更新本地源代码树,请运行@command{git pull}。"
337
338 #. type: Plain text
339 #: doc/contributing.texi:175
340 msgid "The Perfect Setup to hack on Guix is basically the perfect setup used for Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference Manual}). First, you need more than an editor, you need @url{http://www.gnu.org/software/emacs, Emacs}, empowered by the wonderful @url{http://nongnu.org/geiser/, Geiser}. To set that up, run:"
341 msgstr "折腾Guix的完美配置也是折腾Guile的完美配置@pxref{Using Guile in Emacs,,, guile, Guile Reference Manual})。首先,你需要的不仅是一个编辑器,你需要@url{http://www.gnu.org/software/emacs, Emacs},以及美妙的@url{http://nongnu.org/geiser/, Geiser}。为此,请运行:"
342
343 #. type: example
344 #: doc/contributing.texi:178
345 #, no-wrap
346 msgid "guix package -i emacs guile emacs-geiser\n"
347 msgstr "guix package -i emacs guile emacs-geiser\n"
348
349 #. type: Plain text
350 #: doc/contributing.texi:187
351 msgid "Geiser allows for interactive and incremental development from within Emacs: code compilation and evaluation from within buffers, access to on-line documentation (docstrings), context-sensitive completion, @kbd{M-.} to jump to an object definition, a REPL to try out your code, and more (@pxref{Introduction,,, geiser, Geiser User Manual}). For convenient Guix development, make sure to augment Guile’s load path so that it finds source files from your checkout:"
352 msgstr "Geiser允许在Emacs里进行交互式的、增长式的开发:buffer里的代码补全和执行,获取一行的文档(docstrings),上下文敏感的补全,@kbd{M-.}跳转到对象定义,测试代码的REPL,及更多(@pxref{Introduction,,, geiser, Geiser User Manual})。为了方便的Guix开发,请确保修改Guile的加载路径(load path)以使其能从你的项目里找到源代码文件。"
353
354 #. type: lisp
355 #: doc/contributing.texi:192
356 #, no-wrap
357 msgid ""
358 ";; @r{Assuming the Guix checkout is in ~/src/guix.}\n"
359 "(with-eval-after-load 'geiser-guile\n"
360 " (add-to-list 'geiser-guile-load-path \"~/src/guix\"))\n"
361 msgstr ""
362 ";; @r{假设Guix项目在 ~/src/guix.}\n"
363 "(with-eval-after-load 'geiser-guile\n"
364 " (add-to-list 'geiser-guile-load-path \"~/src/guix\"))\n"
365
366 #. type: Plain text
367 #: doc/contributing.texi:200
368 msgid "To actually edit the code, Emacs already has a neat Scheme mode. But in addition to that, you must not miss @url{http://www.emacswiki.org/emacs/ParEdit, Paredit}. It provides facilities to directly operate on the syntax tree, such as raising an s-expression or wrapping it, swallowing or rejecting the following s-expression, etc."
369 msgstr "真正编辑代码时别忘了Emacs自带了方便的Scheme模式。而且,一定不要错过@url{http://www.emacswiki.org/emacs/ParEdit, Paredit}。它提供了直接操作语法树的的功能,例如,用S-表达式替换父节点,为S-表达式添加、删除前后的括号,删除后面的S-表达式,等等。"
370
371 #. type: cindex
372 #: doc/contributing.texi:201
373 #, no-wrap
374 msgid "code snippets"
375 msgstr "代码片段"
376
377 #. type: cindex
378 #: doc/contributing.texi:202
379 #, no-wrap
380 msgid "templates"
381 msgstr "模板"
382
383 #. type: cindex
384 #: doc/contributing.texi:203
385 #, no-wrap
386 msgid "reducing boilerplate"
387 msgstr "减少样板"
388
389 #. type: Plain text
390 #: doc/contributing.texi:210
391 msgid "We also provide templates for common git commit messages and package definitions in the @file{etc/snippets} directory. These templates can be used with @url{http://joaotavora.github.io/yasnippet/, YASnippet} to expand short trigger strings to interactive text snippets. You may want to add the snippets directory to the @var{yas-snippet-dirs} variable in Emacs."
392 msgstr "在@file{etc/snippets}文件夹里,我们还为普通的git commit信息和软件包定义提供模板。这些模板可以通过@url{http://joaotavora.github.io/yasnippet/, YASnippet}使用,它可以把短的触发字符串扩展成交互式的文字片段。你可能希望将这个文件夹添加到Emacs的@var{yas-snippet-dirs}变量里。"
393
394 #. type: lisp
395 #: doc/contributing.texi:215
396 #, no-wrap
397 msgid ""
398 ";; @r{Assuming the Guix checkout is in ~/src/guix.}\n"
399 "(with-eval-after-load 'yasnippet\n"
400 " (add-to-list 'yas-snippet-dirs \"~/src/guix/etc/snippets\"))\n"
401 msgstr ""
402 ";; @r{假设Guix项目在 ~/src/guix.}\n"
403 "(with-eval-after-load 'yasnippet\n"
404 " (add-to-list 'yas-snippet-dirs \"~/src/guix/etc/snippets\"))\n"
405
406 #. type: Plain text
407 #: doc/contributing.texi:223
408 msgid "The commit message snippets depend on @url{https://magit.vc/, Magit} to display staged files. When editing a commit message type @code{add} followed by @kbd{TAB} to insert a commit message template for adding a package; type @code{update} followed by @kbd{TAB} to insert a template for updating a package; type @code{https} followed by @kbd{TAB} to insert a template for changing the home page URI of a package to HTTPS."
409 msgstr "commit信息片段显示staged文件需要依赖@url{https://magit.vc/, Magit}。编辑commit信息时,输入@code{add},然后按@kbd{TAB}就可以插入一段用于新增软件包的模板;输入@code{update},然后按@kbd{TAB}可以插入一段更新软件包的模板;输入@code{https}然后按@kbd{TAB}可以插入一段修改主页URI为HTTPS的模板。"
410
411 #. type: Plain text
412 #: doc/contributing.texi:229
413 msgid "The main snippet for @code{scheme-mode} is triggered by typing @code{package...} followed by @kbd{TAB}. This snippet also inserts the trigger string @code{origin...}, which can be expanded further. The @code{origin} snippet in turn may insert other trigger strings ending on @code{...}, which also can be expanded further."
414 msgstr "@code{scheme-mode}最重要的模板可以通过输入@code{package...},然后按@kbd{TAB}触发。这个片段还插入了触发字符串@code{origin...},以进一步展开。@code{origin}片段更进一步的可能插入其它以@code{...}结尾的触发字符串,它们可以被继续展开。"
415
416 #. type: cindex
417 #: doc/contributing.texi:234
418 #, no-wrap
419 msgid "packages, creating"
420 msgstr "软件包, 创建"
421
422 #. type: Plain text
423 #: doc/contributing.texi:238
424 msgid "The GNU distribution is nascent and may well lack some of your favorite packages. This section describes how you can help make the distribution grow."
425 msgstr "这个GNU发行版正在开发的早期阶段,可能缺少一些你喜欢的软件。这个章节介绍你可以怎样帮助这个发行版成长。"
426
427 #. type: Plain text
428 #: doc/contributing.texi:246
429 msgid "Free software packages are usually distributed in the form of @dfn{source code tarballs}---typically @file{tar.gz} files that contain all the source files. Adding a package to the distribution means essentially two things: adding a @dfn{recipe} that describes how to build the package, including a list of other packages required to build it, and adding @dfn{package metadata} along with that recipe, such as a description and licensing information."
430 msgstr "自由软件通常以@dfn{源代码包}的形式分发,通常是包含完整代码的@file{tar.gz}包。添加软件包到这个发行版意味着两件事:添加描述如何构建包的@dfn{配方}和一系列依赖软件,以及添加配方之外的@dfn{软件包元数据},如一段文字描述和证书信息。"
431
432 #. type: Plain text
433 #: doc/contributing.texi:255
434 msgid "In Guix all this information is embodied in @dfn{package definitions}. Package definitions provide a high-level view of the package. They are written using the syntax of the Scheme programming language; in fact, for each package we define a variable bound to the package definition, and export that variable from a module (@pxref{Package Modules}). However, in-depth Scheme knowledge is @emph{not} a prerequisite for creating packages. For more information on package definitions, @pxref{Defining Packages}."
435 msgstr "在Guix里所有这些信息都包含在@dfn{软件包定义}里。软件包定义提供了软件包的高层视角。它们使用Scheme编程语言编写,事实上,对每个软件包我们都定义一个绑定到软件包定义的的变量,并且从模块(@pxref{Package Modules})中导出那个变量。然而,深入的Scheme知识@emph{不}是创建软件包的前提条件。若要了解软件包的更多信息,@pxref{Defining Packages}。"
436
437 #. type: Plain text
438 #: doc/contributing.texi:261
439 msgid "Once a package definition is in place, stored in a file in the Guix source tree, it can be tested using the @command{guix build} command (@pxref{Invoking guix build}). For example, assuming the new package is called @code{gnew}, you may run this command from the Guix build tree (@pxref{Running Guix Before It Is Installed}):"
440 msgstr "一旦软件包定义准备好了,并且包存在Guix代码树的一个文件里,你可以用@command{guix build} (@pxref{Invoking guix build})命令测试它。假设这个新软件包的名字叫做@code{gnew},你可以在Guix构建树里运行这个命令(@pxref{Running Guix Before It Is Installed}):"
441
442 #. type: example
443 #: doc/contributing.texi:264
444 #, no-wrap
445 msgid "./pre-inst-env guix build gnew --keep-failed\n"
446 msgstr "./pre-inst-env guix build gnew --keep-failed\n"
447
448 #. type: Plain text
449 #: doc/contributing.texi:270
450 msgid "Using @code{--keep-failed} makes it easier to debug build failures since it provides access to the failed build tree. Another useful command-line option when debugging is @code{--log-file}, to access the build log."
451 msgstr "使用@code{--keep-failed}参数会保留失败的构建树,这可以使调试构建错误更容易。@code{--log-file}也是一个调试时很有用的参数,它可以用来访问构建日志。"
452
453 #. type: Plain text
454 #: doc/contributing.texi:275
455 msgid "If the package is unknown to the @command{guix} command, it may be that the source file contains a syntax error, or lacks a @code{define-public} clause to export the package variable. To figure it out, you may load the module from Guile to get more information about the actual error:"
456 msgstr "如果@command{guix}命令找不到这个软件包,那可能是因为源文件包含语法错误,或者缺少导出软件包的@code{define-public}语句。为了查找错误,你可以用Guile导入这个模块以了解这个错误的详情:"
457
458 #. type: example
459 #: doc/contributing.texi:278
460 #, no-wrap
461 msgid "./pre-inst-env guile -c '(use-modules (gnu packages gnew))'\n"
462 msgstr "./pre-inst-env guile -c '(use-modules (gnu packages gnew))'\n"
463
464 #. type: Plain text
465 #: doc/contributing.texi:286
466 msgid "Once your package builds correctly, please send us a patch (@pxref{Submitting Patches}). Well, if you need help, we will be happy to help you too. Once the patch is committed in the Guix repository, the new package automatically gets built on the supported platforms by @url{http://hydra.gnu.org/jobset/gnu/master, our continuous integration system}."
467 msgstr "一旦你的软件包可以正确构建,请给我们发送补丁(@pxref{Submitting Patches})。当然,如果你需要帮助,我们也会很乐意帮助你。一旦补丁被提交到Guix仓库里,这个新的软件包会被自动地在支持的平台上构建@url{http://hydra.gnu.org/jobset/gnu/master, our continuous integration system}。"
468
469 #. type: cindex
470 #: doc/contributing.texi:287
471 #, no-wrap
472 msgid "substituter"
473 msgstr ""
474
475 #. type: Plain text
476 #: doc/contributing.texi:294
477 msgid "Users can obtain the new package definition simply by running @command{guix pull} (@pxref{Invoking guix pull}). When @code{@value{SUBSTITUTE-SERVER}} is done building the package, installing the package automatically downloads binaries from there (@pxref{Substitutes}). The only place where human intervention is needed is to review and apply the patch."
478 msgstr "用户可以通过运行@command{guix pull}命令获取最新的软件包定义(@pxref{Invoking guix pull})。当@code{@value{SUBSTITUTE-SERVER}}构建好这些软件包之后,安装这些软件包时会自动从服务器(@pxref{Substitutes})上下载构建好的二进制包。唯一需要人工干预的地方是评审和应用代码补丁。"
479
480 #. type: subsection
481 #: doc/contributing.texi:305 doc/contributing.texi:307
482 #: doc/contributing.texi:308
483 #, no-wrap
484 msgid "Software Freedom"
485 msgstr "软件自由"
486
487 #. type: menuentry
488 #: doc/contributing.texi:305
489 msgid "What may go into the distribution."
490 msgstr "什么可以进入这个发行版。"
491
492 #. type: subsection
493 #: doc/contributing.texi:305 doc/contributing.texi:335
494 #: doc/contributing.texi:336
495 #, no-wrap
496 msgid "Package Naming"
497 msgstr "软件包命名"
498
499 #. type: menuentry
500 #: doc/contributing.texi:305
501 msgid "What's in a name?"
502 msgstr "名字里包含什么?"
503
504 #. type: subsection
505 #: doc/contributing.texi:305 doc/contributing.texi:360
506 #: doc/contributing.texi:361
507 #, no-wrap
508 msgid "Version Numbers"
509 msgstr "版本号"
510
511 #. type: menuentry
512 #: doc/contributing.texi:305
513 msgid "When the name is not enough."
514 msgstr "当名字不够时"
515
516 #. type: subsection
517 #: doc/contributing.texi:305 doc/contributing.texi:451
518 #: doc/contributing.texi:452
519 #, no-wrap
520 msgid "Synopses and Descriptions"
521 msgstr "简介和描述"
522
523 #. type: menuentry
524 #: doc/contributing.texi:305
525 msgid "Helping users find the right package."
526 msgstr "帮助用户寻找合适的软件包"
527
528 #. type: subsection
529 #: doc/contributing.texi:305 doc/contributing.texi:531
530 #: doc/contributing.texi:532
531 #, no-wrap
532 msgid "Python Modules"
533 msgstr "Python模块"
534
535 #. type: menuentry
536 #: doc/contributing.texi:305
537 msgid "A touch of British comedy."
538 msgstr "接触英式的喜剧"
539
540 #. type: subsection
541 #: doc/contributing.texi:305 doc/contributing.texi:606
542 #: doc/contributing.texi:607
543 #, no-wrap
544 msgid "Perl Modules"
545 msgstr "Perl模块"
546
547 #. type: menuentry
548 #: doc/contributing.texi:305
549 msgid "Little pearls."
550 msgstr "小珍珠。"
551
552 #. type: subsection
553 #: doc/contributing.texi:305 doc/contributing.texi:622
554 #: doc/contributing.texi:623
555 #, no-wrap
556 msgid "Java Packages"
557 msgstr "Java包"
558
559 #. type: menuentry
560 #: doc/contributing.texi:305
561 msgid "Coffee break."
562 msgstr "喝咖啡休息。"
563
564 #. type: subsection
565 #: doc/contributing.texi:305 doc/contributing.texi:642
566 #: doc/contributing.texi:643
567 #, no-wrap
568 msgid "Fonts"
569 msgstr "字体"
570
571 #. type: menuentry
572 #: doc/contributing.texi:305
573 msgid "Fond of fonts."
574 msgstr "字体的乐趣。"
575
576 #. type: cindex
577 #: doc/contributing.texi:311
578 #, no-wrap
579 msgid "free software"
580 msgstr "自由软件"
581
582 #. type: Plain text
583 #: doc/contributing.texi:319
584 msgid "The GNU operating system has been developed so that users can have freedom in their computing. GNU is @dfn{free software}, meaning that users have the @url{http://www.gnu.org/philosophy/free-sw.html,four essential freedoms}: to run the program, to study and change the program in source code form, to redistribute exact copies, and to distribute modified versions. Packages found in the GNU distribution provide only software that conveys these four freedoms."
585 msgstr "开发GNU操作系统是为了用户拥有计算的自由。GNU是@dfn{自由软件},这意味着它有@url{http://www.gnu.org/philosophy/free-sw.html,四项重要的自由}:运行程序的自由,以源代码形式学习和修改程序的自由,原样重新分发副本的自由,和分发修改后的版本的自由。GNU发行版里包含的软件包只提供遵守这四项自由的软件。"
586
587 #. type: Plain text
588 #: doc/contributing.texi:325
589 msgid "In addition, the GNU distribution follow the @url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free software distribution guidelines}. Among other things, these guidelines reject non-free firmware, recommendations of non-free software, and discuss ways to deal with trademarks and patents."
590 msgstr "此外,GNU发行版遵循@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,自由软件发行版准则}。这些准则拒绝非自由的固件和对非自由软件的推荐,并讨论解决商标和专利的方法。"
591
592 #. type: Plain text
593 #: doc/contributing.texi:333
594 msgid "Some otherwise free upstream package sources contain a small and optional subset that violates the above guidelines, for instance because this subset is itself non-free code. When that happens, the offending items are removed with appropriate patches or code snippets in the @code{origin} form of the package (@pxref{Defining Packages}). This way, @code{guix build --source} returns the ``freed'' source rather than the unmodified upstream source."
595 msgstr "某些上游的软件包源代码包含一小部分违反上述准则的可选的子集,比如这个子集本身就是非自由代码。这时,这些讨厌的代码需要用合适的补丁或者软件包定义(@pxref{Defining Packages})里的@code{origin}里的代码片段移除。这样,@code{guix build --source}就可以返回自由的源代码而不是未经修改的上游源代码。"
596
597 #. type: cindex
598 #: doc/contributing.texi:338
599 #, no-wrap
600 msgid "package name"
601 msgstr "软件包名字"
602
603 #. type: Plain text
604 #: doc/contributing.texi:346
605 msgid "A package has actually two names associated with it: First, there is the name of the @emph{Scheme variable}, the one following @code{define-public}. By this name, the package can be made known in the Scheme code, for instance as input to another package. Second, there is the string in the @code{name} field of a package definition. This name is used by package management commands such as @command{guix package} and @command{guix build}."
606 msgstr "一个软件包事实上有两个名字:第一个是@emph{Scheme变量}的名字,即用@code{define-public}定义的名字。通过这个名字,软件包可以被Scheme代码找到,如用作其它软件包的输入。第二个名字是软件包定义里的@code{name}属性的字符串值。这个名字用于软件包管理命令,如:@command{guix package},@command{guix build}"
607
608 #. type: Plain text
609 #: doc/contributing.texi:351
610 msgid "Both are usually the same and correspond to the lowercase conversion of the project name chosen upstream, with underscores replaced with hyphens. For instance, GNUnet is available as @code{gnunet}, and SDL_net as @code{sdl-net}."
611 msgstr "两个名字通常是相同的,常是上游项目名字转成小写字母并把下划线替换成连字符的结果。比如,GNUnet转成@code{gnunet},SDL_net转成@code{sdl-net}。"
612
613 #. type: Plain text
614 #: doc/contributing.texi:356
615 msgid "We do not add @code{lib} prefixes for library packages, unless these are already part of the official project name. But @pxref{Python Modules} and @ref{Perl Modules} for special rules concerning modules for the Python and Perl languages."
616 msgstr "我们不给库软件包添加@code{lib}前缀,除非它是项目官方名字的一部分。但是@pxref{Python Modules}和@ref{Perl Modules}有关于Python和Perl语言的特殊规则。"
617
618 #. type: Plain text
619 #: doc/contributing.texi:358
620 msgid "Font package names are handled differently, @pxref{Fonts}."
621 msgstr "字体软件包的名字处理起来不同,@pxref{Fonts}."
622
623 #. type: cindex
624 #: doc/contributing.texi:363
625 #, no-wrap
626 msgid "package version"
627 msgstr "软件包版本"
628
629 #. type: Plain text
630 #: doc/contributing.texi:372
631 msgid "We usually package only the latest version of a given free software project. But sometimes, for instance for incompatible library versions, two (or more) versions of the same package are needed. These require different Scheme variable names. We use the name as defined in @ref{Package Naming} for the most recent version; previous versions use the same name, suffixed by @code{-} and the smallest prefix of the version number that may distinguish the two versions."
632 msgstr "我们通常只为每个自由软件的最新版本打包。但是有时候,比如对于版本不兼容的库,需要有同一个软件包的两个或更多版本。它们需要使用不同的Scheme变量名。我们为最新的版本使用@ref{Package Naming}里规定的名字,旧的版本使用加上后缀的名字,后缀是@code{-}和可以区分开版本号的版本号的最小前缀。"
633
634 #. type: Plain text
635 #: doc/contributing.texi:375
636 msgid "The name inside the package definition is the same for all versions of a package and does not contain any version number."
637 msgstr "软件包定义里的名字对于同一个软件包的所有版本都是相同的,并且不含有版本号。"
638
639 #. type: Plain text
640 #: doc/contributing.texi:377
641 msgid "For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows:"
642 msgstr "例如,GTK+的2.24.20和3.9.12两个版本可以这样打包:"
643
644 #. type: example
645 #: doc/contributing.texi:389
646 #, no-wrap
647 msgid ""
648 "(define-public gtk+\n"
649 " (package\n"
650 " (name \"gtk+\")\n"
651 " (version \"3.9.12\")\n"
652 " ...))\n"
653 "(define-public gtk+-2\n"
654 " (package\n"
655 " (name \"gtk+\")\n"
656 " (version \"2.24.20\")\n"
657 " ...))\n"
658 msgstr ""
659 "(define-public gtk+\n"
660 " (package\n"
661 " (name \"gtk+\")\n"
662 " (version \"3.9.12\")\n"
663 " ...))\n"
664 "(define-public gtk+-2\n"
665 " (package\n"
666 " (name \"gtk+\")\n"
667 " (version \"2.24.20\")\n"
668 " ...))\n"
669
670 #. type: Plain text
671 #: doc/contributing.texi:391
672 msgid "If we also wanted GTK+ 3.8.2, this would be packaged as"
673 msgstr "如果我们还需要GTK+ 3.8.2,就这样打包"
674
675 #. type: example
676 #: doc/contributing.texi:397
677 #, no-wrap
678 msgid ""
679 "(define-public gtk+-3.8\n"
680 " (package\n"
681 " (name \"gtk+\")\n"
682 " (version \"3.8.2\")\n"
683 " ...))\n"
684 msgstr ""
685 "(define-public gtk+-3.8\n"
686 " (package\n"
687 " (name \"gtk+\")\n"
688 " (version \"3.8.2\")\n"
689 " ...))\n"
690
691 #. type: cindex
692 #: doc/contributing.texi:401
693 #, no-wrap
694 msgid "version number, for VCS snapshots"
695 msgstr "用于版本控制快照的版本号"
696
697 #. type: Plain text
698 #: doc/contributing.texi:407
699 msgid "Occasionally, we package snapshots of upstream's version control system (VCS) instead of formal releases. This should remain exceptional, because it is up to upstream developers to clarify what the stable release is. Yet, it is sometimes necessary. So, what should we put in the @code{version} field?"
700 msgstr "有时候,我们为软件包上游的版本控制系统(VCS)的快照而不是正式发布版打包。这是特殊情况,因为决定哪个是稳定版的权力应该属于上游开发者。然而,有时候这是必须的。那么,我们该如何决定写在@code{version}里的版本号呢?"
701
702 #. type: Plain text
703 #: doc/contributing.texi:415
704 msgid "Clearly, we need to make the commit identifier of the VCS snapshot visible in the version string, but we also need to make sure that the version string is monotonically increasing so that @command{guix package --upgrade} can determine which version is newer. Since commit identifiers, notably with Git, are not monotonically increasing, we add a revision number that we increase each time we upgrade to a newer snapshot. The resulting version string looks like this:"
705 msgstr "显然,我们需要让VCS快照的commit ID在版本号中体现出来,但是我们也需要确保版本号单调递增,以便@command{guix package --upgrade}决定哪个版本号更新。由于commit ID,尤其是Git的commit ID,不是单调递增的,我们添加一个每次升级快照时都手动增长的revision数字。最后的版本号字符串看起来是这样:"
706
707 #. type: example
708 #: doc/contributing.texi:424
709 #, no-wrap
710 msgid ""
711 "2.0.11-3.cabba9e\n"
712 " ^ ^ ^\n"
713 " | | `-- upstream commit ID\n"
714 " | |\n"
715 " | `--- Guix package revision\n"
716 " |\n"
717 "latest upstream version\n"
718 msgstr ""
719 "2.0.11-3.cabba9e\n"
720 " ^ ^ ^\n"
721 " | | `-- 上游的commit ID\n"
722 " | |\n"
723 " | `--- Guix软件包的revision\n"
724 " |\n"
725 "最新的上游版本号\n"
726
727 #. type: Plain text
728 #: doc/contributing.texi:433
729 msgid "It is a good idea to strip commit identifiers in the @code{version} field to, say, 7 digits. It avoids an aesthetic annoyance (assuming aesthetics have a role to play here) as well as problems related to OS limits such as the maximum shebang length (127 bytes for the Linux kernel.) It is best to use the full commit identifiers in @code{origin}s, though, to avoid ambiguities. A typical package definition may look like this:"
730 msgstr "把@code{版本号}里的commit ID截短,比如只取7个数字,是一个好主意。它避免了美学上的烦恼(假设美学在这里很重要),以及操作系统限制引起的问题(比如Linux内核的127字节)。尽管如此,在@code{origin}里最好使用完整的commit ID,以避免混淆。"
731
732 #. type: example
733 #: doc/contributing.texi:449
734 #, no-wrap
735 msgid ""
736 "(define my-package\n"
737 " (let ((commit \"c3f29bc928d5900971f65965feaae59e1272a3f7\")\n"
738 " (revision \"1\")) ;Guix package revision\n"
739 " (package\n"
740 " (version (git-version \"0.9\" revision commit))\n"
741 " (source (origin\n"
742 " (method git-fetch)\n"
743 " (uri (git-reference\n"
744 " (url \"git://example.org/my-package.git\")\n"
745 " (commit commit)))\n"
746 " (sha256 (base32 \"1mbikn@dots{}\"))\n"
747 " (file-name (git-file-name name version))))\n"
748 " ;; @dots{}\n"
749 " )))\n"
750 msgstr ""
751 "(define my-package\n"
752 " (let ((commit \"c3f29bc928d5900971f65965feaae59e1272a3f7\")\n"
753 " (revision \"1\")) ;Guix软件包的revision\n"
754 " (package\n"
755 " (version (git-version \"0.9\" revision commit))\n"
756 " (source (origin\n"
757 " (method git-fetch)\n"
758 " (uri (git-reference\n"
759 " (url \"git://example.org/my-package.git\")\n"
760 " (commit commit)))\n"
761 " (sha256 (base32 \"1mbikn@dots{}\"))\n"
762 " (file-name (git-file-name name version))))\n"
763 " ;; @dots{}\n"
764 " )))\n"
765
766 #. type: cindex
767 #: doc/contributing.texi:454
768 #, no-wrap
769 msgid "package description"
770 msgstr "软件包描述"
771
772 #. type: cindex
773 #: doc/contributing.texi:455
774 #, no-wrap
775 msgid "package synopsis"
776 msgstr "软件包简介"
777
778 #. type: Plain text
779 #: doc/contributing.texi:462
780 msgid "As we have seen before, each package in GNU@tie{}Guix includes a synopsis and a description (@pxref{Defining Packages}). Synopses and descriptions are important: They are what @command{guix package --search} searches, and a crucial piece of information to help users determine whether a given package suits their needs. Consequently, packagers should pay attention to what goes into them."
781 msgstr "我们已经看到,GNU@tie{}Guix里的每个软件包都包含一个简介(synopsis)和一个描述(description)(@pxref{Defining Packages})。简介和描述很重要:它们是@command{guix package --search}搜索的信息,并且是帮助用户决定一个软件包是否符合自己需求的重要信息。因此,打包的人应该关注怎样写它们的内容。"
782
783 #. type: Plain text
784 #: doc/contributing.texi:470
785 msgid "Synopses must start with a capital letter and must not end with a period. They must not start with ``a'' or ``the'', which usually does not bring anything; for instance, prefer ``File-frobbing tool'' over ``A tool that frobs files''. The synopsis should say what the package is---e.g., ``Core GNU utilities (file, text, shell)''---or what it is used for---e.g., the synopsis for GNU@tie{}grep is ``Print lines matching a pattern''."
786 msgstr "简介必须以大写字母开头,并且不能以句号结尾。它们不能以 ``a'' 或者 ``the'' 等没有意义的词开头。例如 ``File-frobbing tool'' 要比 ``A tool that frobs files'' 更好。简介需要说明软件包是什么--如 ``Core GNU utilities (file, text, shell)'',或者它的用途--如 GNU@tie{}grep 的简介是 ``Print lines matching a pattern''。"
787
788 #. type: Plain text
789 #: doc/contributing.texi:480
790 msgid "Keep in mind that the synopsis must be meaningful for a very wide audience. For example, ``Manipulate alignments in the SAM format'' might make sense for a seasoned bioinformatics researcher, but might be fairly unhelpful or even misleading to a non-specialized audience. It is a good idea to come up with a synopsis that gives an idea of the application domain of the package. In this example, this might give something like ``Manipulate nucleotide sequence alignments'', which hopefully gives the user a better idea of whether this is what they are looking for."
791 msgstr "记住,简介必须能被广大的听众理解。例如,“以SAM格式修改对齐”可能对经验丰富的生物信息科研工作者来说能理解,但是对普通对听众则是无用的甚至是令人误解的。简介最好说明软件包应用的领域。在这个例子中,应该这样描述“修改核苷酸序列的对齐格式”,这会让用户更容易判断这是不是他们想要的。"
792
793 #. type: Plain text
794 #: doc/contributing.texi:488
795 msgid "Descriptions should take between five and ten lines. Use full sentences, and avoid using acronyms without first introducing them. Please avoid marketing phrases such as ``world-leading'', ``industrial-strength'', and ``next-generation'', and avoid superlatives like ``the most advanced''---they are not helpful to users looking for a package and may even sound suspicious. Instead, try to be factual, mentioning use cases and features."
796 msgstr "描述应该在5至10句话之间。使用完整的句子,并且避免在未介绍的情况下使用缩写。请避免推广营销性对词汇,如“世界领先”,“行业最强”,“下一代”,并且避免高级的形容词,如“最先进的”--他们对用户寻找软件包是无用的,甚至是可疑的。相反的,尽量务实,提及用例和功能。"
797
798 #. type: cindex
799 #: doc/contributing.texi:489
800 #, no-wrap
801 msgid "Texinfo markup, in package descriptions"
802 msgstr "软件包描述里的Texinfo标记"
803
804 #. type: Plain text
805 #: doc/contributing.texi:498
806 msgid "Descriptions can include Texinfo markup, which is useful to introduce ornaments such as @code{@@code} or @code{@@dfn}, bullet lists, or hyperlinks (@pxref{Overview,,, texinfo, GNU Texinfo}). However you should be careful when using some characters for example @samp{@@} and curly braces which are the basic special characters in Texinfo (@pxref{Special Characters,,, texinfo, GNU Texinfo}). User interfaces such as @command{guix package --show} take care of rendering it appropriately."
807 msgstr "描述可以含有Texinfo标记,这对格式化有帮助,如@code{@@code}、@code{@@dfn}、列表、超链接(@pxref{Overview,,, texinfo, GNU Texinfo})。但是,在使用某些字符时应该小心,如@samp{@@}和花括号是基本的Texinfo特殊字符(@pxref{Special Characters,,, texinfo, GNU Texinfo})。@command{guix package --show}之类的用户界面会解决渲染问题。"
808
809 #. type: Plain text
810 #: doc/contributing.texi:504
811 msgid "Synopses and descriptions are translated by volunteers @uref{http://translationproject.org/domain/guix-packages.html, at the Translation Project} so that as many users as possible can read them in their native language. User interfaces search them and display them in the language specified by the current locale."
812 msgstr "简介和描述会由@uref{http://translationproject.org/domain/guix-packages.html, Translation Project}项目的志愿者翻译,从而使尽可能多的用户可以用母语阅读。用户界面用当前区域设置的语言搜索和展示这些信息。"
813
814 #. type: Plain text
815 #: doc/contributing.texi:509
816 msgid "To allow @command{xgettext} to extract them as translatable strings, synopses and descriptions @emph{must be literal strings}. This means that you cannot use @code{string-append} or @code{format} to construct these strings:"
817 msgstr "为了让@command{xgettext}可以把它们提取成待翻译的字符串,简介和描述@emph{必须是文字字符串}。这意味着你不能使用@code{string-append}或@code{format}来合成字符串:"
818
819 #. type: lisp
820 #: doc/contributing.texi:515
821 #, no-wrap
822 msgid ""
823 "(package\n"
824 " ;; @dots{}\n"
825 " (synopsis \"This is translatable\")\n"
826 " (description (string-append \"This is \" \"*not*\" \" translatable.\")))\n"
827 msgstr ""
828 "(package\n"
829 " ;; @dots{}\n"
830 " (synopsis \"这是可以翻译的\")\n"
831 " (description (string-append \"这是\" \"*不可以*\" \"翻译的\")))\n"
832
833 #. type: Plain text
834 #: doc/contributing.texi:523
835 msgid "Translation is a lot of work so, as a packager, please pay even more attention to your synopses and descriptions as every change may entail additional work for translators. In order to help them, it is possible to make recommendations or instructions visible to them by inserting special comments like this (@pxref{xgettext Invocation,,, gettext, GNU Gettext}):"
836 msgstr "翻译是很繁重的工作,所以,作为打包者请更加注意你的简介和介绍,每一个改动都会增加翻译的工作量。为了帮助他们,你可以插入这类可以被他们看到的建议和指示(@pxref{xgettext Invocation,,, gettext, GNU Gettext}):"
837
838 #. type: example
839 #: doc/contributing.texi:528
840 #, no-wrap
841 msgid ""
842 ";; TRANSLATORS: \"X11 resize-and-rotate\" should not be translated.\n"
843 "(description \"ARandR is designed to provide a simple visual front end\n"
844 "for the X11 resize-and-rotate (RandR) extension. @dots{}\")\n"
845 msgstr ""
846 ";; TRANSLATORS: \"X11 resize-and-rotate\"不需要翻译。\n"
847 "(description \"ARandR为X11 resize-and-rotate (RandR)扩展提供简单的图形界面。@dots{}\")\n"
848
849 #. type: cindex
850 #: doc/contributing.texi:534
851 #, no-wrap
852 msgid "python"
853 msgstr "python"
854
855 #. type: Plain text
856 #: doc/contributing.texi:540
857 msgid "We currently package Python 2 and Python 3, under the Scheme variable names @code{python-2} and @code{python} as explained in @ref{Version Numbers}. To avoid confusion and naming clashes with other programming languages, it seems desirable that the name of a package for a Python module contains the word @code{python}."
858 msgstr "我们目前为Python 2和Python 3打包,如@ref{Version Numbers}的规则所述,它们的Scheme变量名分别是@code{python-2}和@code{python}。为了避免和其他编程语言的冲突,Python模块的软件包名字最好含有@code{python}。"
859
860 #. type: Plain text
861 #: doc/contributing.texi:546
862 msgid "Some modules are compatible with only one version of Python, others with both. If the package Foo compiles only with Python 3, we name it @code{python-foo}; if it compiles only with Python 2, we name it @code{python2-foo}. If it is compatible with both versions, we create two packages with the corresponding names."
863 msgstr "某些模块仅和一个版本的Python兼容,其它的和两个版本都兼容。如果一个叫做Foo的软件包仅和Python 3兼容,我们把它命名为@code{python-foo};如果它仅和Python 2兼容,我们把它命名为@code{python2-foo}。如果它和两个版本都兼容,我们创建两个软件包,名字如前所述。"
864
865 #. type: Plain text
866 #: doc/contributing.texi:552
867 msgid "If a project already contains the word @code{python}, we drop this; for instance, the module python-dateutil is packaged under the names @code{python-dateutil} and @code{python2-dateutil}. If the project name starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as described above."
868 msgstr "如果一个项目的名字已经含有@code{python}这个单词,我们把它丢掉;例如,python-dateutil模块打包后的名字是@code{python-dateutil}和@code{python2-dateutil}。如果项目的名字以@code{py}开头(如@: @code{pytz}),我们把它保留,并且添加上面所述的前缀。"
869
870 #. type: subsubsection
871 #: doc/contributing.texi:553
872 #, no-wrap
873 msgid "Specifying Dependencies"
874 msgstr "指定依赖"
875
876 #. type: cindex
877 #: doc/contributing.texi:554
878 #, no-wrap
879 msgid "inputs, for Python packages"
880 msgstr "Python软件包的输入"
881
882 #. type: Plain text
883 #: doc/contributing.texi:559
884 msgid "Dependency information for Python packages is usually available in the package source tree, with varying degrees of accuracy: in the @file{setup.py} file, in @file{requirements.txt}, or in @file{tox.ini}."
885 msgstr "Python软件包的依赖信息通常在包的源代码树里,各种文件有不同的精确度:@file{setup.py}文件,@file{requirements.txt}文件,@file{tox.ini}文件。"
886
887 #. type: Plain text
888 #: doc/contributing.texi:565
889 msgid "Your mission, when writing a recipe for a Python package, is to map these dependencies to the appropriate type of ``input'' (@pxref{package Reference, inputs}). Although the @code{pypi} importer normally does a good job (@pxref{Invoking guix import}), you may want to check the following check list to determine which dependency goes where."
890 msgstr "你在写软件包配方时的任务是把这些依赖转换成相应的“输入”(@pxref{package Reference, inputs})。尽管@code{pypi}导入工具通常可以做得很好(@pxref{Invoking guix import}),你可能想检查下面这个清单,以决定每个依赖放在哪儿。"
891
892 #. type: itemize
893 #: doc/contributing.texi:573
894 msgid "We currently package Python 2 with @code{setuptools} and @code{pip} installed like Python 3.4 has per default. Thus you don't need to specify either of these as an input. @command{guix lint} will warn you if you do."
895 msgstr "默认地,我们为Python 2打包时像Python 3一样安装了@code{setuptools}和@code{pip}。所以你不需要把它们两个指定为依赖,否则@command{guix lint}会警告你。"
896
897 #. type: itemize
898 #: doc/contributing.texi:579
899 msgid "Python dependencies required at run time go into @code{propagated-inputs}. They are typically defined with the @code{install_requires} keyword in @file{setup.py}, or in the @file{requirements.txt} file."
900 msgstr "运行时需要的Python依赖要放进@code{propagated-inputs}。它们通常由@file{setup.py}文件里的@code{install_requires}关键字或@file{requirements.txt}文件定义。"
901
902 #. type: itemize
903 #: doc/contributing.texi:587
904 msgid "Python packages required only at build time---e.g., those listed with the @code{setup_requires} keyword in @file{setup.py}---or only for testing---e.g., those in @code{tests_require}---go into @code{native-inputs}. The rationale is that (1) they do not need to be propagated because they are not needed at run time, and (2) in a cross-compilation context, it's the ``native'' input that we'd want."
905 msgstr "仅在构建时依赖的Python包--如,@file{setup.py}里的@code{setup_requires}关键字列举的包--或仅在测试时依赖的包--如,@code{tests_require}里的包--要放进@code{native-inputs}。因为,(1)在运行时不需要它们,因此不需要propagate,并且(2)在交叉编译时,它们属于“native”输入。"
906
907 #. type: itemize
908 #: doc/contributing.texi:591
909 msgid "Examples are the @code{pytest}, @code{mock}, and @code{nose} test frameworks. Of course if any of these packages is also required at run-time, it needs to go to @code{propagated-inputs}."
910 msgstr "例如@code{pytest},@code{mock},@code{nose}测试框架。当然,如果在运行时需要这里的任何一个包,它需要被加进@code{propagated-inputs}。"
911
912 #. type: itemize
913 #: doc/contributing.texi:596
914 msgid "Anything that does not fall in the previous categories goes to @code{inputs}, for example programs or C libraries required for building Python packages containing C extensions."
915 msgstr "任何不属于上述类别的包都要被加进@code{inputs},如,构建含有C语言扩展的Python包所需的程序和C语言库。"
916
917 #. type: itemize
918 #: doc/contributing.texi:602
919 msgid "If a Python package has optional dependencies (@code{extras_require}), it is up to you to decide whether to add them or not, based on their usefulness/overhead ratio (@pxref{Submitting Patches, @command{guix size}})."
920 msgstr "如果一个Python软件包由可选的依赖(@code{extras_require}),由你根据它们的性价比(用处/负担)决定是否添加它们(@pxref{Submitting Patches, @command{guix size}})。"
921
922 #. type: cindex
923 #: doc/contributing.texi:609
924 #, no-wrap
925 msgid "perl"
926 msgstr "perl"
927
928 #. type: Plain text
929 #: doc/contributing.texi:620
930 msgid "Perl programs standing for themselves are named as any other package, using the lowercase upstream name. For Perl packages containing a single class, we use the lowercase class name, replace all occurrences of @code{::} by dashes and prepend the prefix @code{perl-}. So the class @code{XML::Parser} becomes @code{perl-xml-parser}. Modules containing several classes keep their lowercase upstream name and are also prepended by @code{perl-}. Such modules tend to have the word @code{perl} somewhere in their name, which gets dropped in favor of the prefix. For instance, @code{libwww-perl} becomes @code{perl-libwww}."
931 msgstr "Perl程序和其它软件包的命名规则类似,用小写的上游名字命名。对于仅包含一个类的Perl包,我们使用小写的类名,把所有的@code{::}替换成破折号,并且添加@code{perl-}前缀。所以类@code{XML::Parser}变成@code{perl-xml-parser}。包含多个类的模块保留它们上游的名字,并且添加@code{perl-}前缀。这类模块的名字通常含有@code{perl},这个单词需要被删掉。例如,@code{libwww-perl}变成@code{perl-libwww}。"
932
933 #. type: cindex
934 #: doc/contributing.texi:625
935 #, no-wrap
936 msgid "java"
937 msgstr "java"
938
939 #. type: Plain text
940 #: doc/contributing.texi:628
941 msgid "Java programs standing for themselves are named as any other package, using the lowercase upstream name."
942 msgstr "Java程序和其它软件包的命名规则类似,用小写的上游名字命名。"
943
944 #. type: Plain text
945 #: doc/contributing.texi:634
946 msgid "To avoid confusion and naming clashes with other programming languages, it is desirable that the name of a package for a Java package is prefixed with @code{java-}. If a project already contains the word @code{java}, we drop this; for instance, the package @code{ngsjava} is packaged under the name @code{java-ngs}."
947 msgstr "为了避免和其它编程语言混淆和命名冲突,Java软件包的名字最好有@code{java-}前缀。如果一个项目的名字已经含有@code{java},我们把它删掉;例如,@code{ngsjava}打包后的名字是@code{java-ngs}。"
948
949 #. type: Plain text
950 #: doc/contributing.texi:640
951 msgid "For Java packages containing a single class or a small class hierarchy, we use the lowercase class name, replace all occurrences of @code{.} by dashes and prepend the prefix @code{java-}. So the class @code{apache.commons.cli} becomes package @code{java-apache-commons-cli}."
952 msgstr "对于仅包含一个或很少几个类的Java软件包,我们使用小写的类名,把所有的@code{.}替换成破折号,并且添加@code{java-}前缀。因此,类@code{apache.commons.cli}打包后的名字是@code{java-apache-commons-cli}。"
953
954 #. type: cindex
955 #: doc/contributing.texi:645 doc/guix.texi:1665
956 #, no-wrap
957 msgid "fonts"
958 msgstr "字体"
959
960 #. type: Plain text
961 #: doc/contributing.texi:651
962 msgid "For fonts that are in general not installed by a user for typesetting purposes, or that are distributed as part of a larger software package, we rely on the general packaging rules for software; for instance, this applies to the fonts delivered as part of the X.Org system or fonts that are part of TeX Live."
963 msgstr "对于通常不会被用户安装用于排版的字体,或者随更大的软件包分发的字体,我们使用通常的命名规则。例如,这适用于X.Org系统附带的字体或TeX Live附带的字体。"
964
965 #. type: Plain text
966 #: doc/contributing.texi:655
967 msgid "To make it easier for a user to search for fonts, names for other packages containing only fonts are constructed as follows, independently of the upstream package name."
968 msgstr "为了让用户更容易搜索字体,其它仅含有字体的软件包按以下规则命名,不管上游的包名是什么。"
969
970 #. type: Plain text
971 #: doc/contributing.texi:663
972 msgid "The name of a package containing only one font family starts with @code{font-}; it is followed by the foundry name and a dash @code{-} if the foundry is known, and the font family name, in which spaces are replaced by dashes (and as usual, all upper case letters are transformed to lower case). For example, the Gentium font family by SIL is packaged under the name @code{font-sil-gentium}."
973 msgstr "仅含有一个字体家族的软件包需要以@code{font-}开头;如果作者名字已知,则添加作者名字和@code{-},接着是字体家族名字(把空格替换成破折号),(和通常一样,把所有的大写字母转换成小写字母)。例如,由SIL设计的Gentium字体家族打包后的名字是@code{font-sil-gentium}。"
974
975 #. type: Plain text
976 #: doc/contributing.texi:672
977 msgid "For a package containing several font families, the name of the collection is used in the place of the font family name. For instance, the Liberation fonts consist of three families, Liberation Sans, Liberation Serif and Liberation Mono. These could be packaged separately under the names @code{font-liberation-sans} and so on; but as they are distributed together under a common name, we prefer to package them together as @code{font-liberation}."
978 msgstr "对于一个含有多个字体家族的软件包,用集合的名字替换字体家族的名字。例如,Liberation字体含有三个家族,Liberation Sans、Liberation Serif和Liberation Mono。它们可以用@code{font-liberation-sans}等名字分开打包;但是由于它们以一个共同的名字分发,我们倾向于以@code{font-liberation}名字统一打包。"
979
980 #. type: Plain text
981 #: doc/contributing.texi:678
982 msgid "In the case where several formats of the same font family or font collection are packaged separately, a short form of the format, prepended by a dash, is added to the package name. We use @code{-ttf} for TrueType fonts, @code{-otf} for OpenType fonts and @code{-type1} for PostScript Type 1 fonts."
983 msgstr "当同一个字体家族或字体集合的不同格式分开打包时,把破折号和格式(缩写)添加在软件包名字后面。我们用@code{-ttf}代表TrueType字体,@code{-otf}代表OpenType字体,@code{-type1}代表PostScript Type 1字体。"
984
985 #. type: Plain text
986 #: doc/contributing.texi:686
987 msgid "In general our code follows the GNU Coding Standards (@pxref{Top,,, standards, GNU Coding Standards}). However, they do not say much about Scheme, so here are some additional rules."
988 msgstr "总的来说,我们的代码遵循GNU代码规范(@pxref{Top,,, standards, GNU代码规范})。但是,这个规范对Scheme的介绍不多,所以这儿提供一些额外的规则。"
989
990 #. type: subsection
991 #: doc/contributing.texi:692 doc/contributing.texi:694
992 #: doc/contributing.texi:695
993 #, no-wrap
994 msgid "Programming Paradigm"
995 msgstr "编程范例"
996
997 #. type: menuentry
998 #: doc/contributing.texi:692
999 msgid "How to compose your elements."
1000 msgstr "怎样合成元素。"
1001
1002 #. type: subsection
1003 #: doc/contributing.texi:692 doc/contributing.texi:701
1004 #: doc/contributing.texi:702
1005 #, no-wrap
1006 msgid "Modules"
1007 msgstr "模块"
1008
1009 #. type: menuentry
1010 #: doc/contributing.texi:692
1011 msgid "Where to store your code?"
1012 msgstr "在哪里保存代码?"
1013
1014 #. type: subsection
1015 #: doc/contributing.texi:692 doc/contributing.texi:712
1016 #: doc/contributing.texi:713
1017 #, no-wrap
1018 msgid "Data Types and Pattern Matching"
1019 msgstr "数据类型和模式匹配"
1020
1021 #. type: menuentry
1022 #: doc/contributing.texi:692
1023 msgid "Implementing data structures."
1024 msgstr "实现数据结构。"
1025
1026 #. type: subsection
1027 #: doc/contributing.texi:692 doc/contributing.texi:726
1028 #: doc/contributing.texi:727
1029 #, no-wrap
1030 msgid "Formatting Code"
1031 msgstr "格式化代码"
1032
1033 #. type: menuentry
1034 #: doc/contributing.texi:692
1035 msgid "Writing conventions."
1036 msgstr "书写规范。"
1037
1038 #. type: Plain text
1039 #: doc/contributing.texi:700
1040 msgid "Scheme code in Guix is written in a purely functional style. One exception is code that involves input/output, and procedures that implement low-level concepts, such as the @code{memoize} procedure."
1041 msgstr "Guix里的Scheme代码是以纯函数的风格写的。一个例外是有关输入/输出的代码,和实现底层概念的过程,如@code{memoize}过程。"
1042
1043 #. type: Plain text
1044 #: doc/contributing.texi:708
1045 msgid "Guile modules that are meant to be used on the builder side must live in the @code{(guix build @dots{})} name space. They must not refer to other Guix or GNU modules. However, it is OK for a ``host-side'' module to use a build-side module."
1046 msgstr "用于构建的Guile模块必须放在@code{(guix build @dots{})}命名空间里。它们不允许引用其它Guix或GNU模块。但是,主机端(host-side)模块可以使用构建端(build-side)模块。"
1047
1048 #. type: Plain text
1049 #: doc/contributing.texi:711
1050 msgid "Modules that deal with the broader GNU system should be in the @code{(gnu @dots{})} name space rather than @code{(guix @dots{})}."
1051 msgstr "关于更广的GNU系统的模块应该在@code{(gnu @dots{})}命名空间里而不是@code{(guix @dots{})}。"
1052
1053 #. type: Plain text
1054 #: doc/contributing.texi:720
1055 msgid "The tendency in classical Lisp is to use lists to represent everything, and then to browse them ``by hand'' using @code{car}, @code{cdr}, @code{cadr}, and co. There are several problems with that style, notably the fact that it is hard to read, error-prone, and a hindrance to proper type error reports."
1056 msgstr "经典的Lisp倾向于用列表表示所有的东西,然后用@code{car},@code{cdr},@code{cadr}等手动浏览它们。这种风格有几个问题,特别是难以阅读,易出错,并且妨碍生成合适的类型错误报告。"
1057
1058 #. type: Plain text
1059 #: doc/contributing.texi:725
1060 msgid "Guix code should define appropriate data types (for instance, using @code{define-record-type*}) rather than abuse lists. In addition, it should use pattern matching, via Guile’s @code{(ice-9 match)} module, especially when matching lists."
1061 msgstr "Guix代码应该定义合适的数据类型(例如,用@code{define-record-type*})而不是滥用列表。而且,它应该利用Guile的@code{(ice-9 match)}模块使用模式匹配,特别是匹配列表的时候。"
1062
1063 #. type: cindex
1064 #: doc/contributing.texi:729
1065 #, no-wrap
1066 msgid "formatting code"
1067 msgstr "格式化代码"
1068
1069 #. type: cindex
1070 #: doc/contributing.texi:730
1071 #, no-wrap
1072 msgid "coding style"
1073 msgstr "代码风格"
1074
1075 #. type: Plain text
1076 #: doc/contributing.texi:737
1077 msgid "When writing Scheme code, we follow common wisdom among Scheme programmers. In general, we follow the @url{http://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp Style Rules}. This document happens to describe the conventions mostly used in Guile’s code too. It is very thoughtful and well written, so please do read it."
1078 msgstr "在写Scheme代码时,我们遵循Scheme程序员的通用智慧。通常,我们遵循@url{http://mumble.net/~campbell/scheme/style.txt, Riastradh的Lisp风格}。这个文档碰巧描述了在Guile代码里大量使用的惯例。它很周到,而且写的很好,所以务必阅读。"
1079
1080 #. type: Plain text
1081 #: doc/contributing.texi:744
1082 msgid "Some special forms introduced in Guix, such as the @code{substitute*} macro, have special indentation rules. These are defined in the @file{.dir-locals.el} file, which Emacs automatically uses. Also note that Emacs-Guix provides @code{guix-devel-mode} mode that indents and highlights Guix code properly (@pxref{Development,,, emacs-guix, The Emacs-Guix Reference Manual})."
1083 msgstr "一些Guix添加的special form,如@code{substitute*}宏,有特殊的缩进规则。它们的规则在@file{.dir-locals.el}文件里定义,Emacs会自动使用。另外,Emacs-Guix提供的@code{guix-devel-mode}模式可以正确地缩进和高亮Guix代码(@pxref{Development,,, emacs-guix, Emacs-Guix参考手册})。"
1084
1085 #. type: cindex
1086 #: doc/contributing.texi:745
1087 #, no-wrap
1088 msgid "indentation, of code"
1089 msgstr "代码缩进"
1090
1091 #. type: cindex
1092 #: doc/contributing.texi:746
1093 #, no-wrap
1094 msgid "formatting, of code"
1095 msgstr "代码格式化"
1096
1097 #. type: Plain text
1098 #: doc/contributing.texi:749
1099 msgid "If you do not use Emacs, please make sure to let your editor knows these rules. To automatically indent a package definition, you can also run:"
1100 msgstr "如果你不使用Emacs,请确保让你的编辑器知道这些规则。为了自动地缩进软件包定义,你也可以运行:"
1101
1102 #. type: example
1103 #: doc/contributing.texi:752
1104 #, no-wrap
1105 msgid "./etc/indent-code.el gnu/packages/@var{file}.scm @var{package}\n"
1106 msgstr "./etc/indent-code.el gnu/packages/@var{文件}.scm @var{软件包}\n"
1107
1108 #. type: Plain text
1109 #: doc/contributing.texi:758
1110 msgid "This automatically indents the definition of @var{package} in @file{gnu/packages/@var{file}.scm} by running Emacs in batch mode. To indent a whole file, omit the second argument:"
1111 msgstr "这会调用Emacs以批处理模式自动地缩进@file{gnu/packages/@var{文件}.scm}里@var{软件包}的定义。如果想缩进整个文件,省略第二个参数:"
1112
1113 #. type: example
1114 #: doc/contributing.texi:761
1115 #, no-wrap
1116 msgid "./etc/indent-code.el gnu/services/@var{file}.scm\n"
1117 msgstr "./etc/indent-code.el gnu/services/@var{文件}.scm\n"
1118
1119 #. type: cindex
1120 #: doc/contributing.texi:763
1121 #, no-wrap
1122 msgid "Vim, Scheme code editing"
1123 msgstr "Vim,编辑Scheme代码"
1124
1125 #. type: Plain text
1126 #: doc/contributing.texi:769
1127 msgid "If you are editing code with Vim, we recommend that you run @code{:set autoindent} so that your code is automatically indented as you type. Additionally, @uref{https://www.vim.org/scripts/script.php?script_id=3998, @code{paredit.vim}} may help you deal with all these parentheses."
1128 msgstr "如果你用Vim编辑代码,我们推荐你运行@code{:set autoindent},以使你在输入时自动缩进代码。另外,@uref{https://www.vim.org/scripts/script.php?script_id=3998, @code{paredit.vim}}可以帮你处理括号。"
1129
1130 #. type: Plain text
1131 #: doc/contributing.texi:773
1132 msgid "We require all top-level procedures to carry a docstring. This requirement can be relaxed for simple private procedures in the @code{(guix build @dots{})} name space, though."
1133 msgstr "我们要求所有的顶级过程附带一个docstring。这个要求对@code{(guix build @dots{})}命名空间里的简单的私有过程可以放宽。"
1134
1135 #. type: Plain text
1136 #: doc/contributing.texi:776
1137 msgid "Procedures should not have more than four positional parameters. Use keyword parameters for procedures that take more than four parameters."
1138 msgstr "过程不应该有多于四个定位参数。对于接收多于四个定位参数的过程应使用关键字参数。"
1139
1140 #. type: Plain text
1141 #: doc/contributing.texi:785
1142 msgid "Development is done using the Git distributed version control system. Thus, access to the repository is not strictly necessary. We welcome contributions in the form of patches as produced by @code{git format-patch} sent to the @email{guix-patches@@gnu.org} mailing list."
1143 msgstr "开发是使用Git分布式版本控制系统完成的。因此,对仓库的访问权限不是必须的。我们欢迎以向@email{guix-patches@@gnu.org}邮件列表发送@code{git format-patch}补丁的方式共享代码。"
1144
1145 #. type: Plain text
1146 #: doc/contributing.texi:792
1147 msgid "This mailing list is backed by a Debbugs instance accessible at @uref{https://bugs.gnu.org/guix-patches}, which allows us to keep track of submissions. Each message sent to that mailing list gets a new tracking number assigned; people can then follow up on the submission by sending email to @code{@var{NNN}@@debbugs.gnu.org}, where @var{NNN} is the tracking number (@pxref{Sending a Patch Series})."
1148 msgstr "这个邮件列表的后端是一个Debbugs实例(可以从@uref{https://bugs.gnu.org/guix-patches}访问),它允许我们跟踪提交的bug。每个发送到那个邮件列表的消息都会被分配一个跟踪数字;之后人们可以通过向@code{@var{NNN}@@debbugs.gnu.org}发送邮件来跟进提交(@var{NNN}是跟踪数字,@pxref{Sending a Patch Series})。"
1149
1150 #. type: Plain text
1151 #: doc/contributing.texi:796
1152 msgid "Please write commit logs in the ChangeLog format (@pxref{Change Logs,,, standards, GNU Coding Standards}); you can check the commit history for examples."
1153 msgstr "请以ChangeLog格式(@pxref{Change Logs,,, standards, GNU代码规范})写commit日志;你可以浏览commit历史里的例子。"
1154
1155 #. type: Plain text
1156 #: doc/contributing.texi:799
1157 msgid "Before submitting a patch that adds or modifies a package definition, please run through this check list:"
1158 msgstr "提交添加或者修改软件包定义的补丁之前,请过一遍这个检查列表:"
1159
1160 #. type: enumerate
1161 #: doc/contributing.texi:806
1162 msgid "If the authors of the packaged software provide a cryptographic signature for the release tarball, make an effort to verify the authenticity of the archive. For a detached GPG signature file this would be done with the @code{gpg --verify} command."
1163 msgstr "如果软件包的作者为发布的文件包提供了密码学签名,请验证文件的真实性。对于独立的GPG签名文件,这可以通过@code{gpg --verify}命令完成:"
1164
1165 #. type: enumerate
1166 #: doc/contributing.texi:810
1167 msgid "Take some time to provide an adequate synopsis and description for the package. @xref{Synopses and Descriptions}, for some guidelines."
1168 msgstr "花些时间为软件包提供一个合适的简介和描述。更多指导,@xref{Synopses and Descriptions}。"
1169
1170 #. type: enumerate
1171 #: doc/contributing.texi:815
1172 msgid "Run @code{guix lint @var{package}}, where @var{package} is the name of the new or modified package, and fix any errors it reports (@pxref{Invoking guix lint})."
1173 msgstr "运行@code{guix lint @var{软件包}},@var{软件包}是新添加的或修改过的软件包的名字,修复它报告的错误(@pxref{Invoking guix lint})。"
1174
1175 #. type: enumerate
1176 #: doc/contributing.texi:819
1177 msgid "Make sure the package builds on your platform, using @code{guix build @var{package}}."
1178 msgstr "用@code{guix build @var{软件包}}命令确保这个软件包可以在你的平台上构建。"
1179
1180 #. type: enumerate
1181 #: doc/contributing.texi:826
1182 msgid "We recommend you also try building the package on other supported platforms. As you may not have access to actual hardware platforms, we recommend using the @code{qemu-binfmt-service-type} to emulate them. In order to enable it, add the following service to the list of services in your @code{operating-system} configuration:"
1183 msgstr "我们建议你同时尝试在别的支持的平台上构建这个软件包。你可能没有别的平台的真实的硬件,我们推荐使用@code{qemu-binfmt-service-type}来模拟它们。为了启用这个功能,把下面这个服务添加到你的@code{操作系统}配置的服务列表里:"
1184
1185 #. type: example
1186 #: doc/contributing.texi:832
1187 #, no-wrap
1188 msgid ""
1189 "(service qemu-binfmt-service-type\n"
1190 " (qemu-binfmt-configuration\n"
1191 " (platforms (lookup-qemu-platforms \"arm\" \"aarch64\" \"mips64el\"))\n"
1192 " (guix-support? #t)))\n"
1193 msgstr ""
1194 "(service qemu-binfmt-service-type\n"
1195 " (qemu-binfmt-configuration\n"
1196 " (platforms (lookup-qemu-platforms \"arm\" \"aarch64\" \"mips64el\"))\n"
1197 " (guix-support? #t)))\n"
1198
1199 #. type: enumerate
1200 #: doc/contributing.texi:835
1201 msgid "Then reconfigure your system."
1202 msgstr "然后重新配置你的系统。"
1203
1204 #. type: enumerate
1205 #: doc/contributing.texi:840
1206 msgid "You can then build packages for different platforms by specifying the @code{--system} option. For example, to build the \"hello\" package for the armhf, aarch64, or mips64 architectures, you would run the following commands, respectively:"
1207 msgstr "你之后可以用@code{--system}参数为不同的平台构建软件包。例如,为armhf,aarch64,或mips64架构构建\"hello\"软件包,你可以依次运行如下的命令:"
1208
1209 #. type: example
1210 #: doc/contributing.texi:844
1211 #, no-wrap
1212 msgid ""
1213 "guix build --system=armhf-linux --rounds=2 hello\n"
1214 "guix build --system=aarch64-linux --rounds=2 hello\n"
1215 "guix build --system=mips64el-linux --rounds=2 hello\n"
1216 msgstr ""
1217 "guix build --system=armhf-linux --rounds=2 hello\n"
1218 "guix build --system=aarch64-linux --rounds=2 hello\n"
1219 "guix build --system=mips64el-linux --rounds=2 hello\n"
1220
1221 #. type: cindex
1222 #: doc/contributing.texi:847
1223 #, no-wrap
1224 msgid "bundling"
1225 msgstr "构建"
1226
1227 #. type: enumerate
1228 #: doc/contributing.texi:850
1229 msgid "Make sure the package does not use bundled copies of software already available as separate packages."
1230 msgstr "请确保软件包里不捆绑出现已经被打过包的软件的副本。"
1231
1232 #. type: enumerate
1233 #: doc/contributing.texi:859
1234 msgid "Sometimes, packages include copies of the source code of their dependencies as a convenience for users. However, as a distribution, we want to make sure that such packages end up using the copy we already have in the distribution, if there is one. This improves resource usage (the dependency is built and stored only once), and allows the distribution to make transverse changes such as applying security updates for a given software package in a single place and have them affect the whole system---something that bundled copies prevent."
1235 msgstr "有时,软件包为了方便用户,捆绑了依赖库的源代码。然而,当依赖库在发行版里已经存在时,做为一个发行版,我们希望确保这些软件包使用发行版里已有的副本。这提高资源使用率(依赖库只构建一次,存储一份),并且使发行版更容易管理,如仅在一个地方对某个软件包进行安全更新就可以影响整个系统--捆绑软件会妨碍这么做。"
1236
1237 #. type: enumerate
1238 #: doc/contributing.texi:868
1239 msgid "Take a look at the profile reported by @command{guix size} (@pxref{Invoking guix size}). This will allow you to notice references to other packages unwillingly retained. It may also help determine whether to split the package (@pxref{Packages with Multiple Outputs}), and which optional dependencies should be used. In particular, avoid adding @code{texlive} as a dependency: because of its extreme size, use @code{texlive-tiny} or @code{texlive-union} instead."
1240 msgstr "看一下@command{guix size}(@pxref{Invoking guix size})的分析报告。这会让你注意到对其它软件包无意中的引用。它也可以帮助决定是否要把一个软件包分割成几个输出(@pxref{有多个输出的软件包}),以及需要使用哪些可选的依赖。特别地,避免把@code{texlive}添加为依赖:因为它太大了,请使用@code{texlive-tiny}或@code{texlive-union}代替它。"
1241
1242 #. type: enumerate
1243 #: doc/contributing.texi:873
1244 msgid "For important changes, check that dependent package (if applicable) are not affected by the change; @code{guix refresh --list-dependent @var{package}} will help you do that (@pxref{Invoking guix refresh})."
1245 msgstr "对于重要的更改,确保依赖它的软件包没有受到影响。@code{guix refresh --list-dependent @var{软件包}}会帮你检查(@pxref{Invoking guix refresh})。"
1246
1247 #. type: cindex
1248 #: doc/contributing.texi:875
1249 #, no-wrap
1250 msgid "branching strategy"
1251 msgstr "分支策略"
1252
1253 #. type: cindex
1254 #: doc/contributing.texi:876
1255 #, no-wrap
1256 msgid "rebuild scheduling strategy"
1257 msgstr "重新构建的调度策略"
1258
1259 #. type: enumerate
1260 #: doc/contributing.texi:879
1261 msgid "Depending on the number of dependent packages and thus the amount of rebuilding induced, commits go to different branches, along these lines:"
1262 msgstr "取决于受影响的软件包的数量,即需要重新构建的数量,commit需要被提交到不同的分支,具体如下:"
1263
1264 #. type: item
1265 #: doc/contributing.texi:881
1266 #, no-wrap
1267 msgid "300 dependent packages or less"
1268 msgstr "300个或更少的受影响的软件包"
1269
1270 #. type: table
1271 #: doc/contributing.texi:883
1272 msgid "@code{master} branch (non-disruptive changes)."
1273 msgstr "@code{master}分支(非破坏性的更改)。"
1274
1275 #. type: item
1276 #: doc/contributing.texi:884
1277 #, no-wrap
1278 msgid "between 300 and 1,200 dependent packages"
1279 msgstr "300至1200个受影响的软件包"
1280
1281 #. type: table
1282 #: doc/contributing.texi:889
1283 msgid "@code{staging} branch (non-disruptive changes). This branch is intended to be merged in @code{master} every 3 weeks or so. Topical changes (e.g., an update of the GNOME stack) can instead go to a specific branch (say, @code{gnome-updates})."
1284 msgstr "@code{staging}分支(非破坏性的更改)。这个分支每隔大约3周会被合并进@code{master}。对某个主题的更改(如对GNOME系列的更新)可以放进一个特定的分支(如@code{gnome-updates})。"
1285
1286 #. type: item
1287 #: doc/contributing.texi:890
1288 #, no-wrap
1289 msgid "more than 1,200 dependent packages"
1290 msgstr "超过1200个受影响的软件包"
1291
1292 #. type: table
1293 #: doc/contributing.texi:894
1294 msgid "@code{core-updates} branch (may include major and potentially disruptive changes). This branch is intended to be merged in @code{master} every 2.5 months or so."
1295 msgstr "@code{core-updates}分支(可能含有重要的或破坏性的更改)。这个分支每隔大约2.5个月会被合并进@code{master}。"
1296
1297 #. type: enumerate
1298 #: doc/contributing.texi:901
1299 msgid "All these branches are @uref{https://hydra.gnu.org/project/gnu, tracked by our build farm} and merged into @code{master} once everything has been successfully built. This allows us to fix issues before they hit users, and to reduce the window during which pre-built binaries are not available."
1300 msgstr "所有这些分支都被@uref{https://hydra.gnu.org/project/gnu, 构建农场}跟踪,并且当一切都被顺利构建时合并进@code{master}。这使我们在影响到用户之前就能改正问题,并且缩小没有准备好预构建的二进制包的窗口期。"
1301
1302 #. type: enumerate
1303 #: doc/contributing.texi:908
1304 msgid "Generally, branches other than @code{master} are considered @emph{frozen} if there has been a recent evaluation, or there is a corresponding @code{-next} branch. Please ask on the mailing list or IRC if unsure where to place a patch."
1305 msgstr "通常,@code{master}之外的其它分支如果最近被评审过,或有一个对应的@code{-next}分支,则被视为@emph{冻结}状态。如果不清楚该把补丁放到哪里,请在邮件列表或IRC上提问。"
1306
1307 #. type: cindex
1308 #: doc/contributing.texi:910
1309 #, no-wrap
1310 msgid "determinism, of build processes"
1311 msgstr "构建过程的确定性"
1312
1313 #. type: cindex
1314 #: doc/contributing.texi:911
1315 #, no-wrap
1316 msgid "reproducible builds, checking"
1317 msgstr "检查可复现的构建"
1318
1319 #. type: enumerate
1320 #: doc/contributing.texi:915
1321 msgid "Check whether the package's build process is deterministic. This typically means checking whether an independent build of the package yields the exact same result that you obtained, bit for bit."
1322 msgstr "检查软件包的构建过程是不是确定性的。这通常意味着检查对软件包的独立构建是否能得到每一个比特都完全相同的结果。"
1323
1324 #. type: enumerate
1325 #: doc/contributing.texi:918
1326 msgid "A simple way to do that is by building the same package several times in a row on your machine (@pxref{Invoking guix build}):"
1327 msgstr "为此,一个简单的做法是在你的机器上多次构建同一个软件包(@pxref{Invoking guix build}):"
1328
1329 #. type: example
1330 #: doc/contributing.texi:921
1331 #, no-wrap
1332 msgid "guix build --rounds=2 my-package\n"
1333 msgstr "guix build --rounds=2 <我的软件包>\n"
1334
1335 #. type: enumerate
1336 #: doc/contributing.texi:925
1337 msgid "This is enough to catch a class of common non-determinism issues, such as timestamps or randomly-generated output in the build result."
1338 msgstr "这足以查出一批普通的不确定性问题,如构建结果里存在时间戳或随机生成的输出。"
1339
1340 #. type: enumerate
1341 #: doc/contributing.texi:935
1342 msgid "Another option is to use @command{guix challenge} (@pxref{Invoking guix challenge}). You may run it once the package has been committed and built by @code{@value{SUBSTITUTE-SERVER}} to check whether it obtains the same result as you did. Better yet: Find another machine that can build it and run @command{guix publish}. Since the remote build machine is likely different from yours, this can catch non-determinism issues related to the hardware---e.g., use of different instruction set extensions---or to the operating system kernel---e.g., reliance on @code{uname} or @file{/proc} files."
1343 msgstr "另一个选择是使用@command{guix challenge}(@pxref{Invoking guix challenge})。当软件包被提交并且被@code{@value{SUBSTITUTE-SERVER}}构建之后,你可以运行这个命令检查你是否得到相同的构建结果。更好的:找另一台可以构建的机器,运行@command{guix publish}。由于远程的构建机器很可能和你的机器不同,这可以捕捉到由硬件不同引起的不确定性问题--如,使用不同的指令集--或不同操作系统内核引起的问题--如,对@code{uname}或@file{/proc}文件的依赖。"
1344
1345 #. type: enumerate
1346 #: doc/contributing.texi:941
1347 msgid "When writing documentation, please use gender-neutral wording when referring to people, such as @uref{https://en.wikipedia.org/wiki/Singular_they, singular ``they''@comma{} ``their''@comma{} ``them''}, and so forth."
1348 msgstr "在编写文档时,请用性别中立的词语指代人,如@uref{https://en.wikipedia.org/wiki/Singular_they, “他”@comma{} “他的”},等。"
1349
1350 #. type: enumerate
1351 #: doc/contributing.texi:945
1352 msgid "Verify that your patch contains only one set of related changes. Bundling unrelated changes together makes reviewing harder and slower."
1353 msgstr "检查你的补丁只包含一些相关的更改。把不相关的更改捆绑在一起会让评审更困难和更慢。"
1354
1355 #. type: enumerate
1356 #: doc/contributing.texi:948
1357 msgid "Examples of unrelated changes include the addition of several packages, or a package update along with fixes to that package."
1358 msgstr "不相关的更改的例子有:同时新增多个软件包,或更新软件包同时修补这个软件包。"
1359
1360 #. type: enumerate
1361 #: doc/contributing.texi:953
1362 msgid "Please follow our code formatting rules, possibly running the @command{etc/indent-code.el} script to do that automatically for you (@pxref{Formatting Code})."
1363 msgstr "请遵守我们的代码格式规范,最好运行@command{etc/indent-code.el}脚本以自动为你格式化(@pxref{Formatting Code})。"
1364
1365 #. type: enumerate
1366 #: doc/contributing.texi:961
1367 msgid "When possible, use mirrors in the source URL (@pxref{Invoking guix download}). Use reliable URLs, not generated ones. For instance, GitHub archives are not necessarily identical from one generation to the next, so in this case it's often better to clone the repository. Don't use the @command{name} field in the URL: it is not very useful and if the name changes, the URL will probably be wrong."
1368 msgstr "当可能时,请在源URL里使用镜像@pxref{Invoking guix download}。使用可靠的而不是生成的URL。例如,GitHub的下载文件每次生成时不一定是相同的,所以这时最好克隆仓库。不要在URL里使用@command{name}变量:这没有什么用,而且如果名字变了,URL很可能就错了。"
1369
1370 #. type: Plain text
1371 #: doc/contributing.texi:971
1372 msgid "When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as a subject. You may use your email client or the @command{git send-email} command (@pxref{Sending a Patch Series}). We prefer to get patches in plain text messages, either inline or as MIME attachments. You are advised to pay attention if your email client changes anything like line breaks or indentation which could potentially break the patches."
1373 msgstr "在提交补丁到邮件列表时,使用@samp{[PATCH] @dots{}}做为主题。你可以使用你的邮件客户端或者@command{git send-email}命令(@pxref{Sending a Patch Series})。我们倾向于接收纯文本的邮件,无论是在正文里还是在MIME附件里。建议你注意你的邮件客户端是否会自动修改换行或缩进,这可能会损坏补丁。"
1374
1375 #. type: Plain text
1376 #: doc/contributing.texi:974
1377 msgid "When a bug is resolved, please close the thread by sending an email to @email{@var{NNN}-done@@debbugs.gnu.org}."
1378 msgstr "当一个bug被修复时,请通过向@email{@var{NNN}-done@@debbugs.gnu.org}发邮件的方式关闭thread。"
1379
1380 #. type: anchor{#1}
1381 #: doc/contributing.texi:975 doc/contributing.texi:977
1382 #, no-wrap
1383 msgid "Sending a Patch Series"
1384 msgstr "发送补丁系列"
1385
1386 #. type: cindex
1387 #: doc/contributing.texi:977
1388 #, no-wrap
1389 msgid "patch series"
1390 msgstr "补丁系列"
1391
1392 #. type: code{#1}
1393 #: doc/contributing.texi:978
1394 #, no-wrap
1395 msgid "git send-email"
1396 msgstr "git send-email"
1397
1398 #. type: code{#1}
1399 #: doc/contributing.texi:979
1400 #, no-wrap
1401 msgid "git-send-email"
1402 msgstr "git-send-email"
1403
1404 #. type: Plain text
1405 #: doc/contributing.texi:987
1406 msgid "When sending a patch series (e.g., using @code{git send-email}), please first send one message to @email{guix-patches@@gnu.org}, and then send subsequent patches to @email{@var{NNN}@@debbugs.gnu.org} to make sure they are kept together. See @uref{https://debbugs.gnu.org/Advanced.html, the Debbugs documentation} for more information."
1407 msgstr "在发送补丁系列时(如,使用@code{git send-email}),请先向@email{guix-patches@@gnu.org}发送一封邮件,再把后续的补丁发送到@email{@var{NNN}@@debbugs.gnu.org},以确保他们被归在一起。见@uref{https://debbugs.gnu.org/Advanced.html, Debbugs文档}以了解更多信息。"
1408
1409 #. type: Plain text
1410 #: doc/guix.texi:7
1411 msgid "@documentencoding UTF-8"
1412 msgstr "@documentencoding UTF-8"
1413
1414 #. type: title
1415 #: doc/guix.texi:7 doc/guix.texi:92
1416 #, no-wrap
1417 msgid "GNU Guix Reference Manual"
1418 msgstr "GNU Guix参考手册"
1419
1420 #. type: include
1421 #: doc/guix.texi:10
1422 #, no-wrap
1423 msgid "version.texi"
1424 msgstr "version-zh_CN.texi"
1425
1426 #. type: copying
1427 #: doc/guix.texi:66
1428 msgid "Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès@* Copyright @copyright{} 2013, 2014, 2016 Andreas Enge@* Copyright @copyright{} 2013 Nikita Karetnikov@* Copyright @copyright{} 2014, 2015, 2016 Alex Kost@* Copyright @copyright{} 2015, 2016 Mathieu Lirzin@* Copyright @copyright{} 2014 Pierre-Antoine Rault@* Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018, 2019 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* Copyright @copyright{} 2017, 2018 Clément Lassieur@* Copyright @copyright{} 2017, 2018 Mathieu Othacehe@* Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017, 2018 Carlo Zancanaro@* Copyright @copyright{} 2017 Thomas Danckaert@* Copyright @copyright{} 2017 humanitiesNerd@* Copyright @copyright{} 2017 Christopher Allan Webber@* Copyright @copyright{} 2017, 2018 Marius Bakke@* Copyright @copyright{} 2017 Hartmut Goebel@* Copyright @copyright{} 2017 Maxim Cournoyer@* Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@* Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 Andy Wingo@* Copyright @copyright{} 2017, 2018, 2019 Arun Isaac@* Copyright @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* Copyright @copyright{} 2018 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright @copyright{} 2018 Gábor Boskovits@* Copyright @copyright{} 2018 Florian Pelz@* Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{} 2018 Alex Vong@* Copyright @copyright{} 2019 Josh Holland@*"
1429 msgstr ""
1430
1431 #. type: copying
1432 #: doc/guix.texi:73
1433 msgid "Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''."
1434 msgstr ""
1435
1436 #. type: dircategory
1437 #: doc/guix.texi:75
1438 #, no-wrap
1439 msgid "System administration"
1440 msgstr "系统管理"
1441
1442 #. type: menuentry
1443 #: doc/guix.texi:82
1444 msgid "Guix: (guix)"
1445 msgstr "Guix:(guix)"
1446
1447 #. type: menuentry
1448 #: doc/guix.texi:82
1449 msgid "Manage installed software and system configuration."
1450 msgstr "管理安装的软件和系统配置。"
1451
1452 #. type: menuentry
1453 #: doc/guix.texi:82
1454 msgid "guix package: (guix)Invoking guix package"
1455 msgstr "guix package:调用guix package"
1456
1457 #. type: menuentry
1458 #: doc/guix.texi:82
1459 msgid "Installing, removing, and upgrading packages."
1460 msgstr "安装、删除和升级软件包。"
1461
1462 #. type: menuentry
1463 #: doc/guix.texi:82
1464 msgid "guix gc: (guix)Invoking guix gc"
1465 msgstr "guix gc:调用guix gc"
1466
1467 #. type: menuentry
1468 #: doc/guix.texi:82
1469 msgid "Reclaiming unused disk space."
1470 msgstr "回收不使用的硬盘空间。"
1471
1472 #. type: menuentry
1473 #: doc/guix.texi:82
1474 msgid "guix pull: (guix)Invoking guix pull"
1475 msgstr "guix pull:调用guix pull"
1476
1477 #. type: menuentry
1478 #: doc/guix.texi:82
1479 msgid "Update the list of available packages."
1480 msgstr "更新可用的软件包列表。"
1481
1482 #. type: menuentry
1483 #: doc/guix.texi:82
1484 msgid "guix system: (guix)Invoking guix system"
1485 msgstr "guix system:调用guix system"
1486
1487 #. type: menuentry
1488 #: doc/guix.texi:82
1489 msgid "Manage the operating system configuration."
1490 msgstr "管理操作系统配置。"
1491
1492 #. type: dircategory
1493 #: doc/guix.texi:84
1494 #, no-wrap
1495 msgid "Software development"
1496 msgstr "软件开发"
1497
1498 #. type: menuentry
1499 #: doc/guix.texi:89
1500 msgid "guix environment: (guix)Invoking guix environment"
1501 msgstr "guix environment:调用guix environment"
1502
1503 #. type: menuentry
1504 #: doc/guix.texi:89
1505 msgid "Building development environments with Guix."
1506 msgstr "用Guix构建开发环境。"
1507
1508 #. type: menuentry
1509 #: doc/guix.texi:89
1510 msgid "guix build: (guix)Invoking guix build"
1511 msgstr "guix build:(guix)调用guix build"
1512
1513 #. type: menuentry
1514 #: doc/guix.texi:89
1515 msgid "Building packages."
1516 msgstr "构建软件包。"
1517
1518 #. type: menuentry
1519 #: doc/guix.texi:89
1520 msgid "guix pack: (guix)Invoking guix pack"
1521 msgstr "guix pack:(guix)调用guix pack"
1522
1523 #. type: menuentry
1524 #: doc/guix.texi:89
1525 msgid "Creating binary bundles."
1526 msgstr "创建二进制bundle。"
1527
1528 #. type: subtitle
1529 #: doc/guix.texi:93
1530 #, no-wrap
1531 msgid "Using the GNU Guix Functional Package Manager"
1532 msgstr "使用GNU Guix函数式包管理器"
1533
1534 #. type: author
1535 #: doc/guix.texi:94
1536 #, no-wrap
1537 msgid "The GNU Guix Developers"
1538 msgstr "GNU Guix开发者"
1539
1540 #. type: titlepage
1541 #: doc/guix.texi:100
1542 msgid "Edition @value{EDITION} @* @value{UPDATED} @*"
1543 msgstr "版本@value{EDITION} @* @value{UPDATED} @*"
1544
1545 #. type: node
1546 #: doc/guix.texi:107
1547 #, no-wrap
1548 msgid "Top"
1549 msgstr "Top"
1550
1551 #. type: top
1552 #: doc/guix.texi:108
1553 #, no-wrap
1554 msgid "GNU Guix"
1555 msgstr "GNU Guix"
1556
1557 #. type: Plain text
1558 #: doc/guix.texi:112
1559 msgid "This document describes GNU Guix version @value{VERSION}, a functional package management tool written for the GNU system."
1560 msgstr "这份文档介绍GNU Guix版本@value{VERSION},一个为GNU系统编写的函数式包管理器。"
1561
1562 #. type: Plain text
1563 #: doc/guix.texi:123
1564 msgid "This manual is also available in Simplified Chinese (@pxref{Top,,, guix.zh_CN, GNU Guix参考手册}), French (@pxref{Top,,, guix.fr, Manuel de référence de GNU Guix}), German (@pxref{Top,,, guix.de, Referenzhandbuch zu GNU Guix}), and Spanish (@pxref{Top,,, guix.es, Manual de referencia de GNU Guix}). If you would like to translate it in your native language, consider joining the @uref{https://translationproject.org/domain/guix-manual.html, Translation Project}."
1565 msgstr "这个用户手册还提供简体中文版(@pxref{Top,,, guix.zh_CN, GNU Guix参考手册}),法语版(@pxref{Top,,, guix.fr, Manuel de référence de GNU Guix}),德语版(@pxref{Top,,, guix.de, Referenzhandbuch zu GNU Guix}),和西班牙语版(@pxref{Top,,, guix.es, Manual de referencia de GNU Guix})。如果你想把它翻译成你的母语,请考虑加入@uref{https://translationproject.org/domain/guix-manual.html, Translation Project}。"
1566
1567 #. type: chapter
1568 #: doc/guix.texi:139 doc/guix.texi:149 doc/guix.texi:312 doc/guix.texi:313
1569 #, no-wrap
1570 msgid "Introduction"
1571 msgstr "介绍"
1572
1573 #. type: menuentry
1574 #: doc/guix.texi:139
1575 msgid "What is Guix about?"
1576 msgstr "Guix是关于什么的?"
1577
1578 #. type: chapter
1579 #: doc/guix.texi:139 doc/guix.texi:154 doc/guix.texi:471 doc/guix.texi:472
1580 #, no-wrap
1581 msgid "Installation"
1582 msgstr "安装"
1583
1584 #. type: menuentry
1585 #: doc/guix.texi:139
1586 msgid "Installing Guix."
1587 msgstr "安装Guix。"
1588
1589 #. type: chapter
1590 #: doc/guix.texi:139 doc/guix.texi:169 doc/guix.texi:1768 doc/guix.texi:1769
1591 #, no-wrap
1592 msgid "System Installation"
1593 msgstr "系统安装"
1594
1595 #. type: menuentry
1596 #: doc/guix.texi:139
1597 msgid "Installing the whole operating system."
1598 msgstr "安装整个操作系统。"
1599
1600 #. type: chapter
1601 #: doc/guix.texi:139 doc/guix.texi:186 doc/guix.texi:2479 doc/guix.texi:2480
1602 #, no-wrap
1603 msgid "Package Management"
1604 msgstr "软件包管理"
1605
1606 #. type: menuentry
1607 #: doc/guix.texi:139
1608 msgid "Package installation, upgrade, etc."
1609 msgstr "软件包安装,升级,等"
1610
1611 #. type: chapter
1612 #: doc/guix.texi:139 doc/guix.texi:208 doc/guix.texi:4331 doc/guix.texi:4332
1613 #, no-wrap
1614 msgid "Development"
1615 msgstr "开发"
1616
1617 #. type: menuentry
1618 #: doc/guix.texi:139
1619 msgid "Guix-aided software development."
1620 msgstr "Guix辅助的软件开发。"
1621
1622 #. type: chapter
1623 #: doc/guix.texi:139 doc/guix.texi:213 doc/guix.texi:4955 doc/guix.texi:4956
1624 #, no-wrap
1625 msgid "Programming Interface"
1626 msgstr "编程接口"
1627
1628 #. type: menuentry
1629 #: doc/guix.texi:139
1630 msgid "Using Guix in Scheme."
1631 msgstr "在Scheme里使用Guix。"
1632
1633 #. type: chapter
1634 #: doc/guix.texi:139 doc/guix.texi:229 doc/guix.texi:7583 doc/guix.texi:7584
1635 #, no-wrap
1636 msgid "Utilities"
1637 msgstr "工具"
1638
1639 #. type: menuentry
1640 #: doc/guix.texi:139
1641 msgid "Package management commands."
1642 msgstr "软件包管理命令。"
1643
1644 #. type: chapter
1645 #: doc/guix.texi:139 doc/guix.texi:254 doc/guix.texi:10194 doc/guix.texi:10195
1646 #, no-wrap
1647 msgid "System Configuration"
1648 msgstr "系统配置"
1649
1650 #. type: menuentry
1651 #: doc/guix.texi:139
1652 msgid "Configuring the operating system."
1653 msgstr "配置操作系统。"
1654
1655 #. type: chapter
1656 #: doc/guix.texi:139 doc/guix.texi:25392 doc/guix.texi:25393
1657 #, no-wrap
1658 msgid "Documentation"
1659 msgstr "文档"
1660
1661 #. type: menuentry
1662 #: doc/guix.texi:139
1663 msgid "Browsing software user manuals."
1664 msgstr "浏览软件用户手册。"
1665
1666 #. type: chapter
1667 #: doc/guix.texi:139 doc/guix.texi:25456 doc/guix.texi:25457
1668 #, no-wrap
1669 msgid "Installing Debugging Files"
1670 msgstr "安装调试文件"
1671
1672 #. type: menuentry
1673 #: doc/guix.texi:139
1674 msgid "Feeding the debugger."
1675 msgstr "为调试工具提供输入。"
1676
1677 #. type: chapter
1678 #: doc/guix.texi:139 doc/guix.texi:25522 doc/guix.texi:25523
1679 #, no-wrap
1680 msgid "Security Updates"
1681 msgstr "安全更新"
1682
1683 #. type: menuentry
1684 #: doc/guix.texi:139
1685 msgid "Deploying security fixes quickly."
1686 msgstr "快速部署安全补丁。"
1687
1688 #. type: chapter
1689 #: doc/guix.texi:139 doc/guix.texi:25642 doc/guix.texi:25643
1690 #, no-wrap
1691 msgid "Bootstrapping"
1692 msgstr "引导"
1693
1694 #. type: menuentry
1695 #: doc/guix.texi:139
1696 msgid "GNU/Linux built from scratch."
1697 msgstr "从头开始构建GNU/Linux。"
1698
1699 #. type: node
1700 #: doc/guix.texi:139 doc/guix.texi:25826
1701 #, no-wrap
1702 msgid "Porting"
1703 msgstr "移植"
1704
1705 #. type: menuentry
1706 #: doc/guix.texi:139
1707 msgid "Targeting another platform or kernel."
1708 msgstr "以别的平台或内核为目标。"
1709
1710 #. type: menuentry
1711 #: doc/guix.texi:139
1712 msgid "Your help needed!"
1713 msgstr "你需要帮助!"
1714
1715 #. type: chapter
1716 #: doc/guix.texi:144 doc/guix.texi:25874 doc/guix.texi:25875
1717 #, no-wrap
1718 msgid "Acknowledgments"
1719 msgstr "致谢"
1720
1721 #. type: menuentry
1722 #: doc/guix.texi:144
1723 msgid "Thanks!"
1724 msgstr "感谢!"
1725
1726 #. type: appendix
1727 #: doc/guix.texi:144 doc/guix.texi:25896 doc/guix.texi:25897
1728 #, no-wrap
1729 msgid "GNU Free Documentation License"
1730 msgstr "GNU自由文档许可证"
1731
1732 #. type: menuentry
1733 #: doc/guix.texi:144
1734 msgid "The license of this manual."
1735 msgstr "这个用户手册的许可证。"
1736
1737 #. type: unnumbered
1738 #: doc/guix.texi:144 doc/guix.texi:25902 doc/guix.texi:25903
1739 #, no-wrap
1740 msgid "Concept Index"
1741 msgstr "概念索引"
1742
1743 #. type: menuentry
1744 #: doc/guix.texi:144
1745 msgid "Concepts."
1746 msgstr "概念。"
1747
1748 #. type: unnumbered
1749 #: doc/guix.texi:144 doc/guix.texi:25906 doc/guix.texi:25907
1750 #, no-wrap
1751 msgid "Programming Index"
1752 msgstr "编程索引"
1753
1754 #. type: menuentry
1755 #: doc/guix.texi:144
1756 msgid "Data types, functions, and variables."
1757 msgstr "数据类型、函数和变量。"
1758
1759 #. type: menuentry
1760 #: doc/guix.texi:147
1761 msgid "--- The Detailed Node Listing ---"
1762 msgstr "---详细的章节列表---"
1763
1764 #. type: section
1765 #: doc/guix.texi:152 doc/guix.texi:339 doc/guix.texi:341 doc/guix.texi:342
1766 #, no-wrap
1767 msgid "Managing Software the Guix Way"
1768 msgstr "以Guix的方式管理软件"
1769
1770 #. type: menuentry
1771 #: doc/guix.texi:152 doc/guix.texi:339
1772 msgid "What's special."
1773 msgstr "特殊的地方。"
1774
1775 #. type: section
1776 #: doc/guix.texi:152 doc/guix.texi:339 doc/guix.texi:396 doc/guix.texi:397
1777 #, no-wrap
1778 msgid "GNU Distribution"
1779 msgstr "GNU发行版"
1780
1781 #. type: menuentry
1782 #: doc/guix.texi:152 doc/guix.texi:339
1783 msgid "The packages and tools."
1784 msgstr "软件包和工具。"
1785
1786 #. type: section
1787 #: doc/guix.texi:161 doc/guix.texi:510 doc/guix.texi:512 doc/guix.texi:513
1788 #, no-wrap
1789 msgid "Binary Installation"
1790 msgstr "二进制文件安装"
1791
1792 #. type: menuentry
1793 #: doc/guix.texi:161 doc/guix.texi:510
1794 msgid "Getting Guix running in no time!"
1795 msgstr "立刻运行Guix!"
1796
1797 #. type: section
1798 #: doc/guix.texi:161 doc/guix.texi:510 doc/guix.texi:714 doc/guix.texi:715
1799 #, no-wrap
1800 msgid "Requirements"
1801 msgstr "需求"
1802
1803 #. type: menuentry
1804 #: doc/guix.texi:161 doc/guix.texi:510
1805 msgid "Software needed to build and run Guix."
1806 msgstr "构建和运行Guix需要的软件。"
1807
1808 #. type: section
1809 #: doc/guix.texi:161 doc/guix.texi:510 doc/guix.texi:798 doc/guix.texi:799
1810 #, no-wrap
1811 msgid "Running the Test Suite"
1812 msgstr "运行测试套件"
1813
1814 #. type: menuentry
1815 #: doc/guix.texi:161 doc/guix.texi:510
1816 msgid "Testing Guix."
1817 msgstr "测试Guix。"
1818
1819 #. type: section
1820 #: doc/guix.texi:161 doc/guix.texi:163 doc/guix.texi:510 doc/guix.texi:863
1821 #: doc/guix.texi:864
1822 #, no-wrap
1823 msgid "Setting Up the Daemon"
1824 msgstr "设置后台进程"
1825
1826 #. type: menuentry
1827 #: doc/guix.texi:161 doc/guix.texi:510
1828 msgid "Preparing the build daemon's environment."
1829 msgstr "准备“构建后台进程”的环境。"
1830
1831 #. type: node
1832 #: doc/guix.texi:161 doc/guix.texi:510 doc/guix.texi:1294
1833 #, no-wrap
1834 msgid "Invoking guix-daemon"
1835 msgstr "调用guix-daemon"
1836
1837 #. type: menuentry
1838 #: doc/guix.texi:161 doc/guix.texi:510
1839 msgid "Running the build daemon."
1840 msgstr "运行“构建后台进程”"
1841
1842 #. type: section
1843 #: doc/guix.texi:161 doc/guix.texi:510 doc/guix.texi:1562 doc/guix.texi:1563
1844 #, no-wrap
1845 msgid "Application Setup"
1846 msgstr "设置应用程序"
1847
1848 #. type: menuentry
1849 #: doc/guix.texi:161 doc/guix.texi:510
1850 msgid "Application-specific setup."
1851 msgstr "应用程序相关的设置。"
1852
1853 #. type: subsection
1854 #: doc/guix.texi:167 doc/guix.texi:883 doc/guix.texi:885 doc/guix.texi:886
1855 #, no-wrap
1856 msgid "Build Environment Setup"
1857 msgstr "设置构建环境"
1858
1859 #. type: menuentry
1860 #: doc/guix.texi:167 doc/guix.texi:883
1861 msgid "Preparing the isolated build environment."
1862 msgstr "准备隔离的构建环境。"
1863
1864 #. type: node
1865 #: doc/guix.texi:167 doc/guix.texi:883 doc/guix.texi:1002
1866 #, no-wrap
1867 msgid "Daemon Offload Setup"
1868 msgstr "下发工作给后台进程的设置"
1869
1870 #. type: menuentry
1871 #: doc/guix.texi:167 doc/guix.texi:883
1872 msgid "Offloading builds to remote machines."
1873 msgstr "下发构建工作给远程的机器。"
1874
1875 #. type: subsection
1876 #: doc/guix.texi:167 doc/guix.texi:883 doc/guix.texi:1208 doc/guix.texi:1209
1877 #, no-wrap
1878 msgid "SELinux Support"
1879 msgstr "SELinux的支持"
1880
1881 #. type: menuentry
1882 #: doc/guix.texi:167 doc/guix.texi:883
1883 msgid "Using an SELinux policy for the daemon."
1884 msgstr "为后台进程使用SELinux规则。"
1885
1886 #. type: section
1887 #: doc/guix.texi:179 doc/guix.texi:1244 doc/guix.texi:1802 doc/guix.texi:1804
1888 #: doc/guix.texi:1805
1889 #, no-wrap
1890 msgid "Limitations"
1891 msgstr "限制"
1892
1893 #. type: menuentry
1894 #: doc/guix.texi:179 doc/guix.texi:1802
1895 msgid "What you can expect."
1896 msgstr "你可以期待什么。"
1897
1898 #. type: section
1899 #: doc/guix.texi:179 doc/guix.texi:1802 doc/guix.texi:1833 doc/guix.texi:1834
1900 #, no-wrap
1901 msgid "Hardware Considerations"
1902 msgstr "硬件的考虑"
1903
1904 #. type: menuentry
1905 #: doc/guix.texi:179 doc/guix.texi:1802
1906 msgid "Supported hardware."
1907 msgstr "支持的硬件。"
1908
1909 #. type: section
1910 #: doc/guix.texi:179 doc/guix.texi:1802 doc/guix.texi:1868 doc/guix.texi:1869
1911 #, no-wrap
1912 msgid "USB Stick and DVD Installation"
1913 msgstr "U盘和DVD安装"
1914
1915 #. type: menuentry
1916 #: doc/guix.texi:179 doc/guix.texi:1802
1917 msgid "Preparing the installation medium."
1918 msgstr "准备安装介质。"
1919
1920 #. type: section
1921 #: doc/guix.texi:179 doc/guix.texi:1802 doc/guix.texi:1967 doc/guix.texi:1968
1922 #, no-wrap
1923 msgid "Preparing for Installation"
1924 msgstr "准备安装"
1925
1926 #. type: menuentry
1927 #: doc/guix.texi:179 doc/guix.texi:1802
1928 msgid "Networking, partitioning, etc."
1929 msgstr "网络、分区、等"
1930
1931 #. type: section
1932 #: doc/guix.texi:179 doc/guix.texi:1802 doc/guix.texi:1990 doc/guix.texi:1991
1933 #, no-wrap
1934 msgid "Guided Graphical Installation"
1935 msgstr "指导的图形安装"
1936
1937 #. type: menuentry
1938 #: doc/guix.texi:179 doc/guix.texi:1802
1939 msgid "Easy graphical installation."
1940 msgstr "简单的图形安装"
1941
1942 #. type: section
1943 #: doc/guix.texi:179 doc/guix.texi:181 doc/guix.texi:1802 doc/guix.texi:2021
1944 #: doc/guix.texi:2022
1945 #, no-wrap
1946 msgid "Manual Installation"
1947 msgstr "手动安装"
1948
1949 #. type: menuentry
1950 #: doc/guix.texi:179 doc/guix.texi:1802
1951 msgid "Manual installation for wizards."
1952 msgstr "适合巫师的手动安装。"
1953
1954 #. type: section
1955 #: doc/guix.texi:179 doc/guix.texi:1802 doc/guix.texi:2364 doc/guix.texi:2365
1956 #, no-wrap
1957 msgid "After System Installation"
1958 msgstr "系统安装之后"
1959
1960 #. type: menuentry
1961 #: doc/guix.texi:179 doc/guix.texi:1802
1962 msgid "When installation succeeded."
1963 msgstr "当安装成功后。"
1964
1965 #. type: node
1966 #: doc/guix.texi:179 doc/guix.texi:1802 doc/guix.texi:2392
1967 #, no-wrap
1968 msgid "Installing Guix in a VM"
1969 msgstr "在虚拟机里安装Guix。"
1970
1971 #. type: menuentry
1972 #: doc/guix.texi:179 doc/guix.texi:1802
1973 msgid "Guix System playground."
1974 msgstr "Guix系统游乐场。"
1975
1976 #. type: section
1977 #: doc/guix.texi:179 doc/guix.texi:1802 doc/guix.texi:2446 doc/guix.texi:2447
1978 #, no-wrap
1979 msgid "Building the Installation Image"
1980 msgstr "构建安装镜像"
1981
1982 #. type: menuentry
1983 #: doc/guix.texi:179 doc/guix.texi:1802
1984 msgid "How this comes to be."
1985 msgstr "这是怎样实现的。"
1986
1987 #. type: node
1988 #: doc/guix.texi:184 doc/guix.texi:2039 doc/guix.texi:2041
1989 #, no-wrap
1990 msgid "Keyboard Layout and Networking and Partitioning"
1991 msgstr "键盘布局、网络和分区"
1992
1993 #. type: menuentry
1994 #: doc/guix.texi:184 doc/guix.texi:2039
1995 msgid "Initial setup."
1996 msgstr "初始设置。"
1997
1998 #. type: subsection
1999 #: doc/guix.texi:184 doc/guix.texi:2039 doc/guix.texi:2276 doc/guix.texi:2277
2000 #, no-wrap
2001 msgid "Proceeding with the Installation"
2002 msgstr "继续安装步骤。"
2003
2004 #. type: menuentry
2005 #: doc/guix.texi:184 doc/guix.texi:2039
2006 msgid "Installing."
2007 msgstr "安装。"
2008
2009 #. type: section
2010 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:2513 doc/guix.texi:2514
2011 #, no-wrap
2012 msgid "Features"
2013 msgstr "功能"
2014
2015 #. type: menuentry
2016 #: doc/guix.texi:197 doc/guix.texi:2511
2017 msgid "How Guix will make your life brighter."
2018 msgstr "Guix怎样让你的生活更美好。"
2019
2020 #. type: node
2021 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:2599
2022 #, no-wrap
2023 msgid "Invoking guix package"
2024 msgstr "调用guix package"
2025
2026 #. type: menuentry
2027 #: doc/guix.texi:197 doc/guix.texi:2511
2028 msgid "Package installation, removal, etc."
2029 msgstr "软件包安装,删除,等"
2030
2031 #. type: section
2032 #: doc/guix.texi:197 doc/guix.texi:199 doc/guix.texi:2511 doc/guix.texi:3100
2033 #: doc/guix.texi:3101
2034 #, no-wrap
2035 msgid "Substitutes"
2036 msgstr ""
2037
2038 #. type: menuentry
2039 #: doc/guix.texi:197 doc/guix.texi:2511
2040 msgid "Downloading pre-built binaries."
2041 msgstr "下载构建好的二进制文件。"
2042
2043 #. type: section
2044 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:3328 doc/guix.texi:3329
2045 #, no-wrap
2046 msgid "Packages with Multiple Outputs"
2047 msgstr "有多个输出的软件包"
2048
2049 #. type: menuentry
2050 #: doc/guix.texi:197 doc/guix.texi:2511
2051 msgid "Single source package, multiple outputs."
2052 msgstr "单个输入多个输出的软件包。"
2053
2054 #. type: node
2055 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:3382
2056 #, no-wrap
2057 msgid "Invoking guix gc"
2058 msgstr "调用guix gc"
2059
2060 #. type: menuentry
2061 #: doc/guix.texi:197 doc/guix.texi:2511
2062 msgid "Running the garbage collector."
2063 msgstr "运行垃圾回收器。"
2064
2065 #. type: node
2066 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:3588
2067 #, no-wrap
2068 msgid "Invoking guix pull"
2069 msgstr "调用guix pull"
2070
2071 #. type: menuentry
2072 #: doc/guix.texi:197 doc/guix.texi:2511
2073 msgid "Fetching the latest Guix and distribution."
2074 msgstr "获取最新的Guix和发行版。"
2075
2076 #. type: section
2077 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:3743 doc/guix.texi:3744
2078 #, no-wrap
2079 msgid "Channels"
2080 msgstr "通道"
2081
2082 #. type: menuentry
2083 #: doc/guix.texi:197 doc/guix.texi:2511
2084 msgid "Customizing the package collection."
2085 msgstr "定制软件包集合。"
2086
2087 #. type: section
2088 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:3956 doc/guix.texi:3957
2089 #, no-wrap
2090 msgid "Inferiors"
2091 msgstr ""
2092
2093 #. type: menuentry
2094 #: doc/guix.texi:197 doc/guix.texi:2511
2095 msgid "Interacting with another revision of Guix."
2096 msgstr "和其它版本的Guix交互。"
2097
2098 #. type: node
2099 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:4084
2100 #, no-wrap
2101 msgid "Invoking guix describe"
2102 msgstr "调用guix describe"
2103
2104 #. type: menuentry
2105 #: doc/guix.texi:197 doc/guix.texi:2511
2106 msgid "Display information about your Guix revision."
2107 msgstr "显示你的Guix版本信息。"
2108
2109 #. type: node
2110 #: doc/guix.texi:197 doc/guix.texi:2511 doc/guix.texi:4165
2111 #, no-wrap
2112 msgid "Invoking guix archive"
2113 msgstr "调用guix archive"
2114
2115 #. type: menuentry
2116 #: doc/guix.texi:197 doc/guix.texi:2511
2117 msgid "Exporting and importing store files."
2118 msgstr "导出和导入仓库文件。"
2119
2120 #. type: subsection
2121 #: doc/guix.texi:206 doc/guix.texi:3123 doc/guix.texi:3125 doc/guix.texi:3126
2122 #, no-wrap
2123 msgid "Official Substitute Server"
2124 msgstr "官方的substitute服务器"
2125
2126 #. type: menuentry
2127 #: doc/guix.texi:206 doc/guix.texi:3123
2128 msgid "One particular source of substitutes."
2129 msgstr "substitute的一个特殊来源。"
2130
2131 #. type: subsection
2132 #: doc/guix.texi:206 doc/guix.texi:3123 doc/guix.texi:3155 doc/guix.texi:3156
2133 #, no-wrap
2134 msgid "Substitute Server Authorization"
2135 msgstr "授权substitute服务器。"
2136
2137 #. type: menuentry
2138 #: doc/guix.texi:206 doc/guix.texi:3123
2139 msgid "How to enable or disable substitutes."
2140 msgstr "怎么开启或关闭substitute。"
2141
2142 #. type: subsection
2143 #: doc/guix.texi:206 doc/guix.texi:3123 doc/guix.texi:3223 doc/guix.texi:3224
2144 #, no-wrap
2145 msgid "Substitute Authentication"
2146 msgstr "验证substitute"
2147
2148 #. type: menuentry
2149 #: doc/guix.texi:206 doc/guix.texi:3123
2150 msgid "How Guix verifies substitutes."
2151 msgstr "Guix怎样验证substitute。"
2152
2153 #. type: subsection
2154 #: doc/guix.texi:206 doc/guix.texi:3123 doc/guix.texi:3258 doc/guix.texi:3259
2155 #, no-wrap
2156 msgid "Proxy Settings"
2157 msgstr "代理设置"
2158
2159 #. type: menuentry
2160 #: doc/guix.texi:206 doc/guix.texi:3123
2161 msgid "How to get substitutes via proxy."
2162 msgstr "怎样通过代理获取substitute。"
2163
2164 #. type: subsection
2165 #: doc/guix.texi:206 doc/guix.texi:3123 doc/guix.texi:3270 doc/guix.texi:3271
2166 #, no-wrap
2167 msgid "Substitution Failure"
2168 msgstr "substitute失败"
2169
2170 #. type: menuentry
2171 #: doc/guix.texi:206 doc/guix.texi:3123
2172 msgid "What happens when substitution fails."
2173 msgstr "当substitute失败时会发生什么。"
2174
2175 #. type: subsection
2176 #: doc/guix.texi:206 doc/guix.texi:3123 doc/guix.texi:3298 doc/guix.texi:3299
2177 #, no-wrap
2178 msgid "On Trusting Binaries"
2179 msgstr "关于信任二进制文件"
2180
2181 #. type: menuentry
2182 #: doc/guix.texi:206 doc/guix.texi:3123
2183 msgid "How can you trust that binary blob?"
2184 msgstr "你怎么信任二进制块。"
2185
2186 #. type: node
2187 #: doc/guix.texi:211 doc/guix.texi:4348 doc/guix.texi:4350
2188 #, no-wrap
2189 msgid "Invoking guix environment"
2190 msgstr "调用guix environment"
2191
2192 #. type: menuentry
2193 #: doc/guix.texi:211 doc/guix.texi:4348
2194 msgid "Setting up development environments."
2195 msgstr "设置开发环境。"
2196
2197 #. type: node
2198 #: doc/guix.texi:211 doc/guix.texi:4348 doc/guix.texi:4689
2199 #, no-wrap
2200 msgid "Invoking guix pack"
2201 msgstr "调用guix pack"
2202
2203 #. type: menuentry
2204 #: doc/guix.texi:211 doc/guix.texi:4348
2205 msgid "Creating software bundles."
2206 msgstr "创建软件bundle。"
2207
2208 #. type: section
2209 #: doc/guix.texi:222 doc/guix.texi:4992 doc/guix.texi:4994 doc/guix.texi:4995
2210 #, no-wrap
2211 msgid "Package Modules"
2212 msgstr "软件包模块"
2213
2214 #. type: menuentry
2215 #: doc/guix.texi:222 doc/guix.texi:4992
2216 msgid "Packages from the programmer's viewpoint."
2217 msgstr "从程序员的角度看软件包。"
2218
2219 #. type: section
2220 #: doc/guix.texi:222 doc/guix.texi:224 doc/guix.texi:4992 doc/guix.texi:5056
2221 #: doc/guix.texi:5057
2222 #, no-wrap
2223 msgid "Defining Packages"
2224 msgstr "定义软件包"
2225
2226 #. type: menuentry
2227 #: doc/guix.texi:222 doc/guix.texi:4992
2228 msgid "Defining new packages."
2229 msgstr "定义新软件包。"
2230
2231 #. type: section
2232 #: doc/guix.texi:222 doc/guix.texi:4992 doc/guix.texi:5559 doc/guix.texi:5560
2233 #, no-wrap
2234 msgid "Build Systems"
2235 msgstr "构建系统"
2236
2237 #. type: menuentry
2238 #: doc/guix.texi:222 doc/guix.texi:4992
2239 msgid "Specifying how packages are built."
2240 msgstr "指定如何构建软件包。"
2241
2242 #. type: section
2243 #: doc/guix.texi:222 doc/guix.texi:4992 doc/guix.texi:6297 doc/guix.texi:6298
2244 #, no-wrap
2245 msgid "The Store"
2246 msgstr "仓库"
2247
2248 #. type: menuentry
2249 #: doc/guix.texi:222 doc/guix.texi:4992
2250 msgid "Manipulating the package store."
2251 msgstr "操纵软件包仓库。"
2252
2253 #. type: section
2254 #: doc/guix.texi:222 doc/guix.texi:4992 doc/guix.texi:6447 doc/guix.texi:6448
2255 #, no-wrap
2256 msgid "Derivations"
2257 msgstr ""
2258
2259 #. type: menuentry
2260 #: doc/guix.texi:222 doc/guix.texi:4992
2261 msgid "Low-level interface to package derivations."
2262 msgstr "软件包derivation的底层接口。"
2263
2264 #. type: section
2265 #: doc/guix.texi:222 doc/guix.texi:4992 doc/guix.texi:6641 doc/guix.texi:6642
2266 #, no-wrap
2267 msgid "The Store Monad"
2268 msgstr "仓库monad"
2269
2270 #. type: menuentry
2271 #: doc/guix.texi:222 doc/guix.texi:4992
2272 msgid "Purely functional interface to the store."
2273 msgstr "仓库的纯函数式接口。"
2274
2275 #. type: section
2276 #: doc/guix.texi:222 doc/guix.texi:4992 doc/guix.texi:6956 doc/guix.texi:6957
2277 #, no-wrap
2278 msgid "G-Expressions"
2279 msgstr "G-表达式"
2280
2281 #. type: menuentry
2282 #: doc/guix.texi:222 doc/guix.texi:4992
2283 msgid "Manipulating build expressions."
2284 msgstr "操纵构建表达式。"
2285
2286 #. type: node
2287 #: doc/guix.texi:222 doc/guix.texi:4992 doc/guix.texi:7530
2288 #, no-wrap
2289 msgid "Invoking guix repl"
2290 msgstr "调用guix repl"
2291
2292 #. type: menuentry
2293 #: doc/guix.texi:222 doc/guix.texi:4992
2294 msgid "Fiddling with Guix interactively."
2295 msgstr "交互式地操作Guix。"
2296
2297 #. type: node
2298 #: doc/guix.texi:227 doc/guix.texi:5324 doc/guix.texi:5327
2299 #, no-wrap
2300 msgid "package Reference"
2301 msgstr "软件包引用"
2302
2303 #. type: menuentry
2304 #: doc/guix.texi:227 doc/guix.texi:5324
2305 msgid "The package data type."
2306 msgstr "软件包数据类型。"
2307
2308 #. type: node
2309 #: doc/guix.texi:227 doc/guix.texi:5324 doc/guix.texi:5471
2310 #, no-wrap
2311 msgid "origin Reference"
2312 msgstr "origin参考手册"
2313
2314 #. type: menuentry
2315 #: doc/guix.texi:227 doc/guix.texi:5324
2316 msgid "The origin data type."
2317 msgstr "origin数据类型。"
2318
2319 #. type: node
2320 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:7609
2321 #, no-wrap
2322 msgid "Invoking guix build"
2323 msgstr "调用guix build"
2324
2325 #. type: menuentry
2326 #: doc/guix.texi:245 doc/guix.texi:7607
2327 msgid "Building packages from the command line."
2328 msgstr "用命令行构建软件包。"
2329
2330 #. type: node
2331 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:8260
2332 #, no-wrap
2333 msgid "Invoking guix edit"
2334 msgstr "调用guix edit。"
2335
2336 #. type: menuentry
2337 #: doc/guix.texi:245 doc/guix.texi:7607
2338 msgid "Editing package definitions."
2339 msgstr "编辑软件包定义。"
2340
2341 #. type: node
2342 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:8286
2343 #, no-wrap
2344 msgid "Invoking guix download"
2345 msgstr "调用guix download"
2346
2347 #. type: menuentry
2348 #: doc/guix.texi:245 doc/guix.texi:7607
2349 msgid "Downloading a file and printing its hash."
2350 msgstr "下载一个文件并打印它的hash。"
2351
2352 #. type: node
2353 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:8339
2354 #, no-wrap
2355 msgid "Invoking guix hash"
2356 msgstr "调用guix hash"
2357
2358 #. type: menuentry
2359 #: doc/guix.texi:245 doc/guix.texi:7607
2360 msgid "Computing the cryptographic hash of a file."
2361 msgstr "计算一个文件的密码学hash。"
2362
2363 #. type: node
2364 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:8401
2365 #, no-wrap
2366 msgid "Invoking guix import"
2367 msgstr "调用guix import"
2368
2369 #. type: menuentry
2370 #: doc/guix.texi:245 doc/guix.texi:7607
2371 msgid "Importing package definitions."
2372 msgstr "导入软件包定义。"
2373
2374 #. type: node
2375 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:8799
2376 #, no-wrap
2377 msgid "Invoking guix refresh"
2378 msgstr "调用guix refresh"
2379
2380 #. type: menuentry
2381 #: doc/guix.texi:245 doc/guix.texi:7607
2382 msgid "Updating package definitions."
2383 msgstr "更新软件包定义。"
2384
2385 #. type: node
2386 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:9110
2387 #, no-wrap
2388 msgid "Invoking guix lint"
2389 msgstr "调用guix lint"
2390
2391 #. type: menuentry
2392 #: doc/guix.texi:245 doc/guix.texi:7607
2393 msgid "Finding errors in package definitions."
2394 msgstr "从软件包定义里寻找错误。"
2395
2396 #. type: node
2397 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:9226
2398 #, no-wrap
2399 msgid "Invoking guix size"
2400 msgstr "调用guix size"
2401
2402 #. type: menuentry
2403 #: doc/guix.texi:245 doc/guix.texi:7607
2404 msgid "Profiling disk usage."
2405 msgstr "分析硬盘使用情况。"
2406
2407 #. type: node
2408 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:9350
2409 #, no-wrap
2410 msgid "Invoking guix graph"
2411 msgstr "调用guix graph"
2412
2413 #. type: menuentry
2414 #: doc/guix.texi:245 doc/guix.texi:7607
2415 msgid "Visualizing the graph of packages."
2416 msgstr "展示软件包的关系图。"
2417
2418 #. type: node
2419 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:9553
2420 #, no-wrap
2421 msgid "Invoking guix publish"
2422 msgstr "调用guix publish"
2423
2424 #. type: menuentry
2425 #: doc/guix.texi:245 doc/guix.texi:7607
2426 msgid "Sharing substitutes."
2427 msgstr "分享substitute。"
2428
2429 #. type: node
2430 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:9770
2431 #, no-wrap
2432 msgid "Invoking guix challenge"
2433 msgstr "调用guix challenge"
2434
2435 #. type: menuentry
2436 #: doc/guix.texi:245 doc/guix.texi:7607
2437 msgid "Challenging substitute servers."
2438 msgstr "挑战subtitute服务器。"
2439
2440 #. type: node
2441 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:9909
2442 #, no-wrap
2443 msgid "Invoking guix copy"
2444 msgstr "调用guix copy"
2445
2446 #. type: menuentry
2447 #: doc/guix.texi:245 doc/guix.texi:7607
2448 msgid "Copying to and from a remote store."
2449 msgstr "复制到远程的仓库,或从远程的仓库复制。"
2450
2451 #. type: node
2452 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:9972
2453 #, no-wrap
2454 msgid "Invoking guix container"
2455 msgstr "调用guix container"
2456
2457 #. type: menuentry
2458 #: doc/guix.texi:245 doc/guix.texi:7607
2459 msgid "Process isolation."
2460 msgstr "进程隔离。"
2461
2462 #. type: node
2463 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:10026
2464 #, no-wrap
2465 msgid "Invoking guix weather"
2466 msgstr "调用guix weather"
2467
2468 #. type: menuentry
2469 #: doc/guix.texi:245 doc/guix.texi:7607
2470 msgid "Assessing substitute availability."
2471 msgstr "评估substitute的可用性。"
2472
2473 #. type: node
2474 #: doc/guix.texi:245 doc/guix.texi:7607 doc/guix.texi:10137
2475 #, no-wrap
2476 msgid "Invoking guix processes"
2477 msgstr "调用guix processes"
2478
2479 #. type: menuentry
2480 #: doc/guix.texi:245 doc/guix.texi:7607
2481 msgid "Listing client processes."
2482 msgstr "列出客户端进程。"
2483
2484 #. type: section
2485 #: doc/guix.texi:247 doc/guix.texi:7610
2486 #, no-wrap
2487 msgid "Invoking @command{guix build}"
2488 msgstr "调用@command{guix build}"
2489
2490 #. type: subsection
2491 #: doc/guix.texi:252 doc/guix.texi:7661 doc/guix.texi:7663 doc/guix.texi:7664
2492 #, no-wrap
2493 msgid "Common Build Options"
2494 msgstr "普通的构建选项"
2495
2496 #. type: menuentry
2497 #: doc/guix.texi:252 doc/guix.texi:7661
2498 msgid "Build options for most commands."
2499 msgstr "大部分命令的构建选项。"
2500
2501 #. type: subsection
2502 #: doc/guix.texi:252 doc/guix.texi:7661 doc/guix.texi:7819 doc/guix.texi:7820
2503 #, no-wrap
2504 msgid "Package Transformation Options"
2505 msgstr "软件包变换选项。"
2506
2507 #. type: menuentry
2508 #: doc/guix.texi:252 doc/guix.texi:7661
2509 msgid "Creating variants of packages."
2510 msgstr "创建软件包的变体。"
2511
2512 #. type: subsection
2513 #: doc/guix.texi:252 doc/guix.texi:7661 doc/guix.texi:7968 doc/guix.texi:7969
2514 #, no-wrap
2515 msgid "Additional Build Options"
2516 msgstr "额外的构建选项"
2517
2518 #. type: menuentry
2519 #: doc/guix.texi:252 doc/guix.texi:7661
2520 msgid "Options specific to 'guix build'."
2521 msgstr "只属于'guix build'的选项。"
2522
2523 #. type: subsection
2524 #: doc/guix.texi:252 doc/guix.texi:7661 doc/guix.texi:8180 doc/guix.texi:8181
2525 #, no-wrap
2526 msgid "Debugging Build Failures"
2527 msgstr "调试构建错误"
2528
2529 #. type: menuentry
2530 #: doc/guix.texi:252 doc/guix.texi:7661
2531 msgid "Real life packaging experience."
2532 msgstr "真实的打包经验。"
2533
2534 #. type: section
2535 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:10238
2536 #: doc/guix.texi:10239
2537 #, no-wrap
2538 msgid "Using the Configuration System"
2539 msgstr "使用配置系统"
2540
2541 #. type: menuentry
2542 #: doc/guix.texi:271 doc/guix.texi:10236
2543 msgid "Customizing your GNU system."
2544 msgstr "定制你的GNU系统。"
2545
2546 #. type: node
2547 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:10474
2548 #, no-wrap
2549 msgid "operating-system Reference"
2550 msgstr "操作系统参考"
2551
2552 #. type: menuentry
2553 #: doc/guix.texi:271 doc/guix.texi:10236
2554 msgid "Detail of operating-system declarations."
2555 msgstr "操作系统声明详情。"
2556
2557 #. type: section
2558 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:10678
2559 #: doc/guix.texi:10679
2560 #, no-wrap
2561 msgid "File Systems"
2562 msgstr "文件系统"
2563
2564 #. type: menuentry
2565 #: doc/guix.texi:271 doc/guix.texi:10236
2566 msgid "Configuring file system mounts."
2567 msgstr "设置文件系统挂载。"
2568
2569 #. type: section
2570 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:10848
2571 #: doc/guix.texi:10849
2572 #, no-wrap
2573 msgid "Mapped Devices"
2574 msgstr "映射的设备"
2575
2576 #. type: menuentry
2577 #: doc/guix.texi:271 doc/guix.texi:10236
2578 msgid "Block device extra processing."
2579 msgstr "块设备额外的处理。"
2580
2581 #. type: section
2582 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:10969
2583 #: doc/guix.texi:10970
2584 #, no-wrap
2585 msgid "User Accounts"
2586 msgstr "用户帐号"
2587
2588 #. type: menuentry
2589 #: doc/guix.texi:271 doc/guix.texi:10236
2590 msgid "Specifying user accounts."
2591 msgstr "指定用户帐号。"
2592
2593 #. type: section
2594 #: doc/guix.texi:271 doc/guix.texi:2048 doc/guix.texi:10236
2595 #: doc/guix.texi:11122 doc/guix.texi:11123
2596 #, no-wrap
2597 msgid "Keyboard Layout"
2598 msgstr "键盘布局"
2599
2600 #. type: menuentry
2601 #: doc/guix.texi:271 doc/guix.texi:10236
2602 msgid "How the system interprets key strokes."
2603 msgstr "系统怎样理解按键。"
2604
2605 #. type: section
2606 #: doc/guix.texi:271 doc/guix.texi:1570 doc/guix.texi:10236
2607 #: doc/guix.texi:11254 doc/guix.texi:11255
2608 #, no-wrap
2609 msgid "Locales"
2610 msgstr "区域"
2611
2612 #. type: menuentry
2613 #: doc/guix.texi:271 doc/guix.texi:10236
2614 msgid "Language and cultural convention settings."
2615 msgstr "语言和文化惯例设置。"
2616
2617 #. type: section
2618 #: doc/guix.texi:271 doc/guix.texi:273 doc/guix.texi:10236 doc/guix.texi:11394
2619 #: doc/guix.texi:11395
2620 #, no-wrap
2621 msgid "Services"
2622 msgstr "服务"
2623
2624 #. type: menuentry
2625 #: doc/guix.texi:271 doc/guix.texi:10236
2626 msgid "Specifying system services."
2627 msgstr "指定系统服务。"
2628
2629 #. type: section
2630 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:23607
2631 #: doc/guix.texi:23608
2632 #, no-wrap
2633 msgid "Setuid Programs"
2634 msgstr "setuid程序"
2635
2636 #. type: menuentry
2637 #: doc/guix.texi:271 doc/guix.texi:10236
2638 msgid "Programs running with root privileges."
2639 msgstr "以root权限运行的程序。"
2640
2641 #. type: section
2642 #: doc/guix.texi:271 doc/guix.texi:1715 doc/guix.texi:10236
2643 #: doc/guix.texi:23653 doc/guix.texi:23654
2644 #, no-wrap
2645 msgid "X.509 Certificates"
2646 msgstr "X.509证书"
2647
2648 #. type: menuentry
2649 #: doc/guix.texi:271 doc/guix.texi:10236
2650 msgid "Authenticating HTTPS servers."
2651 msgstr "认证HTTPS服务器。"
2652
2653 #. type: section
2654 #: doc/guix.texi:271 doc/guix.texi:1613 doc/guix.texi:10236
2655 #: doc/guix.texi:23716 doc/guix.texi:23717
2656 #, no-wrap
2657 msgid "Name Service Switch"
2658 msgstr "Name Service Switch"
2659
2660 #. type: menuentry
2661 #: doc/guix.texi:271 doc/guix.texi:10236
2662 msgid "Configuring libc's name service switch."
2663 msgstr "设置libc的name service switch。"
2664
2665 #. type: section
2666 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:23854
2667 #: doc/guix.texi:23855
2668 #, no-wrap
2669 msgid "Initial RAM Disk"
2670 msgstr "初始的内存虚拟硬盘"
2671
2672 #. type: menuentry
2673 #: doc/guix.texi:271 doc/guix.texi:10236
2674 msgid "Linux-Libre bootstrapping."
2675 msgstr "Linux-Libre引导。"
2676
2677 #. type: section
2678 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:24028
2679 #: doc/guix.texi:24029
2680 #, no-wrap
2681 msgid "Bootloader Configuration"
2682 msgstr "引导设置"
2683
2684 #. type: menuentry
2685 #: doc/guix.texi:271 doc/guix.texi:10236
2686 msgid "Configuring the boot loader."
2687 msgstr "设置引导程序。"
2688
2689 #. type: node
2690 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:24225
2691 #, no-wrap
2692 msgid "Invoking guix system"
2693 msgstr "调用guix system"
2694
2695 #. type: menuentry
2696 #: doc/guix.texi:271 doc/guix.texi:10236
2697 msgid "Instantiating a system configuration."
2698 msgstr "实例化一个系统配置。"
2699
2700 #. type: node
2701 #: doc/guix.texi:271 doc/guix.texi:10236 doc/guix.texi:24680
2702 #, no-wrap
2703 msgid "Running Guix in a VM"
2704 msgstr "在虚拟机里运行Guix"
2705
2706 #. type: menuentry
2707 #: doc/guix.texi:271 doc/guix.texi:10236
2708 msgid "How to run Guix System in a virtual machine."
2709 msgstr "怎样在虚拟机里运行Guix。"
2710
2711 #. type: section
2712 #: doc/guix.texi:271 doc/guix.texi:302 doc/guix.texi:10236 doc/guix.texi:24810
2713 #: doc/guix.texi:24811
2714 #, no-wrap
2715 msgid "Defining Services"
2716 msgstr "定义服务"
2717
2718 #. type: menuentry
2719 #: doc/guix.texi:271 doc/guix.texi:10236
2720 msgid "Adding new service definitions."
2721 msgstr "添加新的服务定义。"
2722
2723 #. type: subsection
2724 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:11473
2725 #: doc/guix.texi:11474
2726 #, no-wrap
2727 msgid "Base Services"
2728 msgstr "基础服务"
2729
2730 #. type: menuentry
2731 #: doc/guix.texi:300 doc/guix.texi:11471
2732 msgid "Essential system services."
2733 msgstr "必要的系统服务。"
2734
2735 #. type: subsection
2736 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:12266
2737 #: doc/guix.texi:12267
2738 #, no-wrap
2739 msgid "Scheduled Job Execution"
2740 msgstr "执行计划任务"
2741
2742 #. type: menuentry
2743 #: doc/guix.texi:300 doc/guix.texi:11471
2744 msgid "The mcron service."
2745 msgstr "mcron服务。"
2746
2747 #. type: subsection
2748 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:12367
2749 #: doc/guix.texi:12368
2750 #, no-wrap
2751 msgid "Log Rotation"
2752 msgstr "日志轮替"
2753
2754 #. type: menuentry
2755 #: doc/guix.texi:300 doc/guix.texi:11471
2756 msgid "The rottlog service."
2757 msgstr "rottlog服务。"
2758
2759 #. type: subsection
2760 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:12469
2761 #: doc/guix.texi:12470
2762 #, no-wrap
2763 msgid "Networking Services"
2764 msgstr "网络服务"
2765
2766 #. type: menuentry
2767 #: doc/guix.texi:300 doc/guix.texi:11471
2768 msgid "Network setup, SSH daemon, etc."
2769 msgstr "网络设置,SSH后台进程,等"
2770
2771 #. type: subsection
2772 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:13415
2773 #: doc/guix.texi:13416
2774 #, no-wrap
2775 msgid "X Window"
2776 msgstr "X窗口"
2777
2778 #. type: menuentry
2779 #: doc/guix.texi:300 doc/guix.texi:11471
2780 msgid "Graphical display."
2781 msgstr "图形显示器。"
2782
2783 #. type: subsection
2784 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:13762
2785 #: doc/guix.texi:13763
2786 #, no-wrap
2787 msgid "Printing Services"
2788 msgstr "打印服务"
2789
2790 #. type: menuentry
2791 #: doc/guix.texi:300 doc/guix.texi:11471
2792 msgid "Local and remote printer support."
2793 msgstr "本地和远程打印机的支持。"
2794
2795 #. type: subsection
2796 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:14603
2797 #: doc/guix.texi:14604
2798 #, no-wrap
2799 msgid "Desktop Services"
2800 msgstr "桌面服务"
2801
2802 #. type: menuentry
2803 #: doc/guix.texi:300 doc/guix.texi:11471
2804 msgid "D-Bus and desktop services."
2805 msgstr "D-Bus和桌面服务。"
2806
2807 #. type: subsection
2808 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:15004
2809 #: doc/guix.texi:15005
2810 #, no-wrap
2811 msgid "Sound Services"
2812 msgstr "声音服务"
2813
2814 #. type: menuentry
2815 #: doc/guix.texi:300 doc/guix.texi:11471
2816 msgid "ALSA and Pulseaudio services."
2817 msgstr "ALSA和Pulseaudio服务。"
2818
2819 #. type: subsection
2820 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:15085
2821 #: doc/guix.texi:15086
2822 #, no-wrap
2823 msgid "Database Services"
2824 msgstr "数据库服务"
2825
2826 #. type: menuentry
2827 #: doc/guix.texi:300 doc/guix.texi:11471
2828 msgid "SQL databases, key-value stores, etc."
2829 msgstr "SQL数据库,键值仓库,等"
2830
2831 #. type: subsection
2832 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:15245
2833 #: doc/guix.texi:15246
2834 #, no-wrap
2835 msgid "Mail Services"
2836 msgstr "邮件服务"
2837
2838 #. type: menuentry
2839 #: doc/guix.texi:300 doc/guix.texi:11471
2840 msgid "IMAP, POP3, SMTP, and all that."
2841 msgstr "IMAP,POP3,SMTP,等"
2842
2843 #. type: subsection
2844 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:16746
2845 #: doc/guix.texi:16747
2846 #, no-wrap
2847 msgid "Messaging Services"
2848 msgstr "消息服务"
2849
2850 #. type: menuentry
2851 #: doc/guix.texi:300 doc/guix.texi:11471
2852 msgid "Messaging services."
2853 msgstr "消息服务。"
2854
2855 #. type: subsection
2856 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:17248
2857 #: doc/guix.texi:17249
2858 #, no-wrap
2859 msgid "Telephony Services"
2860 msgstr "电话服务"
2861
2862 #. type: menuentry
2863 #: doc/guix.texi:300 doc/guix.texi:11471
2864 msgid "Telephony services."
2865 msgstr "电话服务。"
2866
2867 #. type: subsection
2868 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:17453
2869 #: doc/guix.texi:17454
2870 #, no-wrap
2871 msgid "Monitoring Services"
2872 msgstr "监控服务"
2873
2874 #. type: menuentry
2875 #: doc/guix.texi:300 doc/guix.texi:11471
2876 msgid "Monitoring services."
2877 msgstr "监控服务。"
2878
2879 #. type: subsection
2880 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:17958
2881 #: doc/guix.texi:17959
2882 #, no-wrap
2883 msgid "Kerberos Services"
2884 msgstr "Kerberos服务"
2885
2886 #. type: menuentry
2887 #: doc/guix.texi:300 doc/guix.texi:11471
2888 msgid "Kerberos services."
2889 msgstr "Kerberos服务。"
2890
2891 #. type: subsection
2892 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:18562
2893 #: doc/guix.texi:18563
2894 #, no-wrap
2895 msgid "Web Services"
2896 msgstr "Web服务"
2897
2898 #. type: menuentry
2899 #: doc/guix.texi:300 doc/guix.texi:11471
2900 msgid "Web servers."
2901 msgstr "Web服务。"
2902
2903 #. type: subsection
2904 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:19363
2905 #: doc/guix.texi:19364
2906 #, no-wrap
2907 msgid "Certificate Services"
2908 msgstr "证书服务"
2909
2910 #. type: menuentry
2911 #: doc/guix.texi:300 doc/guix.texi:11471
2912 msgid "TLS certificates via Let's Encrypt."
2913 msgstr "Let's Encrypt TLS证书。"
2914
2915 #. type: subsection
2916 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:19529
2917 #: doc/guix.texi:19530
2918 #, no-wrap
2919 msgid "DNS Services"
2920 msgstr "DNS服务"
2921
2922 #. type: menuentry
2923 #: doc/guix.texi:300 doc/guix.texi:11471
2924 msgid "DNS daemons."
2925 msgstr "DNS后台进程。"
2926
2927 #. type: subsection
2928 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:20150
2929 #: doc/guix.texi:20151
2930 #, no-wrap
2931 msgid "VPN Services"
2932 msgstr "VPN服务"
2933
2934 #. type: menuentry
2935 #: doc/guix.texi:300 doc/guix.texi:11471
2936 msgid "VPN daemons."
2937 msgstr "VPN后台进程。"
2938
2939 #. type: subsection
2940 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:20508
2941 #: doc/guix.texi:20509
2942 #, no-wrap
2943 msgid "Network File System"
2944 msgstr "网络文件系统"
2945
2946 #. type: menuentry
2947 #: doc/guix.texi:300 doc/guix.texi:11471
2948 msgid "NFS related services."
2949 msgstr "网络文件系统相关的服务。"
2950
2951 #. type: subsection
2952 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:20623
2953 #: doc/guix.texi:20624
2954 #, no-wrap
2955 msgid "Continuous Integration"
2956 msgstr "持续集成"
2957
2958 #. type: menuentry
2959 #: doc/guix.texi:300 doc/guix.texi:11471
2960 msgid "The Cuirass service."
2961 msgstr "Cuirass服务。"
2962
2963 #. type: subsection
2964 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:20740
2965 #: doc/guix.texi:20741
2966 #, no-wrap
2967 msgid "Power Management Services"
2968 msgstr "电源管理服务"
2969
2970 #. type: menuentry
2971 #: doc/guix.texi:300 doc/guix.texi:11471
2972 msgid "Extending battery life."
2973 msgstr "延长电池寿命。"
2974
2975 #. type: subsection
2976 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:21274
2977 #: doc/guix.texi:21275
2978 #, no-wrap
2979 msgid "Audio Services"
2980 msgstr "音频服务"
2981
2982 #. type: menuentry
2983 #: doc/guix.texi:300 doc/guix.texi:11471
2984 msgid "The MPD."
2985 msgstr "MPD。"
2986
2987 #. type: node
2988 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:21333
2989 #, no-wrap
2990 msgid "Virtualization Services"
2991 msgstr "虚拟化服务"
2992
2993 #. type: menuentry
2994 #: doc/guix.texi:300 doc/guix.texi:11471
2995 msgid "Virtualization services."
2996 msgstr "虚拟化服务。"
2997
2998 #. type: subsection
2999 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:22126
3000 #: doc/guix.texi:22127
3001 #, no-wrap
3002 msgid "Version Control Services"
3003 msgstr "版本控制服务"
3004
3005 #. type: menuentry
3006 #: doc/guix.texi:300 doc/guix.texi:11471
3007 msgid "Providing remote access to Git repositories."
3008 msgstr "远程访问Git仓库。"
3009
3010 #. type: subsection
3011 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:23314
3012 #: doc/guix.texi:23315
3013 #, no-wrap
3014 msgid "Game Services"
3015 msgstr "游戏服务"
3016
3017 #. type: menuentry
3018 #: doc/guix.texi:300 doc/guix.texi:11471
3019 msgid "Game servers."
3020 msgstr "游戏服务器。"
3021
3022 #. type: subsection
3023 #: doc/guix.texi:300 doc/guix.texi:11471 doc/guix.texi:23345
3024 #: doc/guix.texi:23346
3025 #, no-wrap
3026 msgid "Miscellaneous Services"
3027 msgstr "其它各种服务"
3028
3029 #. type: menuentry
3030 #: doc/guix.texi:300 doc/guix.texi:11471
3031 msgid "Other services."
3032 msgstr "其它服务。"
3033
3034 #. type: subsection
3035 #: doc/guix.texi:307 doc/guix.texi:24822 doc/guix.texi:24824
3036 #: doc/guix.texi:24825
3037 #, no-wrap
3038 msgid "Service Composition"
3039 msgstr "合成服务"
3040
3041 #. type: menuentry
3042 #: doc/guix.texi:307 doc/guix.texi:24822
3043 msgid "The model for composing services."
3044 msgstr "服务合成的模型。"
3045
3046 #. type: subsection
3047 #: doc/guix.texi:307 doc/guix.texi:24822 doc/guix.texi:24880
3048 #: doc/guix.texi:24881
3049 #, no-wrap
3050 msgid "Service Types and Services"
3051 msgstr "服务类型和服务"
3052
3053 #. type: menuentry
3054 #: doc/guix.texi:307 doc/guix.texi:24822
3055 msgid "Types and services."
3056 msgstr "类型和服务。"
3057
3058 #. type: subsection
3059 #: doc/guix.texi:307 doc/guix.texi:24822 doc/guix.texi:25017
3060 #: doc/guix.texi:25018
3061 #, no-wrap
3062 msgid "Service Reference"
3063 msgstr "服务参考"
3064
3065 #. type: menuentry
3066 #: doc/guix.texi:307 doc/guix.texi:24822
3067 msgid "API reference."
3068 msgstr "API参考。"
3069
3070 #. type: subsection
3071 #: doc/guix.texi:307 doc/guix.texi:24822 doc/guix.texi:25242
3072 #: doc/guix.texi:25243
3073 #, no-wrap
3074 msgid "Shepherd Services"
3075 msgstr "Shepherd服务"
3076
3077 #. type: menuentry
3078 #: doc/guix.texi:307 doc/guix.texi:24822
3079 msgid "A particular type of service."
3080 msgstr "一种特别的服务。"
3081
3082 #. type: cindex
3083 #: doc/guix.texi:315
3084 #, no-wrap
3085 msgid "purpose"
3086 msgstr "目的"
3087
3088 #. type: Plain text
3089 #: doc/guix.texi:323
3090 msgid "GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks'' using the international phonetic alphabet (IPA).} is a package management tool for and distribution of the GNU system. Guix makes it easy for unprivileged users to install, upgrade, or remove software packages, to roll back to a previous package set, to build packages from source, and generally assists with the creation and maintenance of software environments."
3091 msgstr "GNU Guix@footnote{``Guix''读做``geeks'',或``ɡiːks''(国际音标)}是GNU系统的包管理器和发行版。Guix让无特权的用户可以轻松地安装,升级,或删除软件包,回滚到前一个软件包集合,从源代码构建软件包,及辅助软件环境的创建和维护。"
3092
3093 #. type: cindex
3094 #: doc/guix.texi:324 doc/guix.texi:399
3095 #, no-wrap
3096 msgid "Guix System"
3097 msgstr "Guix系统"
3098
3099 #. type: cindex
3100 #: doc/guix.texi:325
3101 #, no-wrap
3102 msgid "GuixSD, now Guix System"
3103 msgstr "GuixSD,现在称为Guix系统"
3104
3105 #. type: cindex
3106 #: doc/guix.texi:326
3107 #, no-wrap
3108 msgid "Guix System Distribution, now Guix System"
3109 msgstr "Guix系统发行版,现在称为Guix系统"
3110
3111 #. type: Plain text
3112 #: doc/guix.texi:335
3113 msgid "You can install GNU@tie{}Guix on top of an existing GNU/Linux system where it complements the available tools without interference (@pxref{Installation}), or you can use it as a standalone operating system distribution, @dfn{Guix@tie{}System}@footnote{We used to refer to Guix System as ``Guix System Distribution'' or ``GuixSD''. We now consider it makes more sense to group everything under the ``Guix'' banner since, after all, Guix System is readily available through the @command{guix system} command, even if you're using a different distro underneath!}. @xref{GNU Distribution}."
3114 msgstr "你可以在现有的GNU/Linux发行版上安装GNU@tie{}Guix(@pxref{Installation}),Guix可以补充已有的工具,并且不会和它们产生冲突。或者你可以把它当作独立的操作系统发行版(@dfn{Guix@tie{}系统}@footnote{我们以前把Guix系统称为``Guix系统发行版''或``GuixSD''。我们现在觉得把一切都统一在``Guix''的旗帜下更合理,因为,毕竟即使在别的发行版上你也可以随时通过@command{guix system}命令获得Guix系统})。@xref{GNU Distribution}."
3115
3116 #. type: cindex
3117 #: doc/guix.texi:344
3118 #, no-wrap
3119 msgid "user interfaces"
3120 msgstr "用户界面"
3121
3122 #. type: Plain text
3123 #: doc/guix.texi:350
3124 msgid "Guix provides a command-line package management interface (@pxref{Package Management}), tools to help with software development (@pxref{Development}), command-line utilities for more advanced usage, (@pxref{Utilities}), as well as Scheme programming interfaces (@pxref{Programming Interface})."
3125 msgstr "Guix提供了命令行软件包管理接口(@pxref{Package Management}),辅助软件开发的工具(@pxref{Development}),高级用法的命令行接口(@pxref{Utilities}),以及Scheme编程语言接口(@pxref{Programming Interface})。"
3126
3127 #. type: cindex
3128 #: doc/guix.texi:350
3129 #, no-wrap
3130 msgid "build daemon"
3131 msgstr "构建后台进程"
3132
3133 #. type: Plain text
3134 #: doc/guix.texi:354
3135 msgid "Its @dfn{build daemon} is responsible for building packages on behalf of users (@pxref{Setting Up the Daemon}) and for downloading pre-built binaries from authorized sources (@pxref{Substitutes})."
3136 msgstr "@dfn{构建后台进程}为用户构建软件包(@pxref{Setting Up the Daemon}),及从授权的源(@pxref{Substitutes})下载预构建的二进制文件。"
3137
3138 #. type: cindex
3139 #: doc/guix.texi:355
3140 #, no-wrap
3141 msgid "extensibility of the distribution"
3142 msgstr "发行版的扩展性"
3143
3144 #. type: cindex
3145 #: doc/guix.texi:356 doc/guix.texi:5016
3146 #, no-wrap
3147 msgid "customization, of packages"
3148 msgstr "定制软件包"
3149
3150 #. type: Plain text
3151 #: doc/guix.texi:365
3152 msgid "Guix includes package definitions for many GNU and non-GNU packages, all of which @uref{https://www.gnu.org/philosophy/free-sw.html, respect the user's computing freedom}. It is @emph{extensible}: users can write their own package definitions (@pxref{Defining Packages}) and make them available as independent package modules (@pxref{Package Modules}). It is also @emph{customizable}: users can @emph{derive} specialized package definitions from existing ones, including from the command line (@pxref{Package Transformation Options})."
3153 msgstr "Guix包含很多GNU和非GNU的软件包定义,所有的这些软件包都@uref{https://www.gnu.org/philosophy/free-sw.html, 尊重用户的自由}。它是@emph{可扩展的}:用户可以编写自己的软件包定义(@pxref{Defining Packages}),并且把它们作为独立的软件包模块@pxref{Package Modules}。它也是@emph{可定制的}:用户可以从现有的软件包定义衍生出特殊的软件包,包括从命令行(@pxref{Package Transformation Options})。"
3154
3155 #. type: cindex
3156 #: doc/guix.texi:366
3157 #, no-wrap
3158 msgid "functional package management"
3159 msgstr "函数式包管理器"
3160
3161 #. type: cindex
3162 #: doc/guix.texi:367
3163 #, no-wrap
3164 msgid "isolation"
3165 msgstr "隔离"
3166
3167 #. type: Plain text
3168 #: doc/guix.texi:382
3169 msgid "Under the hood, Guix implements the @dfn{functional package management} discipline pioneered by Nix (@pxref{Acknowledgments}). In Guix, the package build and installation process is seen as a @emph{function}, in the mathematical sense. That function takes inputs, such as build scripts, a compiler, and libraries, and returns an installed package. As a pure function, its result depends solely on its inputs---for instance, it cannot refer to software or scripts that were not explicitly passed as inputs. A build function always produces the same result when passed a given set of inputs. It cannot alter the environment of the running system in any way; for instance, it cannot create, modify, or delete files outside of its build and installation directories. This is achieved by running build processes in isolated environments (or @dfn{containers}), where only their explicit inputs are visible."
3170 msgstr "在底层,Guix实现了由Nix(@pxref{Acknowledgments})开创的@dfn{函数式包管理器}。在Guix里,软件包构建和安装过程被视为数学意义上的@emph{函数}。函数获取输入,如构建脚本、编译器和库,并且返回一个安装好的软件包。作为一个纯函数,它的结果只取决于它的输入--例如,它不能引用没有作为显式输入传入的软件和脚本。当传入特定的输入时,一个构建函数总是得到相同的结果。它不能以任何方式修改运行系统的环境,例如,它不能创建,修改,或删除构建和安装环境之外的文件夹。这是通过在隔离的环境(@dfn{容器})里运行构建进程实现的,在这个环境里只能访问到显式的输入。"
3171
3172 #. type: cindex
3173 #: doc/guix.texi:383 doc/guix.texi:6300
3174 #, no-wrap
3175 msgid "store"
3176 msgstr "仓库"
3177
3178 #. type: Plain text
3179 #: doc/guix.texi:390
3180 msgid "The result of package build functions is @dfn{cached} in the file system, in a special directory called @dfn{the store} (@pxref{The Store}). Each package is installed in a directory of its own in the store---by default under @file{/gnu/store}. The directory name contains a hash of all the inputs used to build that package; thus, changing an input yields a different directory name."
3181 msgstr "软件包构建函数的结果被@dfn{缓存}在文件系统里的一个叫做@dfn{仓库}(@pxref{The Store})的特殊文件夹内。每个软件包都被安装在仓库(默认在@file{/gnu/store})里的一个独立的文件夹内。这个文件夹的名字含有用于构建这个软件包的所有输入的hash,所以,修改输入会得到一个不同的文件夹名。"
3182
3183 #. type: Plain text
3184 #: doc/guix.texi:394
3185 msgid "This approach is the foundation for the salient features of Guix: support for transactional package upgrade and rollback, per-user installation, and garbage collection of packages (@pxref{Features})."
3186 msgstr "这种手段是实现Guix的突出功能的基础:对事务型软件包升级和回滚的支持,每个用户独立的安装,软件包垃圾回收@pxref{Features}。"
3187
3188 #. type: Plain text
3189 #: doc/guix.texi:409
3190 msgid "Guix comes with a distribution of the GNU system consisting entirely of free software@footnote{The term ``free'' here refers to the @url{https://www.gnu.org/philosophy/free-sw.html,freedom provided to users of that software}.}. The distribution can be installed on its own (@pxref{System Installation}), but it is also possible to install Guix as a package manager on top of an installed GNU/Linux system (@pxref{Installation}). When we need to distinguish between the two, we refer to the standalone distribution as Guix@tie{}System."
3191 msgstr "Guix提供了一个GNU系统发行版,这个发新版只包含自由软件@footnote{这里的“自由”指的是@url{https://www.gnu.org/philosophy/free-sw.html,软件提供给用户的自由}。}。这个发行版可以独立安装(@pxref{System Installation}),但是把Guix安装为一个已经安装好的GNU/Linux系统的包管理器也是可行的(@pxref{Installation})。当我们需要区分这两者时,我们把独立的发行版称为“Guix系统”。"
3192
3193 #. type: Plain text
3194 #: doc/guix.texi:415
3195 msgid "The distribution provides core GNU packages such as GNU libc, GCC, and Binutils, as well as many GNU and non-GNU applications. The complete list of available packages can be browsed @url{https://www.gnu.org/software/guix/packages,on-line} or by running @command{guix package} (@pxref{Invoking guix package}):"
3196 msgstr "这个发行版提供了GNU核心软件包,如libc、gcc和Binutils,以及很多GNU和非GNU应用程序。可用的软件包的完整列表可以在@url{https://www.gnu.org/software/guix/packages,on-line}浏览,或者通过运行@command{guix package}(@pxref{Invoking guix package})获得:"
3197
3198 #. type: example
3199 #: doc/guix.texi:418
3200 #, no-wrap
3201 msgid "guix package --list-available\n"
3202 msgstr "guix package --list-available\n"
3203
3204 #. type: Plain text
3205 #: doc/guix.texi:424
3206 msgid "Our goal is to provide a practical 100% free software distribution of Linux-based and other variants of GNU, with a focus on the promotion and tight integration of GNU components, and an emphasis on programs and tools that help users exert that freedom."
3207 msgstr "我们的目标是提供一个基于Linux和其它GNU变体的可用的100%自由的软件发行版,我们的重点是推广和紧密集成GNU组件,以及强调帮助用户行使那些自由的程序和工具。"
3208
3209 #. type: Plain text
3210 #: doc/guix.texi:426
3211 msgid "Packages are currently available on the following platforms:"
3212 msgstr "目前这些平台提供软件包:"
3213
3214 #. type: item
3215 #: doc/guix.texi:429 doc/guix.texi:1877
3216 #, no-wrap
3217 msgid "x86_64-linux"
3218 msgstr "x86_64-linux"
3219
3220 #. type: table
3221 #: doc/guix.texi:431
3222 msgid "Intel/AMD @code{x86_64} architecture, Linux-Libre kernel;"
3223 msgstr "Intel/AMD @code{x86_64}架构,Linux-Libre内核;"
3224
3225 #. type: item
3226 #: doc/guix.texi:432 doc/guix.texi:1880
3227 #, no-wrap
3228 msgid "i686-linux"
3229 msgstr "i686-linux"
3230
3231 #. type: table
3232 #: doc/guix.texi:434
3233 msgid "Intel 32-bit architecture (IA32), Linux-Libre kernel;"
3234 msgstr "Intel 32位架构(IA32),Linux-Libre内核;"
3235
3236 #. type: item
3237 #: doc/guix.texi:435
3238 #, no-wrap
3239 msgid "armhf-linux"
3240 msgstr "armhf-linux"
3241
3242 #. type: table
3243 #: doc/guix.texi:439
3244 msgid "ARMv7-A architecture with hard float, Thumb-2 and NEON, using the EABI hard-float application binary interface (ABI), and Linux-Libre kernel."
3245 msgstr "ARMv7-A架构,带硬件浮点数、Thumb-2和NEON扩展,EABI硬件浮点数应用二进制接口(ABI),和Linux-Libre内核。"
3246
3247 #. type: item
3248 #: doc/guix.texi:440
3249 #, no-wrap
3250 msgid "aarch64-linux"
3251 msgstr "aarch64-linux"
3252
3253 #. type: table
3254 #: doc/guix.texi:444
3255 msgid "little-endian 64-bit ARMv8-A processors, Linux-Libre kernel. This is currently in an experimental stage, with limited support. @xref{Contributing}, for how to help!"
3256 msgstr "小端序64位ARMv8-A处理器,Linux-Libre内核。目前处于实验阶段,支持有限。@xref{Contributing},提供帮助!"
3257
3258 #. type: item
3259 #: doc/guix.texi:445
3260 #, no-wrap
3261 msgid "mips64el-linux"
3262 msgstr "mips64el-linux"
3263
3264 #. type: table
3265 #: doc/guix.texi:448
3266 msgid "little-endian 64-bit MIPS processors, specifically the Loongson series, n32 ABI, and Linux-Libre kernel."
3267 msgstr "小端序64位MIPS处理器,龙芯系列,n32 ABI,Linux-Libre内核。"
3268
3269 #. type: Plain text
3270 #: doc/guix.texi:458
3271 msgid "With Guix@tie{}System, you @emph{declare} all aspects of the operating system configuration and Guix takes care of instantiating the configuration in a transactional, reproducible, and stateless fashion (@pxref{System Configuration}). Guix System uses the Linux-libre kernel, the Shepherd initialization system (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}), the well-known GNU utilities and tool chain, as well as the graphical environment or system services of your choice."
3272 msgstr "在Guix系统里,你@emph{声明}操作系统所有方面的配置,然后Guix以事务型的,可重复的,和无状态的方式解决实例化配置的问题(@pxref{System Configuration})。Guix系统使用Linux-Libre内核,Shepherd初始化系统@pxref{Introduction,,, shepherd, GNU Shepherd用户手册},知名的GNU工具和工具链,以及你可选的图形界面环境和系统服务。"
3273
3274 #. type: Plain text
3275 #: doc/guix.texi:461
3276 msgid "Guix System is available on all the above platforms except @code{mips64el-linux}."
3277 msgstr "Guix系统在上面所有的平台上都可用,除了@code{mips64el-linux}。"
3278
3279 #. type: Plain text
3280 #: doc/guix.texi:465
3281 msgid "For information on porting to other architectures or kernels, @pxref{Porting}."
3282 msgstr "关于移植到其它架构或内核的信息,@pxref{Porting}。"
3283
3284 #. type: Plain text
3285 #: doc/guix.texi:468
3286 msgid "Building this distribution is a cooperative effort, and you are invited to join! @xref{Contributing}, for information about how you can help."
3287 msgstr "构建这个发行版需要努力合作,欢迎你加入!关于你可以怎样提供帮助的信息,@xref{Contributing}。"
3288
3289 #. type: cindex
3290 #: doc/guix.texi:474
3291 #, no-wrap
3292 msgid "installing Guix"
3293 msgstr "安装Guix"
3294
3295 #. type: quotation
3296 #: doc/guix.texi:476 doc/guix.texi:524 doc/guix.texi:1548 doc/guix.texi:1779
3297 #: doc/guix.texi:1984 doc/guix.texi:2186 doc/guix.texi:2381 doc/guix.texi:3180
3298 #: doc/guix.texi:3960 doc/guix.texi:4176 doc/guix.texi:4465 doc/guix.texi:4697
3299 #: doc/guix.texi:4844 doc/guix.texi:6319 doc/guix.texi:6387 doc/guix.texi:8073
3300 #: doc/guix.texi:8085 doc/guix.texi:9976 doc/guix.texi:10513
3301 #: doc/guix.texi:11062 doc/guix.texi:13544 doc/guix.texi:19352
3302 #: doc/guix.texi:24107 doc/guix.texi:24302 doc/guix.texi:24421
3303 #: doc/guix.texi:24536 doc/guix.texi:25545
3304 #, no-wrap
3305 msgid "Note"
3306 msgstr "注"
3307
3308 #. type: quotation
3309 #: doc/guix.texi:486
3310 msgid "We recommend the use of this @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell installer script} to install Guix on top of a running GNU/Linux system, thereafter called a @dfn{foreign distro}.@footnote{This section is concerned with the installation of the package manager, which can be done on top of a running GNU/Linux system. If, instead, you want to install the complete GNU operating system, @pxref{System Installation}.} The script automates the download, installation, and initial configuration of Guix. It should be run as the root user."
3311 msgstr "我们推荐使用@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell安装脚本}在已有的GNU/Linux系统(即@dfn{foreign distro})上安装Guix。@footnote{这个小节是关于安装包管理器的,可以在GNU/Linux系统上完成。如果你想安装完整的GNU操作系统,@pxref{System Installation}。}这个脚本自动下载、安装并且初始化Guix,它需要以root用户身份运行。"
3312
3313 #. type: cindex
3314 #: doc/guix.texi:488 doc/guix.texi:1565
3315 #, no-wrap
3316 msgid "foreign distro"
3317 msgstr "别的发行版"
3318
3319 #. type: cindex
3320 #: doc/guix.texi:489
3321 #, no-wrap
3322 msgid "directories related to foreign distro"
3323 msgstr "和foreign distro相关的文件夹"
3324
3325 #. type: Plain text
3326 #: doc/guix.texi:494
3327 msgid "When installed on a foreign distro, GNU@tie{}Guix complements the available tools without interference. Its data lives exclusively in two directories, usually @file{/gnu/store} and @file{/var/guix}; other files on your system, such as @file{/etc}, are left untouched."
3328 msgstr "在foreign distro上安装时,GNU@tie{}Guix可以在不引起冲突的前提下补充现有的工具。它的数据只存放在两个文件夹里,通常是@file{/gnu/store}和@file{/var/guix};系统上的其它文件,如@file{/etc},不会被修改。"
3329
3330 #. type: Plain text
3331 #: doc/guix.texi:497
3332 msgid "Once installed, Guix can be updated by running @command{guix pull} (@pxref{Invoking guix pull})."
3333 msgstr "一旦安装好了,可以通过运行@command{guix pull}升级Guix(@pxref{Invoking guix pull})。"
3334
3335 #. type: Plain text
3336 #: doc/guix.texi:502
3337 msgid "If you prefer to perform the installation steps manually or want to tweak them, you may find the following subsections useful. They describe the software requirements of Guix, as well as how to install it manually and get ready to use it."
3338 msgstr "如果你希望手动执行安装步骤,或者想改变安装步骤,接下来这些小节会很有用。它们介绍Guix的软件依赖,以及如何手动安装和使用Guix。"
3339
3340 #. type: cindex
3341 #: doc/guix.texi:515
3342 #, no-wrap
3343 msgid "installing Guix from binaries"
3344 msgstr "用二进制文件安装Guix"
3345
3346 #. type: cindex
3347 #: doc/guix.texi:516
3348 #, no-wrap
3349 msgid "installer script"
3350 msgstr "安装脚本"
3351
3352 #. type: Plain text
3353 #: doc/guix.texi:522
3354 msgid "This section describes how to install Guix on an arbitrary system from a self-contained tarball providing binaries for Guix and for all its dependencies. This is often quicker than installing from source, which is described in the next sections. The only requirement is to have GNU@tie{}tar and Xz."
3355 msgstr "这个小节介绍如何在任意的系统上用独立的Guix二进制文件包安装Guix和它的依赖。这通常比从源代码安装更快,下一小节会介绍如何从源代码安装。唯一的需求是有GNU@tie{}tar和Xz。"
3356
3357 #. type: quotation
3358 #: doc/guix.texi:530
3359 msgid "We recommend the use of this @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell installer script}. The script automates the download, installation, and initial configuration steps described below. It should be run as the root user."
3360 msgstr "我们推荐使用这个@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell安装脚本}。这个脚本自动执行下述的下载、安装并且初始化Guix的过程。它需要以root用户身份运行。"
3361
3362 #. type: Plain text
3363 #: doc/guix.texi:533
3364 msgid "Installing goes along these lines:"
3365 msgstr "安装步骤如下:"
3366
3367 #. type: cindex
3368 #: doc/guix.texi:536
3369 #, no-wrap
3370 msgid "downloading Guix binary"
3371 msgstr "下载Guix二进制文件"
3372
3373 #. type: enumerate
3374 #: doc/guix.texi:541
3375 msgid "Download the binary tarball from @indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.@var{system}.tar.xz}, where @var{system} is @code{x86_64-linux} for an @code{x86_64} machine already running the kernel Linux, and so on."
3376 msgstr "从@indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.@var{系统}.tar.xz}下载二进制安装包,对于运行Linux内核的@code{x86_64}机器来说@var{系统}是@code{x86_64-linux},以此类推。"
3377
3378 #. type: enumerate
3379 #: doc/guix.texi:545
3380 msgid "Make sure to download the associated @file{.sig} file and to verify the authenticity of the tarball against it, along these lines:"
3381 msgstr "请确保下载相关的@file{.sig}文件,并且用它验证文件包的可靠性,方法如下:"
3382
3383 #. type: example
3384 #: doc/guix.texi:549
3385 #, no-wrap
3386 msgid ""
3387 "$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.@var{system}.tar.xz.sig\n"
3388 "$ gpg --verify guix-binary-@value{VERSION}.@var{system}.tar.xz.sig\n"
3389 msgstr ""
3390 "$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.@var{系统}.tar.xz.sig\n"
3391 "$ gpg --verify guix-binary-@value{VERSION}.@var{系统}.tar.xz.sig\n"
3392
3393 #. type: Plain text
3394 #: doc/guix.texi:553 doc/guix.texi:1895
3395 msgid "If that command fails because you do not have the required public key, then run this command to import it:"
3396 msgstr "如果那个命令因为缺少所需的公钥而失败了,那么用这个命令导入它:"
3397
3398 #. type: example
3399 #: doc/guix.texi:557 doc/guix.texi:1899
3400 #, no-wrap
3401 msgid ""
3402 "$ gpg --keyserver @value{KEY-SERVER} \\\n"
3403 " --recv-keys @value{OPENPGP-SIGNING-KEY-ID}\n"
3404 msgstr ""
3405 "$ gpg --keyserver @value{KEY-SERVER} \\\n"
3406 " --recv-keys @value{OPENPGP-SIGNING-KEY-ID}\n"
3407
3408 #. type: Plain text
3409 #: doc/guix.texi:562 doc/guix.texi:1904
3410 msgid "and rerun the @code{gpg --verify} command."
3411 msgstr "再次运行@code{gpg --verify}命令。"
3412
3413 #. type: enumerate
3414 #: doc/guix.texi:566
3415 msgid "Now, you need to become the @code{root} user. Depending on your distribution, you may have to run @code{su -} or @code{sudo -i}. As @code{root}, run:"
3416 msgstr "现在你需要成为@code{root}用户。基于你的发行版,你可能需要执行@code{su -}或@code{sudo -i}。以@code{root}用户身份,执行:"
3417
3418 #. type: example
3419 #: doc/guix.texi:572
3420 #, no-wrap
3421 msgid ""
3422 "# cd /tmp\n"
3423 "# tar --warning=no-timestamp -xf \\\n"
3424 " guix-binary-@value{VERSION}.@var{system}.tar.xz\n"
3425 "# mv var/guix /var/ && mv gnu /\n"
3426 msgstr ""
3427 "# cd /tmp\n"
3428 "# tar --warning=no-timestamp -xf \\\n"
3429 " guix-binary-@value{VERSION}.@var{系统}.tar.xz\n"
3430 "# mv var/guix /var/ && mv gnu /\n"
3431
3432 #. type: enumerate
3433 #: doc/guix.texi:577
3434 msgid "This creates @file{/gnu/store} (@pxref{The Store}) and @file{/var/guix}. The latter contains a ready-to-use profile for @code{root} (see next step.)"
3435 msgstr "这会创建@file{/gnu/store}(@pxref{The Store})和@file{/var/guix}。后一个文件夹为@code{root}用户提供了一个立即可用的profile(见下一步)。"
3436
3437 #. type: enumerate
3438 #: doc/guix.texi:580
3439 msgid "Do @emph{not} unpack the tarball on a working Guix system since that would overwrite its own essential files."
3440 msgstr "@emph{不要}在一个正常的Guix系统上解压这个文件包,因为那会把现有的重要的文件覆盖。"
3441
3442 #. type: enumerate
3443 #: doc/guix.texi:590
3444 msgid "The @code{--warning=no-timestamp} option makes sure GNU@tie{}tar does not emit warnings about ``implausibly old time stamps'' (such warnings were triggered by GNU@tie{}tar 1.26 and older; recent versions are fine.) They stem from the fact that all the files in the archive have their modification time set to zero (which means January 1st, 1970.) This is done on purpose to make sure the archive content is independent of its creation time, thus making it reproducible."
3445 msgstr "@code{--warning=no-timestamp}选项使GNU@tie{}tar不输出有关“implausibly old time stamps”的警告(这类警告会被GNU@tie{}tar 1.26或更老的版本触发;新的版本没事)。这类警告是因为文件包里的所有文件的修改时间戳都被设置为0(即1970年1月1日)。这是故意的,为了确保文件包的内容独立于创建的时间,从而使它可再现。"
3446
3447 #. type: enumerate
3448 #: doc/guix.texi:594
3449 msgid "Make the profile available under @file{~root/.config/guix/current}, which is where @command{guix pull} will install updates (@pxref{Invoking guix pull}):"
3450 msgstr "使profile出现在@file{~root/.config/guix/current},这是@command{guix pull}安装更新的位置(@pxref{Invoking guix pull}):"
3451
3452 #. type: example
3453 #: doc/guix.texi:599
3454 #, no-wrap
3455 msgid ""
3456 "# mkdir -p ~root/.config/guix\n"
3457 "# ln -sf /var/guix/profiles/per-user/root/current-guix \\\n"
3458 " ~root/.config/guix/current\n"
3459 msgstr ""
3460 "# mkdir -p ~root/.config/guix\n"
3461 "# ln -sf /var/guix/profiles/per-user/root/current-guix \\\n"
3462 " ~root/.config/guix/current\n"
3463
3464 #. type: enumerate
3465 #: doc/guix.texi:603
3466 msgid "Source @file{etc/profile} to augment @code{PATH} and other relevant environment variables:"
3467 msgstr "执行@file{etc/profile}以更新@code{PATH}和其它相关的环境变量:"
3468
3469 #. type: example
3470 #: doc/guix.texi:607
3471 #, no-wrap
3472 msgid ""
3473 "# GUIX_PROFILE=\"`echo ~root`/.config/guix/current\" ; \\\n"
3474 " source $GUIX_PROFILE/etc/profile\n"
3475 msgstr ""
3476 "# GUIX_PROFILE=\"`echo ~root`/.config/guix/current\" ; \\\n"
3477 " source $GUIX_PROFILE/etc/profile\n"
3478
3479 #. type: enumerate
3480 #: doc/guix.texi:612
3481 msgid "Create the group and user accounts for build users as explained below (@pxref{Build Environment Setup})."
3482 msgstr "像下面解释的那样为“构建用户”创建用户组和用户(@pxref{Build Environment Setup})。"
3483
3484 #. type: enumerate
3485 #: doc/guix.texi:615
3486 msgid "Run the daemon, and set it to automatically start on boot."
3487 msgstr "运行后台进程,并设置为开机自启动。"
3488
3489 #. type: enumerate
3490 #: doc/guix.texi:618
3491 msgid "If your host distro uses the systemd init system, this can be achieved with these commands:"
3492 msgstr "如果你的主机的发行版使用systemd init系统,可以用这些命令:"
3493
3494 #. type: example
3495 #: doc/guix.texi:630
3496 #, no-wrap
3497 msgid ""
3498 "# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \\\n"
3499 " /etc/systemd/system/\n"
3500 "# systemctl start guix-daemon && systemctl enable guix-daemon\n"
3501 msgstr ""
3502 "# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \\\n"
3503 " /etc/systemd/system/\n"
3504 "# systemctl start guix-daemon && systemctl enable guix-daemon\n"
3505
3506 #. type: itemize
3507 #: doc/guix.texi:633 doc/guix.texi:9760
3508 msgid "If your host distro uses the Upstart init system:"
3509 msgstr "如果你的主机的发行版使用Upstart init系统:"
3510
3511 #. type: example
3512 #: doc/guix.texi:639
3513 #, no-wrap
3514 msgid ""
3515 "# initctl reload-configuration\n"
3516 "# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \\\n"
3517 " /etc/init/\n"
3518 "# start guix-daemon\n"
3519 msgstr ""
3520 "# initctl reload-configuration\n"
3521 "# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \\\n"
3522 " /etc/init/\n"
3523 "# start guix-daemon\n"
3524
3525 #. type: enumerate
3526 #: doc/guix.texi:642
3527 msgid "Otherwise, you can still start the daemon manually with:"
3528 msgstr "此外,你可以手动启动后台进程:"
3529
3530 #. type: example
3531 #: doc/guix.texi:646
3532 #, no-wrap
3533 msgid ""
3534 "# ~root/.config/guix/current/bin/guix-daemon \\\n"
3535 " --build-users-group=guixbuild\n"
3536 msgstr ""
3537 "# ~root/.config/guix/current/bin/guix-daemon \\\n"
3538 " --build-users-group=guixbuild\n"
3539
3540 #. type: enumerate
3541 #: doc/guix.texi:651
3542 msgid "Make the @command{guix} command available to other users on the machine, for instance with:"
3543 msgstr "使机器上的其他用户也可以使用@command{guix}命令:"
3544
3545 #. type: example
3546 #: doc/guix.texi:656
3547 #, no-wrap
3548 msgid ""
3549 "# mkdir -p /usr/local/bin\n"
3550 "# cd /usr/local/bin\n"
3551 "# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix\n"
3552 msgstr ""
3553 "# mkdir -p /usr/local/bin\n"
3554 "# cd /usr/local/bin\n"
3555 "# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix\n"
3556
3557 #. type: enumerate
3558 #: doc/guix.texi:660
3559 msgid "It is also a good idea to make the Info version of this manual available there:"
3560 msgstr "最好让这个用户手册的Info版也可以被访问:"
3561
3562 #. type: example
3563 #: doc/guix.texi:666
3564 #, no-wrap
3565 msgid ""
3566 "# mkdir -p /usr/local/share/info\n"
3567 "# cd /usr/local/share/info\n"
3568 "# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;\n"
3569 " do ln -s $i ; done\n"
3570 msgstr ""
3571 "# mkdir -p /usr/local/share/info\n"
3572 "# cd /usr/local/share/info\n"
3573 "# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;\n"
3574 " do ln -s $i ; done\n"
3575
3576 #. type: enumerate
3577 #: doc/guix.texi:672
3578 msgid "That way, assuming @file{/usr/local/share/info} is in the search path, running @command{info guix} will open this manual (@pxref{Other Info Directories,,, texinfo, GNU Texinfo}, for more details on changing the Info search path.)"
3579 msgstr "那样,假设@file{/usr/local/share/info}在搜索路径里,运行@command{info guix}命令就会打开这个用户手册(@pxref{Other Info Directories,,, texinfo, GNU Texinfo},更多关于Info搜索路径的信息)。"
3580
3581 #. type: cindex
3582 #: doc/guix.texi:674 doc/guix.texi:3159 doc/guix.texi:11980
3583 #, no-wrap
3584 msgid "substitutes, authorization thereof"
3585 msgstr "substitutes,对其授权"
3586
3587 #. type: enumerate
3588 #: doc/guix.texi:677
3589 msgid "To use substitutes from @code{@value{SUBSTITUTE-SERVER}} or one of its mirrors (@pxref{Substitutes}), authorize them:"
3590 msgstr "为了使用@code{@value{SUBSTITUTE-SERVER}}或其镜像的substitute(@pxref{Substitutes}),对其授权:"
3591
3592 #. type: example
3593 #: doc/guix.texi:681
3594 #, no-wrap
3595 msgid ""
3596 "# guix archive --authorize < \\\n"
3597 " ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER}.pub\n"
3598 msgstr ""
3599 "# guix archive --authorize < \\\n"
3600 " ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER}.pub\n"
3601
3602 #. type: enumerate
3603 #: doc/guix.texi:686
3604 msgid "Each user may need to perform a few additional steps to make their Guix environment ready for use, @pxref{Application Setup}."
3605 msgstr "每个用户可能需要执行一些额外的步骤以使各自的Guix环境可用,@pxref{Application Setup}。"
3606
3607 #. type: Plain text
3608 #: doc/guix.texi:689
3609 msgid "Voilà, the installation is complete!"
3610 msgstr "瞧,安装完成了!"
3611
3612 #. type: Plain text
3613 #: doc/guix.texi:692
3614 msgid "You can confirm that Guix is working by installing a sample package into the root profile:"
3615 msgstr "你可以通过给root profile安装一个软件包来确认Guix可以正常工作。"
3616
3617 #. type: example
3618 #: doc/guix.texi:695
3619 #, no-wrap
3620 msgid "# guix install hello\n"
3621 msgstr "# guix install hello\n"
3622
3623 #. type: Plain text
3624 #: doc/guix.texi:699
3625 msgid "The binary installation tarball can be (re)produced and verified simply by running the following command in the Guix source tree:"
3626 msgstr "二进制安装包可以通过在Guix源代码树里运行下面这些命令来重现和验证:"
3627
3628 #. type: example
3629 #: doc/guix.texi:702
3630 #, no-wrap
3631 msgid "make guix-binary.@var{system}.tar.xz\n"
3632 msgstr "make guix-binary.@var{系统}.tar.xz\n"
3633
3634 #. type: Plain text
3635 #: doc/guix.texi:706
3636 msgid "...@: which, in turn, runs:"
3637 msgstr "...@: 这个命令会执行:"
3638
3639 #. type: example
3640 #: doc/guix.texi:710
3641 #, no-wrap
3642 msgid ""
3643 "guix pack -s @var{system} --localstatedir \\\n"
3644 " --profile-name=current-guix guix\n"
3645 msgstr ""
3646 "guix pack -s @var{系统} --localstatedir \\\n"
3647 " --profile-name=current-guix guix\n"
3648
3649 #. type: Plain text
3650 #: doc/guix.texi:713
3651 msgid "@xref{Invoking guix pack}, for more info on this handy tool."
3652 msgstr "@xref{Invoking guix pack},了解这个方便的工具。"
3653
3654 #. type: Plain text
3655 #: doc/guix.texi:721
3656 msgid "This section lists requirements when building Guix from source. The build procedure for Guix is the same as for other GNU software, and is not covered here. Please see the files @file{README} and @file{INSTALL} in the Guix source tree for additional details."
3657 msgstr "这个小节列举了从源代码构建Guix的需求。构建Guix的步骤和其它GNU软件相同,这里不介绍。请阅读Guix源代码树里的@file{README}和@file{INSTALL}文件以了解更多的信息。"
3658
3659 #. type: cindex
3660 #: doc/guix.texi:722
3661 #, no-wrap
3662 msgid "official website"
3663 msgstr "官方网站"
3664
3665 #. type: Plain text
3666 #: doc/guix.texi:725
3667 msgid "GNU Guix is available for download from its website at @url{https://www.gnu.org/software/guix/}."
3668 msgstr "GNU Guix可以从它的网站下载@url{https://www.gnu.org/software/guix/}。"
3669
3670 #. type: Plain text
3671 #: doc/guix.texi:727
3672 msgid "GNU Guix depends on the following packages:"
3673 msgstr "GNU Guix依赖这些软件包:"
3674
3675 #. type: item
3676 #: doc/guix.texi:729
3677 #, no-wrap
3678 msgid "@url{https://gnu.org/software/guile/, GNU Guile}, version 2.2.x;"
3679 msgstr "@url{https://gnu.org/software/guile/, GNU Guile},版本2.2.x;"
3680
3681 #. type: item
3682 #: doc/guix.texi:730
3683 #, no-wrap
3684 msgid "@url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version"
3685 msgstr "@url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt},版本"
3686
3687 #. type: itemize
3688 #: doc/guix.texi:732
3689 msgid "0.1.0 or later;"
3690 msgstr "0.1.0或更新;"
3691
3692 #. type: itemize
3693 #: doc/guix.texi:736
3694 msgid "@uref{https://gnutls.org/, GnuTLS}, specifically its Guile bindings (@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile});"
3695 msgstr "@uref{https://gnutls.org/, GnuTLS},特别是它的Guile接口(@pxref{Guile Preparations, 怎样为Guile安装GnuTLS接口,, gnutls-guile, GnuTLS-Guile});"
3696
3697 #. type: itemize
3698 #: doc/guix.texi:739
3699 msgid "@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0 or later;"
3700 msgstr "@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3},版本0.1.0或更新;"
3701
3702 #. type: itemize
3703 #: doc/guix.texi:743
3704 msgid "@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, from August 2017 or later;"
3705 msgstr "@uref{https://gitlab.com/guile-git/guile-git, Guile-Git},2017年8月及之后的版本;"
3706
3707 #. type: item
3708 #: doc/guix.texi:743
3709 #, no-wrap
3710 msgid "@uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON};"
3711 msgstr "@uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON};"
3712
3713 #. type: item
3714 #: doc/guix.texi:744
3715 #, no-wrap
3716 msgid "@url{https://zlib.net, zlib};"
3717 msgstr "@url{https://zlib.net, zlib};"
3718
3719 #. type: item
3720 #: doc/guix.texi:745
3721 #, no-wrap
3722 msgid "@url{https://www.gnu.org/software/make/, GNU Make}."
3723 msgstr "@url{https://www.gnu.org/software/make/, GNU Make}。"
3724
3725 #. type: Plain text
3726 #: doc/guix.texi:749
3727 msgid "The following dependencies are optional:"
3728 msgstr "这些依赖是可选的:"
3729
3730 #. type: itemize
3731 #: doc/guix.texi:757
3732 msgid "Support for build offloading (@pxref{Daemon Offload Setup}) and @command{guix copy} (@pxref{Invoking guix copy}) depends on @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, version 0.10.2 or later."
3733 msgstr "对下发构建任务(@pxref{Daemon Offload Setup})和@command{guix copy}(@pxref{Invoking guix copy})的支持依赖于@uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH},版本0.10.2或更新。"
3734
3735 #. type: itemize
3736 #: doc/guix.texi:761
3737 msgid "When @url{http://www.bzip.org, libbz2} is available, @command{guix-daemon} can use it to compress build logs."
3738 msgstr "当@url{http://www.bzip.org, libbz2}存在时,@command{guix-daemon}可以用它压缩构建日志。"
3739
3740 #. type: Plain text
3741 #: doc/guix.texi:765
3742 msgid "Unless @code{--disable-daemon} was passed to @command{configure}, the following packages are also needed:"
3743 msgstr "除非@code{--disable-daemon}参数被传给@command{configure},这些软件包也是需要的依赖:"
3744
3745 #. type: item
3746 #: doc/guix.texi:767
3747 #, no-wrap
3748 msgid "@url{https://gnupg.org/, GNU libgcrypt};"
3749 msgstr "@url{https://gnupg.org/, GNU libgcrypt};"
3750
3751 #. type: item
3752 #: doc/guix.texi:768
3753 #, no-wrap
3754 msgid "@url{https://sqlite.org, SQLite 3};"
3755 msgstr "@url{https://sqlite.org, SQLite 3};"
3756
3757 #. type: item
3758 #: doc/guix.texi:769
3759 #, no-wrap
3760 msgid "@url{https://gcc.gnu.org, GCC's g++}, with support for the"
3761 msgstr "@url{https://gcc.gnu.org, GCC's g++},支持"
3762
3763 #. type: itemize
3764 #: doc/guix.texi:771
3765 msgid "C++11 standard."
3766 msgstr "C++11标准。"
3767
3768 #. type: cindex
3769 #: doc/guix.texi:773
3770 #, no-wrap
3771 msgid "state directory"
3772 msgstr "状态文件夹"
3773
3774 #. type: Plain text
3775 #: doc/guix.texi:781
3776 msgid "When configuring Guix on a system that already has a Guix installation, be sure to specify the same state directory as the existing installation using the @code{--localstatedir} option of the @command{configure} script (@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding Standards}). The @command{configure} script protects against unintended misconfiguration of @var{localstatedir} so you do not inadvertently corrupt your store (@pxref{The Store})."
3777 msgstr "当在一个已经安装Guix的系统上配置Guix时,请确保用@command{configure}的@code{--localstatedir}参数指定和现有的安装相同的状态文件夹(@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding Standards})。@command{configure}保护你免于误设置@var{localstatedir},从而不会无意中损坏仓库(@pxref{The Store})。"
3778
3779 #. type: cindex
3780 #: doc/guix.texi:782
3781 #, no-wrap
3782 msgid "Nix, compatibility"
3783 msgstr "Nix,兼容性"
3784
3785 #. type: Plain text
3786 #: doc/guix.texi:787
3787 msgid "When a working installation of @url{https://nixos.org/nix/, the Nix package manager} is available, you can instead configure Guix with @code{--disable-daemon}. In that case, Nix replaces the three dependencies above."
3788 msgstr "当一个已经安装的且可用的@url{https://nixos.org/nix/, Nix包管理器}存在时,你可以为Guix配置@code{--disable-daemon}参数。那样Nix可以替换上面的三个依赖。"
3789
3790 #. type: Plain text
3791 #: doc/guix.texi:797
3792 msgid "Guix is compatible with Nix, so it is possible to share the same store between both. To do so, you must pass @command{configure} not only the same @code{--with-store-dir} value, but also the same @code{--localstatedir} value. The latter is essential because it specifies where the database that stores metadata about the store is located, among other things. The default values for Nix are @code{--with-store-dir=/nix/store} and @code{--localstatedir=/nix/var}. Note that @code{--disable-daemon} is not required if your goal is to share the store with Nix."
3793 msgstr "Guix和Nix兼容,所以两者共享相同的仓库是可行的。如果这样做,你必须传给@command{configure}相同的@code{--with-store-dir},以及相同的@code{--localstatedir}。后者很重要,因为它指定了储存仓库元数据以及其它信息的数据库的位置,。Nix的默认值是@code{--with-store-dir=/nix/store}和@code{--localstatedir=/nix/var}。注意,如果你的目的是和Nix共享仓库,那么@code{--disable-daemon}参数不是必须的。"
3794
3795 #. type: cindex
3796 #: doc/guix.texi:801
3797 #, no-wrap
3798 msgid "test suite"
3799 msgstr "测试套件"
3800
3801 #. type: Plain text
3802 #: doc/guix.texi:807
3803 msgid "After a successful @command{configure} and @code{make} run, it is a good idea to run the test suite. It can help catch issues with the setup or environment, or bugs in Guix itself---and really, reporting test failures is a good way to help improve the software. To run the test suite, type:"
3804 msgstr "成功执行@command{configure}和@code{make}之后,最好运行测试套件。它可以帮助查找设置和环境的错误,或者是Guix自身的bug--并且,报告测试错误是帮助改进软件的好方法。输入下面的命令以执行测试套件。"
3805
3806 #. type: example
3807 #: doc/guix.texi:810
3808 #, no-wrap
3809 msgid "make check\n"
3810 msgstr "make check\n"
3811
3812 #. type: Plain text
3813 #: doc/guix.texi:817
3814 msgid "Test cases can run in parallel: you can use the @code{-j} option of GNU@tie{}make to speed things up. The first run may take a few minutes on a recent machine; subsequent runs will be faster because the store that is created for test purposes will already have various things in cache."
3815 msgstr "测试用例可以并行运行:你可以用GNU@tie{}make的@code{-j}参数来加速运行。才一台较新的机器上第一次运行可能会花几分钟,后续的运行会更快,因为为测试创建的仓库已经包含了各种缓存。"
3816
3817 #. type: Plain text
3818 #: doc/guix.texi:820
3819 msgid "It is also possible to run a subset of the tests by defining the @code{TESTS} makefile variable as in this example:"
3820 msgstr "你还可以通过定义makefile的@code{TESTS}变量只运行测试的一个子集:"
3821
3822 #. type: example
3823 #: doc/guix.texi:823
3824 #, no-wrap
3825 msgid "make check TESTS=\"tests/store.scm tests/cpio.scm\"\n"
3826 msgstr "make check TESTS=\"tests/store.scm tests/cpio.scm\"\n"
3827
3828 #. type: Plain text
3829 #: doc/guix.texi:828
3830 msgid "By default, tests results are displayed at a file level. In order to see the details of every individual test cases, it is possible to define the @code{SCM_LOG_DRIVER_FLAGS} makefile variable as in this example:"
3831 msgstr "默认情况下,测试结果只展示到文件层级。为了看每个独立的测试用例的详情,可以像这样定义@code{SCM_LOG_DRIVER_FLAGS} makefile变量:"
3832
3833 #. type: example
3834 #: doc/guix.texi:831
3835 #, no-wrap
3836 msgid "make check TESTS=\"tests/base64.scm\" SCM_LOG_DRIVER_FLAGS=\"--brief=no\"\n"
3837 msgstr "make check TESTS=\"tests/base64.scm\" SCM_LOG_DRIVER_FLAGS=\"--brief=no\"\n"
3838
3839 #. type: Plain text
3840 #: doc/guix.texi:837
3841 msgid "Upon failure, please email @email{bug-guix@@gnu.org} and attach the @file{test-suite.log} file. Please specify the Guix version being used as well as version numbers of the dependencies (@pxref{Requirements}) in your message."
3842 msgstr "遇到错误时,请给@email{bug-guix@@gnu.org}发邮件,并附带@file{test-suite.log}文件。请在消息里说明使用的Guix的版本信息和依赖(@pxref{Requirements})的版本信息。"
3843
3844 #. type: Plain text
3845 #: doc/guix.texi:841
3846 msgid "Guix also comes with a whole-system test suite that tests complete Guix System instances. It can only run on systems where Guix is already installed, using:"
3847 msgstr "Guix还附带了一个可以测试整个Guix系统实例的全系统测试套件。它只能在已经安装Guix的系统上运行:"
3848
3849 #. type: example
3850 #: doc/guix.texi:844
3851 #, no-wrap
3852 msgid "make check-system\n"
3853 msgstr "make check-system\n"
3854
3855 #. type: Plain text
3856 #: doc/guix.texi:848
3857 msgid "or, again, by defining @code{TESTS} to select a subset of tests to run:"
3858 msgstr "或者,同样的,通过定义@code{TESTS}只运行测试的一个子集:"
3859
3860 #. type: example
3861 #: doc/guix.texi:851
3862 #, no-wrap
3863 msgid "make check-system TESTS=\"basic mcron\"\n"
3864 msgstr "make check-system TESTS=\"basic mcron\"\n"
3865
3866 #. type: Plain text
3867 #: doc/guix.texi:859
3868 msgid "These system tests are defined in the @code{(gnu tests @dots{})} modules. They work by running the operating systems under test with lightweight instrumentation in a virtual machine (VM). They can be computationally intensive or rather cheap, depending on whether substitutes are available for their dependencies (@pxref{Substitutes}). Some of them require a lot of storage space to hold VM images."
3869 msgstr "这些系统测试是在@code{(gnu tests @dots{})}模块里定义的。它们在虚拟机(VM)里运行轻量的指令。它们的计算量可能很多也可能很少,这取决于它们依赖的substitute(@pxref{Substitutes})是否已经存在。它们之中有些需要很多存储空间以保存虚拟机硬盘。"
3870
3871 #. type: Plain text
3872 #: doc/guix.texi:862
3873 msgid "Again in case of test failures, please send @email{bug-guix@@gnu.org} all the details."
3874 msgstr "再重复一遍,如果遇到测试错误,请给@email{bug-guix@@gnu.org}发邮件,并附带详细的说明。"
3875
3876 #. type: cindex
3877 #: doc/guix.texi:866
3878 #, no-wrap
3879 msgid "daemon"
3880 msgstr "后台进程"
3881
3882 #. type: Plain text
3883 #: doc/guix.texi:874
3884 msgid "Operations such as building a package or running the garbage collector are all performed by a specialized process, the @dfn{build daemon}, on behalf of clients. Only the daemon may access the store and its associated database. Thus, any operation that manipulates the store goes through the daemon. For instance, command-line tools such as @command{guix package} and @command{guix build} communicate with the daemon (@i{via} remote procedure calls) to instruct it what to do."
3885 msgstr "构建软件包或运行垃圾回收器之类的操作都是由一个特殊的进程代替客户执行的,即@dfn{构建后台进程}。只有这个进程可以访问仓库和相关的数据库。因此,所有修改仓库的操作都通过这个后台进程执行。例如,@command{guix package}和@command{guix build}之类的命令行工具通过和这个后台进程通信(@i{通过}远程过程调用)来指示它该做什么。"
3886
3887 #. type: Plain text
3888 #: doc/guix.texi:878
3889 msgid "The following sections explain how to prepare the build daemon's environment. See also @ref{Substitutes}, for information on how to allow the daemon to download pre-built binaries."
3890 msgstr "接下来的几个小节介绍如何准备“构建后台进程”的环境。参考@ref{Substitutes},了解怎样允许这个后台进程下载预构建好的二进制文件。"
3891
3892 #. type: cindex
3893 #: doc/guix.texi:888 doc/guix.texi:1311
3894 #, no-wrap
3895 msgid "build environment"
3896 msgstr "构建环境"
3897
3898 #. type: Plain text
3899 #: doc/guix.texi:896
3900 msgid "In a standard multi-user setup, Guix and its daemon---the @command{guix-daemon} program---are installed by the system administrator; @file{/gnu/store} is owned by @code{root} and @command{guix-daemon} runs as @code{root}. Unprivileged users may use Guix tools to build packages or otherwise access the store, and the daemon will do it on their behalf, ensuring that the store is kept in a consistent state, and allowing built packages to be shared among users."
3901 msgstr "在一个标准的多用户设置里,Guix和它的后台进程--@command{guix-daemon}程序--是由@code{root}用户安装的,并且@command{guix-daemon}以@code{root}用户身份运行。无特权的用户可以用Guix的工具构建软件包或访问仓库,这个后台进程会代替用户进行这些操作,以确保仓库保持一致的状态,并且允许构建好的软件包可以在不同用户间共享。"
3902
3903 #. type: cindex
3904 #: doc/guix.texi:897
3905 #, no-wrap
3906 msgid "build users"
3907 msgstr "构建用户"
3908
3909 #. type: Plain text
3910 #: doc/guix.texi:908
3911 msgid "When @command{guix-daemon} runs as @code{root}, you may not want package build processes themselves to run as @code{root} too, for obvious security reasons. To avoid that, a special pool of @dfn{build users} should be created for use by build processes started by the daemon. These build users need not have a shell and a home directory: they will just be used when the daemon drops @code{root} privileges in build processes. Having several such users allows the daemon to launch distinct build processes under separate UIDs, which guarantees that they do not interfere with each other---an essential feature since builds are regarded as pure functions (@pxref{Introduction})."
3912 msgstr "当@command{guix-daemon}以@code{root}用户身份运行时,由于安全方面的考虑,你可能不希望软件包构建进程也以@code{root}用户身份运行。为了避免那样,我们需要创建一个@dfn{构建用户}池,以供后台进程启动的构建进程使用。这些构建用户不需要拥有shell和家目录:他们只会在后台进程为构建进程剥夺@code{root}特权时使用。拥有多个这类用户使后台进程可以以不同的UID启动不同的构建进程,这保证它们不会互相干扰--这是一个重要的功能,因为构建被视为纯函数(@pxref{Introduction})。"
3913
3914 #. type: Plain text
3915 #: doc/guix.texi:911
3916 msgid "On a GNU/Linux system, a build user pool may be created like this (using Bash syntax and the @code{shadow} commands):"
3917 msgstr "在一个GNU/Linux系统上,可以这样创建一个构建用户池(用bash语法和@code{shadow}命令):"
3918
3919 #. type: example
3920 #: doc/guix.texi:923
3921 #, no-wrap
3922 msgid ""
3923 "# groupadd --system guixbuild\n"
3924 "# for i in `seq -w 1 10`;\n"
3925 " do\n"
3926 " useradd -g guixbuild -G guixbuild \\\n"
3927 " -d /var/empty -s `which nologin` \\\n"
3928 " -c \"Guix build user $i\" --system \\\n"
3929 " guixbuilder$i;\n"
3930 " done\n"
3931 msgstr ""
3932 "# groupadd --system guixbuild\n"
3933 "# for i in `seq -w 1 10`;\n"
3934 " do\n"
3935 " useradd -g guixbuild -G guixbuild \\\n"
3936 " -d /var/empty -s `which nologin` \\\n"
3937 " -c \"Guix build user $i\" --system \\\n"
3938 " guixbuilder$i;\n"
3939 " done\n"
3940
3941 #. type: Plain text
3942 #: doc/guix.texi:933
3943 msgid "The number of build users determines how many build jobs may run in parallel, as specified by the @option{--max-jobs} option (@pxref{Invoking guix-daemon, @option{--max-jobs}}). To use @command{guix system vm} and related commands, you may need to add the build users to the @code{kvm} group so they can access @file{/dev/kvm}, using @code{-G guixbuild,kvm} instead of @code{-G guixbuild} (@pxref{Invoking guix system})."
3944 msgstr "构建用户的数量决定了有多少个构建任务可以并行执行,即@option{--max-jobs}参数(@pxref{Invoking guix-daemon, @option{--max-jobs}})。为了使用@command{guix system vm}和相关的命令,你需要把构建用户添加到@code{kvm}用户组,以使它们访问@file{/dev/kvm}。为此,把@code{-G guixbuild}替换成@code{-G guixbuild,kvm}(@pxref{Invoking guix system})。"
3945
3946 #. type: Plain text
3947 #: doc/guix.texi:942
3948 msgid "The @code{guix-daemon} program may then be run as @code{root} with the following command@footnote{If your machine uses the systemd init system, dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} file in @file{/etc/systemd/system} will ensure that @command{guix-daemon} is automatically started. Similarly, if your machine uses the Upstart init system, drop the @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} file in @file{/etc/init}.}:"
3949 msgstr "之后以@code{root}身份用下面的命令运行@code{guix-daemon}程序command@footnote{如果你的机器使用systemd init系统,把@file{@var{prefix}/lib/systemd/system/guix-daemon.service}文件复制到@file{/etc/systemd/system}文件夹里可以使@command{guix-daemon}自启动。类似的,如果你的机器使用Upstart init系统,把@file{@var{prefix}/lib/upstart/system/guix-daemon.conf}文件复制到@file{/etc/init}文件夹里}:"
3950
3951 #. type: example
3952 #: doc/guix.texi:945 doc/guix.texi:1304
3953 #, no-wrap
3954 msgid "# guix-daemon --build-users-group=guixbuild\n"
3955 msgstr "# guix-daemon --build-users-group=guixbuild\n"
3956
3957 #. type: cindex
3958 #: doc/guix.texi:947 doc/guix.texi:1309
3959 #, no-wrap
3960 msgid "chroot"
3961 msgstr "chroot"
3962
3963 #. type: Plain text
3964 #: doc/guix.texi:952
3965 msgid "This way, the daemon starts build processes in a chroot, under one of the @code{guixbuilder} users. On GNU/Linux, by default, the chroot environment contains nothing but:"
3966 msgstr "这样,后台进程在一个chroot环境里,以一个@code{guixbuilder}用户组成员的身份启动构建进程。在GNU/Linux上,默认的,这个chroot环境仅包含这些东西:"
3967
3968 #. type: itemize
3969 #: doc/guix.texi:960
3970 msgid "a minimal @code{/dev} directory, created mostly independently from the host @code{/dev}@footnote{``Mostly'', because while the set of files that appear in the chroot's @code{/dev} is fixed, most of these files can only be created if the host has them.};"
3971 msgstr "一个和主机@code{/dev}独立的@footnote{大致这样,因为虽然chroot环境里的@code{/dev}包含的文件是固定的,大部分这些文件只有在主机有对应的文件时才能创建。},最小的@code{/dev}文件夹;"
3972
3973 #. type: itemize
3974 #: doc/guix.texi:964
3975 msgid "the @code{/proc} directory; it only shows the processes of the container since a separate PID name space is used;"
3976 msgstr "@code{/proc}文件夹;它只含有当前容器的进程,因为用了一个独立的进程PID命名空间;"
3977
3978 #. type: itemize
3979 #: doc/guix.texi:968
3980 msgid "@file{/etc/passwd} with an entry for the current user and an entry for user @file{nobody};"
3981 msgstr "@file{/etc/passwd},仅包含当前用户和@file{nobody};"
3982
3983 #. type: itemize
3984 #: doc/guix.texi:971
3985 msgid "@file{/etc/group} with an entry for the user's group;"
3986 msgstr "@file{/etc/group},包含用户的组;"
3987
3988 #. type: itemize
3989 #: doc/guix.texi:975
3990 msgid "@file{/etc/hosts} with an entry that maps @code{localhost} to @code{127.0.0.1};"
3991 msgstr "@file{/etc/hosts},包含@code{localhost}映射到@code{127.0.0.1}的条目;"
3992
3993 #. type: itemize
3994 #: doc/guix.texi:978
3995 msgid "a writable @file{/tmp} directory."
3996 msgstr "一个可写的@file{/tmp}文件夹。"
3997
3998 #. type: Plain text
3999 #: doc/guix.texi:987
4000 msgid "You can influence the directory where the daemon stores build trees @i{via} the @code{TMPDIR} environment variable. However, the build tree within the chroot is always called @file{/tmp/guix-build-@var{name}.drv-0}, where @var{name} is the derivation name---e.g., @code{coreutils-8.24}. This way, the value of @code{TMPDIR} does not leak inside build environments, which avoids discrepancies in cases where build processes capture the name of their build tree."
4001 msgstr "你可以@i{通过}@code{TMPDIR}环境变量修改后台进程保存构建树的位置。但是,chroot里的构建树总是在@file{/tmp/guix-build-@var{名字}.drv-0},@var{名字}是derivation的名字--如@code{coreutils-8.24}。这样,@code{TMPDIR}的值就不会泄漏到构建环境里,这可以避免由构建进程读取构建树名字引起的问题。"
4002
4003 #. type: vindex
4004 #: doc/guix.texi:988 doc/guix.texi:3261
4005 #, no-wrap
4006 msgid "http_proxy"
4007 msgstr "http_proxy"
4008
4009 #. type: Plain text
4010 #: doc/guix.texi:992
4011 msgid "The daemon also honors the @code{http_proxy} environment variable for HTTP downloads it performs, be it for fixed-output derivations (@pxref{Derivations}) or for substitutes (@pxref{Substitutes})."
4012 msgstr "后台进程通过HTTP下载时还遵守@code{http_proxy}环境变量,无论是下载derivation(@pxref{Derivations}),还是下载substitute(@pxref{Substitutes})。"
4013
4014 #. type: Plain text
4015 #: doc/guix.texi:1000
4016 msgid "If you are installing Guix as an unprivileged user, it is still possible to run @command{guix-daemon} provided you pass @code{--disable-chroot}. However, build processes will not be isolated from one another, and not from the rest of the system. Thus, build processes may interfere with each other, and may access programs, libraries, and other files available on the system---making it much harder to view them as @emph{pure} functions."
4017 msgstr "如果你是以无特权的用户的身份安装Guix,你仍可以运行@command{guix-daemon},只要添加@code{--disable-chroot}参数就行了。但是,构建进程不会互相隔离,也不会和系统的其它部分隔离。因此,构建进程有可能互相干扰,可以访问程序、库和系统上的其它文件--这样就很难把它看作@emph{纯}函数。"
4018
4019 #. type: subsection
4020 #: doc/guix.texi:1003
4021 #, no-wrap
4022 msgid "Using the Offload Facility"
4023 msgstr "使用任务下发设施"
4024
4025 #. type: cindex
4026 #: doc/guix.texi:1005
4027 #, no-wrap
4028 msgid "offloading"
4029 msgstr "下发"
4030
4031 #. type: cindex
4032 #: doc/guix.texi:1006 doc/guix.texi:1367
4033 #, no-wrap
4034 msgid "build hook"
4035 msgstr "构建钩子"
4036
4037 #. type: Plain text
4038 #: doc/guix.texi:1020
4039 msgid "When desired, the build daemon can @dfn{offload} derivation builds to other machines running Guix, using the @code{offload} @dfn{build hook}@footnote{This feature is available only when @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH} is present.}. When that feature is enabled, a list of user-specified build machines is read from @file{/etc/guix/machines.scm}; every time a build is requested, for instance via @code{guix build}, the daemon attempts to offload it to one of the machines that satisfy the constraints of the derivation, in particular its system type---e.g., @file{x86_64-linux}. Missing prerequisites for the build are copied over SSH to the target machine, which then proceeds with the build; upon success the output(s) of the build are copied back to the initial machine."
4040 msgstr "当需要时,构建后台进程可以把构建derivation的任务@dfn{下发}给其它运行Guix的机器,这通过@code{下发} @dfn{构建钩子}实现@footnote{这个功能只有当@uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}存在时才可用。}。当那个功能被启用时,会从@file{/etc/guix/machines.scm}读取一列用户指定的机器;每次发送构建请求时,如执行@code{guix build},后台进程尝试把它下发到某一台满足derivation的约束(特别是系统类型--如@file{x86_64-linux})的机器上。缺少的必备构建依赖通过SSH复制到目标机器,然后继续构建;成功后,构建输出的结果被复制回初始的机器上。"
4041
4042 #. type: Plain text
4043 #: doc/guix.texi:1022
4044 msgid "The @file{/etc/guix/machines.scm} file typically looks like this:"
4045 msgstr "@file{/etc/guix/machines.scm}文件通常是这样的:"
4046
4047 #. type: example
4048 #: doc/guix.texi:1030
4049 #, no-wrap
4050 msgid ""
4051 "(list (build-machine\n"
4052 " (name \"eightysix.example.org\")\n"
4053 " (system \"x86_64-linux\")\n"
4054 " (host-key \"ssh-ed25519 AAAAC3Nza@dots{}\")\n"
4055 " (user \"bob\")\n"
4056 " (speed 2.)) ;incredibly fast!\n"
4057 "\n"
4058 msgstr ""
4059 "(list (build-machine\n"
4060 " (name \"eightysix.example.org\")\n"
4061 " (system \"x86_64-linux\")\n"
4062 " (host-key \"ssh-ed25519 AAAAC3Nza@dots{}\")\n"
4063 " (user \"bob\")\n"
4064 " (speed 2.)) ;非常快!\n"
4065 "\n"
4066
4067 #. type: example
4068 #: doc/guix.texi:1039
4069 #, no-wrap
4070 msgid ""
4071 " (build-machine\n"
4072 " (name \"meeps.example.org\")\n"
4073 " (system \"mips64el-linux\")\n"
4074 " (host-key \"ssh-rsa AAAAB3Nza@dots{}\")\n"
4075 " (user \"alice\")\n"
4076 " (private-key\n"
4077 " (string-append (getenv \"HOME\")\n"
4078 " \"/.ssh/identity-for-guix\"))))\n"
4079 msgstr ""
4080 " (build-machine\n"
4081 " (name \"meeps.example.org\")\n"
4082 " (system \"mips64el-linux\")\n"
4083 " (host-key \"ssh-rsa AAAAB3Nza@dots{}\")\n"
4084 " (user \"alice\")\n"
4085 " (private-key\n"
4086 " (string-append (getenv \"HOME\")\n"
4087 " \"/.ssh/identity-for-guix\"))))\n"
4088
4089 #. type: Plain text
4090 #: doc/guix.texi:1045
4091 msgid "In the example above we specify a list of two build machines, one for the @code{x86_64} architecture and one for the @code{mips64el} architecture."
4092 msgstr "在上面的例子里,我们指定了一个包含两个构建机器的列表,一个是@code{x86_64}架构,一个是@code{mips64el}架构。"
4093
4094 #. type: Plain text
4095 #: doc/guix.texi:1054
4096 msgid "In fact, this file is---not surprisingly!---a Scheme file that is evaluated when the @code{offload} hook is started. Its return value must be a list of @code{build-machine} objects. While this example shows a fixed list of build machines, one could imagine, say, using DNS-SD to return a list of potential build machines discovered in the local network (@pxref{Introduction, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme Programs}). The @code{build-machine} data type is detailed below."
4097 msgstr "事实上,这个文件--并不意外地--是一个Scheme文件,当@code{下发}钩子被启动时执行。它的返回值必须是一个包含@code{build-machine}对象的列表。虽然这个例子展示的是一个固定的列表,你可以想象,使用DNS-SD来返回一个包含从局域网内发现的构建机器的列表,@pxref{Introduction, Guile-Avahi,, guile-avahi, 在Guile Scheme程序里使用Avahi}。@code{build-machine}数据类型的详细信息如下。"
4098
4099 #. type: deftp
4100 #: doc/guix.texi:1055
4101 #, no-wrap
4102 msgid "{Data Type} build-machine"
4103 msgstr "{数据类型} build-machine"
4104
4105 #. type: deftp
4106 #: doc/guix.texi:1058
4107 msgid "This data type represents build machines to which the daemon may offload builds. The important fields are:"
4108 msgstr "这个数据类型表示后台进程可以下发构建任务的构建机器。重要的项有:"
4109
4110 #. type: item
4111 #: doc/guix.texi:1061 doc/guix.texi:5337 doc/guix.texi:11004
4112 #: doc/guix.texi:11086 doc/guix.texi:11313 doc/guix.texi:12897
4113 #: doc/guix.texi:17434 doc/guix.texi:18019 doc/guix.texi:18630
4114 #: doc/guix.texi:18938 doc/guix.texi:18979 doc/guix.texi:23523
4115 #: doc/guix.texi:23540 doc/guix.texi:23833 doc/guix.texi:25130
4116 #: doc/guix.texi:25336
4117 #, no-wrap
4118 msgid "name"
4119 msgstr "名字"
4120
4121 #. type: table
4122 #: doc/guix.texi:1063
4123 msgid "The host name of the remote machine."
4124 msgstr "远程机器的主机名。"
4125
4126 #. type: item
4127 #: doc/guix.texi:1064
4128 #, no-wrap
4129 msgid "system"
4130 msgstr "系统"
4131
4132 #. type: table
4133 #: doc/guix.texi:1066
4134 msgid "The system type of the remote machine---e.g., @code{\"x86_64-linux\"}."
4135 msgstr "远程机器的系统类型--如,@code{\"x86_64-linux\"}。"
4136
4137 #. type: code{#1}
4138 #: doc/guix.texi:1067 doc/guix.texi:12907
4139 #, no-wrap
4140 msgid "user"
4141 msgstr "用户"
4142
4143 #. type: table
4144 #: doc/guix.texi:1071
4145 msgid "The user account to use when connecting to the remote machine over SSH. Note that the SSH key pair must @emph{not} be passphrase-protected, to allow non-interactive logins."
4146 msgstr "通过SSH连接远程机器时使用的用户帐号。注意,SSH密钥@emph{不}能被密码保护,以支持无交互的登录。"
4147
4148 #. type: item
4149 #: doc/guix.texi:1072
4150 #, no-wrap
4151 msgid "host-key"
4152 msgstr "主机公钥"
4153
4154 #. type: table
4155 #: doc/guix.texi:1076
4156 msgid "This must be the machine's SSH @dfn{public host key} in OpenSSH format. This is used to authenticate the machine when we connect to it. It is a long string that looks like this:"
4157 msgstr "这必须是机器的OpenSSH格式的SSH@dfn{公钥}。这是用来在连接机器时认证身份的。它是一个像这样的长字符串:"
4158
4159 #. type: example
4160 #: doc/guix.texi:1079
4161 #, no-wrap
4162 msgid "ssh-ed25519 AAAAC3NzaC@dots{}mde+UhL hint@@example.org\n"
4163 msgstr "ssh-ed25519 AAAAC3NzaC@dots{}mde+UhL hint@@example.org\n"
4164
4165 #. type: table
4166 #: doc/guix.texi:1084
4167 msgid "If the machine is running the OpenSSH daemon, @command{sshd}, the host key can be found in a file such as @file{/etc/ssh/ssh_host_ed25519_key.pub}."
4168 msgstr "如果这个机器正在运行OpenSSH后台进程,@command{sshd},那么主机公钥可以在@file{/etc/ssh/ssh_host_ed25519_key.pub}找到。"
4169
4170 #. type: table
4171 #: doc/guix.texi:1089
4172 msgid "If the machine is running the SSH daemon of GNU@tie{}lsh, @command{lshd}, the host key is in @file{/etc/lsh/host-key.pub} or a similar file. It can be converted to the OpenSSH format using @command{lsh-export-key} (@pxref{Converting keys,,, lsh, LSH Manual}):"
4173 msgstr "如果这个机器正在运行GNU@tie{}lsh,@command{lshd},那么主机公钥可以在@file{/etc/lsh/host-key.pub}或类似的位置找到。它可以通过@command{lsh-export-key}命令转换成OpenSSH格式(@pxref{Converting keys,,, lsh, LSH用户手册}):"
4174
4175 #. type: example
4176 #: doc/guix.texi:1093
4177 #, no-wrap
4178 msgid ""
4179 "$ lsh-export-key --openssh < /etc/lsh/host-key.pub \n"
4180 "ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{}\n"
4181 msgstr ""
4182 "$ lsh-export-key --openssh < /etc/lsh/host-key.pub \n"
4183 "ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{}\n"
4184
4185 #. type: deftp
4186 #: doc/guix.texi:1098
4187 msgid "A number of optional fields may be specified:"
4188 msgstr "一些可选的项:"
4189
4190 #. type: item
4191 #: doc/guix.texi:1101
4192 #, no-wrap
4193 msgid "@code{port} (default: @code{22})"
4194 msgstr "@code{port}(默认值:@code{22})"
4195
4196 #. type: table
4197 #: doc/guix.texi:1103
4198 msgid "Port number of SSH server on the machine."
4199 msgstr "机器上的SSH服务器的端口号。"
4200
4201 #. type: item
4202 #: doc/guix.texi:1104
4203 #, no-wrap
4204 msgid "@code{private-key} (default: @file{~root/.ssh/id_rsa})"
4205 msgstr "@code{private-key}(默认值:@file{~root/.ssh/id_rsa})"
4206
4207 #. type: table
4208 #: doc/guix.texi:1107
4209 msgid "The SSH private key file to use when connecting to the machine, in OpenSSH format. This key must not be protected with a passphrase."
4210 msgstr "连接机器时使用的SSH私钥,OpenSSH格式。这个私钥不能被密码保护。"
4211
4212 #. type: table
4213 #: doc/guix.texi:1110
4214 msgid "Note that the default value is the private key @emph{of the root account}. Make sure it exists if you use the default."
4215 msgstr "注意,默认值是@emph{root帐号}的私钥。使用默认值时请确保它存在。"
4216
4217 #. type: item
4218 #: doc/guix.texi:1111
4219 #, no-wrap
4220 msgid "@code{compression} (default: @code{\"zlib@@openssh.com,zlib\"})"
4221 msgstr "@code{compression}(默认值:@code{\"zlib@@openssh.com,zlib\"})"
4222
4223 #. type: item
4224 #: doc/guix.texi:1112 doc/guix.texi:12200
4225 #, no-wrap
4226 msgid "@code{compression-level} (default: @code{3})"
4227 msgstr "@code{compression-level}(默认值:@code{3})"
4228
4229 #. type: table
4230 #: doc/guix.texi:1114
4231 msgid "The SSH-level compression methods and compression level requested."
4232 msgstr "SSH压缩算法和压缩级别。"
4233
4234 #. type: table
4235 #: doc/guix.texi:1117
4236 msgid "Note that offloading relies on SSH compression to reduce bandwidth usage when transferring files to and from build machines."
4237 msgstr "下发任务依赖SSH压缩来减少传输文件到构建机器时使用的带宽。"
4238
4239 #. type: item
4240 #: doc/guix.texi:1118
4241 #, no-wrap
4242 msgid "@code{daemon-socket} (default: @code{\"/var/guix/daemon-socket/socket\"})"
4243 msgstr "@code{daemon-socket}(默认值:@code{\"/var/guix/daemon-socket/socket\"})"
4244
4245 #. type: table
4246 #: doc/guix.texi:1121
4247 msgid "File name of the Unix-domain socket @command{guix-daemon} is listening to on that machine."
4248 msgstr "那台机器上的@command{guix-daemon}监听的Unix套接字文件名。"
4249
4250 #. type: item
4251 #: doc/guix.texi:1122
4252 #, no-wrap
4253 msgid "@code{parallel-builds} (default: @code{1})"
4254 msgstr "@code{parallel-builds}(默认值:@code{1})"
4255
4256 #. type: table
4257 #: doc/guix.texi:1124
4258 msgid "The number of builds that may run in parallel on the machine."
4259 msgstr "那台机器上可以并行运行的构建任务数量。"
4260
4261 #. type: item
4262 #: doc/guix.texi:1125
4263 #, no-wrap
4264 msgid "@code{speed} (default: @code{1.0})"
4265 msgstr "@code{speed}(默认值:@code{1.0})"
4266
4267 #. type: table
4268 #: doc/guix.texi:1128
4269 msgid "A ``relative speed factor''. The offload scheduler will tend to prefer machines with a higher speed factor."
4270 msgstr "一个相对的速度值。下发调度器会偏好速度更快的机器。"
4271
4272 #. type: item
4273 #: doc/guix.texi:1129
4274 #, no-wrap
4275 msgid "@code{features} (default: @code{'()})"
4276 msgstr "@code{features} (@code{'()})"
4277
4278 #. type: table
4279 #: doc/guix.texi:1134
4280 msgid "A list of strings denoting specific features supported by the machine. An example is @code{\"kvm\"} for machines that have the KVM Linux modules and corresponding hardware support. Derivations can request features by name, and they will be scheduled on matching build machines."
4281 msgstr "一个表示机器支持的功能的字符串列表。例如,@code{\"kvm\"}表示机器有KVM Linux模块和相关的硬件支持。Derivation可以通过名字请求需要的功能,然后被分发到匹配的机器的任务队列里。"
4282
4283 #. type: Plain text
4284 #: doc/guix.texi:1140
4285 msgid "The @command{guix} command must be in the search path on the build machines. You can check whether this is the case by running:"
4286 msgstr "@command{guix}命令必须在构建机器的搜素路径里。你可以通过这个命令检查:"
4287
4288 #. type: example
4289 #: doc/guix.texi:1143
4290 #, no-wrap
4291 msgid "ssh build-machine guix repl --version\n"
4292 msgstr "ssh build-machine guix repl --version\n"
4293
4294 #. type: Plain text
4295 #: doc/guix.texi:1150
4296 msgid "There is one last thing to do once @file{machines.scm} is in place. As explained above, when offloading, files are transferred back and forth between the machine stores. For this to work, you first need to generate a key pair on each machine to allow the daemon to export signed archives of files from the store (@pxref{Invoking guix archive}):"
4297 msgstr "@file{machines.scm}到位后,还有一件要做的事。如上所述,下发任务时会在机器的仓库之间传输文件。为此,你需要在每台机器上生成一个密钥对,以使后台进程可以从仓库导出签名后的文件包(@pxref{Invoking guix archive}):"
4298
4299 #. type: example
4300 #: doc/guix.texi:1153
4301 #, no-wrap
4302 msgid "# guix archive --generate-key\n"
4303 msgstr "# guix archive --generate-key\n"
4304
4305 #. type: Plain text
4306 #: doc/guix.texi:1158
4307 msgid "Each build machine must authorize the key of the master machine so that it accepts store items it receives from the master:"
4308 msgstr "每台构建机器都必须认证主机器的公钥,从而接收从主机器接收的仓库文件:"
4309
4310 #. type: example
4311 #: doc/guix.texi:1161
4312 #, no-wrap
4313 msgid "# guix archive --authorize < master-public-key.txt\n"
4314 msgstr "# guix archive --authorize < master-public-key.txt\n"
4315
4316 #. type: Plain text
4317 #: doc/guix.texi:1165
4318 msgid "Likewise, the master machine must authorize the key of each build machine."
4319 msgstr "类似的,主机器必须认证每台构建机器的公钥:"
4320
4321 #. type: Plain text
4322 #: doc/guix.texi:1171
4323 msgid "All the fuss with keys is here to express pairwise mutual trust relations between the master and the build machines. Concretely, when the master receives files from a build machine (and @i{vice versa}), its build daemon can make sure they are genuine, have not been tampered with, and that they are signed by an authorized key."
4324 msgstr "所有这些有关公钥的繁琐事宜都是为了表达主服务器和构建服务器之间成对的互相信任关系。具体地,当主机器从构建机器接收文件时(反之亦然),它的构建后台进程可以确保文件是原样的,没有被篡改,并且被认证的公钥签名过。"
4325
4326 #. type: cindex
4327 #: doc/guix.texi:1172
4328 #, no-wrap
4329 msgid "offload test"
4330 msgstr "下发测试"
4331
4332 #. type: Plain text
4333 #: doc/guix.texi:1175
4334 msgid "To test whether your setup is operational, run this command on the master node:"
4335 msgstr "为了测试你的设置是否能正常工作,在主节点上运行这个命令:"
4336
4337 #. type: example
4338 #: doc/guix.texi:1178
4339 #, no-wrap
4340 msgid "# guix offload test\n"
4341 msgstr "# guix offload test\n"
4342
4343 #. type: Plain text
4344 #: doc/guix.texi:1184
4345 msgid "This will attempt to connect to each of the build machines specified in @file{/etc/guix/machines.scm}, make sure Guile and the Guix modules are available on each machine, attempt to export to the machine and import from it, and report any error in the process."
4346 msgstr "这会尝试连接每台在@file{/etc/guix/machines.scm}里指定的构建机器,确保Guile和Guix模块在每台机器上都可用,尝试导出到这些机器和从这些机器导入,并且报告这个过程中遇到的任何错误。"
4347
4348 #. type: Plain text
4349 #: doc/guix.texi:1187
4350 msgid "If you want to test a different machine file, just specify it on the command line:"
4351 msgstr "如果你希望用别的文件测试,只需要在命令行指定它:"
4352
4353 #. type: example
4354 #: doc/guix.texi:1190
4355 #, no-wrap
4356 msgid "# guix offload test machines-qualif.scm\n"
4357 msgstr "# guix offload test machines-qualif.scm\n"
4358
4359 #. type: Plain text
4360 #: doc/guix.texi:1194
4361 msgid "Last, you can test the subset of the machines whose name matches a regular expression like this:"
4362 msgstr "最后,你可以像这样只测试机器列表里名字匹配某个正则表达式的子集:"
4363
4364 #. type: example
4365 #: doc/guix.texi:1197
4366 #, no-wrap
4367 msgid "# guix offload test machines.scm '\\.gnu\\.org$'\n"
4368 msgstr "# guix offload test machines.scm '\\.gnu\\.org$'\n"
4369
4370 #. type: cindex
4371 #: doc/guix.texi:1199
4372 #, no-wrap
4373 msgid "offload status"
4374 msgstr "下发状态"
4375
4376 #. type: Plain text
4377 #: doc/guix.texi:1202
4378 msgid "To display the current load of all build hosts, run this command on the main node:"
4379 msgstr "若想展示所有构建主机的当前负载,在主节点上运行这个命令:"
4380
4381 #. type: example
4382 #: doc/guix.texi:1205
4383 #, no-wrap
4384 msgid "# guix offload status\n"
4385 msgstr "# guix offload status\n"
4386
4387 #. type: cindex
4388 #: doc/guix.texi:1211
4389 #, no-wrap
4390 msgid "SELinux, daemon policy"
4391 msgstr "SELinux,后台进程策略"
4392
4393 #. type: cindex
4394 #: doc/guix.texi:1212
4395 #, no-wrap
4396 msgid "mandatory access control, SELinux"
4397 msgstr "强制访问控制,SELinux"
4398
4399 #. type: cindex
4400 #: doc/guix.texi:1213
4401 #, no-wrap
4402 msgid "security, guix-daemon"
4403 msgstr "安全,guix-daemon"
4404
4405 #. type: Plain text
4406 #: doc/guix.texi:1219
4407 msgid "Guix includes an SELinux policy file at @file{etc/guix-daemon.cil} that can be installed on a system where SELinux is enabled, in order to label Guix files and to specify the expected behavior of the daemon. Since Guix System does not provide an SELinux base policy, the daemon policy cannot be used on Guix System."
4408 msgstr "Guix附带一个SELinux策略文件,位置在@file{etc/guix-daemon.cil},它可以在启用SELinux的系统上安装,为Guix的文件添加标签及指定后台进程的期望行为。由于Guix系统不提供SELinux基础策略,这个后台进程策略不能在Guix系统上使用。"
4409
4410 #. type: subsubsection
4411 #: doc/guix.texi:1220
4412 #, no-wrap
4413 msgid "Installing the SELinux policy"
4414 msgstr "安装SELinux策略"
4415
4416 #. type: cindex
4417 #: doc/guix.texi:1221
4418 #, no-wrap
4419 msgid "SELinux, policy installation"
4420 msgstr "SELinux,安装策略"
4421
4422 #. type: Plain text
4423 #: doc/guix.texi:1223
4424 msgid "To install the policy run this command as root:"
4425 msgstr "用root用户执行这个命令以安装策略:"
4426
4427 #. type: example
4428 #: doc/guix.texi:1226
4429 #, no-wrap
4430 msgid "semodule -i etc/guix-daemon.cil\n"
4431 msgstr "semodule -i etc/guix-daemon.cil\n"
4432
4433 #. type: Plain text
4434 #: doc/guix.texi:1230
4435 msgid "Then relabel the file system with @code{restorecon} or by a different mechanism provided by your system."
4436 msgstr "用@code{restorecon}或者你的系统提供的其它机制重新给文件系统打标签。"
4437
4438 #. type: Plain text
4439 #: doc/guix.texi:1235
4440 msgid "Once the policy is installed, the file system has been relabeled, and the daemon has been restarted, it should be running in the @code{guix_daemon_t} context. You can confirm this with the following command:"
4441 msgstr "一旦安装好策略,为文件系统重新打好标签,并且重启了后台进程,它应该在@code{guix_daemon_t}环境里运行。你可以用下面这个命令确认:"
4442
4443 #. type: example
4444 #: doc/guix.texi:1238
4445 #, no-wrap
4446 msgid "ps -Zax | grep guix-daemon\n"
4447 msgstr "ps -Zax | grep guix-daemon\n"
4448
4449 #. type: Plain text
4450 #: doc/guix.texi:1243
4451 msgid "Monitor the SELinux log files as you run a command like @code{guix build hello} to convince yourself that SELinux permits all necessary operations."
4452 msgstr "运行@code{guix build hello}之类的命令并监控SELinux日志以说服你自己SELinux允许所有的操作。"
4453
4454 #. type: cindex
4455 #: doc/guix.texi:1245
4456 #, no-wrap
4457 msgid "SELinux, limitations"
4458 msgstr "SELinux,限制"
4459
4460 #. type: Plain text
4461 #: doc/guix.texi:1250
4462 msgid "This policy is not perfect. Here is a list of limitations or quirks that should be considered when deploying the provided SELinux policy for the Guix daemon."
4463 msgstr "这个策略不是完美的。这里有一个关于限制和缺陷的列表,当为Guix后台进程部署提供的SELinux策略时该认真考虑。"
4464
4465 #. type: enumerate
4466 #: doc/guix.texi:1257
4467 msgid "@code{guix_daemon_socket_t} isn’t actually used. None of the socket operations involve contexts that have anything to do with @code{guix_daemon_socket_t}. It doesn’t hurt to have this unused label, but it would be preferrable to define socket rules for only this label."
4468 msgstr "@code{guix_daemon_socket_t}没有被实际使用。所有的套接字操作都和@code{guix_daemon_socket_t}没有任何关系。存在这个没被使用的标签并不碍事,但是为这个标签定义套接字规则是更好的选择。"
4469
4470 #. type: enumerate
4471 #: doc/guix.texi:1268
4472 msgid "@code{guix gc} cannot access arbitrary links to profiles. By design, the file label of the destination of a symlink is independent of the file label of the link itself. Although all profiles under $localstatedir are labelled, the links to these profiles inherit the label of the directory they are in. For links in the user’s home directory this will be @code{user_home_t}. But for links from the root user’s home directory, or @file{/tmp}, or the HTTP server’s working directory, etc, this won’t work. @code{guix gc} would be prevented from reading and following these links."
4473 msgstr "@code{guix gc}不可以任意访问指向profile的链接。由于设计的原因,符号链接的目标的文件标签和符号链接本身的文件标签是不同的。尽管$localstatedir里的所有profile都被打上了标签,指向这些profile的符号链接继承它们所在的文件夹的标签。对于普通用户的家目录里的链接,标签是@code{user_home_t}。但是对于root用户的家目录,或@file{/tmp},或HTTP服务器的工作目录等文件夹里的链接不是这样。@code{guix gc}会被阻止读取和跟随这些链接。"
4474
4475 #. type: enumerate
4476 #: doc/guix.texi:1273
4477 msgid "The daemon’s feature to listen for TCP connections might no longer work. This might require extra rules, because SELinux treats network sockets differently from files."
4478 msgstr "后台进程监听TCP连接的功能不再可用。这可能需要额外的规则,因为SELinux区别对待网络套接字和文件。"
4479
4480 #. type: enumerate
4481 #: doc/guix.texi:1284
4482 msgid "Currently all files with a name matching the regular expression @code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} are assigned the label @code{guix_daemon_exec_t}; this means that @emph{any} file with that name in any profile would be permitted to run in the @code{guix_daemon_t} domain. This is not ideal. An attacker could build a package that provides this executable and convince a user to install and run it, which lifts it into the @code{guix_daemon_t} domain. At that point SELinux could not prevent it from accessing files that are allowed for processes in that domain."
4483 msgstr "目前,所有匹配正则表达式@code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon}的文件都被赋予@code{guix_daemon_exec_t}标签;这意味着@emph{任何}profile里的任何有这样名字的的文件都会被允许在@code{guix_daemon_t}域里执行。这不够理想。一个攻击者可以构建提供这个可执行程序的软件包,并说服一个用户安装、运行它,以此进入@code{guix_daemon_t}域。那时,SELinux无法阻止它访问所在域的进程可以访问的文件。"
4484
4485 #. type: enumerate
4486 #: doc/guix.texi:1292
4487 msgid "We could generate a much more restrictive policy at installation time, so that only the @emph{exact} file name of the currently installed @code{guix-daemon} executable would be labelled with @code{guix_daemon_exec_t}, instead of using a broad regular expression. The downside is that root would have to install or upgrade the policy at installation time whenever the Guix package that provides the effectively running @code{guix-daemon} executable is upgraded."
4488 msgstr "我们可以在安装时生成一个更严格的策略,仅当前安装的@code{guix-daemon}的@emph{精确的}的文件名会被打上@code{guix_daemon_exec_t}标签,而不是用一个宽泛的正则表达式。这样的缺点是root必须在每次安装提供@code{guix-daemon}的Guix软件包时安装或升级策略。"
4489
4490 #. type: section
4491 #: doc/guix.texi:1295
4492 #, no-wrap
4493 msgid "Invoking @command{guix-daemon}"
4494 msgstr "调用@command{guix-daemon}"
4495
4496 #. type: Plain text
4497 #: doc/guix.texi:1301
4498 msgid "The @command{guix-daemon} program implements all the functionality to access the store. This includes launching build processes, running the garbage collector, querying the availability of a build result, etc. It is normally run as @code{root} like this:"
4499 msgstr "@command{guix-daemon}程序实现了所有访问仓库的功能。包括启动构建进程,运行垃圾回收器,查询构建结果,等。它通常以@code{root}身份运行:"
4500
4501 #. type: Plain text
4502 #: doc/guix.texi:1308
4503 msgid "For details on how to set it up, @pxref{Setting Up the Daemon}."
4504 msgstr "关于如何设置它,@pxref{Setting Up the Daemon}。"
4505
4506 #. type: cindex
4507 #: doc/guix.texi:1310
4508 #, no-wrap
4509 msgid "container, build environment"
4510 msgstr "容器,构建环境"
4511
4512 #. type: cindex
4513 #: doc/guix.texi:1312 doc/guix.texi:2561 doc/guix.texi:3242 doc/guix.texi:9773
4514 #, no-wrap
4515 msgid "reproducible builds"
4516 msgstr "可复现的构建"
4517
4518 #. type: Plain text
4519 #: doc/guix.texi:1324
4520 msgid "By default, @command{guix-daemon} launches build processes under different UIDs, taken from the build group specified with @code{--build-users-group}. In addition, each build process is run in a chroot environment that only contains the subset of the store that the build process depends on, as specified by its derivation (@pxref{Programming Interface, derivation}), plus a set of specific system directories. By default, the latter contains @file{/dev} and @file{/dev/pts}. Furthermore, on GNU/Linux, the build environment is a @dfn{container}: in addition to having its own file system tree, it has a separate mount name space, its own PID name space, network name space, etc. This helps achieve reproducible builds (@pxref{Features})."
4521 msgstr "默认情况下,@command{guix-daemon}用不同的UID启动构建进程,这些用户是从@code{--build-users-group}参数指定的用户组里获取的。并且,每个构建进程都在一个chroot环境里运行,这个环境只包含构建进程依赖的仓库的子集(由derivation(@pxref{Programming Interface, derivation})的内容决定),以及一些系统文件夹。默认情况下,后者包含@file{/dev}和@file{/dev/pts}。并且,在GNU/Linux上,构建环境是一个@dfn{容器}:它不仅有自己的文件系统树,还有独立的挂载命名空间,独立的PID命名空间,网络命名空间,等。这帮助实现可复现构建的目的(@pxref{Features})。"
4522
4523 #. type: Plain text
4524 #: doc/guix.texi:1330
4525 msgid "When the daemon performs a build on behalf of the user, it creates a build directory under @file{/tmp} or under the directory specified by its @code{TMPDIR} environment variable. This directory is shared with the container for the duration of the build, though within the container, the build tree is always called @file{/tmp/guix-build-@var{name}.drv-0}."
4526 msgstr "当后台进程代替用户执行构建时,它在@file{/tmp}或@code{TMPDIR}环境变量指定的文件夹里创建一个文件夹。在构建期间,这个文件夹被共享给容器,然而容器内,这个构建树总是叫做@file{/tmp/guix-build-@var{name}.drv-0}。"
4527
4528 #. type: Plain text
4529 #: doc/guix.texi:1334
4530 msgid "The build directory is automatically deleted upon completion, unless the build failed and the client specified @option{--keep-failed} (@pxref{Invoking guix build, @option{--keep-failed}})."
4531 msgstr "结束时构建文件夹就被自动删除了,除非构建失败并且客户端指定了@option{--keep-failed}参数(@pxref{Invoking guix build, @option{--keep-failed}})。"
4532
4533 #. type: Plain text
4534 #: doc/guix.texi:1340
4535 msgid "The daemon listens for connections and spawns one sub-process for each session started by a client (one of the @command{guix} sub-commands.) The @command{guix processes} command allows you to get an overview of the activity on your system by viewing each of the active sessions and clients. @xref{Invoking guix processes}, for more information."
4536 msgstr "后台进程监听连接并且为每个客户端(@command{guix}的子命令)启动的会话生成一个子进程。@command{guix processes}命令允许你获取系统上的活动的概况,浏览每个活动会话和客户端。@xref{Invoking guix processes},以了解更多信息。"
4537
4538 #. type: Plain text
4539 #: doc/guix.texi:1342
4540 msgid "The following command-line options are supported:"
4541 msgstr "下面这些命令行选项受支持:"
4542
4543 #. type: item
4544 #: doc/guix.texi:1344
4545 #, no-wrap
4546 msgid "--build-users-group=@var{group}"
4547 msgstr "--build-users-group=@var{用户组}"
4548
4549 #. type: table
4550 #: doc/guix.texi:1347
4551 msgid "Take users from @var{group} to run build processes (@pxref{Setting Up the Daemon, build users})."
4552 msgstr "这会从@var{用户组}里选取用户,以运行构建进程(@pxref{Setting Up the Daemon,构建用户})。"
4553
4554 #. type: item
4555 #: doc/guix.texi:1348 doc/guix.texi:7723
4556 #, no-wrap
4557 msgid "--no-substitutes"
4558 msgstr "--no-substitutes"
4559
4560 #. type: cindex
4561 #: doc/guix.texi:1349 doc/guix.texi:2573 doc/guix.texi:3103
4562 #, no-wrap
4563 msgid "substitutes"
4564 msgstr "substitutes"
4565
4566 #. type: table
4567 #: doc/guix.texi:1353 doc/guix.texi:7727
4568 msgid "Do not use substitutes for build products. That is, always build things locally instead of allowing downloads of pre-built binaries (@pxref{Substitutes})."
4569 msgstr "不要为构建商品使用substitute。即,总是在本地构建,而不是下载预构建的二进制文件(@pxref{Substitutes})。"
4570
4571 #. type: table
4572 #: doc/guix.texi:1357
4573 msgid "When the daemon runs with @code{--no-substitutes}, clients can still explicitly enable substitution @i{via} the @code{set-build-options} remote procedure call (@pxref{The Store})."
4574 msgstr "当后台进程用@code{--no-substitutes}参数启动时,客户端仍然可以显式地@i{通过}@code{set-build-options}远程过程调用来启用substitute(@pxref{The Store})。"
4575
4576 #. type: item
4577 #: doc/guix.texi:1358 doc/guix.texi:7710 doc/guix.texi:9317 doc/guix.texi:9898
4578 #: doc/guix.texi:10088
4579 #, no-wrap
4580 msgid "--substitute-urls=@var{urls}"
4581 msgstr "--substitute-urls=@var{urls}"
4582
4583 #. type: anchor{#1}
4584 #: doc/guix.texi:1363
4585 msgid "daemon-substitute-urls"
4586 msgstr "daemon-substitute-urls"
4587
4588 #. type: table
4589 #: doc/guix.texi:1363
4590 msgid "Consider @var{urls} the default whitespace-separated list of substitute source URLs. When this option is omitted, @indicateurl{https://@value{SUBSTITUTE-SERVER}} is used."
4591 msgstr "@var{urls}是用空格分隔的substitute源URL列表。当这个选项被省略时,默认使用@indicateurl{https://@value{SUBSTITUTE-SERVER}}。"
4592
4593 #. type: table
4594 #: doc/guix.texi:1366
4595 msgid "This means that substitutes may be downloaded from @var{urls}, as long as they are signed by a trusted signature (@pxref{Substitutes})."
4596 msgstr "这意味着可以从@var{urls}下载substitute,只要它们的签名可信(@pxref{Substitutes})。"
4597
4598 #. type: item
4599 #: doc/guix.texi:1368 doc/guix.texi:7748
4600 #, no-wrap
4601 msgid "--no-build-hook"
4602 msgstr "--no-build-hook"
4603
4604 #. type: table
4605 #: doc/guix.texi:1370
4606 msgid "Do not use the @dfn{build hook}."
4607 msgstr "不要使用@dfn{构建钩子}。"
4608
4609 #. type: table
4610 #: doc/guix.texi:1374
4611 msgid "The build hook is a helper program that the daemon can start and to which it submits build requests. This mechanism is used to offload builds to other machines (@pxref{Daemon Offload Setup})."
4612 msgstr "构建钩子是一个可以被后台进程启动并且提交构建请求的辅助程序。这个机制被用来向其它机器下发构建。(@pxref{Daemon Offload Setup})。"
4613
4614 #. type: item
4615 #: doc/guix.texi:1375
4616 #, no-wrap
4617 msgid "--cache-failures"
4618 msgstr "--cache-failures"
4619
4620 #. type: table
4621 #: doc/guix.texi:1377
4622 msgid "Cache build failures. By default, only successful builds are cached."
4623 msgstr "缓存失败的构建。默认地,只缓存成功的构建。"
4624
4625 #. type: table
4626 #: doc/guix.texi:1382
4627 msgid "When this option is used, @command{guix gc --list-failures} can be used to query the set of store items marked as failed; @command{guix gc --clear-failures} removes store items from the set of cached failures. @xref{Invoking guix gc}."
4628 msgstr "当这个选项被使用时,可以用@command{guix gc --list-failures}查询被标记为失败的仓库文件;@command{guix gc --clear-failures}从仓库里删除失败的缓存。@xref{Invoking guix gc}。"
4629
4630 #. type: item
4631 #: doc/guix.texi:1383 doc/guix.texi:7777
4632 #, no-wrap
4633 msgid "--cores=@var{n}"
4634 msgstr "--cores=@var{n}"
4635
4636 #. type: itemx
4637 #: doc/guix.texi:1384 doc/guix.texi:7778
4638 #, no-wrap
4639 msgid "-c @var{n}"
4640 msgstr "-c @var{n}"
4641
4642 #. type: table
4643 #: doc/guix.texi:1387
4644 msgid "Use @var{n} CPU cores to build each derivation; @code{0} means as many as available."
4645 msgstr "用@var{n}个CPU核来构建每个derivation;@code{0}表示有多少就用多少。"
4646
4647 #. type: table
4648 #: doc/guix.texi:1391
4649 msgid "The default value is @code{0}, but it may be overridden by clients, such as the @code{--cores} option of @command{guix build} (@pxref{Invoking guix build})."
4650 msgstr "默认值是@code{0},但是它的值可以被客户端覆盖,例如@command{guix build}的@code{--cores}选项(@pxref{Invoking guix build})。"
4651
4652 #. type: table
4653 #: doc/guix.texi:1395
4654 msgid "The effect is to define the @code{NIX_BUILD_CORES} environment variable in the build process, which can then use it to exploit internal parallelism---for instance, by running @code{make -j$NIX_BUILD_CORES}."
4655 msgstr "他的作用是在构建进程里设置@code{NIX_BUILD_CORES}环境变量,从而用它来利用内部的并行机制--例如,通过运行@code{make -j$NIX_BUILD_CORES}。"
4656
4657 #. type: item
4658 #: doc/guix.texi:1396 doc/guix.texi:7782
4659 #, no-wrap
4660 msgid "--max-jobs=@var{n}"
4661 msgstr "--max-jobs=@var{n}"
4662
4663 #. type: itemx
4664 #: doc/guix.texi:1397 doc/guix.texi:7783
4665 #, no-wrap
4666 msgid "-M @var{n}"
4667 msgstr "-M @var{n}"
4668
4669 #. type: table
4670 #: doc/guix.texi:1402
4671 msgid "Allow at most @var{n} build jobs in parallel. The default value is @code{1}. Setting it to @code{0} means that no builds will be performed locally; instead, the daemon will offload builds (@pxref{Daemon Offload Setup}), or simply fail."
4672 msgstr "最多允许@var{n}个并行的构建任务。默认值是@code{1}。设置为@code{0}表示不在本地执行构建;而是下发构建任务(@pxref{Daemon Offload Setup}),或者直接失败。"
4673
4674 #. type: item
4675 #: doc/guix.texi:1403 doc/guix.texi:7753
4676 #, no-wrap
4677 msgid "--max-silent-time=@var{seconds}"
4678 msgstr "--max-silent-time=@var{seconds}"
4679
4680 #. type: table
4681 #: doc/guix.texi:1406 doc/guix.texi:7756
4682 msgid "When the build or substitution process remains silent for more than @var{seconds}, terminate it and report a build failure."
4683 msgstr "当构建或substitution进程超过@var{seconds}秒仍然保持静默,就把它结束掉并报告构建失败。"
4684
4685 #. type: table
4686 #: doc/guix.texi:1408 doc/guix.texi:1417
4687 msgid "The default value is @code{0}, which disables the timeout."
4688 msgstr "默认值是@code{0},表示关闭超时。"
4689
4690 #. type: table
4691 #: doc/guix.texi:1411
4692 msgid "The value specified here can be overridden by clients (@pxref{Common Build Options, @code{--max-silent-time}})."
4693 msgstr "这里指定的值可以被客户端覆盖(@pxref{Common Build Options, @code{--max-silent-time}})。"
4694
4695 #. type: item
4696 #: doc/guix.texi:1412 doc/guix.texi:7760
4697 #, no-wrap
4698 msgid "--timeout=@var{seconds}"
4699 msgstr "--timeout=@var{seconds}"
4700
4701 #. type: table
4702 #: doc/guix.texi:1415 doc/guix.texi:7763
4703 msgid "Likewise, when the build or substitution process lasts for more than @var{seconds}, terminate it and report a build failure."
4704 msgstr "类似地,当构建或substitution进程执行超过@var{seconds}秒,就把它结束掉并报告构建失败。"
4705
4706 #. type: table
4707 #: doc/guix.texi:1420
4708 msgid "The value specified here can be overridden by clients (@pxref{Common Build Options, @code{--timeout}})."
4709 msgstr "这里指定的值可以被客户端覆盖(@pxref{Common Build Options, @code{--timeout}})。"
4710
4711 #. type: item
4712 #: doc/guix.texi:1421
4713 #, no-wrap
4714 msgid "--rounds=@var{N}"
4715 msgstr "--rounds=@var{N}"
4716
4717 #. type: table
4718 #: doc/guix.texi:1426
4719 msgid "Build each derivation @var{n} times in a row, and raise an error if consecutive build results are not bit-for-bit identical. Note that this setting can be overridden by clients such as @command{guix build} (@pxref{Invoking guix build})."
4720 msgstr "为每个derivation构建@var{n}次,如果连续的构建结果不是每个比特都相同就报告错误。这个设置可以被@command{guix build}之类的客户端覆盖(@pxref{Invoking guix build})。"
4721
4722 #. type: table
4723 #: doc/guix.texi:1430 doc/guix.texi:8122
4724 msgid "When used in conjunction with @option{--keep-failed}, the differing output is kept in the store, under @file{/gnu/store/@dots{}-check}. This makes it easy to look for differences between the two results."
4725 msgstr "当和@option{--keep-failed}一起使用时,不同的输出保存在@file{/gnu/store/@dots{}-check}。这让检查两个结果的区别更容易。"
4726
4727 #. type: item
4728 #: doc/guix.texi:1431
4729 #, no-wrap
4730 msgid "--debug"
4731 msgstr "--debug"
4732
4733 #. type: table
4734 #: doc/guix.texi:1433
4735 msgid "Produce debugging output."
4736 msgstr "生成调试输出。"
4737
4738 #. type: table
4739 #: doc/guix.texi:1437
4740 msgid "This is useful to debug daemon start-up issues, but then it may be overridden by clients, for example the @code{--verbosity} option of @command{guix build} (@pxref{Invoking guix build})."
4741 msgstr "这对调试后台进程的启动问题很有用,但是之后它可能会被客户端覆盖,例如@command{guix build}命令的@code{--verbosity}选项(@pxref{Invoking guix build})。"
4742
4743 #. type: item
4744 #: doc/guix.texi:1438
4745 #, no-wrap
4746 msgid "--chroot-directory=@var{dir}"
4747 msgstr "--chroot-directory=@var{dir}"
4748
4749 #. type: table
4750 #: doc/guix.texi:1440
4751 msgid "Add @var{dir} to the build chroot."
4752 msgstr "把@var{dir}添加到构建的chroot。"
4753
4754 #. type: table
4755 #: doc/guix.texi:1446
4756 msgid "Doing this may change the result of build processes---for instance if they use optional dependencies found in @var{dir} when it is available, and not otherwise. For that reason, it is not recommended to do so. Instead, make sure that each derivation declares all the inputs that it needs."
4757 msgstr "这么做可能会改变构建进程的结果--例如,如果它们使用了在@var{dir}里发现的可选依赖。因此,建议不要这么做,而是确保每个derivation声明所需的全部输入。"
4758
4759 #. type: item
4760 #: doc/guix.texi:1447
4761 #, no-wrap
4762 msgid "--disable-chroot"
4763 msgstr "--disable-chroot"
4764
4765 #. type: table
4766 #: doc/guix.texi:1449
4767 msgid "Disable chroot builds."
4768 msgstr "关闭chroot构建。"
4769
4770 #. type: table
4771 #: doc/guix.texi:1454
4772 msgid "Using this option is not recommended since, again, it would allow build processes to gain access to undeclared dependencies. It is necessary, though, when @command{guix-daemon} is running under an unprivileged user account."
4773 msgstr "不建议使用这个选项,因为它会允许构建进程访问到没被声明的依赖。但是,当@command{guix-daemon}以没有特权的用户身份运行时,这个选项是必须的。"
4774
4775 #. type: item
4776 #: doc/guix.texi:1455
4777 #, no-wrap
4778 msgid "--log-compression=@var{type}"
4779 msgstr "--log-compression=@var{type}"
4780
4781 #. type: table
4782 #: doc/guix.texi:1458
4783 msgid "Compress build logs according to @var{type}, one of @code{gzip}, @code{bzip2}, or @code{none}."
4784 msgstr "以@var{type}方式压缩构建日志,可选的值:@code{gzip},@code{bzip2},@code{none}。"
4785
4786 #. type: table
4787 #: doc/guix.texi:1462
4788 msgid "Unless @code{--lose-logs} is used, all the build logs are kept in the @var{localstatedir}. To save space, the daemon automatically compresses them with bzip2 by default."
4789 msgstr "除非使用了@code{--lose-logs},所有的构建日志都保存在@var{localstatedir}里。为了节省空间,后台进程默认使用bzip2对它们进行压缩。"
4790
4791 #. type: item
4792 #: doc/guix.texi:1463
4793 #, no-wrap
4794 msgid "--disable-deduplication"
4795 msgstr "--disable-deduplication"
4796
4797 #. type: cindex
4798 #: doc/guix.texi:1464 doc/guix.texi:3576
4799 #, no-wrap
4800 msgid "deduplication"
4801 msgstr "去重"
4802
4803 #. type: table
4804 #: doc/guix.texi:1466
4805 msgid "Disable automatic file ``deduplication'' in the store."
4806 msgstr "关闭自动对仓库文件“去重”。"
4807
4808 #. type: table
4809 #: doc/guix.texi:1473
4810 msgid "By default, files added to the store are automatically ``deduplicated'': if a newly added file is identical to another one found in the store, the daemon makes the new file a hard link to the other file. This can noticeably reduce disk usage, at the expense of slightly increased input/output load at the end of a build process. This option disables this optimization."
4811 msgstr "默认地,添加到仓库的文件会被自动“去重”:如果新添加的文件和仓库里找到的某个文件完全相同,后台进程把这个新文件变成另一个文件的硬链接。这可以明显地减少硬盘使用,代价是构建结束后轻微地增加输入/输出负载。这个选项关闭这个优化。"
4812
4813 #. type: item
4814 #: doc/guix.texi:1474
4815 #, no-wrap
4816 msgid "--gc-keep-outputs[=yes|no]"
4817 msgstr "--gc-keep-outputs[=yes|no]"
4818
4819 #. type: table
4820 #: doc/guix.texi:1477
4821 msgid "Tell whether the garbage collector (GC) must keep outputs of live derivations."
4822 msgstr "垃圾收集器(GC)是否必须保留存活的derivation的输出。"
4823
4824 #. type: cindex
4825 #: doc/guix.texi:1478 doc/guix.texi:3393
4826 #, no-wrap
4827 msgid "GC roots"
4828 msgstr "GC根"
4829
4830 #. type: cindex
4831 #: doc/guix.texi:1479 doc/guix.texi:3394
4832 #, no-wrap
4833 msgid "garbage collector roots"
4834 msgstr "垃圾收集的根"
4835
4836 #. type: table
4837 #: doc/guix.texi:1484
4838 msgid "When set to ``yes'', the GC will keep the outputs of any live derivation available in the store---the @code{.drv} files. The default is ``no'', meaning that derivation outputs are kept only if they are reachable from a GC root. @xref{Invoking guix gc}, for more on GC roots."
4839 msgstr "当设置为“yes”时,GC会保留仓库里每个存活的derivation(@code{.drv}文件)的输出。默认是“no”,表示只有当从GC根可以访问时才保留derivation的输出。@xref{Invoking guix gc},了解更多关于GC根的信息。"
4840
4841 #. type: item
4842 #: doc/guix.texi:1485
4843 #, no-wrap
4844 msgid "--gc-keep-derivations[=yes|no]"
4845 msgstr "--gc-keep-derivations[=yes|no]"
4846
4847 #. type: table
4848 #: doc/guix.texi:1488
4849 msgid "Tell whether the garbage collector (GC) must keep derivations corresponding to live outputs."
4850 msgstr "垃圾收集器(GC)是否必须保留和存活的输出相关的derivation。"
4851
4852 #. type: table
4853 #: doc/guix.texi:1493
4854 msgid "When set to ``yes'', as is the case by default, the GC keeps derivations---i.e., @code{.drv} files---as long as at least one of their outputs is live. This allows users to keep track of the origins of items in their store. Setting it to ``no'' saves a bit of disk space."
4855 msgstr "当设置为“yes”时(默认),只要derivation(即@code{.drv}文件)的输出至少有一个是存活的,GC就将其保留。这让用户可以追踪仓库里物品的源头。设置为“no”可以节省一点硬盘空间。"
4856
4857 #. type: table
4858 #: doc/guix.texi:1501
4859 msgid "In this way, setting @code{--gc-keep-derivations} to ``yes'' causes liveness to flow from outputs to derivations, and setting @code{--gc-keep-outputs} to ``yes'' causes liveness to flow from derivations to outputs. When both are set to ``yes'', the effect is to keep all the build prerequisites (the sources, compiler, libraries, and other build-time tools) of live objects in the store, regardless of whether these prerequisites are reachable from a GC root. This is convenient for developers since it saves rebuilds or downloads."
4860 msgstr "这样,设置@code{--gc-keep-derivations}为“yes”使存活性从“输出”传递到“derivation”,设置@code{--gc-keep-outputs}为“yes”使存活性从“derivation”传递到“输出”。当两者都设置为“yes”时,效果是保留所有在仓库里的存活对象的构建先决条件(源代码,编译器,库,和其它构建时的工具),不管这些先决条件是否能从某个GC根访问到。这对开发者来说很方便,因为它避免了重复构建和下载。"
4861
4862 #. type: item
4863 #: doc/guix.texi:1502
4864 #, no-wrap
4865 msgid "--impersonate-linux-2.6"
4866 msgstr "--impersonate-linux-2.6"
4867
4868 #. type: table
4869 #: doc/guix.texi:1505
4870 msgid "On Linux-based systems, impersonate Linux 2.6. This means that the kernel's @code{uname} system call will report 2.6 as the release number."
4871 msgstr "在基于Linux的系统上,伪装成Linux 2.6。这意味着内核的@code{uname}系统调用会把版本号报告为2.6。"
4872
4873 #. type: table
4874 #: doc/guix.texi:1508
4875 msgid "This might be helpful to build programs that (usually wrongfully) depend on the kernel version number."
4876 msgstr "这可能会有助于构建那些(通常是错误地)依赖内核版本号的程序。"
4877
4878 #. type: item
4879 #: doc/guix.texi:1509
4880 #, no-wrap
4881 msgid "--lose-logs"
4882 msgstr "--lose-logs"
4883
4884 #. type: table
4885 #: doc/guix.texi:1512
4886 msgid "Do not keep build logs. By default they are kept under @code{@var{localstatedir}/guix/log}."
4887 msgstr "不保留构建日志。默认保存在@code{@var{localstatedir}/guix/log}。"
4888
4889 #. type: item
4890 #: doc/guix.texi:1513 doc/guix.texi:3722 doc/guix.texi:4590 doc/guix.texi:4883
4891 #: doc/guix.texi:8066 doc/guix.texi:9344 doc/guix.texi:9543
4892 #: doc/guix.texi:10093 doc/guix.texi:23935 doc/guix.texi:24555
4893 #, no-wrap
4894 msgid "--system=@var{system}"
4895 msgstr "--system=@var{system}"
4896
4897 #. type: table
4898 #: doc/guix.texi:1517
4899 msgid "Assume @var{system} as the current system type. By default it is the architecture/kernel pair found at configure time, such as @code{x86_64-linux}."
4900 msgstr "假设@var{system}是当前的系统类型。默认值是configure时发现的架构/内核元组,如@code{x86_64-linux}。"
4901
4902 #. type: item
4903 #: doc/guix.texi:1518 doc/guix.texi:7568
4904 #, no-wrap
4905 msgid "--listen=@var{endpoint}"
4906 msgstr "--listen=@var{endpoint}"
4907
4908 #. type: table
4909 #: doc/guix.texi:1523
4910 msgid "Listen for connections on @var{endpoint}. @var{endpoint} is interpreted as the file name of a Unix-domain socket if it starts with @code{/} (slash sign). Otherwise, @var{endpoint} is interpreted as a host name or host name and port to listen to. Here are a few examples:"
4911 msgstr ""
4912
4913 #. type: item
4914 #: doc/guix.texi:1525
4915 #, no-wrap
4916 msgid "--listen=/gnu/var/daemon"
4917 msgstr ""
4918
4919 #. type: table
4920 #: doc/guix.texi:1528
4921 msgid "Listen for connections on the @file{/gnu/var/daemon} Unix-domain socket, creating it if needed."
4922 msgstr ""
4923
4924 #. type: item
4925 #: doc/guix.texi:1529
4926 #, no-wrap
4927 msgid "--listen=localhost"
4928 msgstr ""
4929
4930 #. type: cindex
4931 #: doc/guix.texi:1530 doc/guix.texi:6349
4932 #, no-wrap
4933 msgid "daemon, remote access"
4934 msgstr ""
4935
4936 #. type: cindex
4937 #: doc/guix.texi:1531 doc/guix.texi:6350
4938 #, no-wrap
4939 msgid "remote access to the daemon"
4940 msgstr ""
4941
4942 #. type: cindex
4943 #: doc/guix.texi:1532 doc/guix.texi:6351
4944 #, no-wrap
4945 msgid "daemon, cluster setup"
4946 msgstr ""
4947
4948 #. type: cindex
4949 #: doc/guix.texi:1533 doc/guix.texi:6352
4950 #, no-wrap
4951 msgid "clusters, daemon setup"
4952 msgstr ""
4953
4954 #. type: table
4955 #: doc/guix.texi:1536
4956 msgid "Listen for TCP connections on the network interface corresponding to @code{localhost}, on port 44146."
4957 msgstr ""
4958
4959 #. type: item
4960 #: doc/guix.texi:1537
4961 #, no-wrap
4962 msgid "--listen=128.0.0.42:1234"
4963 msgstr ""
4964
4965 #. type: table
4966 #: doc/guix.texi:1540
4967 msgid "Listen for TCP connections on the network interface corresponding to @code{128.0.0.42}, on port 1234."
4968 msgstr ""
4969
4970 #. type: table
4971 #: doc/guix.texi:1547
4972 msgid "This option can be repeated multiple times, in which case @command{guix-daemon} accepts connections on all the specified endpoints. Users can tell client commands what endpoint to connect to by setting the @code{GUIX_DAEMON_SOCKET} environment variable (@pxref{The Store, @code{GUIX_DAEMON_SOCKET}})."
4973 msgstr ""
4974
4975 #. type: quotation
4976 #: doc/guix.texi:1554
4977 msgid "The daemon protocol is @emph{unauthenticated and unencrypted}. Using @code{--listen=@var{host}} is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon. In other cases where remote access to the daemon is needed, we recommend using Unix-domain sockets along with SSH."
4978 msgstr ""
4979
4980 #. type: table
4981 #: doc/guix.texi:1559
4982 msgid "When @code{--listen} is omitted, @command{guix-daemon} listens for connections on the Unix-domain socket located at @file{@var{localstatedir}/guix/daemon-socket/socket}."
4983 msgstr ""
4984
4985 #. type: Plain text
4986 #: doc/guix.texi:1569
4987 msgid "When using Guix on top of GNU/Linux distribution other than Guix System---a so-called @dfn{foreign distro}---a few additional steps are needed to get everything in place. Here are some of them."
4988 msgstr ""
4989
4990 #. type: anchor{#1}
4991 #: doc/guix.texi:1573
4992 msgid "locales-and-locpath"
4993 msgstr ""
4994
4995 #. type: cindex
4996 #: doc/guix.texi:1573
4997 #, no-wrap
4998 msgid "locales, when not on Guix System"
4999 msgstr ""
5000
5001 #. type: vindex
5002 #: doc/guix.texi:1574 doc/guix.texi:11297
5003 #, no-wrap
5004 msgid "LOCPATH"
5005 msgstr ""
5006
5007 #. type: vindex
5008 #: doc/guix.texi:1575
5009 #, no-wrap
5010 msgid "GUIX_LOCPATH"
5011 msgstr ""
5012
5013 #. type: Plain text
5014 #: doc/guix.texi:1580
5015 msgid "Packages installed @i{via} Guix will not use the locale data of the host system. Instead, you must first install one of the locale packages available with Guix and then define the @code{GUIX_LOCPATH} environment variable:"
5016 msgstr ""
5017
5018 #. type: example
5019 #: doc/guix.texi:1584
5020 #, no-wrap
5021 msgid ""
5022 "$ guix install glibc-locales\n"
5023 "$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale\n"
5024 msgstr ""
5025
5026 #. type: Plain text
5027 #: doc/guix.texi:1590
5028 msgid "Note that the @code{glibc-locales} package contains data for all the locales supported by the GNU@tie{}libc and weighs in at around 110@tie{}MiB. Alternatively, the @code{glibc-utf8-locales} is smaller but limited to a few UTF-8 locales."
5029 msgstr ""
5030
5031 #. type: Plain text
5032 #: doc/guix.texi:1594
5033 msgid "The @code{GUIX_LOCPATH} variable plays a role similar to @code{LOCPATH} (@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library Reference Manual}). There are two important differences though:"
5034 msgstr ""
5035
5036 #. type: enumerate
5037 #: doc/guix.texi:1601
5038 msgid "@code{GUIX_LOCPATH} is honored only by the libc in Guix, and not by the libc provided by foreign distros. Thus, using @code{GUIX_LOCPATH} allows you to make sure the programs of the foreign distro will not end up loading incompatible locale data."
5039 msgstr ""
5040
5041 #. type: enumerate
5042 #: doc/guix.texi:1608
5043 msgid "libc suffixes each entry of @code{GUIX_LOCPATH} with @code{/X.Y}, where @code{X.Y} is the libc version---e.g., @code{2.22}. This means that, should your Guix profile contain a mixture of programs linked against different libc version, each libc version will only try to load locale data in the right format."
5044 msgstr ""
5045
5046 #. type: Plain text
5047 #: doc/guix.texi:1612
5048 msgid "This is important because the locale data format used by different libc versions may be incompatible."
5049 msgstr ""
5050
5051 #. type: cindex
5052 #: doc/guix.texi:1615
5053 #, no-wrap
5054 msgid "name service switch, glibc"
5055 msgstr ""
5056
5057 #. type: cindex
5058 #: doc/guix.texi:1616
5059 #, no-wrap
5060 msgid "NSS (name service switch), glibc"
5061 msgstr ""
5062
5063 #. type: cindex
5064 #: doc/guix.texi:1617
5065 #, no-wrap
5066 msgid "nscd (name service caching daemon)"
5067 msgstr ""
5068
5069 #. type: cindex
5070 #: doc/guix.texi:1618
5071 #, no-wrap
5072 msgid "name service caching daemon (nscd)"
5073 msgstr ""
5074
5075 #. type: Plain text
5076 #: doc/guix.texi:1625
5077 msgid "When using Guix on a foreign distro, we @emph{strongly recommend} that the system run the GNU C library's @dfn{name service cache daemon}, @command{nscd}, which should be listening on the @file{/var/run/nscd/socket} socket. Failing to do that, applications installed with Guix may fail to look up host names or user accounts, or may even crash. The next paragraphs explain why."
5078 msgstr ""
5079
5080 #. type: file{#1}
5081 #: doc/guix.texi:1626
5082 #, no-wrap
5083 msgid "nsswitch.conf"
5084 msgstr ""
5085
5086 #. type: Plain text
5087 #: doc/guix.texi:1631
5088 msgid "The GNU C library implements a @dfn{name service switch} (NSS), which is an extensible mechanism for ``name lookups'' in general: host name resolution, user accounts, and more (@pxref{Name Service Switch,,, libc, The GNU C Library Reference Manual})."
5089 msgstr ""
5090
5091 #. type: cindex
5092 #: doc/guix.texi:1632
5093 #, no-wrap
5094 msgid "Network information service (NIS)"
5095 msgstr ""
5096
5097 #. type: cindex
5098 #: doc/guix.texi:1633
5099 #, no-wrap
5100 msgid "NIS (Network information service)"
5101 msgstr ""
5102
5103 #. type: Plain text
5104 #: doc/guix.texi:1642
5105 msgid "Being extensible, the NSS supports @dfn{plugins}, which provide new name lookup implementations: for example, the @code{nss-mdns} plugin allow resolution of @code{.local} host names, the @code{nis} plugin allows user account lookup using the Network information service (NIS), and so on. These extra ``lookup services'' are configured system-wide in @file{/etc/nsswitch.conf}, and all the programs running on the system honor those settings (@pxref{NSS Configuration File,,, libc, The GNU C Reference Manual})."
5106 msgstr ""
5107
5108 #. type: Plain text
5109 #: doc/guix.texi:1652
5110 msgid "When they perform a name lookup---for instance by calling the @code{getaddrinfo} function in C---applications first try to connect to the nscd; on success, nscd performs name lookups on their behalf. If the nscd is not running, then they perform the name lookup by themselves, by loading the name lookup services into their own address space and running it. These name lookup services---the @file{libnss_*.so} files---are @code{dlopen}'d, but they may come from the host system's C library, rather than from the C library the application is linked against (the C library coming from Guix)."
5111 msgstr ""
5112
5113 #. type: Plain text
5114 #: doc/guix.texi:1657
5115 msgid "And this is where the problem is: if your application is linked against Guix's C library (say, glibc 2.24) and tries to load NSS plugins from another C library (say, @code{libnss_mdns.so} for glibc 2.22), it will likely crash or have its name lookups fail unexpectedly."
5116 msgstr ""
5117
5118 #. type: Plain text
5119 #: doc/guix.texi:1662
5120 msgid "Running @command{nscd} on the system, among other advantages, eliminates this binary incompatibility problem because those @code{libnss_*.so} files are loaded in the @command{nscd} process, not in applications themselves."
5121 msgstr ""
5122
5123 #. type: subsection
5124 #: doc/guix.texi:1663
5125 #, no-wrap
5126 msgid "X11 Fonts"
5127 msgstr ""
5128
5129 #. type: Plain text
5130 #: doc/guix.texi:1673
5131 msgid "The majority of graphical applications use Fontconfig to locate and load fonts and perform X11-client-side rendering. The @code{fontconfig} package in Guix looks for fonts in @file{$HOME/.guix-profile} by default. Thus, to allow graphical applications installed with Guix to display fonts, you have to install fonts with Guix as well. Essential font packages include @code{gs-fonts}, @code{font-dejavu}, and @code{font-gnu-freefont-ttf}."
5132 msgstr ""
5133
5134 #. type: Plain text
5135 #: doc/guix.texi:1680
5136 msgid "To display text written in Chinese languages, Japanese, or Korean in graphical applications, consider installing @code{font-adobe-source-han-sans} or @code{font-wqy-zenhei}. The former has multiple outputs, one per language family (@pxref{Packages with Multiple Outputs}). For instance, the following command installs fonts for Chinese languages:"
5137 msgstr ""
5138
5139 #. type: example
5140 #: doc/guix.texi:1683
5141 #, no-wrap
5142 msgid "guix install font-adobe-source-han-sans:cn\n"
5143 msgstr ""
5144
5145 #. type: code{#1}
5146 #: doc/guix.texi:1685
5147 #, no-wrap
5148 msgid "xterm"
5149 msgstr ""
5150
5151 #. type: Plain text
5152 #: doc/guix.texi:1689
5153 msgid "Older programs such as @command{xterm} do not use Fontconfig and instead rely on server-side font rendering. Such programs require to specify a full name of a font using XLFD (X Logical Font Description), like this:"
5154 msgstr ""
5155
5156 #. type: example
5157 #: doc/guix.texi:1692
5158 #, no-wrap
5159 msgid "-*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1\n"
5160 msgstr ""
5161
5162 #. type: Plain text
5163 #: doc/guix.texi:1696
5164 msgid "To be able to use such full names for the TrueType fonts installed in your Guix profile, you need to extend the font path of the X server:"
5165 msgstr ""
5166
5167 #. type: example
5168 #: doc/guix.texi:1701
5169 #, no-wrap
5170 msgid "xset +fp $(dirname $(readlink -f ~/.guix-profile/share/fonts/truetype/fonts.dir))\n"
5171 msgstr ""
5172
5173 #. type: code{#1}
5174 #: doc/guix.texi:1703
5175 #, no-wrap
5176 msgid "xlsfonts"
5177 msgstr ""
5178
5179 #. type: Plain text
5180 #: doc/guix.texi:1706
5181 msgid "After that, you can run @code{xlsfonts} (from @code{xlsfonts} package) to make sure your TrueType fonts are listed there."
5182 msgstr ""
5183
5184 #. type: code{#1}
5185 #: doc/guix.texi:1707
5186 #, no-wrap
5187 msgid "fc-cache"
5188 msgstr ""
5189
5190 #. type: cindex
5191 #: doc/guix.texi:1708
5192 #, no-wrap
5193 msgid "font cache"
5194 msgstr ""
5195
5196 #. type: Plain text
5197 #: doc/guix.texi:1714
5198 msgid "After installing fonts you may have to refresh the font cache to use them in applications. The same applies when applications installed via Guix do not seem to find fonts. To force rebuilding of the font cache run @code{fc-cache -f}. The @code{fc-cache} command is provided by the @code{fontconfig} package."
5199 msgstr ""
5200
5201 #. type: code{#1}
5202 #: doc/guix.texi:1717 doc/guix.texi:23674
5203 #, no-wrap
5204 msgid "nss-certs"
5205 msgstr ""
5206
5207 #. type: Plain text
5208 #: doc/guix.texi:1720
5209 msgid "The @code{nss-certs} package provides X.509 certificates, which allow programs to authenticate Web servers accessed over HTTPS."
5210 msgstr ""
5211
5212 #. type: Plain text
5213 #: doc/guix.texi:1725
5214 msgid "When using Guix on a foreign distro, you can install this package and define the relevant environment variables so that packages know where to look for certificates. @xref{X.509 Certificates}, for detailed information."
5215 msgstr ""
5216
5217 #. type: subsection
5218 #: doc/guix.texi:1726
5219 #, no-wrap
5220 msgid "Emacs Packages"
5221 msgstr ""
5222
5223 #. type: code{#1}
5224 #: doc/guix.texi:1728
5225 #, no-wrap
5226 msgid "emacs"
5227 msgstr ""
5228
5229 #. type: Plain text
5230 #: doc/guix.texi:1739
5231 msgid "When you install Emacs packages with Guix, the elisp files may be placed either in @file{$HOME/.guix-profile/share/emacs/site-lisp/} or in sub-directories of @file{$HOME/.guix-profile/share/emacs/site-lisp/guix.d/}. The latter directory exists because potentially there may exist thousands of Emacs packages and storing all their files in a single directory may not be reliable (because of name conflicts). So we think using a separate directory for each package is a good idea. It is very similar to how the Emacs package system organizes the file structure (@pxref{Package Files,,, emacs, The GNU Emacs Manual})."
5232 msgstr ""
5233
5234 #. type: Plain text
5235 #: doc/guix.texi:1745
5236 msgid "By default, Emacs (installed with Guix) ``knows'' where these packages are placed, so you do not need to perform any configuration. If, for some reason, you want to avoid auto-loading Emacs packages installed with Guix, you can do so by running Emacs with @code{--no-site-file} option (@pxref{Init File,,, emacs, The GNU Emacs Manual})."
5237 msgstr ""
5238
5239 #. type: subsection
5240 #: doc/guix.texi:1746
5241 #, no-wrap
5242 msgid "The GCC toolchain"
5243 msgstr ""
5244
5245 #. type: cindex
5246 #: doc/guix.texi:1748
5247 #, no-wrap
5248 msgid "GCC"
5249 msgstr ""
5250
5251 #. type: cindex
5252 #: doc/guix.texi:1749
5253 #, no-wrap
5254 msgid "ld-wrapper"
5255 msgstr ""
5256
5257 #. type: Plain text
5258 #: doc/guix.texi:1758
5259 msgid "Guix offers individual compiler packages such as @code{gcc} but if you are in need of a complete toolchain for compiling and linking source code what you really want is the @code{gcc-toolchain} package. This package provides a complete GCC toolchain for C/C++ development, including GCC itself, the GNU C Library (headers and binaries, plus debugging symbols in the @code{debug} output), Binutils, and a linker wrapper."
5260 msgstr ""
5261
5262 #. type: Plain text
5263 #: doc/guix.texi:1764
5264 msgid "The wrapper's purpose is to inspect the @code{-L} and @code{-l} switches passed to the linker, add corresponding @code{-rpath} arguments, and invoke the actual linker with this new set of arguments. You can instruct the wrapper to refuse to link against libraries not in the store by setting the @code{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} environment variable to @code{no}."
5265 msgstr ""
5266
5267 #. type: cindex
5268 #: doc/guix.texi:1771
5269 #, no-wrap
5270 msgid "installing Guix System"
5271 msgstr ""
5272
5273 #. type: cindex
5274 #: doc/guix.texi:1772
5275 #, no-wrap
5276 msgid "Guix System, installation"
5277 msgstr ""
5278
5279 #. type: Plain text
5280 #: doc/guix.texi:1777
5281 msgid "This section explains how to install Guix System on a machine. Guix, as a package manager, can also be installed on top of a running GNU/Linux system, @pxref{Installation}."
5282 msgstr ""
5283
5284 #. type: quotation
5285 #: doc/guix.texi:1786
5286 msgid "You are reading this documentation with an Info reader. For details on how to use it, hit the @key{RET} key (``return'' or ``enter'') on the link that follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}. Hit @kbd{l} afterwards to come back here."
5287 msgstr ""
5288
5289 #. type: quotation
5290 #: doc/guix.texi:1789
5291 msgid "Alternately, run @command{info info} in another tty to keep the manual available."
5292 msgstr ""
5293
5294 #. type: Plain text
5295 #: doc/guix.texi:1810
5296 msgid "We consider Guix System to be ready for a wide range of ``desktop'' and server use cases. The reliability guarantees it provides---transactional upgrades and rollbacks, reproducibility---make it a solid foundation."
5297 msgstr ""
5298
5299 #. type: Plain text
5300 #: doc/guix.texi:1813
5301 msgid "Nevertheless, before you proceed with the installation, be aware of the following noteworthy limitations applicable to version @value{VERSION}:"
5302 msgstr ""
5303
5304 #. type: itemize
5305 #: doc/guix.texi:1817
5306 msgid "Support for the Logical Volume Manager (LVM) is missing."
5307 msgstr ""
5308
5309 #. type: itemize
5310 #: doc/guix.texi:1821
5311 msgid "More and more system services are provided (@pxref{Services}), but some may be missing."
5312 msgstr ""
5313
5314 #. type: itemize
5315 #: doc/guix.texi:1826
5316 msgid "GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Desktop Services}), as well as a number of X11 window managers. However, KDE is currently missing."
5317 msgstr ""
5318
5319 #. type: Plain text
5320 #: doc/guix.texi:1831
5321 msgid "More than a disclaimer, this is an invitation to report issues (and success stories!), and to join us in improving it. @xref{Contributing}, for more info."
5322 msgstr ""
5323
5324 #. type: cindex
5325 #: doc/guix.texi:1836
5326 #, no-wrap
5327 msgid "hardware support on Guix System"
5328 msgstr ""
5329
5330 #. type: Plain text
5331 #: doc/guix.texi:1845
5332 msgid "GNU@tie{}Guix focuses on respecting the user's computing freedom. It builds around the kernel Linux-libre, which means that only hardware for which free software drivers and firmware exist is supported. Nowadays, a wide range of off-the-shelf hardware is supported on GNU/Linux-libre---from keyboards to graphics cards to scanners and Ethernet controllers. Unfortunately, there are still areas where hardware vendors deny users control over their own computing, and such hardware is not supported on Guix System."
5333 msgstr ""
5334
5335 #. type: cindex
5336 #: doc/guix.texi:1846
5337 #, no-wrap
5338 msgid "WiFi, hardware support"
5339 msgstr ""
5340
5341 #. type: Plain text
5342 #: doc/guix.texi:1855
5343 msgid "One of the main areas where free drivers or firmware are lacking is WiFi devices. WiFi devices known to work include those using Atheros chips (AR9271 and AR7010), which corresponds to the @code{ath9k} Linux-libre driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core Revision 5), which corresponds to the @code{b43-open} Linux-libre driver. Free firmware exists for both and is available out-of-the-box on Guix System, as part of @code{%base-firmware} (@pxref{operating-system Reference, @code{firmware}})."
5344 msgstr ""
5345
5346 #. type: cindex
5347 #: doc/guix.texi:1856
5348 #, no-wrap
5349 msgid "RYF, Respects Your Freedom"
5350 msgstr ""
5351
5352 #. type: Plain text
5353 #: doc/guix.texi:1862
5354 msgid "The @uref{https://www.fsf.org/, Free Software Foundation} runs @uref{https://www.fsf.org/ryf, @dfn{Respects Your Freedom}} (RYF), a certification program for hardware products that respect your freedom and your privacy and ensure that you have control over your device. We encourage you to check the list of RYF-certified devices."
5355 msgstr ""
5356
5357 #. type: Plain text
5358 #: doc/guix.texi:1866
5359 msgid "Another useful resource is the @uref{https://www.h-node.org/, H-Node} web site. It contains a catalog of hardware devices with information about their support in GNU/Linux."
5360 msgstr ""
5361
5362 #. type: Plain text
5363 #: doc/guix.texi:1875
5364 msgid "An ISO-9660 installation image that can be written to a USB stick or burnt to a DVD can be downloaded from @indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.@var{system}.iso.xz}, where @var{system} is one of:"
5365 msgstr ""
5366
5367 #. type: table
5368 #: doc/guix.texi:1879
5369 msgid "for a GNU/Linux system on Intel/AMD-compatible 64-bit CPUs;"
5370 msgstr ""
5371
5372 #. type: table
5373 #: doc/guix.texi:1882
5374 msgid "for a 32-bit GNU/Linux system on Intel-compatible CPUs."
5375 msgstr ""
5376
5377 #. type: Plain text
5378 #: doc/guix.texi:1887
5379 msgid "Make sure to download the associated @file{.sig} file and to verify the authenticity of the image against it, along these lines:"
5380 msgstr ""
5381
5382 #. type: example
5383 #: doc/guix.texi:1891
5384 #, no-wrap
5385 msgid ""
5386 "$ wget @value{BASE-URL}/guix-system-install-@value{VERSION}.@var{system}.iso.xz.sig\n"
5387 "$ gpg --verify guix-system-install-@value{VERSION}.@var{system}.iso.xz.sig\n"
5388 msgstr ""
5389 "$ wget @value{BASE-URL}/guix-system-install-@value{VERSION}.@var{系统}.iso.xz.sig\n"
5390 "$ gpg --verify guix-system-install-@value{VERSION}.@var{系统}.iso.xz.sig\n"
5391
5392 #. type: Plain text
5393 #: doc/guix.texi:1907
5394 msgid "This image contains the tools necessary for an installation. It is meant to be copied @emph{as is} to a large-enough USB stick or DVD."
5395 msgstr ""
5396
5397 #. type: unnumberedsubsec
5398 #: doc/guix.texi:1908
5399 #, no-wrap
5400 msgid "Copying to a USB Stick"
5401 msgstr ""
5402
5403 #. type: Plain text
5404 #: doc/guix.texi:1911
5405 msgid "To copy the image to a USB stick, follow these steps:"
5406 msgstr ""
5407
5408 #. type: enumerate
5409 #: doc/guix.texi:1915 doc/guix.texi:1940
5410 msgid "Decompress the image using the @command{xz} command:"
5411 msgstr ""
5412
5413 #. type: example
5414 #: doc/guix.texi:1918 doc/guix.texi:1943
5415 #, no-wrap
5416 msgid "xz -d guix-system-install-@value{VERSION}.@var{system}.iso.xz\n"
5417 msgstr ""
5418
5419 #. type: enumerate
5420 #: doc/guix.texi:1924
5421 msgid "Insert a USB stick of 1@tie{}GiB or more into your machine, and determine its device name. Assuming that the USB stick is known as @file{/dev/sdX}, copy the image with:"
5422 msgstr ""
5423
5424 #. type: example
5425 #: doc/guix.texi:1928
5426 #, no-wrap
5427 msgid ""
5428 "dd if=guix-system-install-@value{VERSION}.@var{system}.iso of=/dev/sdX\n"
5429 "sync\n"
5430 msgstr ""
5431
5432 #. type: enumerate
5433 #: doc/guix.texi:1931
5434 msgid "Access to @file{/dev/sdX} usually requires root privileges."
5435 msgstr ""
5436
5437 #. type: unnumberedsubsec
5438 #: doc/guix.texi:1933
5439 #, no-wrap
5440 msgid "Burning on a DVD"
5441 msgstr ""
5442
5443 #. type: Plain text
5444 #: doc/guix.texi:1936
5445 msgid "To copy the image to a DVD, follow these steps:"
5446 msgstr ""
5447
5448 #. type: enumerate
5449 #: doc/guix.texi:1949
5450 msgid "Insert a blank DVD into your machine, and determine its device name. Assuming that the DVD drive is known as @file{/dev/srX}, copy the image with:"
5451 msgstr ""
5452
5453 #. type: example
5454 #: doc/guix.texi:1952
5455 #, no-wrap
5456 msgid "growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.@var{system}.iso\n"
5457 msgstr ""
5458
5459 #. type: enumerate
5460 #: doc/guix.texi:1955
5461 msgid "Access to @file{/dev/srX} usually requires root privileges."
5462 msgstr ""
5463
5464 #. type: unnumberedsubsec
5465 #: doc/guix.texi:1957
5466 #, no-wrap
5467 msgid "Booting"
5468 msgstr ""
5469
5470 #. type: Plain text
5471 #: doc/guix.texi:1962
5472 msgid "Once this is done, you should be able to reboot the system and boot from the USB stick or DVD. The latter usually requires you to get in the BIOS or UEFI boot menu, where you can choose to boot from the USB stick."
5473 msgstr ""
5474
5475 #. type: Plain text
5476 #: doc/guix.texi:1965
5477 msgid "@xref{Installing Guix in a VM}, if, instead, you would like to install Guix System in a virtual machine (VM)."
5478 msgstr ""
5479
5480 #. type: Plain text
5481 #: doc/guix.texi:1975
5482 msgid "Once you have booted, you can use the guided graphical installer, which makes it easy to get started (@pxref{Guided Graphical Installation}). Alternately, if you are already familiar with GNU/Linux and if you want more control than what the graphical installer provides, you can choose the ``manual'' installation process (@pxref{Manual Installation})."
5483 msgstr ""
5484
5485 #. type: Plain text
5486 #: doc/guix.texi:1983
5487 msgid "The graphical installer is available on TTY1. You can obtain root shells on TTYs 3 to 6 by hitting @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, etc. TTY2 shows this documentation and you can reach it with @kbd{ctrl-alt-f2}. Documentation is browsable using the Info reader commands (@pxref{Top,,, info-stnd, Stand-alone GNU Info}). The installation system runs the GPM mouse daemon, which allows you to select text with the left mouse button and to paste it with the middle button."
5488 msgstr ""
5489
5490 #. type: quotation
5491 #: doc/guix.texi:1988
5492 msgid "Installation requires access to the Internet so that any missing dependencies of your system configuration can be downloaded. See the ``Networking'' section below."
5493 msgstr ""
5494
5495 #. type: Plain text
5496 #: doc/guix.texi:1995
5497 msgid "The graphical installer is a text-based user interface. It will guide you, with dialog boxes, through the steps needed to install GNU@tie{}Guix System."
5498 msgstr ""
5499
5500 #. type: Plain text
5501 #: doc/guix.texi:2000
5502 msgid "The first dialog boxes allow you to set up the system as you use it during the installation: you can choose the language, keyboard layout, and set up networking, which will be used during the installation. The image below shows the networking dialog."
5503 msgstr ""
5504
5505 #. type: Plain text
5506 #: doc/guix.texi:2002
5507 msgid "@image{images/installer-network,5in,, networking setup with the graphical installer}"
5508 msgstr ""
5509
5510 #. type: Plain text
5511 #: doc/guix.texi:2007
5512 msgid "Later steps allow you to partition your hard disk, as shown in the image below, to choose whether or not to use encrypted file systems, to enter the host name and root password, and to create an additional account, among other things."
5513 msgstr ""
5514
5515 #. type: Plain text
5516 #: doc/guix.texi:2009
5517 msgid "@image{images/installer-partitions,5in,, partitioning with the graphical installer}"
5518 msgstr ""
5519
5520 #. type: Plain text
5521 #: doc/guix.texi:2012
5522 msgid "Note that, at any time, the installer allows you to exit the current installation step and resume at a previous step, as show in the image below."
5523 msgstr ""
5524
5525 #. type: Plain text
5526 #: doc/guix.texi:2014
5527 msgid "@image{images/installer-resume,5in,, resuming the installation process}"
5528 msgstr ""
5529
5530 #. type: Plain text
5531 #: doc/guix.texi:2019
5532 msgid "Once you're done, the installer produces an operating system configuration and displays it (@pxref{Using the Configuration System}). At that point you can hit ``OK'' and installation will proceed. On success, you can reboot into the new system and enjoy. @xref{After System Installation}, for what's next!"
5533 msgstr ""
5534
5535 #. type: Plain text
5536 #: doc/guix.texi:2029
5537 msgid "This section describes how you would ``manually'' install GNU@tie{}Guix System on your machine. This option requires familiarity with GNU/Linux, with the shell, and with common administration tools. If you think this is not for you, consider using the guided graphical installer (@pxref{Guided Graphical Installation})."
5538 msgstr ""
5539
5540 #. type: Plain text
5541 #: doc/guix.texi:2035
5542 msgid "The installation system provides root shells on TTYs 3 to 6; press @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, and so on to reach them. It includes many common tools needed to install the system. But it is also a full-blown Guix System, which means that you can install additional packages, should you need it, using @command{guix package} (@pxref{Invoking guix package})."
5543 msgstr ""
5544
5545 #. type: subsection
5546 #: doc/guix.texi:2042
5547 #, no-wrap
5548 msgid "Keyboard Layout, Networking, and Partitioning"
5549 msgstr ""
5550
5551 #. type: Plain text
5552 #: doc/guix.texi:2047
5553 msgid "Before you can install the system, you may want to adjust the keyboard layout, set up networking, and partition your target hard disk. This section will guide you through this."
5554 msgstr ""
5555
5556 #. type: cindex
5557 #: doc/guix.texi:2050 doc/guix.texi:11125
5558 #, no-wrap
5559 msgid "keyboard layout"
5560 msgstr ""
5561
5562 #. type: Plain text
5563 #: doc/guix.texi:2054
5564 msgid "The installation image uses the US qwerty keyboard layout. If you want to change it, you can use the @command{loadkeys} command. For example, the following command selects the Dvorak keyboard layout:"
5565 msgstr ""
5566
5567 #. type: example
5568 #: doc/guix.texi:2057
5569 #, no-wrap
5570 msgid "loadkeys dvorak\n"
5571 msgstr ""
5572
5573 #. type: Plain text
5574 #: doc/guix.texi:2062
5575 msgid "See the files under @file{/run/current-system/profile/share/keymaps} for a list of available keyboard layouts. Run @command{man loadkeys} for more information."
5576 msgstr ""
5577
5578 #. type: subsubsection
5579 #: doc/guix.texi:2063
5580 #, no-wrap
5581 msgid "Networking"
5582 msgstr ""
5583
5584 #. type: Plain text
5585 #: doc/guix.texi:2066
5586 msgid "Run the following command to see what your network interfaces are called:"
5587 msgstr ""
5588
5589 #. type: example
5590 #: doc/guix.texi:2069
5591 #, no-wrap
5592 msgid "ifconfig -a\n"
5593 msgstr ""
5594
5595 #. type: Plain text
5596 #: doc/guix.texi:2073
5597 msgid "@dots{} or, using the GNU/Linux-specific @command{ip} command:"
5598 msgstr ""
5599
5600 #. type: example
5601 #: doc/guix.texi:2076
5602 #, no-wrap
5603 msgid "ip a\n"
5604 msgstr ""
5605
5606 #. type: Plain text
5607 #: doc/guix.texi:2083
5608 msgid "Wired interfaces have a name starting with @samp{e}; for example, the interface corresponding to the first on-board Ethernet controller is called @samp{eno1}. Wireless interfaces have a name starting with @samp{w}, like @samp{w1p2s0}."
5609 msgstr ""
5610
5611 #. type: item
5612 #: doc/guix.texi:2085
5613 #, no-wrap
5614 msgid "Wired connection"
5615 msgstr ""
5616
5617 #. type: table
5618 #: doc/guix.texi:2088
5619 msgid "To configure a wired network run the following command, substituting @var{interface} with the name of the wired interface you want to use."
5620 msgstr ""
5621
5622 #. type: example
5623 #: doc/guix.texi:2091
5624 #, no-wrap
5625 msgid "ifconfig @var{interface} up\n"
5626 msgstr ""
5627
5628 #. type: item
5629 #: doc/guix.texi:2093
5630 #, no-wrap
5631 msgid "Wireless connection"
5632 msgstr ""
5633
5634 #. type: cindex
5635 #: doc/guix.texi:2094 doc/guix.texi:12556
5636 #, no-wrap
5637 msgid "wireless"
5638 msgstr ""
5639
5640 #. type: cindex
5641 #: doc/guix.texi:2095 doc/guix.texi:12557
5642 #, no-wrap
5643 msgid "WiFi"
5644 msgstr ""
5645
5646 #. type: table
5647 #: doc/guix.texi:2100
5648 msgid "To configure wireless networking, you can create a configuration file for the @command{wpa_supplicant} configuration tool (its location is not important) using one of the available text editors such as @command{nano}:"
5649 msgstr ""
5650
5651 #. type: example
5652 #: doc/guix.texi:2103
5653 #, no-wrap
5654 msgid "nano wpa_supplicant.conf\n"
5655 msgstr ""
5656
5657 #. type: table
5658 #: doc/guix.texi:2108
5659 msgid "As an example, the following stanza can go to this file and will work for many wireless networks, provided you give the actual SSID and passphrase for the network you are connecting to:"
5660 msgstr ""
5661
5662 #. type: example
5663 #: doc/guix.texi:2115
5664 #, no-wrap
5665 msgid ""
5666 "network=@{\n"
5667 " ssid=\"@var{my-ssid}\"\n"
5668 " key_mgmt=WPA-PSK\n"
5669 " psk=\"the network's secret passphrase\"\n"
5670 "@}\n"
5671 msgstr ""
5672
5673 #. type: table
5674 #: doc/guix.texi:2120
5675 msgid "Start the wireless service and run it in the background with the following command (substitute @var{interface} with the name of the network interface you want to use):"
5676 msgstr ""
5677
5678 #. type: example
5679 #: doc/guix.texi:2123
5680 #, no-wrap
5681 msgid "wpa_supplicant -c wpa_supplicant.conf -i @var{interface} -B\n"
5682 msgstr ""
5683
5684 #. type: table
5685 #: doc/guix.texi:2126
5686 msgid "Run @command{man wpa_supplicant} for more information."
5687 msgstr ""
5688
5689 #. type: cindex
5690 #: doc/guix.texi:2128
5691 #, no-wrap
5692 msgid "DHCP"
5693 msgstr ""
5694
5695 #. type: Plain text
5696 #: doc/guix.texi:2131
5697 msgid "At this point, you need to acquire an IP address. On a network where IP addresses are automatically assigned @i{via} DHCP, you can run:"
5698 msgstr ""
5699
5700 #. type: example
5701 #: doc/guix.texi:2134
5702 #, no-wrap
5703 msgid "dhclient -v @var{interface}\n"
5704 msgstr ""
5705
5706 #. type: Plain text
5707 #: doc/guix.texi:2137
5708 msgid "Try to ping a server to see if networking is up and running:"
5709 msgstr ""
5710
5711 #. type: example
5712 #: doc/guix.texi:2140
5713 #, no-wrap
5714 msgid "ping -c 3 gnu.org\n"
5715 msgstr ""
5716
5717 #. type: Plain text
5718 #: doc/guix.texi:2144
5719 msgid "Setting up network access is almost always a requirement because the image does not contain all the software and tools that may be needed."
5720 msgstr ""
5721
5722 #. type: cindex
5723 #: doc/guix.texi:2145
5724 #, no-wrap
5725 msgid "installing over SSH"
5726 msgstr ""
5727
5728 #. type: Plain text
5729 #: doc/guix.texi:2148
5730 msgid "If you want to, you can continue the installation remotely by starting an SSH server:"
5731 msgstr ""
5732
5733 #. type: example
5734 #: doc/guix.texi:2151
5735 #, no-wrap
5736 msgid "herd start ssh-daemon\n"
5737 msgstr ""
5738
5739 #. type: Plain text
5740 #: doc/guix.texi:2155
5741 msgid "Make sure to either set a password with @command{passwd}, or configure OpenSSH public key authentication before logging in."
5742 msgstr ""
5743
5744 #. type: subsubsection
5745 #: doc/guix.texi:2156
5746 #, no-wrap
5747 msgid "Disk Partitioning"
5748 msgstr ""
5749
5750 #. type: Plain text
5751 #: doc/guix.texi:2160
5752 msgid "Unless this has already been done, the next step is to partition, and then format the target partition(s)."
5753 msgstr ""
5754
5755 #. type: Plain text
5756 #: doc/guix.texi:2165
5757 msgid "The installation image includes several partitioning tools, including Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, and @command{cfdisk}. Run it and set up your disk with the partition layout you want:"
5758 msgstr ""
5759
5760 #. type: example
5761 #: doc/guix.texi:2168
5762 #, no-wrap
5763 msgid "cfdisk\n"
5764 msgstr ""
5765
5766 #. type: Plain text
5767 #: doc/guix.texi:2174
5768 msgid "If your disk uses the GUID Partition Table (GPT) format and you plan to install BIOS-based GRUB (which is the default), make sure a BIOS Boot Partition is available (@pxref{BIOS installation,,, grub, GNU GRUB manual})."
5769 msgstr ""
5770
5771 #. type: cindex
5772 #: doc/guix.texi:2175
5773 #, no-wrap
5774 msgid "EFI, installation"
5775 msgstr ""
5776
5777 #. type: cindex
5778 #: doc/guix.texi:2176
5779 #, no-wrap
5780 msgid "UEFI, installation"
5781 msgstr ""
5782
5783 #. type: cindex
5784 #: doc/guix.texi:2177
5785 #, no-wrap
5786 msgid "ESP, EFI system partition"
5787 msgstr ""
5788
5789 #. type: Plain text
5790 #: doc/guix.texi:2181
5791 msgid "If you instead wish to use EFI-based GRUB, a FAT32 @dfn{EFI System Partition} (ESP) is required. This partition can be mounted at @file{/boot/efi} for instance and must have the @code{esp} flag set. E.g., for @command{parted}:"
5792 msgstr ""
5793
5794 #. type: example
5795 #: doc/guix.texi:2184
5796 #, no-wrap
5797 msgid "parted /dev/sda set 1 esp on\n"
5798 msgstr ""
5799
5800 #. type: vindex
5801 #: doc/guix.texi:2187 doc/guix.texi:24064
5802 #, no-wrap
5803 msgid "grub-bootloader"
5804 msgstr ""
5805
5806 #. type: vindex
5807 #: doc/guix.texi:2188 doc/guix.texi:24058
5808 #, no-wrap
5809 msgid "grub-efi-bootloader"
5810 msgstr ""
5811
5812 #. type: quotation
5813 #: doc/guix.texi:2195
5814 msgid "Unsure whether to use EFI- or BIOS-based GRUB? If the directory @file{/sys/firmware/efi} exists in the installation image, then you should probably perform an EFI installation, using @code{grub-efi-bootloader}. Otherwise you should use the BIOS-based GRUB, known as @code{grub-bootloader}. @xref{Bootloader Configuration}, for more info on bootloaders."
5815 msgstr ""
5816
5817 #. type: Plain text
5818 #: doc/guix.texi:2203
5819 msgid "Once you are done partitioning the target hard disk drive, you have to create a file system on the relevant partition(s)@footnote{Currently Guix System only supports ext4 and btrfs file systems. In particular, code that reads file system UUIDs and labels only works for these file system types.}. For the ESP, if you have one and assuming it is @file{/dev/sda1}, run:"
5820 msgstr ""
5821
5822 #. type: example
5823 #: doc/guix.texi:2206
5824 #, no-wrap
5825 msgid "mkfs.fat -F32 /dev/sda1\n"
5826 msgstr ""
5827
5828 #. type: Plain text
5829 #: doc/guix.texi:2214
5830 msgid "Preferably, assign file systems a label so that you can easily and reliably refer to them in @code{file-system} declarations (@pxref{File Systems}). This is typically done using the @code{-L} option of @command{mkfs.ext4} and related commands. So, assuming the target root partition lives at @file{/dev/sda2}, a file system with the label @code{my-root} can be created with:"
5831 msgstr ""
5832
5833 #. type: example
5834 #: doc/guix.texi:2217
5835 #, no-wrap
5836 msgid "mkfs.ext4 -L my-root /dev/sda2\n"
5837 msgstr ""
5838
5839 #. type: cindex
5840 #: doc/guix.texi:2219 doc/guix.texi:10382
5841 #, no-wrap
5842 msgid "encrypted disk"
5843 msgstr ""
5844
5845 #. type: Plain text
5846 #: doc/guix.texi:2226
5847 msgid "If you are instead planning to encrypt the root partition, you can use the Cryptsetup/LUKS utilities to do that (see @inlinefmtifelse{html, @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}}, @code{man cryptsetup}} for more information.) Assuming you want to store the root partition on @file{/dev/sda2}, the command sequence would be along these lines:"
5848 msgstr ""
5849
5850 #. type: example
5851 #: doc/guix.texi:2231
5852 #, no-wrap
5853 msgid ""
5854 "cryptsetup luksFormat /dev/sda2\n"
5855 "cryptsetup open --type luks /dev/sda2 my-partition\n"
5856 "mkfs.ext4 -L my-root /dev/mapper/my-partition\n"
5857 msgstr ""
5858
5859 #. type: Plain text
5860 #: doc/guix.texi:2236
5861 msgid "Once that is done, mount the target file system under @file{/mnt} with a command like (again, assuming @code{my-root} is the label of the root file system):"
5862 msgstr ""
5863
5864 #. type: example
5865 #: doc/guix.texi:2239
5866 #, no-wrap
5867 msgid "mount LABEL=my-root /mnt\n"
5868 msgstr ""
5869
5870 #. type: Plain text
5871 #: doc/guix.texi:2245
5872 msgid "Also mount any other file systems you would like to use on the target system relative to this path. If you have opted for @file{/boot/efi} as an EFI mount point for example, mount it at @file{/mnt/boot/efi} now so it is found by @code{guix system init} afterwards."
5873 msgstr ""
5874
5875 #. type: Plain text
5876 #: doc/guix.texi:2250
5877 msgid "Finally, if you plan to use one or more swap partitions (@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference Manual}), make sure to initialize them with @command{mkswap}. Assuming you have one swap partition on @file{/dev/sda3}, you would run:"
5878 msgstr ""
5879
5880 #. type: example
5881 #: doc/guix.texi:2254
5882 #, no-wrap
5883 msgid ""
5884 "mkswap /dev/sda3\n"
5885 "swapon /dev/sda3\n"
5886 msgstr ""
5887
5888 #. type: Plain text
5889 #: doc/guix.texi:2262
5890 msgid "Alternatively, you may use a swap file. For example, assuming that in the new system you want to use the file @file{/swapfile} as a swap file, you would run@footnote{This example will work for many types of file systems (e.g., ext4). However, for copy-on-write file systems (e.g., btrfs), the required steps may be different. For details, see the manual pages for @command{mkswap} and @command{swapon}.}:"
5891 msgstr ""
5892
5893 #. type: example
5894 #: doc/guix.texi:2270
5895 #, no-wrap
5896 msgid ""
5897 "# This is 10 GiB of swap space. Adjust \"count\" to change the size.\n"
5898 "dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240\n"
5899 "# For security, make the file readable and writable only by root.\n"
5900 "chmod 600 /mnt/swapfile\n"
5901 "mkswap /mnt/swapfile\n"
5902 "swapon /mnt/swapfile\n"
5903 msgstr ""
5904
5905 #. type: Plain text
5906 #: doc/guix.texi:2275
5907 msgid "Note that if you have encrypted the root partition and created a swap file in its file system as described above, then the encryption also protects the swap file, just like any other file in that file system."
5908 msgstr ""
5909
5910 #. type: Plain text
5911 #: doc/guix.texi:2281
5912 msgid "With the target partitions ready and the target root mounted on @file{/mnt}, we're ready to go. First, run:"
5913 msgstr ""
5914
5915 #. type: example
5916 #: doc/guix.texi:2284
5917 #, no-wrap
5918 msgid "herd start cow-store /mnt\n"
5919 msgstr ""
5920
5921 #. type: Plain text
5922 #: doc/guix.texi:2291
5923 msgid "This makes @file{/gnu/store} copy-on-write, such that packages added to it during the installation phase are written to the target disk on @file{/mnt} rather than kept in memory. This is necessary because the first phase of the @command{guix system init} command (see below) entails downloads or builds to @file{/gnu/store} which, initially, is an in-memory file system."
5924 msgstr ""
5925
5926 #. type: Plain text
5927 #: doc/guix.texi:2302
5928 msgid "Next, you have to edit a file and provide the declaration of the operating system to be installed. To that end, the installation system comes with three text editors. We recommend GNU nano (@pxref{Top,,, nano, GNU nano Manual}), which supports syntax highlighting and parentheses matching; other editors include GNU Zile (an Emacs clone), and nvi (a clone of the original BSD @command{vi} editor). We strongly recommend storing that file on the target root file system, say, as @file{/mnt/etc/config.scm}. Failing to do that, you will have lost your configuration file once you have rebooted into the newly-installed system."
5929 msgstr ""
5930
5931 #. type: Plain text
5932 #: doc/guix.texi:2309
5933 msgid "@xref{Using the Configuration System}, for an overview of the configuration file. The example configurations discussed in that section are available under @file{/etc/configuration} in the installation image. Thus, to get started with a system configuration providing a graphical display server (a ``desktop'' system), you can run something along these lines:"
5934 msgstr ""
5935
5936 #. type: example
5937 #: doc/guix.texi:2314
5938 #, no-wrap
5939 msgid ""
5940 "# mkdir /mnt/etc\n"
5941 "# cp /etc/configuration/desktop.scm /mnt/etc/config.scm\n"
5942 "# nano /mnt/etc/config.scm\n"
5943 msgstr ""
5944
5945 #. type: Plain text
5946 #: doc/guix.texi:2318
5947 msgid "You should pay attention to what your configuration file contains, and in particular:"
5948 msgstr ""
5949
5950 #. type: itemize
5951 #: doc/guix.texi:2329
5952 msgid "Make sure the @code{bootloader-configuration} form refers to the target you want to install GRUB on. It should mention @code{grub-bootloader} if you are installing GRUB in the legacy way, or @code{grub-efi-bootloader} for newer UEFI systems. For legacy systems, the @code{target} field names a device, like @code{/dev/sda}; for UEFI systems it names a path to a mounted EFI partition, like @code{/boot/efi}; do make sure the path is currently mounted and a @code{file-system} entry is specified in your configuration."
5953 msgstr ""
5954
5955 #. type: itemize
5956 #: doc/guix.texi:2335
5957 msgid "Be sure that your file system labels match the value of their respective @code{device} fields in your @code{file-system} configuration, assuming your @code{file-system} configuration uses the @code{file-system-label} procedure in its @code{device} field."
5958 msgstr ""
5959
5960 #. type: itemize
5961 #: doc/guix.texi:2339
5962 msgid "If there are encrypted or RAID partitions, make sure to add a @code{mapped-devices} field to describe them (@pxref{Mapped Devices})."
5963 msgstr ""
5964
5965 #. type: Plain text
5966 #: doc/guix.texi:2344
5967 msgid "Once you are done preparing the configuration file, the new system must be initialized (remember that the target root file system is mounted under @file{/mnt}):"
5968 msgstr ""
5969
5970 #. type: example
5971 #: doc/guix.texi:2347
5972 #, no-wrap
5973 msgid "guix system init /mnt/etc/config.scm /mnt\n"
5974 msgstr ""
5975
5976 #. type: Plain text
5977 #: doc/guix.texi:2354
5978 msgid "This copies all the necessary files and installs GRUB on @file{/dev/sdX}, unless you pass the @option{--no-bootloader} option. For more information, @pxref{Invoking guix system}. This command may trigger downloads or builds of missing packages, which can take some time."
5979 msgstr ""
5980
5981 #. type: Plain text
5982 #: doc/guix.texi:2362
5983 msgid "Once that command has completed---and hopefully succeeded!---you can run @command{reboot} and boot into the new system. The @code{root} password in the new system is initially empty; other users' passwords need to be initialized by running the @command{passwd} command as @code{root}, unless your configuration specifies otherwise (@pxref{user-account-password, user account passwords}). @xref{After System Installation}, for what's next!"
5984 msgstr ""
5985
5986 #. type: Plain text
5987 #: doc/guix.texi:2369
5988 msgid "Success, you've now booted into Guix System! From then on, you can update the system whenever you want by running, say:"
5989 msgstr ""
5990
5991 #. type: example
5992 #: doc/guix.texi:2373
5993 #, no-wrap
5994 msgid ""
5995 "guix pull\n"
5996 "sudo guix system reconfigure /etc/config.scm\n"
5997 msgstr ""
5998
5999 #. type: Plain text
6000 #: doc/guix.texi:2379
6001 msgid "This builds a new system generation with the latest packages and services (@pxref{Invoking guix system}). We recommend doing that regularly so that your system includes the latest security updates (@pxref{Security Updates})."
6002 msgstr ""
6003
6004 #. type: cindex
6005 #: doc/guix.texi:2382
6006 #, no-wrap
6007 msgid "sudo vs. @command{guix pull}"
6008 msgstr ""
6009
6010 #. type: quotation
6011 #: doc/guix.texi:2386
6012 msgid "Note that @command{sudo guix} runs your user's @command{guix} command and @emph{not} root's, because @command{sudo} leaves @code{PATH} unchanged. To explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}."
6013 msgstr ""
6014
6015 #. type: Plain text
6016 #: doc/guix.texi:2390
6017 msgid "Join us on @code{#guix} on the Freenode IRC network or on @email{guix-devel@@gnu.org} to share your experience!"
6018 msgstr ""
6019
6020 #. type: section
6021 #: doc/guix.texi:2393
6022 #, no-wrap
6023 msgid "Installing Guix in a Virtual Machine"
6024 msgstr ""
6025
6026 #. type: cindex
6027 #: doc/guix.texi:2395
6028 #, no-wrap
6029 msgid "virtual machine, Guix System installation"
6030 msgstr ""
6031
6032 #. type: cindex
6033 #: doc/guix.texi:2396
6034 #, no-wrap
6035 msgid "virtual private server (VPS)"
6036 msgstr ""
6037
6038 #. type: cindex
6039 #: doc/guix.texi:2397
6040 #, no-wrap
6041 msgid "VPS (virtual private server)"
6042 msgstr ""
6043
6044 #. type: Plain text
6045 #: doc/guix.texi:2401
6046 msgid "If you'd like to install Guix System in a virtual machine (VM) or on a virtual private server (VPS) rather than on your beloved machine, this section is for you."
6047 msgstr ""
6048
6049 #. type: Plain text
6050 #: doc/guix.texi:2404
6051 msgid "To boot a @uref{https://qemu.org/,QEMU} VM for installing Guix System in a disk image, follow these steps:"
6052 msgstr ""
6053
6054 #. type: enumerate
6055 #: doc/guix.texi:2409
6056 msgid "First, retrieve and decompress the Guix system installation image as described previously (@pxref{USB Stick and DVD Installation})."
6057 msgstr ""
6058
6059 #. type: enumerate
6060 #: doc/guix.texi:2413
6061 msgid "Create a disk image that will hold the installed system. To make a qcow2-formatted disk image, use the @command{qemu-img} command:"
6062 msgstr ""
6063
6064 #. type: example
6065 #: doc/guix.texi:2416
6066 #, no-wrap
6067 msgid "qemu-img create -f qcow2 guixsd.img 50G\n"
6068 msgstr ""
6069
6070 #. type: enumerate
6071 #: doc/guix.texi:2420
6072 msgid "The resulting file will be much smaller than 50 GB (typically less than 1 MB), but it will grow as the virtualized storage device is filled up."
6073 msgstr ""
6074
6075 #. type: enumerate
6076 #: doc/guix.texi:2423
6077 msgid "Boot the USB installation image in an VM:"
6078 msgstr ""
6079
6080 #. type: example
6081 #: doc/guix.texi:2429
6082 #, no-wrap
6083 msgid ""
6084 "qemu-system-x86_64 -m 1024 -smp 1 \\\n"
6085 " -net user -net nic,model=virtio -boot menu=on \\\n"
6086 " -drive file=guix-system-install-@value{VERSION}.@var{system}.iso \\\n"
6087 " -drive file=guixsd.img\n"
6088 msgstr ""
6089
6090 #. type: enumerate
6091 #: doc/guix.texi:2432
6092 msgid "The ordering of the drives matters."
6093 msgstr ""
6094
6095 #. type: enumerate
6096 #: doc/guix.texi:2436
6097 msgid "In the VM console, quickly press the @kbd{F12} key to enter the boot menu. Then press the @kbd{2} key and the @kbd{RET} key to validate your selection."
6098 msgstr ""
6099
6100 #. type: enumerate
6101 #: doc/guix.texi:2440
6102 msgid "You're now root in the VM, proceed with the installation process. @xref{Preparing for Installation}, and follow the instructions."
6103 msgstr ""
6104
6105 #. type: Plain text
6106 #: doc/guix.texi:2445
6107 msgid "Once installation is complete, you can boot the system that's on your @file{guixsd.img} image. @xref{Running Guix in a VM}, for how to do that."
6108 msgstr ""
6109
6110 #. type: cindex
6111 #: doc/guix.texi:2449
6112 #, no-wrap
6113 msgid "installation image"
6114 msgstr ""
6115
6116 #. type: Plain text
6117 #: doc/guix.texi:2452
6118 msgid "The installation image described above was built using the @command{guix system} command, specifically:"
6119 msgstr ""
6120
6121 #. type: example
6122 #: doc/guix.texi:2456
6123 #, no-wrap
6124 msgid ""
6125 "guix system disk-image --file-system-type=iso9660 \\\n"
6126 " gnu/system/install.scm\n"
6127 msgstr ""
6128
6129 #. type: Plain text
6130 #: doc/guix.texi:2461
6131 msgid "Have a look at @file{gnu/system/install.scm} in the source tree, and see also @ref{Invoking guix system} for more information about the installation image."
6132 msgstr ""
6133
6134 #. type: section
6135 #: doc/guix.texi:2462
6136 #, no-wrap
6137 msgid "Building the Installation Image for ARM Boards"
6138 msgstr ""
6139
6140 #. type: Plain text
6141 #: doc/guix.texi:2466
6142 msgid "Many ARM boards require a specific variant of the @uref{https://www.denx.de/wiki/U-Boot/, U-Boot} bootloader."
6143 msgstr ""
6144
6145 #. type: Plain text
6146 #: doc/guix.texi:2470
6147 msgid "If you build a disk image and the bootloader is not available otherwise (on another boot drive etc), it's advisable to build an image that includes the bootloader, specifically:"
6148 msgstr ""
6149
6150 #. type: example
6151 #: doc/guix.texi:2473
6152 #, no-wrap
6153 msgid "guix system disk-image --system=armhf-linux -e '((@@ (gnu system install) os-with-u-boot) (@@ (gnu system install) installation-os) \"A20-OLinuXino-Lime2\")'\n"
6154 msgstr ""
6155
6156 #. type: Plain text
6157 #: doc/guix.texi:2477
6158 msgid "@code{A20-OLinuXino-Lime2} is the name of the board. If you specify an invalid board, a list of possible boards will be printed."
6159 msgstr ""
6160
6161 #. type: cindex
6162 #: doc/guix.texi:2482
6163 #, no-wrap
6164 msgid "packages"
6165 msgstr ""
6166
6167 #. type: Plain text
6168 #: doc/guix.texi:2487
6169 msgid "The purpose of GNU Guix is to allow users to easily install, upgrade, and remove software packages, without having to know about their build procedures or dependencies. Guix also goes beyond this obvious set of features."
6170 msgstr ""
6171
6172 #. type: Plain text
6173 #: doc/guix.texi:2495
6174 msgid "This chapter describes the main features of Guix, as well as the package management tools it provides. Along with the command-line interface described below (@pxref{Invoking guix package, @code{guix package}}), you may also use the Emacs-Guix interface (@pxref{Top,,, emacs-guix, The Emacs-Guix Reference Manual}), after installing @code{emacs-guix} package (run @kbd{M-x guix-help} command to start with it):"
6175 msgstr ""
6176
6177 #. type: example
6178 #: doc/guix.texi:2498
6179 #, no-wrap
6180 msgid "guix install emacs-guix\n"
6181 msgstr "guix install emacs-guix\n"
6182
6183 #. type: Plain text
6184 #: doc/guix.texi:2519
6185 msgid "When using Guix, each package ends up in the @dfn{package store}, in its own directory---something that resembles @file{/gnu/store/xxx-package-1.2}, where @code{xxx} is a base32 string."
6186 msgstr ""
6187
6188 #. type: Plain text
6189 #: doc/guix.texi:2524
6190 msgid "Instead of referring to these directories, users have their own @dfn{profile}, which points to the packages that they actually want to use. These profiles are stored within each user's home directory, at @code{$HOME/.guix-profile}."
6191 msgstr ""
6192
6193 #. type: Plain text
6194 #: doc/guix.texi:2532
6195 msgid "For example, @code{alice} installs GCC 4.7.2. As a result, @file{/home/alice/.guix-profile/bin/gcc} points to @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Now, on the same machine, @code{bob} had already installed GCC 4.8.0. The profile of @code{bob} simply continues to point to @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc}---i.e., both versions of GCC coexist on the same system without any interference."
6196 msgstr ""
6197
6198 #. type: Plain text
6199 #: doc/guix.texi:2536
6200 msgid "The @command{guix package} command is the central tool to manage packages (@pxref{Invoking guix package}). It operates on the per-user profiles, and can be used @emph{with normal user privileges}."
6201 msgstr ""
6202
6203 #. type: cindex
6204 #: doc/guix.texi:2537 doc/guix.texi:2616
6205 #, no-wrap
6206 msgid "transactions"
6207 msgstr ""
6208
6209 #. type: Plain text
6210 #: doc/guix.texi:2544
6211 msgid "The command provides the obvious install, remove, and upgrade operations. Each invocation is actually a @emph{transaction}: either the specified operation succeeds, or nothing happens. Thus, if the @command{guix package} process is terminated during the transaction, or if a power outage occurs during the transaction, then the user's profile remains in its previous state, and remains usable."
6212 msgstr ""
6213
6214 #. type: Plain text
6215 #: doc/guix.texi:2552
6216 msgid "In addition, any package transaction may be @emph{rolled back}. So, if, for example, an upgrade installs a new version of a package that turns out to have a serious bug, users may roll back to the previous instance of their profile, which was known to work well. Similarly, the global system configuration on Guix is subject to transactional upgrades and roll-back (@pxref{Using the Configuration System})."
6217 msgstr ""
6218
6219 #. type: Plain text
6220 #: doc/guix.texi:2559
6221 msgid "All packages in the package store may be @emph{garbage-collected}. Guix can determine which packages are still referenced by user profiles, and remove those that are provably no longer referenced (@pxref{Invoking guix gc}). Users may also explicitly remove old generations of their profile so that the packages they refer to can be collected."
6222 msgstr ""
6223
6224 #. type: cindex
6225 #: doc/guix.texi:2560 doc/guix.texi:4087
6226 #, no-wrap
6227 msgid "reproducibility"
6228 msgstr ""
6229
6230 #. type: Plain text
6231 #: doc/guix.texi:2572
6232 msgid "Guix takes a @dfn{purely functional} approach to package management, as described in the introduction (@pxref{Introduction}). Each @file{/gnu/store} package directory name contains a hash of all the inputs that were used to build that package---compiler, libraries, build scripts, etc. This direct correspondence allows users to make sure a given package installation matches the current state of their distribution. It also helps maximize @dfn{build reproducibility}: thanks to the isolated build environments that are used, a given build is likely to yield bit-identical files when performed on different machines (@pxref{Invoking guix-daemon, container})."
6233 msgstr ""
6234
6235 #. type: Plain text
6236 #: doc/guix.texi:2583
6237 msgid "This foundation allows Guix to support @dfn{transparent binary/source deployment}. When a pre-built binary for a @file{/gnu/store} item is available from an external source---a @dfn{substitute}, Guix just downloads it and unpacks it; otherwise, it builds the package from source, locally (@pxref{Substitutes}). Because build results are usually bit-for-bit reproducible, users do not have to trust servers that provide substitutes: they can force a local build and @emph{challenge} providers (@pxref{Invoking guix challenge})."
6238 msgstr ""
6239
6240 #. type: Plain text
6241 #: doc/guix.texi:2589
6242 msgid "Control over the build environment is a feature that is also useful for developers. The @command{guix environment} command allows developers of a package to quickly set up the right development environment for their package, without having to manually install the dependencies of the package into their profile (@pxref{Invoking guix environment})."
6243 msgstr ""
6244
6245 #. type: cindex
6246 #: doc/guix.texi:2590
6247 #, no-wrap
6248 msgid "replication, of software environments"
6249 msgstr ""
6250
6251 #. type: cindex
6252 #: doc/guix.texi:2591
6253 #, no-wrap
6254 msgid "provenance tracking, of software artifacts"
6255 msgstr ""
6256
6257 #. type: Plain text
6258 #: doc/guix.texi:2598
6259 msgid "All of Guix and its package definitions is version-controlled, and @command{guix pull} allows you to ``travel in time'' on the history of Guix itself (@pxref{Invoking guix pull}). This makes it possible to replicate a Guix instance on a different machine or at a later point in time, which in turn allows you to @emph{replicate complete software environments}, while retaining precise @dfn{provenance tracking} of the software."
6260 msgstr ""
6261
6262 #. type: section
6263 #: doc/guix.texi:2600
6264 #, no-wrap
6265 msgid "Invoking @command{guix package}"
6266 msgstr ""
6267
6268 #. type: cindex
6269 #: doc/guix.texi:2602
6270 #, no-wrap
6271 msgid "installing packages"
6272 msgstr ""
6273
6274 #. type: cindex
6275 #: doc/guix.texi:2603
6276 #, no-wrap
6277 msgid "removing packages"
6278 msgstr ""
6279
6280 #. type: cindex
6281 #: doc/guix.texi:2604
6282 #, no-wrap
6283 msgid "package installation"
6284 msgstr ""
6285
6286 #. type: cindex
6287 #: doc/guix.texi:2605
6288 #, no-wrap
6289 msgid "package removal"
6290 msgstr ""
6291
6292 #. type: Plain text
6293 #: doc/guix.texi:2611
6294 msgid "The @command{guix package} command is the tool that allows users to install, upgrade, and remove packages, as well as rolling back to previous configurations. It operates only on the user's own profile, and works with normal user privileges (@pxref{Features}). Its syntax is:"
6295 msgstr ""
6296
6297 #. type: example
6298 #: doc/guix.texi:2614
6299 #, no-wrap
6300 msgid "guix package @var{options}\n"
6301 msgstr ""
6302
6303 #. type: Plain text
6304 #: doc/guix.texi:2621
6305 msgid "Primarily, @var{options} specifies the operations to be performed during the transaction. Upon completion, a new profile is created, but previous @dfn{generations} of the profile remain available, should the user want to roll back."
6306 msgstr ""
6307
6308 #. type: Plain text
6309 #: doc/guix.texi:2624
6310 msgid "For example, to remove @code{lua} and install @code{guile} and @code{guile-cairo} in a single transaction:"
6311 msgstr ""
6312
6313 #. type: example
6314 #: doc/guix.texi:2627
6315 #, no-wrap
6316 msgid "guix package -r lua -i guile guile-cairo\n"
6317 msgstr ""
6318
6319 #. type: cindex
6320 #: doc/guix.texi:2629
6321 #, no-wrap
6322 msgid "aliases, for @command{guix package}"
6323 msgstr ""
6324
6325 #. type: Plain text
6326 #: doc/guix.texi:2631
6327 msgid "For your convenience, we also provide the following aliases:"
6328 msgstr ""
6329
6330 #. type: itemize
6331 #: doc/guix.texi:2635
6332 msgid "@command{guix search} is an alias for @command{guix package -s},"
6333 msgstr ""
6334
6335 #. type: itemize
6336 #: doc/guix.texi:2637
6337 msgid "@command{guix install} is an alias for @command{guix package -i},"
6338 msgstr ""
6339
6340 #. type: itemize
6341 #: doc/guix.texi:2639
6342 msgid "@command{guix remove} is an alias for @command{guix package -r},"
6343 msgstr ""
6344
6345 #. type: itemize
6346 #: doc/guix.texi:2641
6347 msgid "and @command{guix upgrade} is an alias for @command{guix package -u}."
6348 msgstr ""
6349
6350 #. type: Plain text
6351 #: doc/guix.texi:2646
6352 msgid "These aliases are less expressive than @command{guix package} and provide fewer options, so in some cases you'll probably want to use @command{guix package} directly."
6353 msgstr ""
6354
6355 #. type: Plain text
6356 #: doc/guix.texi:2651
6357 msgid "@command{guix package} also supports a @dfn{declarative approach} whereby the user specifies the exact set of packages to be available and passes it @i{via} the @option{--manifest} option (@pxref{profile-manifest, @option{--manifest}})."
6358 msgstr ""
6359
6360 #. type: cindex
6361 #: doc/guix.texi:2652
6362 #, no-wrap
6363 msgid "profile"
6364 msgstr ""
6365
6366 #. type: Plain text
6367 #: doc/guix.texi:2658
6368 msgid "For each user, a symlink to the user's default profile is automatically created in @file{$HOME/.guix-profile}. This symlink always points to the current generation of the user's default profile. Thus, users can add @file{$HOME/.guix-profile/bin} to their @code{PATH} environment variable, and so on."
6369 msgstr ""
6370
6371 #. type: cindex
6372 #: doc/guix.texi:2658 doc/guix.texi:2855
6373 #, no-wrap
6374 msgid "search paths"
6375 msgstr ""
6376
6377 #. type: Plain text
6378 #: doc/guix.texi:2663
6379 msgid "If you are not using Guix System, consider adding the following lines to your @file{~/.bash_profile} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) so that newly-spawned shells get all the right environment variable definitions:"
6380 msgstr ""
6381
6382 #. type: example
6383 #: doc/guix.texi:2667
6384 #, no-wrap
6385 msgid ""
6386 "GUIX_PROFILE=\"$HOME/.guix-profile\" ; \\\n"
6387 "source \"$HOME/.guix-profile/etc/profile\"\n"
6388 msgstr ""
6389
6390 #. type: Plain text
6391 #: doc/guix.texi:2678
6392 msgid "In a multi-user setup, user profiles are stored in a place registered as a @dfn{garbage-collector root}, which @file{$HOME/.guix-profile} points to (@pxref{Invoking guix gc}). That directory is normally @code{@var{localstatedir}/guix/profiles/per-user/@var{user}}, where @var{localstatedir} is the value passed to @code{configure} as @code{--localstatedir}, and @var{user} is the user name. The @file{per-user} directory is created when @command{guix-daemon} is started, and the @var{user} sub-directory is created by @command{guix package}."
6393 msgstr ""
6394
6395 #. type: Plain text
6396 #: doc/guix.texi:2680
6397 msgid "The @var{options} can be among the following:"
6398 msgstr ""
6399
6400 #. type: item
6401 #: doc/guix.texi:2683
6402 #, no-wrap
6403 msgid "--install=@var{package} @dots{}"
6404 msgstr ""
6405
6406 #. type: itemx
6407 #: doc/guix.texi:2684
6408 #, no-wrap
6409 msgid "-i @var{package} @dots{}"
6410 msgstr ""
6411
6412 #. type: table
6413 #: doc/guix.texi:2686
6414 msgid "Install the specified @var{package}s."
6415 msgstr ""
6416
6417 #. type: table
6418 #: doc/guix.texi:2691
6419 msgid "Each @var{package} may specify either a simple package name, such as @code{guile}, or a package name followed by an at-sign and version number, such as @code{guile@@1.8.8} or simply @code{guile@@1.8} (in the latter case, the newest version prefixed by @code{1.8} is selected.)"
6420 msgstr ""
6421
6422 #. type: table
6423 #: doc/guix.texi:2699
6424 msgid "If no version number is specified, the newest available version will be selected. In addition, @var{package} may contain a colon, followed by the name of one of the outputs of the package, as in @code{gcc:doc} or @code{binutils@@2.22:lib} (@pxref{Packages with Multiple Outputs}). Packages with a corresponding name (and optionally version) are searched for among the GNU distribution modules (@pxref{Package Modules})."
6425 msgstr ""
6426
6427 #. type: cindex
6428 #: doc/guix.texi:2700
6429 #, no-wrap
6430 msgid "propagated inputs"
6431 msgstr ""
6432
6433 #. type: table
6434 #: doc/guix.texi:2706
6435 msgid "Sometimes packages have @dfn{propagated inputs}: these are dependencies that automatically get installed along with the required package (@pxref{package-propagated-inputs, @code{propagated-inputs} in @code{package} objects}, for information about propagated inputs in package definitions)."
6436 msgstr ""
6437
6438 #. type: anchor{#1}
6439 #: doc/guix.texi:2713
6440 msgid "package-cmd-propagated-inputs"
6441 msgstr ""
6442
6443 #. type: table
6444 #: doc/guix.texi:2713
6445 msgid "An example is the GNU MPC library: its C header files refer to those of the GNU MPFR library, which in turn refer to those of the GMP library. Thus, when installing MPC, the MPFR and GMP libraries also get installed in the profile; removing MPC also removes MPFR and GMP---unless they had also been explicitly installed by the user."
6446 msgstr ""
6447
6448 #. type: table
6449 #: doc/guix.texi:2718
6450 msgid "Besides, packages sometimes rely on the definition of environment variables for their search paths (see explanation of @code{--search-paths} below). Any missing or possibly incorrect environment variable definitions are reported here."
6451 msgstr ""
6452
6453 #. type: item
6454 #: doc/guix.texi:2719
6455 #, no-wrap
6456 msgid "--install-from-expression=@var{exp}"
6457 msgstr ""
6458
6459 #. type: itemx
6460 #: doc/guix.texi:2720
6461 #, no-wrap
6462 msgid "-e @var{exp}"
6463 msgstr ""
6464
6465 #. type: table
6466 #: doc/guix.texi:2722
6467 msgid "Install the package @var{exp} evaluates to."
6468 msgstr ""
6469
6470 #. type: table
6471 #: doc/guix.texi:2727
6472 msgid "@var{exp} must be a Scheme expression that evaluates to a @code{<package>} object. This option is notably useful to disambiguate between same-named variants of a package, with expressions such as @code{(@@ (gnu packages base) guile-final)}."
6473 msgstr ""
6474
6475 #. type: table
6476 #: doc/guix.texi:2731
6477 msgid "Note that this option installs the first output of the specified package, which may be insufficient when needing a specific output of a multiple-output package."
6478 msgstr ""
6479
6480 #. type: item
6481 #: doc/guix.texi:2732
6482 #, no-wrap
6483 msgid "--install-from-file=@var{file}"
6484 msgstr ""
6485
6486 #. type: itemx
6487 #: doc/guix.texi:2733 doc/guix.texi:7983
6488 #, no-wrap
6489 msgid "-f @var{file}"
6490 msgstr ""
6491
6492 #. type: table
6493 #: doc/guix.texi:2735
6494 msgid "Install the package that the code within @var{file} evaluates to."
6495 msgstr ""
6496
6497 #. type: table
6498 #: doc/guix.texi:2738 doc/guix.texi:4524
6499 msgid "As an example, @var{file} might contain a definition like this (@pxref{Defining Packages}):"
6500 msgstr ""
6501
6502 #. type: example
6503 #: doc/guix.texi:2741 doc/guix.texi:7992
6504 #, no-wrap
6505 msgid "@verbatiminclude package-hello.scm\n"
6506 msgstr ""
6507
6508 #. type: table
6509 #: doc/guix.texi:2747
6510 msgid "Developers may find it useful to include such a @file{guix.scm} file in the root of their project source tree that can be used to test development snapshots and create reproducible development environments (@pxref{Invoking guix environment})."
6511 msgstr ""
6512
6513 #. type: item
6514 #: doc/guix.texi:2748
6515 #, no-wrap
6516 msgid "--remove=@var{package} @dots{}"
6517 msgstr ""
6518
6519 #. type: itemx
6520 #: doc/guix.texi:2749
6521 #, no-wrap
6522 msgid "-r @var{package} @dots{}"
6523 msgstr ""
6524
6525 #. type: table
6526 #: doc/guix.texi:2751
6527 msgid "Remove the specified @var{package}s."
6528 msgstr ""
6529
6530 #. type: table
6531 #: doc/guix.texi:2756
6532 msgid "As for @code{--install}, each @var{package} may specify a version number and/or output name in addition to the package name. For instance, @code{-r glibc:debug} would remove the @code{debug} output of @code{glibc}."
6533 msgstr ""
6534
6535 #. type: item
6536 #: doc/guix.texi:2757
6537 #, no-wrap
6538 msgid "--upgrade[=@var{regexp} @dots{}]"
6539 msgstr ""
6540
6541 #. type: itemx
6542 #: doc/guix.texi:2758
6543 #, no-wrap
6544 msgid "-u [@var{regexp} @dots{}]"
6545 msgstr ""
6546
6547 #. type: cindex
6548 #: doc/guix.texi:2759
6549 #, no-wrap
6550 msgid "upgrading packages"
6551 msgstr ""
6552
6553 #. type: table
6554 #: doc/guix.texi:2763
6555 msgid "Upgrade all the installed packages. If one or more @var{regexp}s are specified, upgrade only installed packages whose name matches a @var{regexp}. Also see the @code{--do-not-upgrade} option below."
6556 msgstr ""
6557
6558 #. type: table
6559 #: doc/guix.texi:2768
6560 msgid "Note that this upgrades package to the latest version of packages found in the distribution currently installed. To update your distribution, you should regularly run @command{guix pull} (@pxref{Invoking guix pull})."
6561 msgstr ""
6562
6563 #. type: item
6564 #: doc/guix.texi:2769
6565 #, no-wrap
6566 msgid "--do-not-upgrade[=@var{regexp} @dots{}]"
6567 msgstr ""
6568
6569 #. type: table
6570 #: doc/guix.texi:2774
6571 msgid "When used together with the @code{--upgrade} option, do @emph{not} upgrade any packages whose name matches a @var{regexp}. For example, to upgrade all packages in the current profile except those containing the substring ``emacs'':"
6572 msgstr ""
6573
6574 #. type: example
6575 #: doc/guix.texi:2777
6576 #, no-wrap
6577 msgid "$ guix package --upgrade . --do-not-upgrade emacs\n"
6578 msgstr ""
6579
6580 #. type: anchor{#1}
6581 #: doc/guix.texi:2779
6582 #, no-wrap
6583 msgid "profile-manifest"
6584 msgstr ""
6585
6586 #. type: item
6587 #: doc/guix.texi:2779 doc/guix.texi:4529 doc/guix.texi:4870 doc/guix.texi:8916
6588 #: doc/guix.texi:10099
6589 #, no-wrap
6590 msgid "--manifest=@var{file}"
6591 msgstr ""
6592
6593 #. type: itemx
6594 #: doc/guix.texi:2780 doc/guix.texi:4530 doc/guix.texi:4871 doc/guix.texi:8917
6595 #, no-wrap
6596 msgid "-m @var{file}"
6597 msgstr ""
6598
6599 #. type: cindex
6600 #: doc/guix.texi:2781
6601 #, no-wrap
6602 msgid "profile declaration"
6603 msgstr ""
6604
6605 #. type: cindex
6606 #: doc/guix.texi:2782
6607 #, no-wrap
6608 msgid "profile manifest"
6609 msgstr ""
6610
6611 #. type: table
6612 #: doc/guix.texi:2785
6613 msgid "Create a new generation of the profile from the manifest object returned by the Scheme code in @var{file}."
6614 msgstr ""
6615
6616 #. type: table
6617 #: doc/guix.texi:2791
6618 msgid "This allows you to @emph{declare} the profile's contents rather than constructing it through a sequence of @code{--install} and similar commands. The advantage is that @var{file} can be put under version control, copied to different machines to reproduce the same profile, and so on."
6619 msgstr ""
6620
6621 #. type: table
6622 #: doc/guix.texi:2795
6623 msgid "@var{file} must return a @dfn{manifest} object, which is roughly a list of packages:"
6624 msgstr ""
6625
6626 #. type: findex
6627 #: doc/guix.texi:2796
6628 #, no-wrap
6629 msgid "packages->manifest"
6630 msgstr ""
6631
6632 #. type: example
6633 #: doc/guix.texi:2799
6634 #, no-wrap
6635 msgid ""
6636 "(use-package-modules guile emacs)\n"
6637 "\n"
6638 msgstr ""
6639
6640 #. type: example
6641 #: doc/guix.texi:2805
6642 #, no-wrap
6643 msgid ""
6644 "(packages->manifest\n"
6645 " (list emacs\n"
6646 " guile-2.0\n"
6647 " ;; Use a specific package output.\n"
6648 " (list guile-2.0 \"debug\")))\n"
6649 msgstr ""
6650
6651 #. type: findex
6652 #: doc/guix.texi:2807
6653 #, no-wrap
6654 msgid "specifications->manifest"
6655 msgstr ""
6656
6657 #. type: table
6658 #: doc/guix.texi:2814
6659 msgid "In this example we have to know which modules define the @code{emacs} and @code{guile-2.0} variables to provide the right @code{use-package-modules} line, which can be cumbersome. We can instead provide regular package specifications and let @code{specifications->manifest} look up the corresponding package objects, like this:"
6660 msgstr ""
6661
6662 #. type: example
6663 #: doc/guix.texi:2818
6664 #, no-wrap
6665 msgid ""
6666 "(specifications->manifest\n"
6667 " '(\"emacs\" \"guile@@2.2\" \"guile@@2.2:debug\"))\n"
6668 msgstr ""
6669
6670 #. type: item
6671 #: doc/guix.texi:2820
6672 #, no-wrap
6673 msgid "--roll-back"
6674 msgstr ""
6675
6676 #. type: cindex
6677 #: doc/guix.texi:2821 doc/guix.texi:24354
6678 #, no-wrap
6679 msgid "rolling back"
6680 msgstr ""
6681
6682 #. type: cindex
6683 #: doc/guix.texi:2822
6684 #, no-wrap
6685 msgid "undoing transactions"
6686 msgstr ""
6687
6688 #. type: cindex
6689 #: doc/guix.texi:2823
6690 #, no-wrap
6691 msgid "transactions, undoing"
6692 msgstr ""
6693
6694 #. type: table
6695 #: doc/guix.texi:2826
6696 msgid "Roll back to the previous @dfn{generation} of the profile---i.e., undo the last transaction."
6697 msgstr ""
6698
6699 #. type: table
6700 #: doc/guix.texi:2829
6701 msgid "When combined with options such as @code{--install}, roll back occurs before any other actions."
6702 msgstr ""
6703
6704 #. type: table
6705 #: doc/guix.texi:2833
6706 msgid "When rolling back from the first generation that actually contains installed packages, the profile is made to point to the @dfn{zeroth generation}, which contains no files apart from its own metadata."
6707 msgstr ""
6708
6709 #. type: table
6710 #: doc/guix.texi:2837
6711 msgid "After having rolled back, installing, removing, or upgrading packages overwrites previous future generations. Thus, the history of the generations in a profile is always linear."
6712 msgstr ""
6713
6714 #. type: item
6715 #: doc/guix.texi:2838
6716 #, no-wrap
6717 msgid "--switch-generation=@var{pattern}"
6718 msgstr ""
6719
6720 #. type: itemx
6721 #: doc/guix.texi:2839
6722 #, no-wrap
6723 msgid "-S @var{pattern}"
6724 msgstr ""
6725
6726 #. type: cindex
6727 #: doc/guix.texi:2840 doc/guix.texi:3036 doc/guix.texi:24312
6728 #, no-wrap
6729 msgid "generations"
6730 msgstr ""
6731
6732 #. type: table
6733 #: doc/guix.texi:2842
6734 msgid "Switch to a particular generation defined by @var{pattern}."
6735 msgstr ""
6736
6737 #. type: table
6738 #: doc/guix.texi:2848
6739 msgid "@var{pattern} may be either a generation number or a number prefixed with ``+'' or ``-''. The latter means: move forward/backward by a specified number of generations. For example, if you want to return to the latest generation after @code{--roll-back}, use @code{--switch-generation=+1}."
6740 msgstr ""
6741
6742 #. type: table
6743 #: doc/guix.texi:2853
6744 msgid "The difference between @code{--roll-back} and @code{--switch-generation=-1} is that @code{--switch-generation} will not make a zeroth generation, so if a specified generation does not exist, the current generation will not be changed."
6745 msgstr ""
6746
6747 #. type: item
6748 #: doc/guix.texi:2854
6749 #, no-wrap
6750 msgid "--search-paths[=@var{kind}]"
6751 msgstr ""
6752
6753 #. type: table
6754 #: doc/guix.texi:2860
6755 msgid "Report environment variable definitions, in Bash syntax, that may be needed in order to use the set of installed packages. These environment variables are used to specify @dfn{search paths} for files used by some of the installed packages."
6756 msgstr ""
6757
6758 #. type: table
6759 #: doc/guix.texi:2868
6760 msgid "For example, GCC needs the @code{CPATH} and @code{LIBRARY_PATH} environment variables to be defined so it can look for headers and libraries in the user's profile (@pxref{Environment Variables,,, gcc, Using the GNU Compiler Collection (GCC)}). If GCC and, say, the C library are installed in the profile, then @code{--search-paths} will suggest setting these variables to @code{@var{profile}/include} and @code{@var{profile}/lib}, respectively."
6761 msgstr ""
6762
6763 #. type: table
6764 #: doc/guix.texi:2871
6765 msgid "The typical use case is to define these environment variables in the shell:"
6766 msgstr ""
6767
6768 #. type: example
6769 #: doc/guix.texi:2874
6770 #, no-wrap
6771 msgid "$ eval `guix package --search-paths`\n"
6772 msgstr ""
6773
6774 #. type: table
6775 #: doc/guix.texi:2880
6776 msgid "@var{kind} may be one of @code{exact}, @code{prefix}, or @code{suffix}, meaning that the returned environment variable definitions will either be exact settings, or prefixes or suffixes of the current value of these variables. When omitted, @var{kind} defaults to @code{exact}."
6777 msgstr ""
6778
6779 #. type: table
6780 #: doc/guix.texi:2883
6781 msgid "This option can also be used to compute the @emph{combined} search paths of several profiles. Consider this example:"
6782 msgstr ""
6783
6784 #. type: example
6785 #: doc/guix.texi:2888
6786 #, no-wrap
6787 msgid ""
6788 "$ guix package -p foo -i guile\n"
6789 "$ guix package -p bar -i guile-json\n"
6790 "$ guix package -p foo -p bar --search-paths\n"
6791 msgstr ""
6792
6793 #. type: table
6794 #: doc/guix.texi:2893
6795 msgid "The last command above reports about the @code{GUILE_LOAD_PATH} variable, even though, taken individually, neither @file{foo} nor @file{bar} would lead to that recommendation."
6796 msgstr ""
6797
6798 #. type: item
6799 #: doc/guix.texi:2895 doc/guix.texi:3713 doc/guix.texi:4160
6800 #, no-wrap
6801 msgid "--profile=@var{profile}"
6802 msgstr ""
6803
6804 #. type: itemx
6805 #: doc/guix.texi:2896 doc/guix.texi:3714 doc/guix.texi:4161
6806 #, no-wrap
6807 msgid "-p @var{profile}"
6808 msgstr ""
6809
6810 #. type: table
6811 #: doc/guix.texi:2898
6812 msgid "Use @var{profile} instead of the user's default profile."
6813 msgstr ""
6814
6815 #. type: cindex
6816 #: doc/guix.texi:2899
6817 #, no-wrap
6818 msgid "collisions, in a profile"
6819 msgstr ""
6820
6821 #. type: cindex
6822 #: doc/guix.texi:2900
6823 #, no-wrap
6824 msgid "colliding packages in profiles"
6825 msgstr ""
6826
6827 #. type: cindex
6828 #: doc/guix.texi:2901
6829 #, no-wrap
6830 msgid "profile collisions"
6831 msgstr ""
6832
6833 #. type: item
6834 #: doc/guix.texi:2902
6835 #, no-wrap
6836 msgid "--allow-collisions"
6837 msgstr ""
6838
6839 #. type: table
6840 #: doc/guix.texi:2904
6841 msgid "Allow colliding packages in the new profile. Use at your own risk!"
6842 msgstr ""
6843
6844 #. type: table
6845 #: doc/guix.texi:2908
6846 msgid "By default, @command{guix package} reports as an error @dfn{collisions} in the profile. Collisions happen when two or more different versions or variants of a given package end up in the profile."
6847 msgstr ""
6848
6849 #. type: item
6850 #: doc/guix.texi:2909 doc/guix.texi:3730 doc/guix.texi:4944
6851 #, no-wrap
6852 msgid "--bootstrap"
6853 msgstr ""
6854
6855 #. type: table
6856 #: doc/guix.texi:2912
6857 msgid "Use the bootstrap Guile to build the profile. This option is only useful to distribution developers."
6858 msgstr ""
6859
6860 #. type: Plain text
6861 #: doc/guix.texi:2918
6862 msgid "In addition to these actions, @command{guix package} supports the following options to query the current state of a profile, or the availability of packages:"
6863 msgstr ""
6864
6865 #. type: item
6866 #: doc/guix.texi:2921
6867 #, no-wrap
6868 msgid "--search=@var{regexp}"
6869 msgstr ""
6870
6871 #. type: itemx
6872 #: doc/guix.texi:2922
6873 #, no-wrap
6874 msgid "-s @var{regexp}"
6875 msgstr ""
6876
6877 #. type: cindex
6878 #: doc/guix.texi:2923
6879 #, no-wrap
6880 msgid "searching for packages"
6881 msgstr ""
6882
6883 #. type: table
6884 #: doc/guix.texi:2929
6885 msgid "List the available packages whose name, synopsis, or description matches @var{regexp} (in a case-insensitive fashion), sorted by relevance. Print all the metadata of matching packages in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual})."
6886 msgstr ""
6887
6888 #. type: table
6889 #: doc/guix.texi:2932
6890 msgid "This allows specific fields to be extracted using the @command{recsel} command, for instance:"
6891 msgstr ""
6892
6893 #. type: example
6894 #: doc/guix.texi:2938
6895 #, no-wrap
6896 msgid ""
6897 "$ guix package -s malloc | recsel -p name,version,relevance\n"
6898 "name: jemalloc\n"
6899 "version: 4.5.0\n"
6900 "relevance: 6\n"
6901 "\n"
6902 msgstr ""
6903
6904 #. type: example
6905 #: doc/guix.texi:2942
6906 #, no-wrap
6907 msgid ""
6908 "name: glibc\n"
6909 "version: 2.25\n"
6910 "relevance: 1\n"
6911 "\n"
6912 msgstr ""
6913
6914 #. type: example
6915 #: doc/guix.texi:2946
6916 #, no-wrap
6917 msgid ""
6918 "name: libgc\n"
6919 "version: 7.6.0\n"
6920 "relevance: 1\n"
6921 msgstr ""
6922
6923 #. type: table
6924 #: doc/guix.texi:2950
6925 msgid "Similarly, to show the name of all the packages available under the terms of the GNU@tie{}LGPL version 3:"
6926 msgstr ""
6927
6928 #. type: example
6929 #: doc/guix.texi:2954
6930 #, no-wrap
6931 msgid ""
6932 "$ guix package -s \"\" | recsel -p name -e 'license ~ \"LGPL 3\"'\n"
6933 "name: elfutils\n"
6934 "\n"
6935 msgstr ""
6936
6937 #. type: example
6938 #: doc/guix.texi:2957
6939 #, no-wrap
6940 msgid ""
6941 "name: gmp\n"
6942 "@dots{}\n"
6943 msgstr ""
6944
6945 #. type: table
6946 #: doc/guix.texi:2963
6947 msgid "It is also possible to refine search results using several @code{-s} flags to @command{guix package}, or several arguments to @command{guix search}. For example, the following command returns a list of board games (this time using the @command{guix search} alias):"
6948 msgstr ""
6949
6950 #. type: example
6951 #: doc/guix.texi:2968
6952 #, no-wrap
6953 msgid ""
6954 "$ guix search '\\<board\\>' game | recsel -p name\n"
6955 "name: gnubg\n"
6956 "@dots{}\n"
6957 msgstr ""
6958
6959 #. type: table
6960 #: doc/guix.texi:2974
6961 msgid "If we were to omit @code{-s game}, we would also get software packages that deal with printed circuit boards; removing the angle brackets around @code{board} would further add packages that have to do with keyboards."
6962 msgstr ""
6963
6964 #. type: table
6965 #: doc/guix.texi:2978
6966 msgid "And now for a more elaborate example. The following command searches for cryptographic libraries, filters out Haskell, Perl, Python, and Ruby libraries, and prints the name and synopsis of the matching packages:"
6967 msgstr ""
6968
6969 #. type: example
6970 #: doc/guix.texi:2982
6971 #, no-wrap
6972 msgid ""
6973 "$ guix search crypto library | \\\n"
6974 " recsel -e '! (name ~ \"^(ghc|perl|python|ruby)\")' -p name,synopsis\n"
6975 msgstr ""
6976
6977 #. type: table
6978 #: doc/guix.texi:2987
6979 msgid "@xref{Selection Expressions,,, recutils, GNU recutils manual}, for more information on @dfn{selection expressions} for @code{recsel -e}."
6980 msgstr ""
6981
6982 #. type: item
6983 #: doc/guix.texi:2988
6984 #, no-wrap
6985 msgid "--show=@var{package}"
6986 msgstr ""
6987
6988 #. type: table
6989 #: doc/guix.texi:2992
6990 msgid "Show details about @var{package}, taken from the list of available packages, in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual})."
6991 msgstr ""
6992
6993 #. type: example
6994 #: doc/guix.texi:2997
6995 #, no-wrap
6996 msgid ""
6997 "$ guix package --show=python | recsel -p name,version\n"
6998 "name: python\n"
6999 "version: 2.7.6\n"
7000 "\n"
7001 msgstr ""
7002
7003 #. type: example
7004 #: doc/guix.texi:3000
7005 #, no-wrap
7006 msgid ""
7007 "name: python\n"
7008 "version: 3.3.5\n"
7009 msgstr ""
7010
7011 #. type: table
7012 #: doc/guix.texi:3004
7013 msgid "You may also specify the full name of a package to only get details about a specific version of it:"
7014 msgstr ""
7015
7016 #. type: example
7017 #: doc/guix.texi:3008
7018 #, no-wrap
7019 msgid ""
7020 "$ guix package --show=python@@3.4 | recsel -p name,version\n"
7021 "name: python\n"
7022 "version: 3.4.3\n"
7023 msgstr ""
7024
7025 #. type: item
7026 #: doc/guix.texi:3012
7027 #, no-wrap
7028 msgid "--list-installed[=@var{regexp}]"
7029 msgstr ""
7030
7031 #. type: itemx
7032 #: doc/guix.texi:3013
7033 #, no-wrap
7034 msgid "-I [@var{regexp}]"
7035 msgstr ""
7036
7037 #. type: table
7038 #: doc/guix.texi:3017
7039 msgid "List the currently installed packages in the specified profile, with the most recently installed packages shown last. When @var{regexp} is specified, list only installed packages whose name matches @var{regexp}."
7040 msgstr ""
7041
7042 #. type: table
7043 #: doc/guix.texi:3023
7044 msgid "For each installed package, print the following items, separated by tabs: the package name, its version string, the part of the package that is installed (for instance, @code{out} for the default output, @code{include} for its headers, etc.), and the path of this package in the store."
7045 msgstr ""
7046
7047 #. type: item
7048 #: doc/guix.texi:3024
7049 #, no-wrap
7050 msgid "--list-available[=@var{regexp}]"
7051 msgstr ""
7052
7053 #. type: itemx
7054 #: doc/guix.texi:3025
7055 #, no-wrap
7056 msgid "-A [@var{regexp}]"
7057 msgstr ""
7058
7059 #. type: table
7060 #: doc/guix.texi:3029
7061 msgid "List packages currently available in the distribution for this system (@pxref{GNU Distribution}). When @var{regexp} is specified, list only installed packages whose name matches @var{regexp}."
7062 msgstr ""
7063
7064 #. type: table
7065 #: doc/guix.texi:3033
7066 msgid "For each package, print the following items separated by tabs: its name, its version string, the parts of the package (@pxref{Packages with Multiple Outputs}), and the source location of its definition."
7067 msgstr ""
7068
7069 #. type: item
7070 #: doc/guix.texi:3034 doc/guix.texi:3703
7071 #, no-wrap
7072 msgid "--list-generations[=@var{pattern}]"
7073 msgstr ""
7074
7075 #. type: itemx
7076 #: doc/guix.texi:3035 doc/guix.texi:3704
7077 #, no-wrap
7078 msgid "-l [@var{pattern}]"
7079 msgstr ""
7080
7081 #. type: table
7082 #: doc/guix.texi:3041
7083 msgid "Return a list of generations along with their creation dates; for each generation, show the installed packages, with the most recently installed packages shown last. Note that the zeroth generation is never shown."
7084 msgstr ""
7085
7086 #. type: table
7087 #: doc/guix.texi:3046
7088 msgid "For each installed package, print the following items, separated by tabs: the name of a package, its version string, the part of the package that is installed (@pxref{Packages with Multiple Outputs}), and the location of this package in the store."
7089 msgstr ""
7090
7091 #. type: table
7092 #: doc/guix.texi:3049
7093 msgid "When @var{pattern} is used, the command returns only matching generations. Valid patterns include:"
7094 msgstr ""
7095
7096 #. type: item
7097 #: doc/guix.texi:3051
7098 #, no-wrap
7099 msgid "@emph{Integers and comma-separated integers}. Both patterns denote"
7100 msgstr ""
7101
7102 #. type: itemize
7103 #: doc/guix.texi:3054
7104 msgid "generation numbers. For instance, @code{--list-generations=1} returns the first one."
7105 msgstr ""
7106
7107 #. type: itemize
7108 #: doc/guix.texi:3057
7109 msgid "And @code{--list-generations=1,8,2} outputs three generations in the specified order. Neither spaces nor trailing commas are allowed."
7110 msgstr ""
7111
7112 #. type: item
7113 #: doc/guix.texi:3058
7114 #, no-wrap
7115 msgid "@emph{Ranges}. @code{--list-generations=2..9} prints the"
7116 msgstr ""
7117
7118 #. type: itemize
7119 #: doc/guix.texi:3061
7120 msgid "specified generations and everything in between. Note that the start of a range must be smaller than its end."
7121 msgstr ""
7122
7123 #. type: itemize
7124 #: doc/guix.texi:3065
7125 msgid "It is also possible to omit the endpoint. For example, @code{--list-generations=2..}, returns all generations starting from the second one."
7126 msgstr ""
7127
7128 #. type: item
7129 #: doc/guix.texi:3066
7130 #, no-wrap
7131 msgid "@emph{Durations}. You can also get the last @emph{N}@tie{}days, weeks,"
7132 msgstr ""
7133
7134 #. type: itemize
7135 #: doc/guix.texi:3070
7136 msgid "or months by passing an integer along with the first letter of the duration. For example, @code{--list-generations=20d} lists generations that are up to 20 days old."
7137 msgstr ""
7138
7139 #. type: item
7140 #: doc/guix.texi:3072
7141 #, no-wrap
7142 msgid "--delete-generations[=@var{pattern}]"
7143 msgstr ""
7144
7145 #. type: itemx
7146 #: doc/guix.texi:3073
7147 #, no-wrap
7148 msgid "-d [@var{pattern}]"
7149 msgstr ""
7150
7151 #. type: table
7152 #: doc/guix.texi:3076
7153 msgid "When @var{pattern} is omitted, delete all generations except the current one."
7154 msgstr ""
7155
7156 #. type: table
7157 #: doc/guix.texi:3082
7158 msgid "This command accepts the same patterns as @option{--list-generations}. When @var{pattern} is specified, delete the matching generations. When @var{pattern} specifies a duration, generations @emph{older} than the specified duration match. For instance, @code{--delete-generations=1m} deletes generations that are more than one month old."
7159 msgstr ""
7160
7161 #. type: table
7162 #: doc/guix.texi:3085
7163 msgid "If the current generation matches, it is @emph{not} deleted. Also, the zeroth generation is never deleted."
7164 msgstr ""
7165
7166 #. type: table
7167 #: doc/guix.texi:3088
7168 msgid "Note that deleting generations prevents rolling back to them. Consequently, this command must be used with care."
7169 msgstr ""
7170
7171 #. type: Plain text
7172 #: doc/guix.texi:3099
7173 msgid "Finally, since @command{guix package} may actually start build processes, it supports all the common build options (@pxref{Common Build Options}). It also supports package transformation options, such as @option{--with-source} (@pxref{Package Transformation Options}). However, note that package transformations are lost when upgrading; to preserve transformations across upgrades, you should define your own package variant in a Guile module and add it to @code{GUIX_PACKAGE_PATH} (@pxref{Defining Packages})."
7174 msgstr ""
7175
7176 #. type: cindex
7177 #: doc/guix.texi:3104
7178 #, no-wrap
7179 msgid "pre-built binaries"
7180 msgstr ""
7181
7182 #. type: Plain text
7183 #: doc/guix.texi:3110
7184 msgid "Guix supports transparent source/binary deployment, which means that it can either build things locally, or download pre-built items from a server, or both. We call these pre-built items @dfn{substitutes}---they are substitutes for local build results. In many cases, downloading a substitute is much faster than building things locally."
7185 msgstr ""
7186
7187 #. type: Plain text
7188 #: doc/guix.texi:3115
7189 msgid "Substitutes can be anything resulting from a derivation build (@pxref{Derivations}). Of course, in the common case, they are pre-built package binaries, but source tarballs, for instance, which also result from derivation builds, can be available as substitutes."
7190 msgstr ""
7191
7192 #. type: cindex
7193 #: doc/guix.texi:3128
7194 #, no-wrap
7195 msgid "hydra"
7196 msgstr ""
7197
7198 #. type: cindex
7199 #: doc/guix.texi:3129
7200 #, no-wrap
7201 msgid "build farm"
7202 msgstr ""
7203
7204 #. type: Plain text
7205 #: doc/guix.texi:3139
7206 msgid "The @code{@value{SUBSTITUTE-SERVER}} server is a front-end to an official build farm that builds packages from Guix continuously for some architectures, and makes them available as substitutes. This is the default source of substitutes; it can be overridden by passing the @option{--substitute-urls} option either to @command{guix-daemon} (@pxref{daemon-substitute-urls,, @code{guix-daemon --substitute-urls}}) or to client tools such as @command{guix package} (@pxref{client-substitute-urls,, client @option{--substitute-urls} option})."
7207 msgstr ""
7208
7209 #. type: Plain text
7210 #: doc/guix.texi:3145
7211 msgid "Substitute URLs can be either HTTP or HTTPS. HTTPS is recommended because communications are encrypted; conversely, using HTTP makes all communications visible to an eavesdropper, who could use the information gathered to determine, for instance, whether your system has unpatched security vulnerabilities."
7212 msgstr ""
7213
7214 #. type: Plain text
7215 #: doc/guix.texi:3154
7216 msgid "Substitutes from the official build farm are enabled by default when using Guix System (@pxref{GNU Distribution}). However, they are disabled by default when using Guix on a foreign distribution, unless you have explicitly enabled them via one of the recommended installation steps (@pxref{Installation}). The following paragraphs describe how to enable or disable substitutes for the official build farm; the same procedure can also be used to enable substitutes for any other substitute server."
7217 msgstr ""
7218
7219 #. type: cindex
7220 #: doc/guix.texi:3158
7221 #, no-wrap
7222 msgid "security"
7223 msgstr ""
7224
7225 #. type: cindex
7226 #: doc/guix.texi:3160
7227 #, no-wrap
7228 msgid "access control list (ACL), for substitutes"
7229 msgstr ""
7230
7231 #. type: cindex
7232 #: doc/guix.texi:3161
7233 #, no-wrap
7234 msgid "ACL (access control list), for substitutes"
7235 msgstr ""
7236
7237 #. type: Plain text
7238 #: doc/guix.texi:3168
7239 msgid "To allow Guix to download substitutes from @code{@value{SUBSTITUTE-SERVER}} or a mirror thereof, you must add its public key to the access control list (ACL) of archive imports, using the @command{guix archive} command (@pxref{Invoking guix archive}). Doing so implies that you trust @code{@value{SUBSTITUTE-SERVER}} to not be compromised and to serve genuine substitutes."
7240 msgstr ""
7241
7242 #. type: Plain text
7243 #: doc/guix.texi:3175
7244 msgid "The public key for @code{@value{SUBSTITUTE-SERVER}} is installed along with Guix, in @code{@var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub}, where @var{prefix} is the installation prefix of Guix. If you installed Guix from source, make sure you checked the GPG signature of @file{guix-@value{VERSION}.tar.gz}, which contains this public key file. Then, you can run something like this:"
7245 msgstr ""
7246
7247 #. type: example
7248 #: doc/guix.texi:3178
7249 #, no-wrap
7250 msgid "# guix archive --authorize < @var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub\n"
7251 msgstr ""
7252
7253 #. type: quotation
7254 #: doc/guix.texi:3184
7255 msgid "Similarly, the @file{hydra.gnu.org.pub} file contains the public key of an independent build farm also run by the project, reachable at @indicateurl{https://mirror.hydra.gnu.org}."
7256 msgstr ""
7257
7258 #. type: Plain text
7259 #: doc/guix.texi:3188
7260 msgid "Once this is in place, the output of a command like @code{guix build} should change from something like:"
7261 msgstr ""
7262
7263 #. type: example
7264 #: doc/guix.texi:3197
7265 #, no-wrap
7266 msgid ""
7267 "$ guix build emacs --dry-run\n"
7268 "The following derivations would be built:\n"
7269 " /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv\n"
7270 " /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv\n"
7271 " /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv\n"
7272 " /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv\n"
7273 "@dots{}\n"
7274 msgstr ""
7275
7276 #. type: Plain text
7277 #: doc/guix.texi:3201
7278 msgid "to something like:"
7279 msgstr ""
7280
7281 #. type: example
7282 #: doc/guix.texi:3210
7283 #, no-wrap
7284 msgid ""
7285 "$ guix build emacs --dry-run\n"
7286 "112.3 MB would be downloaded:\n"
7287 " /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3\n"
7288 " /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d\n"
7289 " /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16\n"
7290 " /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7\n"
7291 "@dots{}\n"
7292 msgstr ""
7293
7294 #. type: Plain text
7295 #: doc/guix.texi:3215
7296 msgid "This indicates that substitutes from @code{@value{SUBSTITUTE-SERVER}} are usable and will be downloaded, when possible, for future builds."
7297 msgstr ""
7298
7299 #. type: cindex
7300 #: doc/guix.texi:3216
7301 #, no-wrap
7302 msgid "substitutes, how to disable"
7303 msgstr ""
7304
7305 #. type: Plain text
7306 #: doc/guix.texi:3222
7307 msgid "The substitute mechanism can be disabled globally by running @code{guix-daemon} with @code{--no-substitutes} (@pxref{Invoking guix-daemon}). It can also be disabled temporarily by passing the @code{--no-substitutes} option to @command{guix package}, @command{guix build}, and other command-line tools."
7308 msgstr ""
7309
7310 #. type: cindex
7311 #: doc/guix.texi:3226
7312 #, no-wrap
7313 msgid "digital signatures"
7314 msgstr ""
7315
7316 #. type: Plain text
7317 #: doc/guix.texi:3230
7318 msgid "Guix detects and raises an error when attempting to use a substitute that has been tampered with. Likewise, it ignores substitutes that are not signed, or that are not signed by one of the keys listed in the ACL."
7319 msgstr ""
7320
7321 #. type: Plain text
7322 #: doc/guix.texi:3236
7323 msgid "There is one exception though: if an unauthorized server provides substitutes that are @emph{bit-for-bit identical} to those provided by an authorized server, then the unauthorized server becomes eligible for downloads. For example, assume we have chosen two substitute servers with this option:"
7324 msgstr ""
7325
7326 #. type: example
7327 #: doc/guix.texi:3239
7328 #, no-wrap
7329 msgid "--substitute-urls=\"https://a.example.org https://b.example.org\"\n"
7330 msgstr ""
7331
7332 #. type: Plain text
7333 #: doc/guix.texi:3250
7334 msgid "If the ACL contains only the key for @code{b.example.org}, and if @code{a.example.org} happens to serve the @emph{exact same} substitutes, then Guix will download substitutes from @code{a.example.org} because it comes first in the list and can be considered a mirror of @code{b.example.org}. In practice, independent build machines usually produce the same binaries, thanks to bit-reproducible builds (see below)."
7335 msgstr ""
7336
7337 #. type: Plain text
7338 #: doc/guix.texi:3257
7339 msgid "When using HTTPS, the server's X.509 certificate is @emph{not} validated (in other words, the server is not authenticated), contrary to what HTTPS clients such as Web browsers usually do. This is because Guix authenticates substitute information itself, as explained above, which is what we care about (whereas X.509 certificates are about authenticating bindings between domain names and public keys.)"
7340 msgstr ""
7341
7342 #. type: Plain text
7343 #: doc/guix.texi:3269
7344 msgid "Substitutes are downloaded over HTTP or HTTPS. The @code{http_proxy} environment variable can be set in the environment of @command{guix-daemon} and is honored for downloads of substitutes. Note that the value of @code{http_proxy} in the environment where @command{guix build}, @command{guix package}, and other client commands are run has @emph{absolutely no effect}."
7345 msgstr ""
7346
7347 #. type: Plain text
7348 #: doc/guix.texi:3278
7349 msgid "Even when a substitute for a derivation is available, sometimes the substitution attempt will fail. This can happen for a variety of reasons: the substitute server might be offline, the substitute may recently have been deleted, the connection might have been interrupted, etc."
7350 msgstr ""
7351
7352 #. type: Plain text
7353 #: doc/guix.texi:3292
7354 msgid "When substitutes are enabled and a substitute for a derivation is available, but the substitution attempt fails, Guix will attempt to build the derivation locally depending on whether or not @code{--fallback} was given (@pxref{fallback-option,, common build option @code{--fallback}}). Specifically, if @code{--fallback} was omitted, then no local build will be performed, and the derivation is considered to have failed. However, if @code{--fallback} was given, then Guix will attempt to build the derivation locally, and the success or failure of the derivation depends on the success or failure of the local build. Note that when substitutes are disabled or no substitute is available for the derivation in question, a local build will @emph{always} be performed, regardless of whether or not @code{--fallback} was given."
7355 msgstr ""
7356
7357 #. type: Plain text
7358 #: doc/guix.texi:3297
7359 msgid "To get an idea of how many substitutes are available right now, you can try running the @command{guix weather} command (@pxref{Invoking guix weather}). This command provides statistics on the substitutes provided by a server."
7360 msgstr ""
7361
7362 #. type: cindex
7363 #: doc/guix.texi:3301
7364 #, no-wrap
7365 msgid "trust, of pre-built binaries"
7366 msgstr ""
7367
7368 #. type: Plain text
7369 #: doc/guix.texi:3311
7370 msgid "Today, each individual's control over their own computing is at the mercy of institutions, corporations, and groups with enough power and determination to subvert the computing infrastructure and exploit its weaknesses. While using @code{@value{SUBSTITUTE-SERVER}} substitutes can be convenient, we encourage users to also build on their own, or even run their own build farm, such that @code{@value{SUBSTITUTE-SERVER}} is less of an interesting target. One way to help is by publishing the software you build using @command{guix publish} so that others have one more choice of server to download substitutes from (@pxref{Invoking guix publish})."
7371 msgstr ""
7372
7373 #. type: Plain text
7374 #: doc/guix.texi:3323
7375 msgid "Guix has the foundations to maximize build reproducibility (@pxref{Features}). In most cases, independent builds of a given package or derivation should yield bit-identical results. Thus, through a diverse set of independent package builds, we can strengthen the integrity of our systems. The @command{guix challenge} command aims to help users assess substitute servers, and to assist developers in finding out about non-deterministic package builds (@pxref{Invoking guix challenge}). Similarly, the @option{--check} option of @command{guix build} allows users to check whether previously-installed substitutes are genuine by rebuilding them locally (@pxref{build-check, @command{guix build --check}})."
7376 msgstr ""
7377
7378 #. type: Plain text
7379 #: doc/guix.texi:3327
7380 msgid "In the future, we want Guix to have support to publish and retrieve binaries to/from other users, in a peer-to-peer fashion. If you would like to discuss this project, join us on @email{guix-devel@@gnu.org}."
7381 msgstr ""
7382
7383 #. type: cindex
7384 #: doc/guix.texi:3331
7385 #, no-wrap
7386 msgid "multiple-output packages"
7387 msgstr ""
7388
7389 #. type: cindex
7390 #: doc/guix.texi:3332
7391 #, no-wrap
7392 msgid "package outputs"
7393 msgstr ""
7394
7395 #. type: cindex
7396 #: doc/guix.texi:3333
7397 #, no-wrap
7398 msgid "outputs"
7399 msgstr ""
7400
7401 #. type: Plain text
7402 #: doc/guix.texi:3343
7403 msgid "Often, packages defined in Guix have a single @dfn{output}---i.e., the source package leads to exactly one directory in the store. When running @command{guix install glibc}, one installs the default output of the GNU libc package; the default output is called @code{out}, but its name can be omitted as shown in this command. In this particular case, the default output of @code{glibc} contains all the C header files, shared libraries, static libraries, Info documentation, and other supporting files."
7404 msgstr ""
7405
7406 #. type: Plain text
7407 #: doc/guix.texi:3351
7408 msgid "Sometimes it is more appropriate to separate the various types of files produced from a single source package into separate outputs. For instance, the GLib C library (used by GTK+ and related packages) installs more than 20 MiB of reference documentation as HTML pages. To save space for users who do not need it, the documentation goes to a separate output, called @code{doc}. To install the main GLib output, which contains everything but the documentation, one would run:"
7409 msgstr ""
7410
7411 #. type: example
7412 #: doc/guix.texi:3354
7413 #, no-wrap
7414 msgid "guix install glib\n"
7415 msgstr "guix install glib\n"
7416
7417 #. type: item
7418 #: doc/guix.texi:3356 doc/guix.texi:25314 doc/guix.texi:25339
7419 #, no-wrap
7420 msgid "documentation"
7421 msgstr ""
7422
7423 #. type: Plain text
7424 #: doc/guix.texi:3358
7425 msgid "The command to install its documentation is:"
7426 msgstr ""
7427
7428 #. type: example
7429 #: doc/guix.texi:3361
7430 #, no-wrap
7431 msgid "guix install glib:doc\n"
7432 msgstr ""
7433
7434 #. type: Plain text
7435 #: doc/guix.texi:3372
7436 msgid "Some packages install programs with different ``dependency footprints''. For instance, the WordNet package installs both command-line tools and graphical user interfaces (GUIs). The former depend solely on the C library, whereas the latter depend on Tcl/Tk and the underlying X libraries. In this case, we leave the command-line tools in the default output, whereas the GUIs are in a separate output. This allows users who do not need the GUIs to save space. The @command{guix size} command can help find out about such situations (@pxref{Invoking guix size}). @command{guix graph} can also be helpful (@pxref{Invoking guix graph})."
7437 msgstr ""
7438
7439 #. type: Plain text
7440 #: doc/guix.texi:3380
7441 msgid "There are several such multiple-output packages in the GNU distribution. Other conventional output names include @code{lib} for libraries and possibly header files, @code{bin} for stand-alone programs, and @code{debug} for debugging information (@pxref{Installing Debugging Files}). The outputs of a packages are listed in the third column of the output of @command{guix package --list-available} (@pxref{Invoking guix package})."
7442 msgstr ""
7443
7444 #. type: section
7445 #: doc/guix.texi:3383
7446 #, no-wrap
7447 msgid "Invoking @command{guix gc}"
7448 msgstr ""
7449
7450 #. type: cindex
7451 #: doc/guix.texi:3385
7452 #, no-wrap
7453 msgid "garbage collector"
7454 msgstr ""
7455
7456 #. type: cindex
7457 #: doc/guix.texi:3386
7458 #, no-wrap
7459 msgid "disk space"
7460 msgstr ""
7461
7462 #. type: Plain text
7463 #: doc/guix.texi:3392
7464 msgid "Packages that are installed, but not used, may be @dfn{garbage-collected}. The @command{guix gc} command allows users to explicitly run the garbage collector to reclaim space from the @file{/gnu/store} directory. It is the @emph{only} way to remove files from @file{/gnu/store}---removing files or directories manually may break it beyond repair!"
7465 msgstr ""
7466
7467 #. type: Plain text
7468 #: doc/guix.texi:3403
7469 msgid "The garbage collector has a set of known @dfn{roots}: any file under @file{/gnu/store} reachable from a root is considered @dfn{live} and cannot be deleted; any other file is considered @dfn{dead} and may be deleted. The set of garbage collector roots (``GC roots'' for short) includes default user profiles; by default, the symlinks under @file{/var/guix/gcroots} represent these GC roots. New GC roots can be added with @command{guix build --root}, for example (@pxref{Invoking guix build}). The @command{guix gc --list-roots} command lists them."
7470 msgstr ""
7471
7472 #. type: Plain text
7473 #: doc/guix.texi:3409
7474 msgid "Prior to running @code{guix gc --collect-garbage} to make space, it is often useful to remove old generations from user profiles; that way, old package builds referenced by those generations can be reclaimed. This is achieved by running @code{guix package --delete-generations} (@pxref{Invoking guix package})."
7475 msgstr ""
7476
7477 #. type: Plain text
7478 #: doc/guix.texi:3413
7479 msgid "Our recommendation is to run a garbage collection periodically, or when you are short on disk space. For instance, to guarantee that at least 5@tie{}GB are available on your disk, simply run:"
7480 msgstr ""
7481
7482 #. type: example
7483 #: doc/guix.texi:3416
7484 #, no-wrap
7485 msgid "guix gc -F 5G\n"
7486 msgstr ""
7487
7488 #. type: Plain text
7489 #: doc/guix.texi:3425
7490 msgid "It is perfectly safe to run as a non-interactive periodic job (@pxref{Scheduled Job Execution}, for how to set up such a job). Running @command{guix gc} with no arguments will collect as much garbage as it can, but that is often inconvenient: you may find yourself having to rebuild or re-download software that is ``dead'' from the GC viewpoint but that is necessary to build other pieces of software---e.g., the compiler tool chain."
7491 msgstr ""
7492
7493 #. type: Plain text
7494 #: doc/guix.texi:3431
7495 msgid "The @command{guix gc} command has three modes of operation: it can be used to garbage-collect any dead files (the default), to delete specific files (the @code{--delete} option), to print garbage-collector information, or for more advanced queries. The garbage collection options are as follows:"
7496 msgstr ""
7497
7498 #. type: item
7499 #: doc/guix.texi:3433
7500 #, no-wrap
7501 msgid "--collect-garbage[=@var{min}]"
7502 msgstr ""
7503
7504 #. type: itemx
7505 #: doc/guix.texi:3434
7506 #, no-wrap
7507 msgid "-C [@var{min}]"
7508 msgstr ""
7509
7510 #. type: table
7511 #: doc/guix.texi:3438
7512 msgid "Collect garbage---i.e., unreachable @file{/gnu/store} files and sub-directories. This is the default operation when no option is specified."
7513 msgstr ""
7514
7515 #. type: table
7516 #: doc/guix.texi:3443
7517 msgid "When @var{min} is given, stop once @var{min} bytes have been collected. @var{min} may be a number of bytes, or it may include a unit as a suffix, such as @code{MiB} for mebibytes and @code{GB} for gigabytes (@pxref{Block size, size specifications,, coreutils, GNU Coreutils})."
7518 msgstr ""
7519
7520 #. type: table
7521 #: doc/guix.texi:3445
7522 msgid "When @var{min} is omitted, collect all the garbage."
7523 msgstr ""
7524
7525 #. type: item
7526 #: doc/guix.texi:3446
7527 #, no-wrap
7528 msgid "--free-space=@var{free}"
7529 msgstr ""
7530
7531 #. type: itemx
7532 #: doc/guix.texi:3447
7533 #, no-wrap
7534 msgid "-F @var{free}"
7535 msgstr ""
7536
7537 #. type: table
7538 #: doc/guix.texi:3451
7539 msgid "Collect garbage until @var{free} space is available under @file{/gnu/store}, if possible; @var{free} denotes storage space, such as @code{500MiB}, as described above."
7540 msgstr ""
7541
7542 #. type: table
7543 #: doc/guix.texi:3454
7544 msgid "When @var{free} or more is already available in @file{/gnu/store}, do nothing and exit immediately."
7545 msgstr ""
7546
7547 #. type: item
7548 #: doc/guix.texi:3455
7549 #, no-wrap
7550 msgid "--delete-generations[=@var{duration}]"
7551 msgstr ""
7552
7553 #. type: itemx
7554 #: doc/guix.texi:3456
7555 #, no-wrap
7556 msgid "-d [@var{duration}]"
7557 msgstr ""
7558
7559 #. type: table
7560 #: doc/guix.texi:3460
7561 msgid "Before starting the garbage collection process, delete all the generations older than @var{duration}, for all the user profiles; when run as root, this applies to all the profiles @emph{of all the users}."
7562 msgstr ""
7563
7564 #. type: table
7565 #: doc/guix.texi:3464
7566 msgid "For example, this command deletes all the generations of all your profiles that are older than 2 months (except generations that are current), and then proceeds to free space until at least 10 GiB are available:"
7567 msgstr ""
7568
7569 #. type: example
7570 #: doc/guix.texi:3467
7571 #, no-wrap
7572 msgid "guix gc -d 2m -F 10G\n"
7573 msgstr ""
7574
7575 #. type: item
7576 #: doc/guix.texi:3469
7577 #, no-wrap
7578 msgid "--delete"
7579 msgstr ""
7580
7581 #. type: itemx
7582 #: doc/guix.texi:3470
7583 #, no-wrap
7584 msgid "-D"
7585 msgstr ""
7586
7587 #. type: table
7588 #: doc/guix.texi:3474
7589 msgid "Attempt to delete all the store files and directories specified as arguments. This fails if some of the files are not in the store, or if they are still live."
7590 msgstr ""
7591
7592 #. type: item
7593 #: doc/guix.texi:3475
7594 #, no-wrap
7595 msgid "--list-failures"
7596 msgstr ""
7597
7598 #. type: table
7599 #: doc/guix.texi:3477
7600 msgid "List store items corresponding to cached build failures."
7601 msgstr ""
7602
7603 #. type: table
7604 #: doc/guix.texi:3481
7605 msgid "This prints nothing unless the daemon was started with @option{--cache-failures} (@pxref{Invoking guix-daemon, @option{--cache-failures}})."
7606 msgstr ""
7607
7608 #. type: item
7609 #: doc/guix.texi:3482
7610 #, no-wrap
7611 msgid "--list-roots"
7612 msgstr ""
7613
7614 #. type: table
7615 #: doc/guix.texi:3485
7616 msgid "List the GC roots owned by the user; when run as root, list @emph{all} the GC roots."
7617 msgstr ""
7618
7619 #. type: item
7620 #: doc/guix.texi:3486
7621 #, no-wrap
7622 msgid "--clear-failures"
7623 msgstr ""
7624
7625 #. type: table
7626 #: doc/guix.texi:3488
7627 msgid "Remove the specified store items from the failed-build cache."
7628 msgstr ""
7629
7630 #. type: table
7631 #: doc/guix.texi:3491
7632 msgid "Again, this option only makes sense when the daemon is started with @option{--cache-failures}. Otherwise, it does nothing."
7633 msgstr ""
7634
7635 #. type: item
7636 #: doc/guix.texi:3492
7637 #, no-wrap
7638 msgid "--list-dead"
7639 msgstr ""
7640
7641 #. type: table
7642 #: doc/guix.texi:3495
7643 msgid "Show the list of dead files and directories still present in the store---i.e., files and directories no longer reachable from any root."
7644 msgstr ""
7645
7646 #. type: item
7647 #: doc/guix.texi:3496
7648 #, no-wrap
7649 msgid "--list-live"
7650 msgstr ""
7651
7652 #. type: table
7653 #: doc/guix.texi:3498
7654 msgid "Show the list of live store files and directories."
7655 msgstr ""
7656
7657 #. type: Plain text
7658 #: doc/guix.texi:3502
7659 msgid "In addition, the references among existing store files can be queried:"
7660 msgstr ""
7661
7662 #. type: item
7663 #: doc/guix.texi:3505
7664 #, no-wrap
7665 msgid "--references"
7666 msgstr ""
7667
7668 #. type: itemx
7669 #: doc/guix.texi:3506
7670 #, no-wrap
7671 msgid "--referrers"
7672 msgstr ""
7673
7674 #. type: cindex
7675 #: doc/guix.texi:3507 doc/guix.texi:9355
7676 #, no-wrap
7677 msgid "package dependencies"
7678 msgstr ""
7679
7680 #. type: table
7681 #: doc/guix.texi:3510
7682 msgid "List the references (respectively, the referrers) of store files given as arguments."
7683 msgstr ""
7684
7685 #. type: item
7686 #: doc/guix.texi:3511
7687 #, no-wrap
7688 msgid "--requisites"
7689 msgstr ""
7690
7691 #. type: itemx
7692 #: doc/guix.texi:3512 doc/guix.texi:4810
7693 #, no-wrap
7694 msgid "-R"
7695 msgstr ""
7696
7697 #. type: item
7698 #: doc/guix.texi:3513 doc/guix.texi:9231 doc/guix.texi:9259 doc/guix.texi:9327
7699 #, no-wrap
7700 msgid "closure"
7701 msgstr ""
7702
7703 #. type: table
7704 #: doc/guix.texi:3518
7705 msgid "List the requisites of the store files passed as arguments. Requisites include the store files themselves, their references, and the references of these, recursively. In other words, the returned list is the @dfn{transitive closure} of the store files."
7706 msgstr ""
7707
7708 #. type: table
7709 #: doc/guix.texi:3522
7710 msgid "@xref{Invoking guix size}, for a tool to profile the size of the closure of an element. @xref{Invoking guix graph}, for a tool to visualize the graph of references."
7711 msgstr ""
7712
7713 #. type: item
7714 #: doc/guix.texi:3523
7715 #, no-wrap
7716 msgid "--derivers"
7717 msgstr ""
7718
7719 #. type: item
7720 #: doc/guix.texi:3524 doc/guix.texi:4971 doc/guix.texi:9456
7721 #, no-wrap
7722 msgid "derivation"
7723 msgstr ""
7724
7725 #. type: table
7726 #: doc/guix.texi:3527
7727 msgid "Return the derivation(s) leading to the given store items (@pxref{Derivations})."
7728 msgstr ""
7729
7730 #. type: table
7731 #: doc/guix.texi:3529
7732 msgid "For example, this command:"
7733 msgstr ""
7734
7735 #. type: example
7736 #: doc/guix.texi:3532
7737 #, no-wrap
7738 msgid "guix gc --derivers `guix package -I ^emacs$ | cut -f4`\n"
7739 msgstr ""
7740
7741 #. type: table
7742 #: doc/guix.texi:3537
7743 msgid "returns the @file{.drv} file(s) leading to the @code{emacs} package installed in your profile."
7744 msgstr ""
7745
7746 #. type: table
7747 #: doc/guix.texi:3541
7748 msgid "Note that there may be zero matching @file{.drv} files, for instance because these files have been garbage-collected. There can also be more than one matching @file{.drv} due to fixed-output derivations."
7749 msgstr ""
7750
7751 #. type: Plain text
7752 #: doc/guix.texi:3545
7753 msgid "Lastly, the following options allow you to check the integrity of the store and to control disk usage."
7754 msgstr ""
7755
7756 #. type: item
7757 #: doc/guix.texi:3548
7758 #, no-wrap
7759 msgid "--verify[=@var{options}]"
7760 msgstr ""
7761
7762 #. type: cindex
7763 #: doc/guix.texi:3549
7764 #, no-wrap
7765 msgid "integrity, of the store"
7766 msgstr ""
7767
7768 #. type: cindex
7769 #: doc/guix.texi:3550
7770 #, no-wrap
7771 msgid "integrity checking"
7772 msgstr ""
7773
7774 #. type: table
7775 #: doc/guix.texi:3552
7776 msgid "Verify the integrity of the store."
7777 msgstr ""
7778
7779 #. type: table
7780 #: doc/guix.texi:3555
7781 msgid "By default, make sure that all the store items marked as valid in the database of the daemon actually exist in @file{/gnu/store}."
7782 msgstr ""
7783
7784 #. type: table
7785 #: doc/guix.texi:3558
7786 msgid "When provided, @var{options} must be a comma-separated list containing one or more of @code{contents} and @code{repair}."
7787 msgstr ""
7788
7789 #. type: table
7790 #: doc/guix.texi:3564
7791 msgid "When passing @option{--verify=contents}, the daemon computes the content hash of each store item and compares it against its hash in the database. Hash mismatches are reported as data corruptions. Because it traverses @emph{all the files in the store}, this command can take a long time, especially on systems with a slow disk drive."
7792 msgstr ""
7793
7794 #. type: cindex
7795 #: doc/guix.texi:3565
7796 #, no-wrap
7797 msgid "repairing the store"
7798 msgstr ""
7799
7800 #. type: cindex
7801 #: doc/guix.texi:3566 doc/guix.texi:8125
7802 #, no-wrap
7803 msgid "corruption, recovering from"
7804 msgstr ""
7805
7806 #. type: table
7807 #: doc/guix.texi:3574
7808 msgid "Using @option{--verify=repair} or @option{--verify=contents,repair} causes the daemon to try to repair corrupt store items by fetching substitutes for them (@pxref{Substitutes}). Because repairing is not atomic, and thus potentially dangerous, it is available only to the system administrator. A lightweight alternative, when you know exactly which items in the store are corrupt, is @command{guix build --repair} (@pxref{Invoking guix build})."
7809 msgstr ""
7810
7811 #. type: item
7812 #: doc/guix.texi:3575
7813 #, no-wrap
7814 msgid "--optimize"
7815 msgstr ""
7816
7817 #. type: table
7818 #: doc/guix.texi:3579
7819 msgid "Optimize the store by hard-linking identical files---this is @dfn{deduplication}."
7820 msgstr ""
7821
7822 #. type: table
7823 #: doc/guix.texi:3585
7824 msgid "The daemon performs deduplication after each successful build or archive import, unless it was started with @code{--disable-deduplication} (@pxref{Invoking guix-daemon, @code{--disable-deduplication}}). Thus, this option is primarily useful when the daemon was running with @code{--disable-deduplication}."
7825 msgstr ""
7826
7827 #. type: section
7828 #: doc/guix.texi:3589
7829 #, no-wrap
7830 msgid "Invoking @command{guix pull}"
7831 msgstr ""
7832
7833 #. type: cindex
7834 #: doc/guix.texi:3591
7835 #, no-wrap
7836 msgid "upgrading Guix"
7837 msgstr ""
7838
7839 #. type: cindex
7840 #: doc/guix.texi:3592
7841 #, no-wrap
7842 msgid "updating Guix"
7843 msgstr ""
7844
7845 #. type: command{#1}
7846 #: doc/guix.texi:3593
7847 #, no-wrap
7848 msgid "guix pull"
7849 msgstr ""
7850
7851 #. type: cindex
7852 #: doc/guix.texi:3594
7853 #, no-wrap
7854 msgid "pull"
7855 msgstr ""
7856
7857 #. type: Plain text
7858 #: doc/guix.texi:3602
7859 msgid "Packages are installed or upgraded to the latest version available in the distribution currently available on your local machine. To update that distribution, along with the Guix tools, you must run @command{guix pull}: the command downloads the latest Guix source code and package descriptions, and deploys it. Source code is downloaded from a @uref{https://git-scm.com, Git} repository, by default the official GNU@tie{}Guix repository, though this can be customized."
7860 msgstr ""
7861
7862 #. type: Plain text
7863 #: doc/guix.texi:3608
7864 msgid "On completion, @command{guix package} will use packages and package versions from this just-retrieved copy of Guix. Not only that, but all the Guix commands and Scheme modules will also be taken from that latest version. New @command{guix} sub-commands added by the update also become available."
7865 msgstr ""
7866
7867 #. type: Plain text
7868 #: doc/guix.texi:3614
7869 msgid "Any user can update their Guix copy using @command{guix pull}, and the effect is limited to the user who run @command{guix pull}. For instance, when user @code{root} runs @command{guix pull}, this has no effect on the version of Guix that user @code{alice} sees, and vice versa."
7870 msgstr ""
7871
7872 #. type: Plain text
7873 #: doc/guix.texi:3620
7874 msgid "The result of running @command{guix pull} is a @dfn{profile} available under @file{~/.config/guix/current} containing the latest Guix. Thus, make sure to add it to the beginning of your search path so that you use the latest version, and similarly for the Info manual (@pxref{Documentation}):"
7875 msgstr ""
7876
7877 #. type: example
7878 #: doc/guix.texi:3624
7879 #, no-wrap
7880 msgid ""
7881 "export PATH=\"$HOME/.config/guix/current/bin:$PATH\"\n"
7882 "export INFOPATH=\"$HOME/.config/guix/current/share/info:$INFOPATH\"\n"
7883 msgstr ""
7884
7885 #. type: Plain text
7886 #: doc/guix.texi:3628
7887 msgid "The @code{--list-generations} or @code{-l} option lists past generations produced by @command{guix pull}, along with details about their provenance:"
7888 msgstr ""
7889
7890 #. type: example
7891 #: doc/guix.texi:3636
7892 #, no-wrap
7893 msgid ""
7894 "$ guix pull -l\n"
7895 "Generation 1\tJun 10 2018 00:18:18\n"
7896 " guix 65956ad\n"
7897 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
7898 " branch: origin/master\n"
7899 " commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe\n"
7900 "\n"
7901 msgstr ""
7902
7903 #. type: example
7904 #: doc/guix.texi:3646
7905 #, no-wrap
7906 msgid ""
7907 "Generation 2\tJun 11 2018 11:02:49\n"
7908 " guix e0cc7f6\n"
7909 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
7910 " branch: origin/master\n"
7911 " commit: e0cc7f669bec22c37481dd03a7941c7d11a64f1d\n"
7912 " 2 new packages: keepalived, libnfnetlink\n"
7913 " 6 packages upgraded: emacs-nix-mode@@2.0.4,\n"
7914 " guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac,\n"
7915 " heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4\n"
7916 "\n"
7917 msgstr ""
7918
7919 #. type: example
7920 #: doc/guix.texi:3654
7921 #, no-wrap
7922 msgid ""
7923 "Generation 3\tJun 13 2018 23:31:07\t(current)\n"
7924 " guix 844cc1c\n"
7925 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
7926 " branch: origin/master\n"
7927 " commit: 844cc1c8f394f03b404c5bb3aee086922373490c\n"
7928 " 28 new packages: emacs-helm-ls-git, emacs-helm-mu, @dots{}\n"
7929 " 69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{}\n"
7930 msgstr ""
7931
7932 #. type: Plain text
7933 #: doc/guix.texi:3658
7934 msgid "@xref{Invoking guix describe, @command{guix describe}}, for other ways to describe the current status of Guix."
7935 msgstr ""
7936
7937 #. type: Plain text
7938 #: doc/guix.texi:3663
7939 msgid "This @code{~/.config/guix/current} profile works like any other profile created by @command{guix package} (@pxref{Invoking guix package}). That is, you can list generations, roll back to the previous generation---i.e., the previous Guix---and so on:"
7940 msgstr ""
7941
7942 #. type: example
7943 #: doc/guix.texi:3669
7944 #, no-wrap
7945 msgid ""
7946 "$ guix package -p ~/.config/guix/current --roll-back\n"
7947 "switched from generation 3 to 2\n"
7948 "$ guix package -p ~/.config/guix/current --delete-generations=1\n"
7949 "deleting /var/guix/profiles/per-user/charlie/current-guix-1-link\n"
7950 msgstr ""
7951
7952 #. type: Plain text
7953 #: doc/guix.texi:3673
7954 msgid "The @command{guix pull} command is usually invoked with no arguments, but it supports the following options:"
7955 msgstr ""
7956
7957 #. type: item
7958 #: doc/guix.texi:3675
7959 #, no-wrap
7960 msgid "--url=@var{url}"
7961 msgstr ""
7962
7963 #. type: itemx
7964 #: doc/guix.texi:3676
7965 #, no-wrap
7966 msgid "--commit=@var{commit}"
7967 msgstr ""
7968
7969 #. type: itemx
7970 #: doc/guix.texi:3677
7971 #, no-wrap
7972 msgid "--branch=@var{branch}"
7973 msgstr ""
7974
7975 #. type: table
7976 #: doc/guix.texi:3681
7977 msgid "Download code for the @code{guix} channel from the specified @var{url}, at the given @var{commit} (a valid Git commit ID represented as a hexadecimal string), or @var{branch}."
7978 msgstr ""
7979
7980 #. type: cindex
7981 #: doc/guix.texi:3682 doc/guix.texi:3747
7982 #, no-wrap
7983 msgid "@file{channels.scm}, configuration file"
7984 msgstr ""
7985
7986 #. type: cindex
7987 #: doc/guix.texi:3683 doc/guix.texi:3748
7988 #, no-wrap
7989 msgid "configuration file for channels"
7990 msgstr ""
7991
7992 #. type: table
7993 #: doc/guix.texi:3687
7994 msgid "These options are provided for convenience, but you can also specify your configuration in the @file{~/.config/guix/channels.scm} file or using the @option{--channels} option (see below)."
7995 msgstr ""
7996
7997 #. type: item
7998 #: doc/guix.texi:3688
7999 #, no-wrap
8000 msgid "--channels=@var{file}"
8001 msgstr ""
8002
8003 #. type: itemx
8004 #: doc/guix.texi:3689
8005 #, no-wrap
8006 msgid "-C @var{file}"
8007 msgstr ""
8008
8009 #. type: table
8010 #: doc/guix.texi:3694
8011 msgid "Read the list of channels from @var{file} instead of @file{~/.config/guix/channels.scm}. @var{file} must contain Scheme code that evaluates to a list of channel objects. @xref{Channels}, for more information."
8012 msgstr ""
8013
8014 #. type: item
8015 #: doc/guix.texi:3695
8016 #, no-wrap
8017 msgid "--news"
8018 msgstr ""
8019
8020 #. type: itemx
8021 #: doc/guix.texi:3696 doc/guix.texi:4608
8022 #, no-wrap
8023 msgid "-N"
8024 msgstr ""
8025
8026 #. type: table
8027 #: doc/guix.texi:3698
8028 msgid "Display the list of packages added or upgraded since the previous generation."
8029 msgstr ""
8030
8031 #. type: table
8032 #: doc/guix.texi:3702
8033 msgid "This is the same information as displayed upon @command{guix pull} completion, but without ellipses; it is also similar to the output of @command{guix pull -l} for the last generation (see below)."
8034 msgstr ""
8035
8036 #. type: table
8037 #: doc/guix.texi:3709
8038 msgid "List all the generations of @file{~/.config/guix/current} or, if @var{pattern} is provided, the subset of generations that match @var{pattern}. The syntax of @var{pattern} is the same as with @code{guix package --list-generations} (@pxref{Invoking guix package})."
8039 msgstr ""
8040
8041 #. type: table
8042 #: doc/guix.texi:3712
8043 msgid "@xref{Invoking guix describe}, for a way to display information about the current generation only."
8044 msgstr ""
8045
8046 #. type: table
8047 #: doc/guix.texi:3716
8048 msgid "Use @var{profile} instead of @file{~/.config/guix/current}."
8049 msgstr ""
8050
8051 #. type: item
8052 #: doc/guix.texi:3717 doc/guix.texi:7701
8053 #, no-wrap
8054 msgid "--dry-run"
8055 msgstr ""
8056
8057 #. type: itemx
8058 #: doc/guix.texi:3718 doc/guix.texi:7702
8059 #, no-wrap
8060 msgid "-n"
8061 msgstr ""
8062
8063 #. type: table
8064 #: doc/guix.texi:3721
8065 msgid "Show which channel commit(s) would be used and what would be built or substituted but do not actually do it."
8066 msgstr ""
8067
8068 #. type: itemx
8069 #: doc/guix.texi:3723 doc/guix.texi:4591 doc/guix.texi:4884 doc/guix.texi:8067
8070 #: doc/guix.texi:9345 doc/guix.texi:9544 doc/guix.texi:10094
8071 #: doc/guix.texi:24556
8072 #, no-wrap
8073 msgid "-s @var{system}"
8074 msgstr ""
8075
8076 #. type: table
8077 #: doc/guix.texi:3726 doc/guix.texi:4887
8078 msgid "Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the system type of the build host."
8079 msgstr ""
8080
8081 #. type: item
8082 #: doc/guix.texi:3727 doc/guix.texi:9902
8083 #, no-wrap
8084 msgid "--verbose"
8085 msgstr ""
8086
8087 #. type: table
8088 #: doc/guix.texi:3729
8089 msgid "Produce verbose output, writing build logs to the standard error output."
8090 msgstr ""
8091
8092 #. type: table
8093 #: doc/guix.texi:3733
8094 msgid "Use the bootstrap Guile to build the latest Guix. This option is only useful to Guix developers."
8095 msgstr ""
8096
8097 #. type: Plain text
8098 #: doc/guix.texi:3739
8099 msgid "The @dfn{channel} mechanism allows you to instruct @command{guix pull} which repository and branch to pull from, as well as @emph{additional} repositories containing package modules that should be deployed. @xref{Channels}, for more information."
8100 msgstr ""
8101
8102 #. type: Plain text
8103 #: doc/guix.texi:3742
8104 msgid "In addition, @command{guix pull} supports all the common build options (@pxref{Common Build Options})."
8105 msgstr ""
8106
8107 #. type: item
8108 #: doc/guix.texi:3746 doc/guix.texi:4149
8109 #, no-wrap
8110 msgid "channels"
8111 msgstr ""
8112
8113 #. type: cindex
8114 #: doc/guix.texi:3749
8115 #, no-wrap
8116 msgid "@command{guix pull}, configuration file"
8117 msgstr ""
8118
8119 #. type: cindex
8120 #: doc/guix.texi:3750
8121 #, no-wrap
8122 msgid "configuration of @command{guix pull}"
8123 msgstr ""
8124
8125 #. type: Plain text
8126 #: doc/guix.texi:3759
8127 msgid "Guix and its package collection are updated by running @command{guix pull} (@pxref{Invoking guix pull}). By default @command{guix pull} downloads and deploys Guix itself from the official GNU@tie{}Guix repository. This can be customized by defining @dfn{channels} in the @file{~/.config/guix/channels.scm} file. A channel specifies a URL and branch of a Git repository to be deployed, and @command{guix pull} can be instructed to pull from one or more channels. In other words, channels can be used to @emph{customize} and to @emph{extend} Guix, as we will see below."
8128 msgstr ""
8129
8130 #. type: subsection
8131 #: doc/guix.texi:3760
8132 #, no-wrap
8133 msgid "Using a Custom Guix Channel"
8134 msgstr ""
8135
8136 #. type: Plain text
8137 #: doc/guix.texi:3767
8138 msgid "The channel called @code{guix} specifies where Guix itself---its command-line tools as well as its package collection---should be downloaded. For instance, suppose you want to update from your own copy of the Guix repository at @code{example.org}, and specifically the @code{super-hacks} branch, you can write in @code{~/.config/guix/channels.scm} this specification:"
8139 msgstr ""
8140
8141 #. type: lisp
8142 #: doc/guix.texi:3774
8143 #, no-wrap
8144 msgid ""
8145 ";; Tell 'guix pull' to use my own repo.\n"
8146 "(list (channel\n"
8147 " (name 'guix)\n"
8148 " (url \"https://example.org/my-guix.git\")\n"
8149 " (branch \"super-hacks\")))\n"
8150 msgstr ""
8151
8152 #. type: Plain text
8153 #: doc/guix.texi:3779
8154 msgid "From there on, @command{guix pull} will fetch code from the @code{super-hacks} branch of the repository at @code{example.org}."
8155 msgstr ""
8156
8157 #. type: subsection
8158 #: doc/guix.texi:3780
8159 #, no-wrap
8160 msgid "Specifying Additional Channels"
8161 msgstr ""
8162
8163 #. type: cindex
8164 #: doc/guix.texi:3782
8165 #, no-wrap
8166 msgid "extending the package collection (channels)"
8167 msgstr ""
8168
8169 #. type: cindex
8170 #: doc/guix.texi:3783
8171 #, no-wrap
8172 msgid "personal packages (channels)"
8173 msgstr ""
8174
8175 #. type: cindex
8176 #: doc/guix.texi:3784
8177 #, no-wrap
8178 msgid "channels, for personal packages"
8179 msgstr ""
8180
8181 #. type: Plain text
8182 #: doc/guix.texi:3792
8183 msgid "You can also specify @emph{additional channels} to pull from. Let's say you have a bunch of custom package variants or personal packages that you think would make little sense to contribute to the Guix project, but would like to have these packages transparently available to you at the command line. You would first write modules containing those package definitions (@pxref{Package Modules}), maintain them in a Git repository, and then you and anyone else can use it as an additional channel to get packages from. Neat, no?"
8184 msgstr ""
8185
8186 #. type: quotation
8187 #: doc/guix.texi:3796
8188 #, no-wrap
8189 msgid "Warning"
8190 msgstr ""
8191
8192 #. type: quotation
8193 #: doc/guix.texi:3800
8194 msgid "Before you, dear user, shout---``woow this is @emph{soooo coool}!''---and publish your personal channel to the world, we would like to share a few words of caution:"
8195 msgstr ""
8196
8197 #. type: itemize
8198 #: doc/guix.texi:3808
8199 msgid "Before publishing a channel, please consider contributing your package definitions to Guix proper (@pxref{Contributing}). Guix as a project is open to free software of all sorts, and packages in Guix proper are readily available to all Guix users and benefit from the project's quality assurance process."
8200 msgstr ""
8201
8202 #. type: itemize
8203 #: doc/guix.texi:3817
8204 msgid "When you maintain package definitions outside Guix, we, Guix developers, consider that @emph{the compatibility burden is on you}. Remember that package modules and package definitions are just Scheme code that uses various programming interfaces (APIs). We want to remain free to change these APIs to keep improving Guix, possibly in ways that break your channel. We never change APIs gratuitously, but we will @emph{not} commit to freezing APIs either."
8205 msgstr ""
8206
8207 #. type: itemize
8208 #: doc/guix.texi:3821
8209 msgid "Corollary: if you're using an external channel and that channel breaks, please @emph{report the issue to the channel authors}, not to the Guix project."
8210 msgstr ""
8211
8212 #. type: quotation
8213 #: doc/guix.texi:3828
8214 msgid "You've been warned! Having said this, we believe external channels are a practical way to exert your freedom to augment Guix' package collection and to share your improvements, which are basic tenets of @uref{https://www.gnu.org/philosophy/free-sw.html, free software}. Please email us at @email{guix-devel@@gnu.org} if you'd like to discuss this."
8215 msgstr ""
8216
8217 #. type: Plain text
8218 #: doc/guix.texi:3833
8219 msgid "To use a channel, write @code{~/.config/guix/channels.scm} to instruct @command{guix pull} to pull from it @emph{in addition} to the default Guix channel(s):"
8220 msgstr ""
8221
8222 #. type: vindex
8223 #: doc/guix.texi:3834
8224 #, no-wrap
8225 msgid "%default-channels"
8226 msgstr ""
8227
8228 #. type: lisp
8229 #: doc/guix.texi:3841
8230 #, no-wrap
8231 msgid ""
8232 ";; Add my personal packages to those Guix provides.\n"
8233 "(cons (channel\n"
8234 " (name 'my-personal-packages)\n"
8235 " (url \"https://example.org/personal-packages.git\"))\n"
8236 " %default-channels)\n"
8237 msgstr ""
8238
8239 #. type: Plain text
8240 #: doc/guix.texi:3851
8241 msgid "Note that the snippet above is (as always!)@: Scheme code; we use @code{cons} to add a channel the list of channels that the variable @code{%default-channels} is bound to (@pxref{Pairs, @code{cons} and lists,, guile, GNU Guile Reference Manual}). With this file in place, @command{guix pull} builds not only Guix but also the package modules from your own repository. The result in @file{~/.config/guix/current} is the union of Guix with your own package modules:"
8242 msgstr ""
8243
8244 #. type: example
8245 #: doc/guix.texi:3866
8246 #, no-wrap
8247 msgid ""
8248 "$ guix pull --list-generations\n"
8249 "@dots{}\n"
8250 "Generation 19\tAug 27 2018 16:20:48\n"
8251 " guix d894ab8\n"
8252 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
8253 " branch: master\n"
8254 " commit: d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300\n"
8255 " my-personal-packages dd3df5e\n"
8256 " repository URL: https://example.org/personal-packages.git\n"
8257 " branch: master\n"
8258 " commit: dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb\n"
8259 " 11 new packages: my-gimp, my-emacs-with-cool-features, @dots{}\n"
8260 " 4 packages upgraded: emacs-racket-mode@@0.0.2-2.1b78827, @dots{}\n"
8261 msgstr ""
8262
8263 #. type: Plain text
8264 #: doc/guix.texi:3874
8265 msgid "The output of @command{guix pull} above shows that Generation@tie{}19 includes both Guix and packages from the @code{my-personal-packages} channel. Among the new and upgraded packages that are listed, some like @code{my-gimp} and @code{my-emacs-with-cool-features} might come from @code{my-personal-packages}, while others come from the Guix default channel."
8266 msgstr ""
8267
8268 #. type: Plain text
8269 #: doc/guix.texi:3885
8270 msgid "To create a channel, create a Git repository containing your own package modules and make it available. The repository can contain anything, but a useful channel will contain Guile modules that export packages. Once you start using a channel, Guix will behave as if the root directory of that channel's Git repository has been added to the Guile load path (@pxref{Load Paths,,, guile, GNU Guile Reference Manual}). For example, if your channel contains a file at @file{my-packages/my-tools.scm} that defines a Guile module, then the module will be available under the name @code{(my-packages my-tools)}, and you will be able to use it like any other module (@pxref{Modules,,, guile, GNU Guile Reference Manual})."
8271 msgstr ""
8272
8273 #. type: cindex
8274 #: doc/guix.texi:3886
8275 #, no-wrap
8276 msgid "dependencies, channels"
8277 msgstr ""
8278
8279 #. type: cindex
8280 #: doc/guix.texi:3887
8281 #, no-wrap
8282 msgid "meta-data, channels"
8283 msgstr ""
8284
8285 #. type: subsection
8286 #: doc/guix.texi:3888
8287 #, no-wrap
8288 msgid "Declaring Channel Dependencies"
8289 msgstr ""
8290
8291 #. type: Plain text
8292 #: doc/guix.texi:3894
8293 msgid "Channel authors may decide to augment a package collection provided by other channels. They can declare their channel to be dependent on other channels in a meta-data file @file{.guix-channel}, which is to be placed in the root of the channel repository."
8294 msgstr ""
8295
8296 #. type: Plain text
8297 #: doc/guix.texi:3896
8298 msgid "The meta-data file should contain a simple S-expression like this:"
8299 msgstr ""
8300
8301 #. type: lisp
8302 #: doc/guix.texi:3908
8303 #, no-wrap
8304 msgid ""
8305 "(channel\n"
8306 " (version 0)\n"
8307 " (dependencies\n"
8308 " (channel\n"
8309 " (name some-collection)\n"
8310 " (url \"https://example.org/first-collection.git\"))\n"
8311 " (channel\n"
8312 " (name some-other-collection)\n"
8313 " (url \"https://example.org/second-collection.git\")\n"
8314 " (branch \"testing\"))))\n"
8315 msgstr ""
8316
8317 #. type: Plain text
8318 #: doc/guix.texi:3914
8319 msgid "In the above example this channel is declared to depend on two other channels, which will both be fetched automatically. The modules provided by the channel will be compiled in an environment where the modules of all these declared channels are available."
8320 msgstr ""
8321
8322 #. type: Plain text
8323 #: doc/guix.texi:3918
8324 msgid "For the sake of reliability and maintainability, you should avoid dependencies on channels that you don't control, and you should aim to keep the number of dependencies to a minimum."
8325 msgstr ""
8326
8327 #. type: subsection
8328 #: doc/guix.texi:3919
8329 #, no-wrap
8330 msgid "Replicating Guix"
8331 msgstr ""
8332
8333 #. type: cindex
8334 #: doc/guix.texi:3921
8335 #, no-wrap
8336 msgid "pinning, channels"
8337 msgstr ""
8338
8339 #. type: cindex
8340 #: doc/guix.texi:3922 doc/guix.texi:4088
8341 #, no-wrap
8342 msgid "replicating Guix"
8343 msgstr ""
8344
8345 #. type: cindex
8346 #: doc/guix.texi:3923
8347 #, no-wrap
8348 msgid "reproducibility, of Guix"
8349 msgstr ""
8350
8351 #. type: Plain text
8352 #: doc/guix.texi:3928
8353 msgid "The @command{guix pull --list-generations} output above shows precisely which commits were used to build this instance of Guix. We can thus replicate it, say, on another machine, by providing a channel specification in @file{~/.config/guix/channels.scm} that is ``pinned'' to these commits:"
8354 msgstr ""
8355
8356 #. type: lisp
8357 #: doc/guix.texi:3939
8358 #, no-wrap
8359 msgid ""
8360 ";; Deploy specific commits of my channels of interest.\n"
8361 "(list (channel\n"
8362 " (name 'guix)\n"
8363 " (url \"https://git.savannah.gnu.org/git/guix.git\")\n"
8364 " (commit \"d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300\"))\n"
8365 " (channel\n"
8366 " (name 'my-personal-packages)\n"
8367 " (url \"https://example.org/personal-packages.git\")\n"
8368 " (branch \"dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb\")))\n"
8369 msgstr ""
8370
8371 #. type: Plain text
8372 #: doc/guix.texi:3943
8373 msgid "The @command{guix describe --format=channels} command can even generate this list of channels directly (@pxref{Invoking guix describe})."
8374 msgstr ""
8375
8376 #. type: Plain text
8377 #: doc/guix.texi:3950
8378 msgid "At this point the two machines run the @emph{exact same Guix}, with access to the @emph{exact same packages}. The output of @command{guix build gimp} on one machine will be exactly the same, bit for bit, as the output of the same command on the other machine. It also means both machines have access to all the source code of Guix and, transitively, to all the source code of every package it defines."
8379 msgstr ""
8380
8381 #. type: Plain text
8382 #: doc/guix.texi:3955
8383 msgid "This gives you super powers, allowing you to track the provenance of binary artifacts with very fine grain, and to reproduce software environments at will---some sort of ``meta reproducibility'' capabilities, if you will. @xref{Inferiors}, for another way to take advantage of these super powers."
8384 msgstr ""
8385
8386 #. type: quotation
8387 #: doc/guix.texi:3963
8388 msgid "The functionality described here is a ``technology preview'' as of version @value{VERSION}. As such, the interface is subject to change."
8389 msgstr ""
8390
8391 #. type: cindex
8392 #: doc/guix.texi:3965 doc/guix.texi:7547
8393 #, no-wrap
8394 msgid "inferiors"
8395 msgstr ""
8396
8397 #. type: cindex
8398 #: doc/guix.texi:3966
8399 #, no-wrap
8400 msgid "composition of Guix revisions"
8401 msgstr ""
8402
8403 #. type: Plain text
8404 #: doc/guix.texi:3971
8405 msgid "Sometimes you might need to mix packages from the revision of Guix you're currently running with packages available in a different revision of Guix. Guix @dfn{inferiors} allow you to achieve that by composing different Guix revisions in arbitrary ways."
8406 msgstr ""
8407
8408 #. type: cindex
8409 #: doc/guix.texi:3972 doc/guix.texi:4037
8410 #, no-wrap
8411 msgid "inferior packages"
8412 msgstr ""
8413
8414 #. type: Plain text
8415 #: doc/guix.texi:3978
8416 msgid "Technically, an ``inferior'' is essentially a separate Guix process connected to your main Guix process through a REPL (@pxref{Invoking guix repl}). The @code{(guix inferior)} module allows you to create inferiors and to communicate with them. It also provides a high-level interface to browse and manipulate the packages that an inferior provides---@dfn{inferior packages}."
8417 msgstr ""
8418
8419 #. type: Plain text
8420 #: doc/guix.texi:3988
8421 msgid "When combined with channels (@pxref{Channels}), inferiors provide a simple way to interact with a separate revision of Guix. For example, let's assume you want to install in your profile the current @code{guile} package, along with the @code{guile-json} as it existed in an older revision of Guix---perhaps because the newer @code{guile-json} has an incompatible API and you want to run your code against the old API@. To do that, you could write a manifest for use by @code{guix package --manifest} (@pxref{Invoking guix package}); in that manifest, you would create an inferior for that old Guix revision you care about, and you would look up the @code{guile-json} package in the inferior:"
8422 msgstr ""
8423
8424 #. type: lisp
8425 #: doc/guix.texi:3992
8426 #, no-wrap
8427 msgid ""
8428 "(use-modules (guix inferior) (guix channels)\n"
8429 " (srfi srfi-1)) ;for 'first'\n"
8430 "\n"
8431 msgstr ""
8432
8433 #. type: lisp
8434 #: doc/guix.texi:4001
8435 #, no-wrap
8436 msgid ""
8437 "(define channels\n"
8438 " ;; This is the old revision from which we want to\n"
8439 " ;; extract guile-json.\n"
8440 " (list (channel\n"
8441 " (name 'guix)\n"
8442 " (url \"https://git.savannah.gnu.org/git/guix.git\")\n"
8443 " (commit\n"
8444 " \"65956ad3526ba09e1f7a40722c96c6ef7c0936fe\"))))\n"
8445 "\n"
8446 msgstr ""
8447
8448 #. type: lisp
8449 #: doc/guix.texi:4005
8450 #, no-wrap
8451 msgid ""
8452 "(define inferior\n"
8453 " ;; An inferior representing the above revision.\n"
8454 " (inferior-for-channels channels))\n"
8455 "\n"
8456 msgstr ""
8457
8458 #. type: lisp
8459 #: doc/guix.texi:4011
8460 #, no-wrap
8461 msgid ""
8462 ";; Now create a manifest with the current \"guile\" package\n"
8463 ";; and the old \"guile-json\" package.\n"
8464 "(packages->manifest\n"
8465 " (list (first (lookup-inferior-packages inferior \"guile-json\"))\n"
8466 " (specification->package \"guile\")))\n"
8467 msgstr ""
8468
8469 #. type: Plain text
8470 #: doc/guix.texi:4016
8471 msgid "On its first run, @command{guix package --manifest} might have to build the channel you specified before it can create the inferior; subsequent runs will be much faster because the Guix revision will be cached."
8472 msgstr ""
8473
8474 #. type: Plain text
8475 #: doc/guix.texi:4019
8476 msgid "The @code{(guix inferior)} module provides the following procedures to open an inferior:"
8477 msgstr ""
8478
8479 #. type: deffn
8480 #: doc/guix.texi:4020
8481 #, no-wrap
8482 msgid "{Scheme Procedure} inferior-for-channels @var{channels} @"
8483 msgstr ""
8484
8485 #. type: deffn
8486 #: doc/guix.texi:4025
8487 msgid "[#:cache-directory] [#:ttl] Return an inferior for @var{channels}, a list of channels. Use the cache at @var{cache-directory}, where entries can be reclaimed after @var{ttl} seconds. This procedure opens a new connection to the build daemon."
8488 msgstr ""
8489
8490 #. type: deffn
8491 #: doc/guix.texi:4028
8492 msgid "As a side effect, this procedure may build or substitute binaries for @var{channels}, which can take time."
8493 msgstr ""
8494
8495 #. type: deffn
8496 #: doc/guix.texi:4030
8497 #, no-wrap
8498 msgid "{Scheme Procedure} open-inferior @var{directory} @"
8499 msgstr ""
8500
8501 #. type: deffn
8502 #: doc/guix.texi:4035
8503 msgid "[#:command \"bin/guix\"] Open the inferior Guix in @var{directory}, running @code{@var{directory}/@var{command} repl} or equivalent. Return @code{#f} if the inferior could not be launched."
8504 msgstr ""
8505
8506 #. type: Plain text
8507 #: doc/guix.texi:4040
8508 msgid "The procedures listed below allow you to obtain and manipulate inferior packages."
8509 msgstr ""
8510
8511 #. type: deffn
8512 #: doc/guix.texi:4041
8513 #, no-wrap
8514 msgid "{Scheme Procedure} inferior-packages @var{inferior}"
8515 msgstr ""
8516
8517 #. type: deffn
8518 #: doc/guix.texi:4043
8519 msgid "Return the list of packages known to @var{inferior}."
8520 msgstr ""
8521
8522 #. type: deffn
8523 #: doc/guix.texi:4045
8524 #, no-wrap
8525 msgid "{Scheme Procedure} lookup-inferior-packages @var{inferior} @var{name} @"
8526 msgstr ""
8527
8528 #. type: deffn
8529 #: doc/guix.texi:4050
8530 msgid "[@var{version}] Return the sorted list of inferior packages matching @var{name} in @var{inferior}, with highest version numbers first. If @var{version} is true, return only packages with a version number prefixed by @var{version}."
8531 msgstr ""
8532
8533 #. type: deffn
8534 #: doc/guix.texi:4052
8535 #, no-wrap
8536 msgid "{Scheme Procedure} inferior-package? @var{obj}"
8537 msgstr ""
8538
8539 #. type: deffn
8540 #: doc/guix.texi:4054
8541 msgid "Return true if @var{obj} is an inferior package."
8542 msgstr ""
8543
8544 #. type: deffn
8545 #: doc/guix.texi:4056
8546 #, no-wrap
8547 msgid "{Scheme Procedure} inferior-package-name @var{package}"
8548 msgstr ""
8549
8550 #. type: deffnx
8551 #: doc/guix.texi:4057
8552 #, no-wrap
8553 msgid "{Scheme Procedure} inferior-package-version @var{package}"
8554 msgstr ""
8555
8556 #. type: deffnx
8557 #: doc/guix.texi:4058
8558 #, no-wrap
8559 msgid "{Scheme Procedure} inferior-package-synopsis @var{package}"
8560 msgstr ""
8561
8562 #. type: deffnx
8563 #: doc/guix.texi:4059
8564 #, no-wrap
8565 msgid "{Scheme Procedure} inferior-package-description @var{package}"
8566 msgstr ""
8567
8568 #. type: deffnx
8569 #: doc/guix.texi:4060
8570 #, no-wrap
8571 msgid "{Scheme Procedure} inferior-package-home-page @var{package}"
8572 msgstr ""
8573
8574 #. type: deffnx
8575 #: doc/guix.texi:4061
8576 #, no-wrap
8577 msgid "{Scheme Procedure} inferior-package-location @var{package}"
8578 msgstr ""
8579
8580 #. type: deffnx
8581 #: doc/guix.texi:4062
8582 #, no-wrap
8583 msgid "{Scheme Procedure} inferior-package-inputs @var{package}"
8584 msgstr ""
8585
8586 #. type: deffnx
8587 #: doc/guix.texi:4063
8588 #, no-wrap
8589 msgid "{Scheme Procedure} inferior-package-native-inputs @var{package}"
8590 msgstr ""
8591
8592 #. type: deffnx
8593 #: doc/guix.texi:4064
8594 #, no-wrap
8595 msgid "{Scheme Procedure} inferior-package-propagated-inputs @var{package}"
8596 msgstr ""
8597
8598 #. type: deffnx
8599 #: doc/guix.texi:4065
8600 #, no-wrap
8601 msgid "{Scheme Procedure} inferior-package-transitive-propagated-inputs @var{package}"
8602 msgstr ""
8603
8604 #. type: deffnx
8605 #: doc/guix.texi:4066
8606 #, no-wrap
8607 msgid "{Scheme Procedure} inferior-package-native-search-paths @var{package}"
8608 msgstr ""
8609
8610 #. type: deffnx
8611 #: doc/guix.texi:4067
8612 #, no-wrap
8613 msgid "{Scheme Procedure} inferior-package-transitive-native-search-paths @var{package}"
8614 msgstr ""
8615
8616 #. type: deffnx
8617 #: doc/guix.texi:4068
8618 #, no-wrap
8619 msgid "{Scheme Procedure} inferior-package-search-paths @var{package}"
8620 msgstr ""
8621
8622 #. type: deffn
8623 #: doc/guix.texi:4073
8624 msgid "These procedures are the counterpart of package record accessors (@pxref{package Reference}). Most of them work by querying the inferior @var{package} comes from, so the inferior must still be live when you call these procedures."
8625 msgstr ""
8626
8627 #. type: Plain text
8628 #: doc/guix.texi:4083
8629 msgid "Inferior packages can be used transparently like any other package or file-like object in G-expressions (@pxref{G-Expressions}). They are also transparently handled by the @code{packages->manifest} procedure, which is commonly use in manifests (@pxref{Invoking guix package, the @option{--manifest} option of @command{guix package}}). Thus you can insert an inferior package pretty much anywhere you would insert a regular package: in manifests, in the @code{packages} field of your @code{operating-system} declaration, and so on."
8630 msgstr ""
8631
8632 #. type: section
8633 #: doc/guix.texi:4085
8634 #, no-wrap
8635 msgid "Invoking @command{guix describe}"
8636 msgstr ""
8637
8638 #. type: Plain text
8639 #: doc/guix.texi:4096
8640 msgid "Often you may want to answer questions like: ``Which revision of Guix am I using?'' or ``Which channels am I using?'' This is useful information in many situations: if you want to @emph{replicate} an environment on a different machine or user account, if you want to report a bug or to determine what change in the channels you are using caused it, or if you want to record your system state for reproducibility purposes. The @command{guix describe} command answers these questions."
8641 msgstr ""
8642
8643 #. type: Plain text
8644 #: doc/guix.texi:4100
8645 msgid "When run from a @command{guix pull}ed @command{guix}, @command{guix describe} displays the channel(s) that it was built from, including their repository URL and commit IDs (@pxref{Channels}):"
8646 msgstr ""
8647
8648 #. type: example
8649 #: doc/guix.texi:4108
8650 #, no-wrap
8651 msgid ""
8652 "$ guix describe\n"
8653 "Generation 10\tSep 03 2018 17:32:44\t(current)\n"
8654 " guix e0fa68c\n"
8655 " repository URL: https://git.savannah.gnu.org/git/guix.git\n"
8656 " branch: master\n"
8657 " commit: e0fa68c7718fffd33d81af415279d6ddb518f727\n"
8658 msgstr ""
8659
8660 #. type: Plain text
8661 #: doc/guix.texi:4117
8662 msgid "If you're familiar with the Git version control system, this is similar in spirit to @command{git describe}; the output is also similar to that of @command{guix pull --list-generations}, but limited to the current generation (@pxref{Invoking guix pull, the @option{--list-generations} option}). Because the Git commit ID shown above unambiguously refers to a snapshot of Guix, this information is all it takes to describe the revision of Guix you're using, and also to replicate it."
8663 msgstr ""
8664
8665 #. type: Plain text
8666 #: doc/guix.texi:4120
8667 msgid "To make it easier to replicate Guix, @command{guix describe} can also be asked to return a list of channels instead of the human-readable description above:"
8668 msgstr ""
8669
8670 #. type: example
8671 #: doc/guix.texi:4128
8672 #, no-wrap
8673 msgid ""
8674 "$ guix describe -f channels\n"
8675 "(list (channel\n"
8676 " (name 'guix)\n"
8677 " (url \"https://git.savannah.gnu.org/git/guix.git\")\n"
8678 " (commit\n"
8679 " \"e0fa68c7718fffd33d81af415279d6ddb518f727\")))\n"
8680 msgstr ""
8681
8682 #. type: Plain text
8683 #: doc/guix.texi:4137
8684 msgid "You can save this to a file and feed it to @command{guix pull -C} on some other machine or at a later point in time, which will instantiate @emph{this exact Guix revision} (@pxref{Invoking guix pull, the @option{-C} option}). From there on, since you're able to deploy the same revision of Guix, you can just as well @emph{replicate a complete software environment}. We humbly think that this is @emph{awesome}, and we hope you'll like it too!"
8685 msgstr ""
8686
8687 #. type: Plain text
8688 #: doc/guix.texi:4140
8689 msgid "The details of the options supported by @command{guix describe} are as follows:"
8690 msgstr ""
8691
8692 #. type: item
8693 #: doc/guix.texi:4142 doc/guix.texi:4786
8694 #, no-wrap
8695 msgid "--format=@var{format}"
8696 msgstr ""
8697
8698 #. type: itemx
8699 #: doc/guix.texi:4143 doc/guix.texi:4787
8700 #, no-wrap
8701 msgid "-f @var{format}"
8702 msgstr ""
8703
8704 #. type: table
8705 #: doc/guix.texi:4145
8706 msgid "Produce output in the specified @var{format}, one of:"
8707 msgstr ""
8708
8709 #. type: item
8710 #: doc/guix.texi:4147
8711 #, no-wrap
8712 msgid "human"
8713 msgstr ""
8714
8715 #. type: table
8716 #: doc/guix.texi:4149
8717 msgid "produce human-readable output;"
8718 msgstr ""
8719
8720 #. type: table
8721 #: doc/guix.texi:4153
8722 msgid "produce a list of channel specifications that can be passed to @command{guix pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking guix pull});"
8723 msgstr ""
8724
8725 #. type: item
8726 #: doc/guix.texi:4153 doc/guix.texi:8584
8727 #, no-wrap
8728 msgid "json"
8729 msgstr ""
8730
8731 #. type: cindex
8732 #: doc/guix.texi:4154
8733 #, no-wrap
8734 msgid "JSON"
8735 msgstr ""
8736
8737 #. type: table
8738 #: doc/guix.texi:4156
8739 msgid "produce a list of channel specifications in JSON format;"
8740 msgstr ""
8741
8742 #. type: item
8743 #: doc/guix.texi:4156
8744 #, no-wrap
8745 msgid "recutils"
8746 msgstr ""
8747
8748 #. type: table
8749 #: doc/guix.texi:4158
8750 msgid "produce a list of channel specifications in Recutils format."
8751 msgstr ""
8752
8753 #. type: table
8754 #: doc/guix.texi:4163
8755 msgid "Display information about @var{profile}."
8756 msgstr ""
8757
8758 #. type: section
8759 #: doc/guix.texi:4166
8760 #, no-wrap
8761 msgid "Invoking @command{guix archive}"
8762 msgstr ""
8763
8764 #. type: command{#1}
8765 #: doc/guix.texi:4168
8766 #, no-wrap
8767 msgid "guix archive"
8768 msgstr ""
8769
8770 #. type: cindex
8771 #: doc/guix.texi:4169
8772 #, no-wrap
8773 msgid "archive"
8774 msgstr ""
8775
8776 #. type: Plain text
8777 #: doc/guix.texi:4175
8778 msgid "The @command{guix archive} command allows users to @dfn{export} files from the store into a single archive, and to later @dfn{import} them on a machine that runs Guix. In particular, it allows store files to be transferred from one machine to the store on another machine."
8779 msgstr ""
8780
8781 #. type: quotation
8782 #: doc/guix.texi:4179
8783 msgid "If you're looking for a way to produce archives in a format suitable for tools other than Guix, @pxref{Invoking guix pack}."
8784 msgstr ""
8785
8786 #. type: cindex
8787 #: doc/guix.texi:4181
8788 #, no-wrap
8789 msgid "exporting store items"
8790 msgstr ""
8791
8792 #. type: Plain text
8793 #: doc/guix.texi:4183
8794 msgid "To export store files as an archive to standard output, run:"
8795 msgstr ""
8796
8797 #. type: example
8798 #: doc/guix.texi:4186
8799 #, no-wrap
8800 msgid "guix archive --export @var{options} @var{specifications}...\n"
8801 msgstr ""
8802
8803 #. type: Plain text
8804 #: doc/guix.texi:4193
8805 msgid "@var{specifications} may be either store file names or package specifications, as for @command{guix package} (@pxref{Invoking guix package}). For instance, the following command creates an archive containing the @code{gui} output of the @code{git} package and the main output of @code{emacs}:"
8806 msgstr ""
8807
8808 #. type: example
8809 #: doc/guix.texi:4196
8810 #, no-wrap
8811 msgid "guix archive --export git:gui /gnu/store/...-emacs-24.3 > great.nar\n"
8812 msgstr ""
8813
8814 #. type: Plain text
8815 #: doc/guix.texi:4201
8816 msgid "If the specified packages are not built yet, @command{guix archive} automatically builds them. The build process may be controlled with the common build options (@pxref{Common Build Options})."
8817 msgstr ""
8818
8819 #. type: Plain text
8820 #: doc/guix.texi:4204
8821 msgid "To transfer the @code{emacs} package to a machine connected over SSH, one would run:"
8822 msgstr ""
8823
8824 #. type: example
8825 #: doc/guix.texi:4207
8826 #, no-wrap
8827 msgid "guix archive --export -r emacs | ssh the-machine guix archive --import\n"
8828 msgstr ""
8829
8830 #. type: Plain text
8831 #: doc/guix.texi:4212
8832 msgid "Similarly, a complete user profile may be transferred from one machine to another like this:"
8833 msgstr ""
8834
8835 #. type: example
8836 #: doc/guix.texi:4216
8837 #, no-wrap
8838 msgid ""
8839 "guix archive --export -r $(readlink -f ~/.guix-profile) | \\\n"
8840 " ssh the-machine guix-archive --import\n"
8841 msgstr ""
8842
8843 #. type: Plain text
8844 #: doc/guix.texi:4226
8845 msgid "However, note that, in both examples, all of @code{emacs} and the profile as well as all of their dependencies are transferred (due to @code{-r}), regardless of what is already available in the store on the target machine. The @code{--missing} option can help figure out which items are missing from the target store. The @command{guix copy} command simplifies and optimizes this whole process, so this is probably what you should use in this case (@pxref{Invoking guix copy})."
8846 msgstr ""
8847
8848 #. type: cindex
8849 #: doc/guix.texi:4227
8850 #, no-wrap
8851 msgid "nar, archive format"
8852 msgstr ""
8853
8854 #. type: cindex
8855 #: doc/guix.texi:4228
8856 #, no-wrap
8857 msgid "normalized archive (nar)"
8858 msgstr ""
8859
8860 #. type: Plain text
8861 #: doc/guix.texi:4238
8862 msgid "Archives are stored in the ``normalized archive'' or ``nar'' format, which is comparable in spirit to `tar', but with differences that make it more appropriate for our purposes. First, rather than recording all Unix metadata for each file, the nar format only mentions the file type (regular, directory, or symbolic link); Unix permissions and owner/group are dismissed. Second, the order in which directory entries are stored always follows the order of file names according to the C locale collation order. This makes archive production fully deterministic."
8863 msgstr ""
8864
8865 #. type: Plain text
8866 #: doc/guix.texi:4244
8867 msgid "When exporting, the daemon digitally signs the contents of the archive, and that digital signature is appended. When importing, the daemon verifies the signature and rejects the import in case of an invalid signature or if the signing key is not authorized."
8868 msgstr ""
8869
8870 #. type: Plain text
8871 #: doc/guix.texi:4246
8872 msgid "The main options are:"
8873 msgstr ""
8874
8875 #. type: item
8876 #: doc/guix.texi:4248
8877 #, no-wrap
8878 msgid "--export"
8879 msgstr ""
8880
8881 #. type: table
8882 #: doc/guix.texi:4251
8883 msgid "Export the specified store files or packages (see below.) Write the resulting archive to the standard output."
8884 msgstr ""
8885
8886 #. type: table
8887 #: doc/guix.texi:4254
8888 msgid "Dependencies are @emph{not} included in the output, unless @code{--recursive} is passed."
8889 msgstr ""
8890
8891 #. type: itemx
8892 #: doc/guix.texi:4255 doc/guix.texi:8372 doc/guix.texi:8469 doc/guix.texi:8494
8893 #: doc/guix.texi:8689 doc/guix.texi:8730 doc/guix.texi:8777
8894 #, no-wrap
8895 msgid "-r"
8896 msgstr ""
8897
8898 #. type: item
8899 #: doc/guix.texi:4256 doc/guix.texi:8371 doc/guix.texi:8468 doc/guix.texi:8493
8900 #: doc/guix.texi:8688 doc/guix.texi:8729 doc/guix.texi:8776 doc/guix.texi:8833
8901 #, no-wrap
8902 msgid "--recursive"
8903 msgstr ""
8904
8905 #. type: table
8906 #: doc/guix.texi:4261
8907 msgid "When combined with @code{--export}, this instructs @command{guix archive} to include dependencies of the given items in the archive. Thus, the resulting archive is self-contained: it contains the closure of the exported store items."
8908 msgstr ""
8909
8910 #. type: item
8911 #: doc/guix.texi:4262
8912 #, no-wrap
8913 msgid "--import"
8914 msgstr ""
8915
8916 #. type: table
8917 #: doc/guix.texi:4267
8918 msgid "Read an archive from the standard input, and import the files listed therein into the store. Abort if the archive has an invalid digital signature, or if it is signed by a public key not among the authorized keys (see @code{--authorize} below.)"
8919 msgstr ""
8920
8921 #. type: item
8922 #: doc/guix.texi:4268
8923 #, no-wrap
8924 msgid "--missing"
8925 msgstr ""
8926
8927 #. type: table
8928 #: doc/guix.texi:4272
8929 msgid "Read a list of store file names from the standard input, one per line, and write on the standard output the subset of these files missing from the store."
8930 msgstr ""
8931
8932 #. type: item
8933 #: doc/guix.texi:4273
8934 #, no-wrap
8935 msgid "--generate-key[=@var{parameters}]"
8936 msgstr ""
8937
8938 #. type: cindex
8939 #: doc/guix.texi:4274
8940 #, no-wrap
8941 msgid "signing, archives"
8942 msgstr ""
8943
8944 #. type: table
8945 #: doc/guix.texi:4279
8946 msgid "Generate a new key pair for the daemon. This is a prerequisite before archives can be exported with @code{--export}. Note that this operation usually takes time, because it needs to gather enough entropy to generate the key pair."
8947 msgstr ""
8948
8949 #. type: table
8950 #: doc/guix.texi:4289
8951 msgid "The generated key pair is typically stored under @file{/etc/guix}, in @file{signing-key.pub} (public key) and @file{signing-key.sec} (private key, which must be kept secret.) When @var{parameters} is omitted, an ECDSA key using the Ed25519 curve is generated, or, for Libgcrypt versions before 1.6.0, it is a 4096-bit RSA key. Alternatively, @var{parameters} can specify @code{genkey} parameters suitable for Libgcrypt (@pxref{General public-key related Functions, @code{gcry_pk_genkey},, gcrypt, The Libgcrypt Reference Manual})."
8952 msgstr ""
8953
8954 #. type: item
8955 #: doc/guix.texi:4290
8956 #, no-wrap
8957 msgid "--authorize"
8958 msgstr ""
8959
8960 #. type: cindex
8961 #: doc/guix.texi:4291
8962 #, no-wrap
8963 msgid "authorizing, archives"
8964 msgstr ""
8965
8966 #. type: table
8967 #: doc/guix.texi:4295
8968 msgid "Authorize imports signed by the public key passed on standard input. The public key must be in ``s-expression advanced format''---i.e., the same format as the @file{signing-key.pub} file."
8969 msgstr ""
8970
8971 #. type: table
8972 #: doc/guix.texi:4302
8973 msgid "The list of authorized keys is kept in the human-editable file @file{/etc/guix/acl}. The file contains @url{https://people.csail.mit.edu/rivest/Sexp.txt, ``advanced-format s-expressions''} and is structured as an access-control list in the @url{https://theworld.com/~cme/spki.txt, Simple Public-Key Infrastructure (SPKI)}."
8974 msgstr ""
8975
8976 #. type: item
8977 #: doc/guix.texi:4303
8978 #, no-wrap
8979 msgid "--extract=@var{directory}"
8980 msgstr ""
8981
8982 #. type: itemx
8983 #: doc/guix.texi:4304
8984 #, no-wrap
8985 msgid "-x @var{directory}"
8986 msgstr ""
8987
8988 #. type: table
8989 #: doc/guix.texi:4308
8990 msgid "Read a single-item archive as served by substitute servers (@pxref{Substitutes}) and extract it to @var{directory}. This is a low-level operation needed in only very narrow use cases; see below."
8991 msgstr ""
8992
8993 #. type: table
8994 #: doc/guix.texi:4311
8995 msgid "For example, the following command extracts the substitute for Emacs served by @code{@value{SUBSTITUTE-SERVER}} to @file{/tmp/emacs}:"
8996 msgstr ""
8997
8998 #. type: example
8999 #: doc/guix.texi:4316
9000 #, no-wrap
9001 msgid ""
9002 "$ wget -O - \\\n"
9003 " https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-emacs-24.5 \\\n"
9004 " | bunzip2 | guix archive -x /tmp/emacs\n"
9005 msgstr ""
9006
9007 #. type: table
9008 #: doc/guix.texi:4323
9009 msgid "Single-item archives are different from multiple-item archives produced by @command{guix archive --export}; they contain a single store item, and they do @emph{not} embed a signature. Thus this operation does @emph{no} signature verification and its output should be considered unsafe."
9010 msgstr ""
9011
9012 #. type: table
9013 #: doc/guix.texi:4326
9014 msgid "The primary purpose of this operation is to facilitate inspection of archive contents coming from possibly untrusted substitute servers."
9015 msgstr ""
9016
9017 #. type: cindex
9018 #: doc/guix.texi:4334
9019 #, no-wrap
9020 msgid "software development"
9021 msgstr ""
9022
9023 #. type: Plain text
9024 #: doc/guix.texi:4338
9025 msgid "If you are a software developer, Guix provides tools that you should find helpful---independently of the language you're developing in. This is what this chapter is about."
9026 msgstr ""
9027
9028 #. type: Plain text
9029 #: doc/guix.texi:4344
9030 msgid "The @command{guix environment} command provides a convenient way to set up @dfn{development environments} containing all the dependencies and tools necessary to work on the software package of your choice. The @command{guix pack} command allows you to create @dfn{application bundles} that can be easily distributed to users who do not run Guix."
9031 msgstr ""
9032
9033 #. type: section
9034 #: doc/guix.texi:4351
9035 #, no-wrap
9036 msgid "Invoking @command{guix environment}"
9037 msgstr ""
9038
9039 #. type: cindex
9040 #: doc/guix.texi:4353
9041 #, no-wrap
9042 msgid "reproducible build environments"
9043 msgstr ""
9044
9045 #. type: cindex
9046 #: doc/guix.texi:4354
9047 #, no-wrap
9048 msgid "development environments"
9049 msgstr ""
9050
9051 #. type: command{#1}
9052 #: doc/guix.texi:4355
9053 #, no-wrap
9054 msgid "guix environment"
9055 msgstr ""
9056
9057 #. type: cindex
9058 #: doc/guix.texi:4356
9059 #, no-wrap
9060 msgid "environment, package build environment"
9061 msgstr ""
9062
9063 #. type: Plain text
9064 #: doc/guix.texi:4362
9065 msgid "The purpose of @command{guix environment} is to assist hackers in creating reproducible development environments without polluting their package profile. The @command{guix environment} tool takes one or more packages, builds all of their inputs, and creates a shell environment to use them."
9066 msgstr ""
9067
9068 #. type: Plain text
9069 #: doc/guix.texi:4364 doc/guix.texi:7621 doc/guix.texi:8349 doc/guix.texi:8416
9070 #: doc/guix.texi:9205 doc/guix.texi:9578 doc/guix.texi:9883 doc/guix.texi:9949
9071 #: doc/guix.texi:9988
9072 msgid "The general syntax is:"
9073 msgstr ""
9074
9075 #. type: example
9076 #: doc/guix.texi:4367
9077 #, no-wrap
9078 msgid "guix environment @var{options} @var{package}@dots{}\n"
9079 msgstr ""
9080
9081 #. type: Plain text
9082 #: doc/guix.texi:4371
9083 msgid "The following example spawns a new shell set up for the development of GNU@tie{}Guile:"
9084 msgstr ""
9085
9086 #. type: example
9087 #: doc/guix.texi:4374
9088 #, no-wrap
9089 msgid "guix environment guile\n"
9090 msgstr ""
9091
9092 #. type: Plain text
9093 #: doc/guix.texi:4391
9094 msgid "If the needed dependencies are not built yet, @command{guix environment} automatically builds them. The environment of the new shell is an augmented version of the environment that @command{guix environment} was run in. It contains the necessary search paths for building the given package added to the existing environment variables. To create a ``pure'' environment, in which the original environment variables have been unset, use the @code{--pure} option@footnote{Users sometimes wrongfully augment environment variables such as @code{PATH} in their @file{~/.bashrc} file. As a consequence, when @code{guix environment} launches it, Bash may read @file{~/.bashrc}, thereby introducing ``impurities'' in these environment variables. It is an error to define such environment variables in @file{.bashrc}; instead, they should be defined in @file{.bash_profile}, which is sourced only by log-in shells. @xref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}, for details on Bash start-up files.}."
9095 msgstr ""
9096
9097 #. type: vindex
9098 #: doc/guix.texi:4392
9099 #, no-wrap
9100 msgid "GUIX_ENVIRONMENT"
9101 msgstr ""
9102
9103 #. type: Plain text
9104 #: doc/guix.texi:4398
9105 msgid "@command{guix environment} defines the @code{GUIX_ENVIRONMENT} variable in the shell it spawns; its value is the file name of the profile of this environment. This allows users to, say, define a specific prompt for development environments in their @file{.bashrc} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}):"
9106 msgstr ""
9107
9108 #. type: example
9109 #: doc/guix.texi:4404
9110 #, no-wrap
9111 msgid ""
9112 "if [ -n \"$GUIX_ENVIRONMENT\" ]\n"
9113 "then\n"
9114 " export PS1=\"\\u@@\\h \\w [dev]\\$ \"\n"
9115 "fi\n"
9116 msgstr ""
9117
9118 #. type: Plain text
9119 #: doc/guix.texi:4408
9120 msgid "...@: or to browse the profile:"
9121 msgstr ""
9122
9123 #. type: example
9124 #: doc/guix.texi:4411
9125 #, no-wrap
9126 msgid "$ ls \"$GUIX_ENVIRONMENT/bin\"\n"
9127 msgstr ""
9128
9129 #. type: Plain text
9130 #: doc/guix.texi:4417
9131 msgid "Additionally, more than one package may be specified, in which case the union of the inputs for the given packages are used. For example, the command below spawns a shell where all of the dependencies of both Guile and Emacs are available:"
9132 msgstr ""
9133
9134 #. type: example
9135 #: doc/guix.texi:4420
9136 #, no-wrap
9137 msgid "guix environment guile emacs\n"
9138 msgstr ""
9139
9140 #. type: Plain text
9141 #: doc/guix.texi:4425
9142 msgid "Sometimes an interactive shell session is not desired. An arbitrary command may be invoked by placing the @code{--} token to separate the command from the rest of the arguments:"
9143 msgstr ""
9144
9145 #. type: example
9146 #: doc/guix.texi:4428
9147 #, no-wrap
9148 msgid "guix environment guile -- make -j4\n"
9149 msgstr ""
9150
9151 #. type: Plain text
9152 #: doc/guix.texi:4434
9153 msgid "In other situations, it is more convenient to specify the list of packages needed in the environment. For example, the following command runs @command{python} from an environment containing Python@tie{}2.7 and NumPy:"
9154 msgstr ""
9155
9156 #. type: example
9157 #: doc/guix.texi:4437
9158 #, no-wrap
9159 msgid "guix environment --ad-hoc python2-numpy python-2.7 -- python\n"
9160 msgstr ""
9161
9162 #. type: Plain text
9163 #: doc/guix.texi:4448
9164 msgid "Furthermore, one might want the dependencies of a package and also some additional packages that are not build-time or runtime dependencies, but are useful when developing nonetheless. Because of this, the @code{--ad-hoc} flag is positional. Packages appearing before @code{--ad-hoc} are interpreted as packages whose dependencies will be added to the environment. Packages appearing after are interpreted as packages that will be added to the environment directly. For example, the following command creates a Guix development environment that additionally includes Git and strace:"
9165 msgstr ""
9166
9167 #. type: example
9168 #: doc/guix.texi:4451
9169 #, no-wrap
9170 msgid "guix environment guix --ad-hoc git strace\n"
9171 msgstr ""
9172
9173 #. type: Plain text
9174 #: doc/guix.texi:4460
9175 msgid "Sometimes it is desirable to isolate the environment as much as possible, for maximal purity and reproducibility. In particular, when using Guix on a host distro that is not Guix System, it is desirable to prevent access to @file{/usr/bin} and other system-wide resources from the development environment. For example, the following command spawns a Guile REPL in a ``container'' where only the store and the current working directory are mounted:"
9176 msgstr ""
9177
9178 #. type: example
9179 #: doc/guix.texi:4463
9180 #, no-wrap
9181 msgid "guix environment --ad-hoc --container guile -- guile\n"
9182 msgstr ""
9183
9184 #. type: quotation
9185 #: doc/guix.texi:4467
9186 msgid "The @code{--container} option requires Linux-libre 3.19 or newer."
9187 msgstr ""
9188
9189 #. type: Plain text
9190 #: doc/guix.texi:4470
9191 msgid "The available options are summarized below."
9192 msgstr ""
9193
9194 #. type: item
9195 #: doc/guix.texi:4472 doc/guix.texi:8136 doc/guix.texi:24588
9196 #, no-wrap
9197 msgid "--root=@var{file}"
9198 msgstr ""
9199
9200 #. type: itemx
9201 #: doc/guix.texi:4473 doc/guix.texi:8137 doc/guix.texi:24589
9202 #, no-wrap
9203 msgid "-r @var{file}"
9204 msgstr ""
9205
9206 #. type: cindex
9207 #: doc/guix.texi:4474
9208 #, no-wrap
9209 msgid "persistent environment"
9210 msgstr ""
9211
9212 #. type: cindex
9213 #: doc/guix.texi:4475
9214 #, no-wrap
9215 msgid "garbage collector root, for environments"
9216 msgstr ""
9217
9218 #. type: table
9219 #: doc/guix.texi:4478
9220 msgid "Make @var{file} a symlink to the profile for this environment, and register it as a garbage collector root."
9221 msgstr ""
9222
9223 #. type: table
9224 #: doc/guix.texi:4481
9225 msgid "This is useful if you want to protect your environment from garbage collection, to make it ``persistent''."
9226 msgstr ""
9227
9228 #. type: table
9229 #: doc/guix.texi:4487
9230 msgid "When this option is omitted, the environment is protected from garbage collection only for the duration of the @command{guix environment} session. This means that next time you recreate the same environment, you could have to rebuild or re-download packages. @xref{Invoking guix gc}, for more on GC roots."
9231 msgstr ""
9232
9233 #. type: item
9234 #: doc/guix.texi:4488 doc/guix.texi:4862 doc/guix.texi:7994 doc/guix.texi:8875
9235 #: doc/guix.texi:9533 doc/guix.texi:24547
9236 #, no-wrap
9237 msgid "--expression=@var{expr}"
9238 msgstr ""
9239
9240 #. type: itemx
9241 #: doc/guix.texi:4489 doc/guix.texi:4863 doc/guix.texi:7995 doc/guix.texi:8876
9242 #: doc/guix.texi:9534 doc/guix.texi:24548
9243 #, no-wrap
9244 msgid "-e @var{expr}"
9245 msgstr ""
9246
9247 #. type: table
9248 #: doc/guix.texi:4492
9249 msgid "Create an environment for the package or list of packages that @var{expr} evaluates to."
9250 msgstr ""
9251
9252 #. type: table
9253 #: doc/guix.texi:4494
9254 msgid "For example, running:"
9255 msgstr ""
9256
9257 #. type: example
9258 #: doc/guix.texi:4497
9259 #, no-wrap
9260 msgid "guix environment -e '(@@ (gnu packages maths) petsc-openmpi)'\n"
9261 msgstr ""
9262
9263 #. type: table
9264 #: doc/guix.texi:4501
9265 msgid "starts a shell with the environment for this specific variant of the PETSc package."
9266 msgstr ""
9267
9268 #. type: table
9269 #: doc/guix.texi:4503
9270 msgid "Running:"
9271 msgstr ""
9272
9273 #. type: example
9274 #: doc/guix.texi:4506
9275 #, no-wrap
9276 msgid "guix environment --ad-hoc -e '(@@ (gnu) %base-packages)'\n"
9277 msgstr ""
9278
9279 #. type: table
9280 #: doc/guix.texi:4509
9281 msgid "starts a shell with all the base system packages available."
9282 msgstr ""
9283
9284 #. type: table
9285 #: doc/guix.texi:4512
9286 msgid "The above commands only use the default output of the given packages. To select other outputs, two element tuples can be specified:"
9287 msgstr ""
9288
9289 #. type: example
9290 #: doc/guix.texi:4515
9291 #, no-wrap
9292 msgid "guix environment --ad-hoc -e '(list (@@ (gnu packages bash) bash) \"include\")'\n"
9293 msgstr ""
9294
9295 #. type: item
9296 #: doc/guix.texi:4517
9297 #, no-wrap
9298 msgid "--load=@var{file}"
9299 msgstr ""
9300
9301 #. type: itemx
9302 #: doc/guix.texi:4518
9303 #, no-wrap
9304 msgid "-l @var{file}"
9305 msgstr ""
9306
9307 #. type: table
9308 #: doc/guix.texi:4521
9309 msgid "Create an environment for the package or list of packages that the code within @var{file} evaluates to."
9310 msgstr ""
9311
9312 #. type: example
9313 #: doc/guix.texi:4527
9314 #, no-wrap
9315 msgid "@verbatiminclude environment-gdb.scm\n"
9316 msgstr ""
9317
9318 #. type: table
9319 #: doc/guix.texi:4533
9320 msgid "Create an environment for the packages contained in the manifest object returned by the Scheme code in @var{file}."
9321 msgstr ""
9322
9323 #. type: table
9324 #: doc/guix.texi:4537
9325 msgid "This is similar to the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same manifest files."
9326 msgstr ""
9327
9328 #. type: item
9329 #: doc/guix.texi:4538
9330 #, no-wrap
9331 msgid "--ad-hoc"
9332 msgstr ""
9333
9334 #. type: table
9335 #: doc/guix.texi:4543
9336 msgid "Include all specified packages in the resulting environment, as if an @i{ad hoc} package were defined with them as inputs. This option is useful for quickly creating an environment without having to write a package expression to contain the desired inputs."
9337 msgstr ""
9338
9339 #. type: table
9340 #: doc/guix.texi:4545
9341 msgid "For instance, the command:"
9342 msgstr ""
9343
9344 #. type: example
9345 #: doc/guix.texi:4548
9346 #, no-wrap
9347 msgid "guix environment --ad-hoc guile guile-sdl -- guile\n"
9348 msgstr ""
9349
9350 #. type: table
9351 #: doc/guix.texi:4552
9352 msgid "runs @command{guile} in an environment where Guile and Guile-SDL are available."
9353 msgstr ""
9354
9355 #. type: table
9356 #: doc/guix.texi:4557
9357 msgid "Note that this example implicitly asks for the default output of @code{guile} and @code{guile-sdl}, but it is possible to ask for a specific output---e.g., @code{glib:bin} asks for the @code{bin} output of @code{glib} (@pxref{Packages with Multiple Outputs})."
9358 msgstr ""
9359
9360 #. type: table
9361 #: doc/guix.texi:4563
9362 msgid "This option may be composed with the default behavior of @command{guix environment}. Packages appearing before @code{--ad-hoc} are interpreted as packages whose dependencies will be added to the environment, the default behavior. Packages appearing after are interpreted as packages that will be added to the environment directly."
9363 msgstr ""
9364
9365 #. type: item
9366 #: doc/guix.texi:4564
9367 #, no-wrap
9368 msgid "--pure"
9369 msgstr ""
9370
9371 #. type: table
9372 #: doc/guix.texi:4568
9373 msgid "Unset existing environment variables when building the new environment, except those specified with @option{--preserve} (see below.) This has the effect of creating an environment in which search paths only contain package inputs."
9374 msgstr ""
9375
9376 #. type: item
9377 #: doc/guix.texi:4569
9378 #, no-wrap
9379 msgid "--preserve=@var{regexp}"
9380 msgstr ""
9381
9382 #. type: itemx
9383 #: doc/guix.texi:4570
9384 #, no-wrap
9385 msgid "-E @var{regexp}"
9386 msgstr ""
9387
9388 #. type: table
9389 #: doc/guix.texi:4575
9390 msgid "When used alongside @option{--pure}, preserve the environment variables matching @var{regexp}---in other words, put them on a ``white list'' of environment variables that must be preserved. This option can be repeated several times."
9391 msgstr ""
9392
9393 #. type: example
9394 #: doc/guix.texi:4579
9395 #, no-wrap
9396 msgid ""
9397 "guix environment --pure --preserve=^SLURM --ad-hoc openmpi @dots{} \\\n"
9398 " -- mpirun @dots{}\n"
9399 msgstr ""
9400
9401 #. type: table
9402 #: doc/guix.texi:4585
9403 msgid "This example runs @command{mpirun} in a context where the only environment variables defined are @code{PATH}, environment variables whose name starts with @code{SLURM}, as well as the usual ``precious'' variables (@code{HOME}, @code{USER}, etc.)"
9404 msgstr ""
9405
9406 #. type: item
9407 #: doc/guix.texi:4586
9408 #, no-wrap
9409 msgid "--search-paths"
9410 msgstr ""
9411
9412 #. type: table
9413 #: doc/guix.texi:4589
9414 msgid "Display the environment variable definitions that make up the environment."
9415 msgstr ""
9416
9417 #. type: table
9418 #: doc/guix.texi:4593
9419 msgid "Attempt to build for @var{system}---e.g., @code{i686-linux}."
9420 msgstr ""
9421
9422 #. type: item
9423 #: doc/guix.texi:4594
9424 #, no-wrap
9425 msgid "--container"
9426 msgstr ""
9427
9428 #. type: itemx
9429 #: doc/guix.texi:4595
9430 #, no-wrap
9431 msgid "-C"
9432 msgstr ""
9433
9434 #. type: item
9435 #: doc/guix.texi:4596 doc/guix.texi:9974 doc/guix.texi:24515
9436 #, no-wrap
9437 msgid "container"
9438 msgstr ""
9439
9440 #. type: table
9441 #: doc/guix.texi:4602
9442 msgid "Run @var{command} within an isolated container. The current working directory outside the container is mapped inside the container. Additionally, unless overridden with @code{--user}, a dummy home directory is created that matches the current user's home directory, and @file{/etc/passwd} is configured accordingly."
9443 msgstr ""
9444
9445 #. type: table
9446 #: doc/guix.texi:4606
9447 msgid "The spawned process runs as the current user outside the container. Inside the container, it has the same UID and GID as the current user, unless @option{--user} is passed (see below.)"
9448 msgstr ""
9449
9450 #. type: item
9451 #: doc/guix.texi:4607
9452 #, no-wrap
9453 msgid "--network"
9454 msgstr ""
9455
9456 #. type: table
9457 #: doc/guix.texi:4612
9458 msgid "For containers, share the network namespace with the host system. Containers created without this flag only have access to the loopback device."
9459 msgstr ""
9460
9461 #. type: item
9462 #: doc/guix.texi:4613
9463 #, no-wrap
9464 msgid "--link-profile"
9465 msgstr ""
9466
9467 #. type: itemx
9468 #: doc/guix.texi:4614
9469 #, no-wrap
9470 msgid "-P"
9471 msgstr ""
9472
9473 #. type: table
9474 #: doc/guix.texi:4621
9475 msgid "For containers, link the environment profile to @file{~/.guix-profile} within the container. This is equivalent to running the command @command{ln -s $GUIX_ENVIRONMENT ~/.guix-profile} within the container. Linking will fail and abort the environment if the directory already exists, which will certainly be the case if @command{guix environment} was invoked in the user's home directory."
9476 msgstr ""
9477
9478 #. type: table
9479 #: doc/guix.texi:4628
9480 msgid "Certain packages are configured to look in @code{~/.guix-profile} for configuration files and data;@footnote{For example, the @code{fontconfig} package inspects @file{~/.guix-profile/share/fonts} for additional fonts.} @code{--link-profile} allows these programs to behave as expected within the environment."
9481 msgstr ""
9482
9483 #. type: item
9484 #: doc/guix.texi:4629 doc/guix.texi:9646
9485 #, no-wrap
9486 msgid "--user=@var{user}"
9487 msgstr ""
9488
9489 #. type: itemx
9490 #: doc/guix.texi:4630 doc/guix.texi:9647
9491 #, no-wrap
9492 msgid "-u @var{user}"
9493 msgstr ""
9494
9495 #. type: table
9496 #: doc/guix.texi:4637
9497 msgid "For containers, use the username @var{user} in place of the current user. The generated @file{/etc/passwd} entry within the container will contain the name @var{user}, the home directory will be @file{/home/@var{user}}, and no user GECOS data will be copied. Furthermore, the UID and GID inside the container are 1000. @var{user} need not exist on the system."
9498 msgstr ""
9499
9500 #. type: table
9501 #: doc/guix.texi:4642
9502 msgid "Additionally, any shared or exposed path (see @code{--share} and @code{--expose} respectively) whose target is within the current user's home directory will be remapped relative to @file{/home/USER}; this includes the automatic mapping of the current working directory."
9503 msgstr ""
9504
9505 #. type: example
9506 #: doc/guix.texi:4649
9507 #, no-wrap
9508 msgid ""
9509 "# will expose paths as /home/foo/wd, /home/foo/test, and /home/foo/target\n"
9510 "cd $HOME/wd\n"
9511 "guix environment --container --user=foo \\\n"
9512 " --expose=$HOME/test \\\n"
9513 " --expose=/tmp/target=$HOME/target\n"
9514 msgstr ""
9515
9516 #. type: table
9517 #: doc/guix.texi:4654
9518 msgid "While this will limit the leaking of user identity through home paths and each of the user fields, this is only one useful component of a broader privacy/anonymity solution---not one in and of itself."
9519 msgstr ""
9520
9521 #. type: item
9522 #: doc/guix.texi:4655
9523 #, no-wrap
9524 msgid "--expose=@var{source}[=@var{target}]"
9525 msgstr ""
9526
9527 #. type: table
9528 #: doc/guix.texi:4660
9529 msgid "For containers, expose the file system @var{source} from the host system as the read-only file system @var{target} within the container. If @var{target} is not specified, @var{source} is used as the target mount point in the container."
9530 msgstr ""
9531
9532 #. type: table
9533 #: doc/guix.texi:4664
9534 msgid "The example below spawns a Guile REPL in a container in which the user's home directory is accessible read-only via the @file{/exchange} directory:"
9535 msgstr ""
9536
9537 #. type: example
9538 #: doc/guix.texi:4667
9539 #, no-wrap
9540 msgid "guix environment --container --expose=$HOME=/exchange --ad-hoc guile -- guile\n"
9541 msgstr ""
9542
9543 #. type: item
9544 #: doc/guix.texi:4669
9545 #, no-wrap
9546 msgid "--share=@var{source}[=@var{target}]"
9547 msgstr ""
9548
9549 #. type: table
9550 #: doc/guix.texi:4674
9551 msgid "For containers, share the file system @var{source} from the host system as the writable file system @var{target} within the container. If @var{target} is not specified, @var{source} is used as the target mount point in the container."
9552 msgstr ""
9553
9554 #. type: table
9555 #: doc/guix.texi:4678
9556 msgid "The example below spawns a Guile REPL in a container in which the user's home directory is accessible for both reading and writing via the @file{/exchange} directory:"
9557 msgstr ""
9558
9559 #. type: example
9560 #: doc/guix.texi:4681
9561 #, no-wrap
9562 msgid "guix environment --container --share=$HOME=/exchange --ad-hoc guile -- guile\n"
9563 msgstr ""
9564
9565 #. type: Plain text
9566 #: doc/guix.texi:4688
9567 msgid "@command{guix environment} also supports all of the common build options that @command{guix build} supports (@pxref{Common Build Options}) as well as package transformation options (@pxref{Package Transformation Options})."
9568 msgstr ""
9569
9570 #. type: section
9571 #: doc/guix.texi:4690
9572 #, no-wrap
9573 msgid "Invoking @command{guix pack}"
9574 msgstr ""
9575
9576 #. type: Plain text
9577 #: doc/guix.texi:4696
9578 msgid "Occasionally you want to pass software to people who are not (yet!) lucky enough to be using Guix. You'd tell them to run @command{guix package -i @var{something}}, but that's not possible in this case. This is where @command{guix pack} comes in."
9579 msgstr ""
9580
9581 #. type: quotation
9582 #: doc/guix.texi:4701
9583 msgid "If you are looking for ways to exchange binaries among machines that already run Guix, @pxref{Invoking guix copy}, @ref{Invoking guix publish}, and @ref{Invoking guix archive}."
9584 msgstr ""
9585
9586 #. type: cindex
9587 #: doc/guix.texi:4703
9588 #, no-wrap
9589 msgid "pack"
9590 msgstr ""
9591
9592 #. type: cindex
9593 #: doc/guix.texi:4704
9594 #, no-wrap
9595 msgid "bundle"
9596 msgstr ""
9597
9598 #. type: cindex
9599 #: doc/guix.texi:4705
9600 #, no-wrap
9601 msgid "application bundle"
9602 msgstr ""
9603
9604 #. type: cindex
9605 #: doc/guix.texi:4706
9606 #, no-wrap
9607 msgid "software bundle"
9608 msgstr ""
9609
9610 #. type: Plain text
9611 #: doc/guix.texi:4715
9612 msgid "The @command{guix pack} command creates a shrink-wrapped @dfn{pack} or @dfn{software bundle}: it creates a tarball or some other archive containing the binaries of the software you're interested in, and all its dependencies. The resulting archive can be used on any machine that does not have Guix, and people can run the exact same binaries as those you have with Guix. The pack itself is created in a bit-reproducible fashion, so anyone can verify that it really contains the build results that you pretend to be shipping."
9613 msgstr ""
9614
9615 #. type: Plain text
9616 #: doc/guix.texi:4718
9617 msgid "For example, to create a bundle containing Guile, Emacs, Geiser, and all their dependencies, you can run:"
9618 msgstr ""
9619
9620 #. type: example
9621 #: doc/guix.texi:4723
9622 #, no-wrap
9623 msgid ""
9624 "$ guix pack guile emacs geiser\n"
9625 "@dots{}\n"
9626 "/gnu/store/@dots{}-pack.tar.gz\n"
9627 msgstr ""
9628
9629 #. type: Plain text
9630 #: doc/guix.texi:4731
9631 msgid "The result here is a tarball containing a @file{/gnu/store} directory with all the relevant packages. The resulting tarball contains a @dfn{profile} with the three packages of interest; the profile is the same as would be created by @command{guix package -i}. It is this mechanism that is used to create Guix's own standalone binary tarball (@pxref{Binary Installation})."
9632 msgstr ""
9633
9634 #. type: Plain text
9635 #: doc/guix.texi:4736
9636 msgid "Users of this pack would have to run @file{/gnu/store/@dots{}-profile/bin/guile} to run Guile, which you may find inconvenient. To work around it, you can create, say, a @file{/opt/gnu/bin} symlink to the profile:"
9637 msgstr ""
9638
9639 #. type: example
9640 #: doc/guix.texi:4739
9641 #, no-wrap
9642 msgid "guix pack -S /opt/gnu/bin=bin guile emacs geiser\n"
9643 msgstr ""
9644
9645 #. type: Plain text
9646 #: doc/guix.texi:4743
9647 msgid "That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy."
9648 msgstr ""
9649
9650 #. type: cindex
9651 #: doc/guix.texi:4744
9652 #, no-wrap
9653 msgid "relocatable binaries, with @command{guix pack}"
9654 msgstr ""
9655
9656 #. type: Plain text
9657 #: doc/guix.texi:4752
9658 msgid "What if the recipient of your pack does not have root privileges on their machine, and thus cannot unpack it in the root file system? In that case, you will want to use the @code{--relocatable} option (see below). This option produces @dfn{relocatable binaries}, meaning they they can be placed anywhere in the file system hierarchy: in the example above, users can unpack your tarball in their home directory and directly run @file{./opt/gnu/bin/guile}."
9659 msgstr ""
9660
9661 #. type: cindex
9662 #: doc/guix.texi:4753
9663 #, no-wrap
9664 msgid "Docker, build an image with guix pack"
9665 msgstr ""
9666
9667 #. type: Plain text
9668 #: doc/guix.texi:4756
9669 msgid "Alternatively, you can produce a pack in the Docker image format using the following command:"
9670 msgstr ""
9671
9672 #. type: example
9673 #: doc/guix.texi:4759
9674 #, no-wrap
9675 msgid "guix pack -f docker guile emacs geiser\n"
9676 msgstr ""
9677
9678 #. type: Plain text
9679 #: doc/guix.texi:4766
9680 msgid "The result is a tarball that can be passed to the @command{docker load} command. See the @uref{https://docs.docker.com/engine/reference/commandline/load/, Docker documentation} for more information."
9681 msgstr ""
9682
9683 #. type: cindex
9684 #: doc/guix.texi:4767
9685 #, no-wrap
9686 msgid "Singularity, build an image with guix pack"
9687 msgstr ""
9688
9689 #. type: cindex
9690 #: doc/guix.texi:4768
9691 #, no-wrap
9692 msgid "SquashFS, build an image with guix pack"
9693 msgstr ""
9694
9695 #. type: Plain text
9696 #: doc/guix.texi:4771
9697 msgid "Yet another option is to produce a SquashFS image with the following command:"
9698 msgstr ""
9699
9700 #. type: example
9701 #: doc/guix.texi:4774
9702 #, no-wrap
9703 msgid "guix pack -f squashfs guile emacs geiser\n"
9704 msgstr ""
9705
9706 #. type: Plain text
9707 #: doc/guix.texi:4782
9708 msgid "The result is a SquashFS file system image that can either be mounted or directly be used as a file system container image with the @uref{https://singularity.lbl.gov, Singularity container execution environment}, using commands like @command{singularity shell} or @command{singularity exec}."
9709 msgstr ""
9710
9711 #. type: Plain text
9712 #: doc/guix.texi:4784
9713 msgid "Several command-line options allow you to customize your pack:"
9714 msgstr ""
9715
9716 #. type: table
9717 #: doc/guix.texi:4789
9718 msgid "Produce a pack in the given @var{format}."
9719 msgstr ""
9720
9721 #. type: table
9722 #: doc/guix.texi:4791
9723 msgid "The available formats are:"
9724 msgstr ""
9725
9726 #. type: item
9727 #: doc/guix.texi:4793
9728 #, no-wrap
9729 msgid "tarball"
9730 msgstr ""
9731
9732 #. type: table
9733 #: doc/guix.texi:4796
9734 msgid "This is the default format. It produces a tarball containing all the specified binaries and symlinks."
9735 msgstr ""
9736
9737 #. type: item
9738 #: doc/guix.texi:4797
9739 #, no-wrap
9740 msgid "docker"
9741 msgstr ""
9742
9743 #. type: table
9744 #: doc/guix.texi:4801
9745 msgid "This produces a tarball that follows the @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, Docker Image Specification}."
9746 msgstr ""
9747
9748 #. type: item
9749 #: doc/guix.texi:4802
9750 #, no-wrap
9751 msgid "squashfs"
9752 msgstr ""
9753
9754 #. type: table
9755 #: doc/guix.texi:4806
9756 msgid "This produces a SquashFS image containing all the specified binaries and symlinks, as well as empty mount points for virtual file systems like procfs."
9757 msgstr ""
9758
9759 #. type: cindex
9760 #: doc/guix.texi:4808
9761 #, no-wrap
9762 msgid "relocatable binaries"
9763 msgstr ""
9764
9765 #. type: item
9766 #: doc/guix.texi:4809
9767 #, no-wrap
9768 msgid "--relocatable"
9769 msgstr ""
9770
9771 #. type: table
9772 #: doc/guix.texi:4813
9773 msgid "Produce @dfn{relocatable binaries}---i.e., binaries that can be placed anywhere in the file system hierarchy and run from there."
9774 msgstr ""
9775
9776 #. type: table
9777 #: doc/guix.texi:4821
9778 msgid "When this option is passed once, the resulting binaries require support for @dfn{user namespaces} in the kernel Linux; when passed @emph{twice}@footnote{Here's a trick to memorize it: @code{-RR}, which adds PRoot support, can be thought of as the abbreviation of ``Really Relocatable''. Neat, isn't it?}, relocatable binaries fall to back to PRoot if user namespaces are unavailable, and essentially work anywhere---see below for the implications."
9779 msgstr ""
9780
9781 #. type: table
9782 #: doc/guix.texi:4823
9783 msgid "For example, if you create a pack containing Bash with:"
9784 msgstr ""
9785
9786 #. type: example
9787 #: doc/guix.texi:4826
9788 #, no-wrap
9789 msgid "guix pack -RR -S /mybin=bin bash\n"
9790 msgstr ""
9791
9792 #. type: table
9793 #: doc/guix.texi:4831
9794 msgid "...@: you can copy that pack to a machine that lacks Guix, and from your home directory as a normal user, run:"
9795 msgstr ""
9796
9797 #. type: example
9798 #: doc/guix.texi:4835
9799 #, no-wrap
9800 msgid ""
9801 "tar xf pack.tar.gz\n"
9802 "./mybin/sh\n"
9803 msgstr ""
9804
9805 #. type: table
9806 #: doc/guix.texi:4843
9807 msgid "In that shell, if you type @code{ls /gnu/store}, you'll notice that @file{/gnu/store} shows up and contains all the dependencies of @code{bash}, even though the machine actually lacks @file{/gnu/store} altogether! That is probably the simplest way to deploy Guix-built software on a non-Guix machine."
9808 msgstr ""
9809
9810 #. type: quotation
9811 #: doc/guix.texi:4849
9812 msgid "By default, relocatable binaries rely on the @dfn{user namespace} feature of the kernel Linux, which allows unprivileged users to mount or change root. Old versions of Linux did not support it, and some GNU/Linux distributions turn it off."
9813 msgstr ""
9814
9815 #. type: quotation
9816 #: doc/guix.texi:4854
9817 msgid "To produce relocatable binaries that work even in the absence of user namespaces, pass @option{--relocatable} or @option{-R} @emph{twice}. In that case, binaries will try user namespace support and fall back to PRoot if user namespaces are not supported."
9818 msgstr ""
9819
9820 #. type: quotation
9821 #: doc/guix.texi:4860
9822 msgid "The @uref{https://proot-me.github.io/, PRoot} program provides the necessary support for file system virtualization. It achieves that by using the @code{ptrace} system call on the running program. This approach has the advantage to work without requiring special kernel support, but it incurs run-time overhead every time a system call is made."
9823 msgstr ""
9824
9825 #. type: table
9826 #: doc/guix.texi:4865 doc/guix.texi:8878 doc/guix.texi:9536
9827 msgid "Consider the package @var{expr} evaluates to."
9828 msgstr ""
9829
9830 #. type: table
9831 #: doc/guix.texi:4869
9832 msgid "This has the same purpose as the same-named option in @command{guix build} (@pxref{Additional Build Options, @code{--expression} in @command{guix build}})."
9833 msgstr ""
9834
9835 #. type: table
9836 #: doc/guix.texi:4874
9837 msgid "Use the packages contained in the manifest object returned by the Scheme code in @var{file}."
9838 msgstr ""
9839
9840 #. type: table
9841 #: doc/guix.texi:4882
9842 msgid "This has a similar purpose as the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same manifest files. It allows you to define a collection of packages once and use it both for creating profiles and for creating archives for use on machines that do not have Guix installed. Note that you can specify @emph{either} a manifest file @emph{or} a list of packages, but not both."
9843 msgstr ""
9844
9845 #. type: item
9846 #: doc/guix.texi:4888 doc/guix.texi:8100
9847 #, no-wrap
9848 msgid "--target=@var{triplet}"
9849 msgstr ""
9850
9851 #. type: cindex
9852 #: doc/guix.texi:4889 doc/guix.texi:5235 doc/guix.texi:8101
9853 #, no-wrap
9854 msgid "cross-compilation"
9855 msgstr ""
9856
9857 #. type: table
9858 #: doc/guix.texi:4893
9859 msgid "Cross-build for @var{triplet}, which must be a valid GNU triplet, such as @code{\"mips64el-linux-gnu\"} (@pxref{Specifying target triplets, GNU configuration triplets,, autoconf, Autoconf})."
9860 msgstr ""
9861
9862 #. type: item
9863 #: doc/guix.texi:4894
9864 #, no-wrap
9865 msgid "--compression=@var{tool}"
9866 msgstr ""
9867
9868 #. type: itemx
9869 #: doc/guix.texi:4895
9870 #, no-wrap
9871 msgid "-C @var{tool}"
9872 msgstr ""
9873
9874 #. type: table
9875 #: doc/guix.texi:4898
9876 msgid "Compress the resulting tarball using @var{tool}---one of @code{gzip}, @code{bzip2}, @code{xz}, @code{lzip}, or @code{none} for no compression."
9877 msgstr ""
9878
9879 #. type: item
9880 #: doc/guix.texi:4899
9881 #, no-wrap
9882 msgid "--symlink=@var{spec}"
9883 msgstr ""
9884
9885 #. type: itemx
9886 #: doc/guix.texi:4900
9887 #, no-wrap
9888 msgid "-S @var{spec}"
9889 msgstr ""
9890
9891 #. type: table
9892 #: doc/guix.texi:4903
9893 msgid "Add the symlinks specified by @var{spec} to the pack. This option can appear several times."
9894 msgstr ""
9895
9896 #. type: table
9897 #: doc/guix.texi:4907
9898 msgid "@var{spec} has the form @code{@var{source}=@var{target}}, where @var{source} is the symlink that will be created and @var{target} is the symlink target."
9899 msgstr ""
9900
9901 #. type: table
9902 #: doc/guix.texi:4910
9903 msgid "For instance, @code{-S /opt/gnu/bin=bin} creates a @file{/opt/gnu/bin} symlink pointing to the @file{bin} sub-directory of the profile."
9904 msgstr ""
9905
9906 #. type: item
9907 #: doc/guix.texi:4911
9908 #, no-wrap
9909 msgid "--save-provenance"
9910 msgstr ""
9911
9912 #. type: table
9913 #: doc/guix.texi:4915
9914 msgid "Save provenance information for the packages passed on the command line. Provenance information includes the URL and commit of the channels in use (@pxref{Channels})."
9915 msgstr ""
9916
9917 #. type: table
9918 #: doc/guix.texi:4921
9919 msgid "Provenance information is saved in the @file{/gnu/store/@dots{}-profile/manifest} file in the pack, along with the usual package metadata---the name and version of each package, their propagated inputs, and so on. It is useful information to the recipient of the pack, who then knows how the pack was (supposedly) obtained."
9920 msgstr ""
9921
9922 #. type: table
9923 #: doc/guix.texi:4927
9924 msgid "This option is not enabled by default because, like timestamps, provenance information contributes nothing to the build process. In other words, there is an infinity of channel URLs and commit IDs that can lead to the same pack. Recording such ``silent'' metadata in the output thus potentially breaks the source-to-binary bitwise reproducibility property."
9925 msgstr ""
9926
9927 #. type: item
9928 #: doc/guix.texi:4928
9929 #, no-wrap
9930 msgid "--localstatedir"
9931 msgstr ""
9932
9933 #. type: itemx
9934 #: doc/guix.texi:4929
9935 #, no-wrap
9936 msgid "--profile-name=@var{name}"
9937 msgstr ""
9938
9939 #. type: table
9940 #: doc/guix.texi:4934
9941 msgid "Include the ``local state directory'', @file{/var/guix}, in the resulting pack, and notably the @file{/var/guix/profiles/per-user/root/@var{name}} profile---by default @var{name} is @code{guix-profile}, which corresponds to @file{~root/.guix-profile}."
9942 msgstr ""
9943
9944 #. type: table
9945 #: doc/guix.texi:4940
9946 msgid "@file{/var/guix} contains the store database (@pxref{The Store}) as well as garbage-collector roots (@pxref{Invoking guix gc}). Providing it in the pack means that the store is ``complete'' and manageable by Guix; not providing it pack means that the store is ``dead'': items cannot be added to it or removed from it after extraction of the pack."
9947 msgstr ""
9948
9949 #. type: table
9950 #: doc/guix.texi:4943
9951 msgid "One use case for this is the Guix self-contained binary tarball (@pxref{Binary Installation})."
9952 msgstr ""
9953
9954 #. type: table
9955 #: doc/guix.texi:4947
9956 msgid "Use the bootstrap binaries to build the pack. This option is only useful to Guix developers."
9957 msgstr ""
9958
9959 #. type: Plain text
9960 #: doc/guix.texi:4952
9961 msgid "In addition, @command{guix pack} supports all the common build options (@pxref{Common Build Options}) and all the package transformation options (@pxref{Package Transformation Options})."
9962 msgstr ""
9963
9964 #. type: Plain text
9965 #: doc/guix.texi:4964
9966 msgid "GNU Guix provides several Scheme programming interfaces (APIs) to define, build, and query packages. The first interface allows users to write high-level package definitions. These definitions refer to familiar packaging concepts, such as the name and version of a package, its build system, and its dependencies. These definitions can then be turned into concrete build actions."
9967 msgstr ""
9968
9969 #. type: Plain text
9970 #: doc/guix.texi:4970
9971 msgid "Build actions are performed by the Guix daemon, on behalf of users. In a standard setup, the daemon has write access to the store---the @file{/gnu/store} directory---whereas users do not. The recommended setup also has the daemon perform builds in chroots, under a specific build users, to minimize interference with the rest of the system."
9972 msgstr ""
9973
9974 #. type: Plain text
9975 #: doc/guix.texi:4979
9976 msgid "Lower-level APIs are available to interact with the daemon and the store. To instruct the daemon to perform a build action, users actually provide it with a @dfn{derivation}. A derivation is a low-level representation of the build actions to be taken, and the environment in which they should occur---derivations are to package definitions what assembly is to C programs. The term ``derivation'' comes from the fact that build results @emph{derive} from them."
9977 msgstr ""
9978
9979 #. type: Plain text
9980 #: doc/guix.texi:4982
9981 msgid "This chapter describes all these APIs in turn, starting from high-level package definitions."
9982 msgstr ""
9983
9984 #. type: Plain text
9985 #: doc/guix.texi:5008
9986 msgid "From a programming viewpoint, the package definitions of the GNU distribution are provided by Guile modules in the @code{(gnu packages @dots{})} name space@footnote{Note that packages under the @code{(gnu packages @dots{})} module name space are not necessarily ``GNU packages''. This module naming scheme follows the usual Guile module naming convention: @code{gnu} means that these modules are distributed as part of the GNU system, and @code{packages} identifies modules that define packages.} (@pxref{Modules, Guile modules,, guile, GNU Guile Reference Manual}). For instance, the @code{(gnu packages emacs)} module exports a variable named @code{emacs}, which is bound to a @code{<package>} object (@pxref{Defining Packages})."
9987 msgstr ""
9988
9989 #. type: Plain text
9990 #: doc/guix.texi:5015
9991 msgid "The @code{(gnu packages @dots{})} module name space is automatically scanned for packages by the command-line tools. For instance, when running @code{guix install emacs}, all the @code{(gnu packages @dots{})} modules are scanned until one that exports a package object whose name is @code{emacs} is found. This package search facility is implemented in the @code{(gnu packages)} module."
9992 msgstr ""
9993
9994 #. type: cindex
9995 #: doc/guix.texi:5017
9996 #, no-wrap
9997 msgid "package module search path"
9998 msgstr ""
9999
10000 #. type: Plain text
10001 #: doc/guix.texi:5026
10002 msgid "Users can store package definitions in modules with different names---e.g., @code{(my-packages emacs)}@footnote{Note that the file name and module name must match. For instance, the @code{(my-packages emacs)} module must be stored in a @file{my-packages/emacs.scm} file relative to the load path specified with @option{--load-path} or @code{GUIX_PACKAGE_PATH}. @xref{Modules and the File System,,, guile, GNU Guile Reference Manual}, for details.}. There are two ways to make these package definitions visible to the user interfaces:"
10003 msgstr ""
10004
10005 #. type: enumerate
10006 #: doc/guix.texi:5033
10007 msgid "By adding the directory containing your package modules to the search path with the @code{-L} flag of @command{guix package} and other commands (@pxref{Common Build Options}), or by setting the @code{GUIX_PACKAGE_PATH} environment variable described below."
10008 msgstr ""
10009
10010 #. type: enumerate
10011 #: doc/guix.texi:5039
10012 msgid "By defining a @dfn{channel} and configuring @command{guix pull} so that it pulls from it. A channel is essentially a Git repository containing package modules. @xref{Channels}, for more information on how to define and use channels."
10013 msgstr ""
10014
10015 #. type: Plain text
10016 #: doc/guix.texi:5042
10017 msgid "@code{GUIX_PACKAGE_PATH} works similarly to other search path variables:"
10018 msgstr ""
10019
10020 #. type: defvr
10021 #: doc/guix.texi:5043
10022 #, no-wrap
10023 msgid "{Environment Variable} GUIX_PACKAGE_PATH"
10024 msgstr ""
10025
10026 #. type: defvr
10027 #: doc/guix.texi:5047
10028 msgid "This is a colon-separated list of directories to search for additional package modules. Directories listed in this variable take precedence over the own modules of the distribution."
10029 msgstr ""
10030
10031 #. type: Plain text
10032 #: doc/guix.texi:5055
10033 msgid "The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}: each package is built based solely on other packages in the distribution. The root of this dependency graph is a small set of @dfn{bootstrap binaries}, provided by the @code{(gnu packages bootstrap)} module. For more information on bootstrapping, @pxref{Bootstrapping}."
10034 msgstr ""
10035
10036 #. type: Plain text
10037 #: doc/guix.texi:5063
10038 msgid "The high-level interface to package definitions is implemented in the @code{(guix packages)} and @code{(guix build-system)} modules. As an example, the package definition, or @dfn{recipe}, for the GNU Hello package looks like this:"
10039 msgstr ""
10040
10041 #. type: example
10042 #: doc/guix.texi:5071
10043 #, no-wrap
10044 msgid ""
10045 "(define-module (gnu packages hello)\n"
10046 " #:use-module (guix packages)\n"
10047 " #:use-module (guix download)\n"
10048 " #:use-module (guix build-system gnu)\n"
10049 " #:use-module (guix licenses)\n"
10050 " #:use-module (gnu packages gawk))\n"
10051 "\n"
10052 msgstr ""
10053
10054 #. type: example
10055 #: doc/guix.texi:5090
10056 #, no-wrap
10057 msgid ""
10058 "(define-public hello\n"
10059 " (package\n"
10060 " (name \"hello\")\n"
10061 " (version \"2.10\")\n"
10062 " (source (origin\n"
10063 " (method url-fetch)\n"
10064 " (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
10065 " \".tar.gz\"))\n"
10066 " (sha256\n"
10067 " (base32\n"
10068 " \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
10069 " (build-system gnu-build-system)\n"
10070 " (arguments '(#:configure-flags '(\"--enable-silent-rules\")))\n"
10071 " (inputs `((\"gawk\" ,gawk)))\n"
10072 " (synopsis \"Hello, GNU world: An example GNU package\")\n"
10073 " (description \"Guess what GNU Hello prints!\")\n"
10074 " (home-page \"https://www.gnu.org/software/hello/\")\n"
10075 " (license gpl3+)))\n"
10076 msgstr ""
10077
10078 #. type: Plain text
10079 #: doc/guix.texi:5100
10080 msgid "Without being a Scheme expert, the reader may have guessed the meaning of the various fields here. This expression binds the variable @code{hello} to a @code{<package>} object, which is essentially a record (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}). This package object can be inspected using procedures found in the @code{(guix packages)} module; for instance, @code{(package-name hello)} returns---surprise!---@code{\"hello\"}."
10081 msgstr ""
10082
10083 #. type: Plain text
10084 #: doc/guix.texi:5104
10085 msgid "With luck, you may be able to import part or all of the definition of the package you are interested in from another repository, using the @code{guix import} command (@pxref{Invoking guix import})."
10086 msgstr ""
10087
10088 #. type: Plain text
10089 #: doc/guix.texi:5110
10090 msgid "In the example above, @var{hello} is defined in a module of its own, @code{(gnu packages hello)}. Technically, this is not strictly necessary, but it is convenient to do so: all the packages defined in modules under @code{(gnu packages @dots{})} are automatically known to the command-line tools (@pxref{Package Modules})."
10091 msgstr ""
10092
10093 #. type: Plain text
10094 #: doc/guix.texi:5112
10095 msgid "There are a few points worth noting in the above package definition:"
10096 msgstr ""
10097
10098 #. type: itemize
10099 #: doc/guix.texi:5119
10100 msgid "The @code{source} field of the package is an @code{<origin>} object (@pxref{origin Reference}, for the complete reference). Here, the @code{url-fetch} method from @code{(guix download)} is used, meaning that the source is a file to be downloaded over FTP or HTTP."
10101 msgstr ""
10102
10103 #. type: itemize
10104 #: doc/guix.texi:5122
10105 msgid "The @code{mirror://gnu} prefix instructs @code{url-fetch} to use one of the GNU mirrors defined in @code{(guix download)}."
10106 msgstr ""
10107
10108 #. type: itemize
10109 #: doc/guix.texi:5129
10110 msgid "The @code{sha256} field specifies the expected SHA256 hash of the file being downloaded. It is mandatory, and allows Guix to check the integrity of the file. The @code{(base32 @dots{})} form introduces the base32 representation of the hash. You can obtain this information with @code{guix download} (@pxref{Invoking guix download}) and @code{guix hash} (@pxref{Invoking guix hash})."
10111 msgstr ""
10112
10113 #. type: cindex
10114 #: doc/guix.texi:5130
10115 #, no-wrap
10116 msgid "patches"
10117 msgstr ""
10118
10119 #. type: itemize
10120 #: doc/guix.texi:5134
10121 msgid "When needed, the @code{origin} form can also have a @code{patches} field listing patches to be applied, and a @code{snippet} field giving a Scheme expression to modify the source code."
10122 msgstr ""
10123
10124 #. type: cindex
10125 #: doc/guix.texi:5136
10126 #, no-wrap
10127 msgid "GNU Build System"
10128 msgstr ""
10129
10130 #. type: itemize
10131 #: doc/guix.texi:5142
10132 msgid "The @code{build-system} field specifies the procedure to build the package (@pxref{Build Systems}). Here, @var{gnu-build-system} represents the familiar GNU Build System, where packages may be configured, built, and installed with the usual @code{./configure && make && make check && make install} command sequence."
10133 msgstr ""
10134
10135 #. type: itemize
10136 #: doc/guix.texi:5148
10137 msgid "The @code{arguments} field specifies options for the build system (@pxref{Build Systems}). Here it is interpreted by @var{gnu-build-system} as a request run @file{configure} with the @code{--enable-silent-rules} flag."
10138 msgstr ""
10139
10140 #. type: findex
10141 #: doc/guix.texi:5149 doc/guix.texi:5152
10142 #, no-wrap
10143 msgid "quote"
10144 msgstr ""
10145
10146 #. type: cindex
10147 #: doc/guix.texi:5150
10148 #, no-wrap
10149 msgid "quoting"
10150 msgstr ""
10151
10152 #. type: findex
10153 #: doc/guix.texi:5151
10154 #, no-wrap
10155 msgid "'"
10156 msgstr ""
10157
10158 #. type: itemize
10159 #: doc/guix.texi:5160
10160 msgid "What about these quote (@code{'}) characters? They are Scheme syntax to introduce a literal list; @code{'} is synonymous with @code{quote}. @xref{Expression Syntax, quoting,, guile, GNU Guile Reference Manual}, for details. Here the value of the @code{arguments} field is a list of arguments passed to the build system down the road, as with @code{apply} (@pxref{Fly Evaluation, @code{apply},, guile, GNU Guile Reference Manual})."
10161 msgstr ""
10162
10163 #. type: itemize
10164 #: doc/guix.texi:5166
10165 msgid "The hash-colon (@code{#:}) sequence defines a Scheme @dfn{keyword} (@pxref{Keywords,,, guile, GNU Guile Reference Manual}), and @code{#:configure-flags} is a keyword used to pass a keyword argument to the build system (@pxref{Coding With Keywords,,, guile, GNU Guile Reference Manual})."
10166 msgstr ""
10167
10168 #. type: itemize
10169 #: doc/guix.texi:5172
10170 msgid "The @code{inputs} field specifies inputs to the build process---i.e., build-time or run-time dependencies of the package. Here, we define an input called @code{\"gawk\"} whose value is that of the @var{gawk} variable; @var{gawk} is itself bound to a @code{<package>} object."
10171 msgstr ""
10172
10173 #. type: cindex
10174 #: doc/guix.texi:5173
10175 #, no-wrap
10176 msgid "backquote (quasiquote)"
10177 msgstr ""
10178
10179 #. type: findex
10180 #: doc/guix.texi:5174
10181 #, no-wrap
10182 msgid "`"
10183 msgstr ""
10184
10185 #. type: findex
10186 #: doc/guix.texi:5175
10187 #, no-wrap
10188 msgid "quasiquote"
10189 msgstr ""
10190
10191 #. type: cindex
10192 #: doc/guix.texi:5176
10193 #, no-wrap
10194 msgid "comma (unquote)"
10195 msgstr ""
10196
10197 #. type: findex
10198 #: doc/guix.texi:5177
10199 #, no-wrap
10200 msgid ","
10201 msgstr ""
10202
10203 #. type: findex
10204 #: doc/guix.texi:5178
10205 #, no-wrap
10206 msgid "unquote"
10207 msgstr ""
10208
10209 #. type: findex
10210 #: doc/guix.texi:5179
10211 #, no-wrap
10212 msgid ",@@"
10213 msgstr ""
10214
10215 #. type: findex
10216 #: doc/guix.texi:5180
10217 #, no-wrap
10218 msgid "unquote-splicing"
10219 msgstr ""
10220
10221 #. type: itemize
10222 #: doc/guix.texi:5186
10223 msgid "Again, @code{`} (a backquote, synonymous with @code{quasiquote}) allows us to introduce a literal list in the @code{inputs} field, while @code{,} (a comma, synonymous with @code{unquote}) allows us to insert a value in that list (@pxref{Expression Syntax, unquote,, guile, GNU Guile Reference Manual})."
10224 msgstr ""
10225
10226 #. type: itemize
10227 #: doc/guix.texi:5190
10228 msgid "Note that GCC, Coreutils, Bash, and other essential tools do not need to be specified as inputs here. Instead, @var{gnu-build-system} takes care of ensuring that they are present (@pxref{Build Systems})."
10229 msgstr ""
10230
10231 #. type: itemize
10232 #: doc/guix.texi:5194
10233 msgid "However, any other dependencies need to be specified in the @code{inputs} field. Any dependency not specified here will simply be unavailable to the build process, possibly leading to a build failure."
10234 msgstr ""
10235
10236 #. type: Plain text
10237 #: doc/guix.texi:5197
10238 msgid "@xref{package Reference}, for a full description of possible fields."
10239 msgstr ""
10240
10241 #. type: Plain text
10242 #: doc/guix.texi:5208
10243 msgid "Once a package definition is in place, the package may actually be built using the @code{guix build} command-line tool (@pxref{Invoking guix build}), troubleshooting any build failures you encounter (@pxref{Debugging Build Failures}). You can easily jump back to the package definition using the @command{guix edit} command (@pxref{Invoking guix edit}). @xref{Packaging Guidelines}, for more information on how to test package definitions, and @ref{Invoking guix lint}, for information on how to check a definition for style conformance."
10244 msgstr ""
10245
10246 #. type: vindex
10247 #: doc/guix.texi:5208
10248 #, no-wrap
10249 msgid "GUIX_PACKAGE_PATH"
10250 msgstr ""
10251
10252 #. type: Plain text
10253 #: doc/guix.texi:5212
10254 msgid "Lastly, @pxref{Channels}, for information on how to extend the distribution by adding your own package definitions in a ``channel''."
10255 msgstr ""
10256
10257 #. type: Plain text
10258 #: doc/guix.texi:5216
10259 msgid "Finally, updating the package definition to a new upstream version can be partly automated by the @command{guix refresh} command (@pxref{Invoking guix refresh})."
10260 msgstr ""
10261
10262 #. type: Plain text
10263 #: doc/guix.texi:5222
10264 msgid "Behind the scenes, a derivation corresponding to the @code{<package>} object is first computed by the @code{package-derivation} procedure. That derivation is stored in a @code{.drv} file under @file{/gnu/store}. The build actions it prescribes may then be realized by using the @code{build-derivations} procedure (@pxref{The Store})."
10265 msgstr ""
10266
10267 #. type: deffn
10268 #: doc/guix.texi:5223
10269 #, no-wrap
10270 msgid "{Scheme Procedure} package-derivation @var{store} @var{package} [@var{system}]"
10271 msgstr ""
10272
10273 #. type: deffn
10274 #: doc/guix.texi:5226
10275 msgid "Return the @code{<derivation>} object of @var{package} for @var{system} (@pxref{Derivations})."
10276 msgstr ""
10277
10278 #. type: deffn
10279 #: doc/guix.texi:5232
10280 msgid "@var{package} must be a valid @code{<package>} object, and @var{system} must be a string denoting the target system type---e.g., @code{\"x86_64-linux\"} for an x86_64 Linux-based GNU system. @var{store} must be a connection to the daemon, which operates on the store (@pxref{The Store})."
10281 msgstr ""
10282
10283 #. type: Plain text
10284 #: doc/guix.texi:5238
10285 msgid "Similarly, it is possible to compute a derivation that cross-builds a package for some other system:"
10286 msgstr ""
10287
10288 #. type: deffn
10289 #: doc/guix.texi:5239
10290 #, no-wrap
10291 msgid "{Scheme Procedure} package-cross-derivation @var{store} @"
10292 msgstr ""
10293
10294 #. type: deffn
10295 #: doc/guix.texi:5243
10296 msgid "@var{package} @var{target} [@var{system}] Return the @code{<derivation>} object of @var{package} cross-built from @var{system} to @var{target}."
10297 msgstr ""
10298
10299 #. type: deffn
10300 #: doc/guix.texi:5247
10301 msgid "@var{target} must be a valid GNU triplet denoting the target hardware and operating system, such as @code{\"mips64el-linux-gnu\"} (@pxref{Specifying Target Triplets,,, autoconf, Autoconf})."
10302 msgstr ""
10303
10304 #. type: cindex
10305 #: doc/guix.texi:5249
10306 #, no-wrap
10307 msgid "package transformations"
10308 msgstr ""
10309
10310 #. type: cindex
10311 #: doc/guix.texi:5250
10312 #, no-wrap
10313 msgid "input rewriting"
10314 msgstr ""
10315
10316 #. type: cindex
10317 #: doc/guix.texi:5251
10318 #, no-wrap
10319 msgid "dependency tree rewriting"
10320 msgstr ""
10321
10322 #. type: Plain text
10323 #: doc/guix.texi:5255
10324 msgid "Packages can be manipulated in arbitrary ways. An example of a useful transformation is @dfn{input rewriting}, whereby the dependency tree of a package is rewritten by replacing specific inputs by others:"
10325 msgstr ""
10326
10327 #. type: deffn
10328 #: doc/guix.texi:5256
10329 #, no-wrap
10330 msgid "{Scheme Procedure} package-input-rewriting @var{replacements} @"
10331 msgstr ""
10332
10333 #. type: deffn
10334 #: doc/guix.texi:5263
10335 msgid "[@var{rewrite-name}] Return a procedure that, when passed a package, replaces its direct and indirect dependencies (but not its implicit inputs) according to @var{replacements}. @var{replacements} is a list of package pairs; the first element of each pair is the package to replace, and the second one is the replacement."
10336 msgstr ""
10337
10338 #. type: deffn
10339 #: doc/guix.texi:5266
10340 msgid "Optionally, @var{rewrite-name} is a one-argument procedure that takes the name of a package and returns its new name after rewrite."
10341 msgstr ""
10342
10343 #. type: Plain text
10344 #: doc/guix.texi:5270
10345 msgid "Consider this example:"
10346 msgstr ""
10347
10348 #. type: example
10349 #: doc/guix.texi:5276
10350 #, no-wrap
10351 msgid ""
10352 "(define libressl-instead-of-openssl\n"
10353 " ;; This is a procedure to replace OPENSSL by LIBRESSL,\n"
10354 " ;; recursively.\n"
10355 " (package-input-rewriting `((,openssl . ,libressl))))\n"
10356 "\n"
10357 msgstr ""
10358
10359 #. type: example
10360 #: doc/guix.texi:5279
10361 #, no-wrap
10362 msgid ""
10363 "(define git-with-libressl\n"
10364 " (libressl-instead-of-openssl git))\n"
10365 msgstr ""
10366
10367 #. type: Plain text
10368 #: doc/guix.texi:5287
10369 msgid "Here we first define a rewriting procedure that replaces @var{openssl} with @var{libressl}. Then we use it to define a @dfn{variant} of the @var{git} package that uses @var{libressl} instead of @var{openssl}. This is exactly what the @option{--with-input} command-line option does (@pxref{Package Transformation Options, @option{--with-input}})."
10370 msgstr ""
10371
10372 #. type: Plain text
10373 #: doc/guix.texi:5290
10374 msgid "The following variant of @code{package-input-rewriting} can match packages to be replaced by name rather than by identity."
10375 msgstr ""
10376
10377 #. type: deffn
10378 #: doc/guix.texi:5291
10379 #, no-wrap
10380 msgid "{Scheme Procedure} package-input-rewriting/spec @var{replacements}"
10381 msgstr ""
10382
10383 #. type: deffn
10384 #: doc/guix.texi:5297
10385 msgid "Return a procedure that, given a package, applies the given @var{replacements} to all the package graph (excluding implicit inputs). @var{replacements} is a list of spec/procedures pair; each spec is a package specification such as @code{\"gcc\"} or @code{\"guile@@2\"}, and each procedure takes a matching package and returns a replacement for that package."
10386 msgstr ""
10387
10388 #. type: Plain text
10389 #: doc/guix.texi:5300
10390 msgid "The example above could be rewritten this way:"
10391 msgstr ""
10392
10393 #. type: example
10394 #: doc/guix.texi:5305
10395 #, no-wrap
10396 msgid ""
10397 "(define libressl-instead-of-openssl\n"
10398 " ;; Replace all the packages called \"openssl\" with LibreSSL.\n"
10399 " (package-input-rewriting/spec `((\"openssl\" . ,(const libressl)))))\n"
10400 msgstr ""
10401
10402 #. type: Plain text
10403 #: doc/guix.texi:5310
10404 msgid "The key difference here is that, this time, packages are matched by spec and not by identity. In other words, any package in the graph that is called @code{openssl} will be replaced."
10405 msgstr ""
10406
10407 #. type: Plain text
10408 #: doc/guix.texi:5314
10409 msgid "A more generic procedure to rewrite a package dependency graph is @code{package-mapping}: it supports arbitrary changes to nodes in the graph."
10410 msgstr ""
10411
10412 #. type: deffn
10413 #: doc/guix.texi:5315
10414 #, no-wrap
10415 msgid "{Scheme Procedure} package-mapping @var{proc} [@var{cut?}]"
10416 msgstr ""
10417
10418 #. type: deffn
10419 #: doc/guix.texi:5319
10420 msgid "Return a procedure that, given a package, applies @var{proc} to all the packages depended on and returns the resulting package. The procedure stops recursion when @var{cut?} returns true for a given package."
10421 msgstr ""
10422
10423 #. type: subsection
10424 #: doc/guix.texi:5328
10425 #, no-wrap
10426 msgid "@code{package} Reference"
10427 msgstr ""
10428
10429 #. type: Plain text
10430 #: doc/guix.texi:5332
10431 msgid "This section summarizes all the options available in @code{package} declarations (@pxref{Defining Packages})."
10432 msgstr ""
10433
10434 #. type: deftp
10435 #: doc/guix.texi:5333
10436 #, no-wrap
10437 msgid "{Data Type} package"
10438 msgstr ""
10439
10440 #. type: deftp
10441 #: doc/guix.texi:5335
10442 msgid "This is the data type representing a package recipe."
10443 msgstr ""
10444
10445 #. type: table
10446 #: doc/guix.texi:5339
10447 msgid "The name of the package, as a string."
10448 msgstr ""
10449
10450 #. type: code{#1}
10451 #: doc/guix.texi:5340
10452 #, no-wrap
10453 msgid "version"
10454 msgstr ""
10455
10456 #. type: table
10457 #: doc/guix.texi:5342
10458 msgid "The version of the package, as a string."
10459 msgstr ""
10460
10461 #. type: code{#1}
10462 #: doc/guix.texi:5343 doc/guix.texi:9130 doc/guix.texi:10879
10463 #: doc/guix.texi:11317
10464 #, no-wrap
10465 msgid "source"
10466 msgstr ""
10467
10468 #. type: table
10469 #: doc/guix.texi:5350
10470 msgid "An object telling how the source code for the package should be acquired. Most of the time, this is an @code{origin} object, which denotes a file fetched from the Internet (@pxref{origin Reference}). It can also be any other ``file-like'' object such as a @code{local-file}, which denotes a file from the local file system (@pxref{G-Expressions, @code{local-file}})."
10471 msgstr ""
10472
10473 #. type: code{#1}
10474 #: doc/guix.texi:5351
10475 #, no-wrap
10476 msgid "build-system"
10477 msgstr ""
10478
10479 #. type: table
10480 #: doc/guix.texi:5354
10481 msgid "The build system that should be used to build the package (@pxref{Build Systems})."
10482 msgstr ""
10483
10484 #. type: item
10485 #: doc/guix.texi:5355 doc/guix.texi:12915
10486 #, no-wrap
10487 msgid "@code{arguments} (default: @code{'()})"
10488 msgstr ""
10489
10490 #. type: table
10491 #: doc/guix.texi:5358
10492 msgid "The arguments that should be passed to the build system. This is a list, typically containing sequential keyword-value pairs."
10493 msgstr ""
10494
10495 #. type: item
10496 #: doc/guix.texi:5359
10497 #, no-wrap
10498 msgid "@code{inputs} (default: @code{'()})"
10499 msgstr ""
10500
10501 #. type: itemx
10502 #: doc/guix.texi:5360
10503 #, no-wrap
10504 msgid "@code{native-inputs} (default: @code{'()})"
10505 msgstr ""
10506
10507 #. type: itemx
10508 #: doc/guix.texi:5361
10509 #, no-wrap
10510 msgid "@code{propagated-inputs} (default: @code{'()})"
10511 msgstr ""
10512
10513 #. type: cindex
10514 #: doc/guix.texi:5362
10515 #, no-wrap
10516 msgid "inputs, of packages"
10517 msgstr ""
10518
10519 #. type: table
10520 #: doc/guix.texi:5370
10521 msgid "These fields list dependencies of the package. Each one is a list of tuples, where each tuple has a label for the input (a string) as its first element, a package, origin, or derivation as its second element, and optionally the name of the output thereof that should be used, which defaults to @code{\"out\"} (@pxref{Packages with Multiple Outputs}, for more on package outputs). For example, the list below specifies three inputs:"
10522 msgstr ""
10523
10524 #. type: example
10525 #: doc/guix.texi:5375
10526 #, no-wrap
10527 msgid ""
10528 "`((\"libffi\" ,libffi)\n"
10529 " (\"libunistring\" ,libunistring)\n"
10530 " (\"glib:bin\" ,glib \"bin\")) ;the \"bin\" output of Glib\n"
10531 msgstr ""
10532
10533 #. type: cindex
10534 #: doc/guix.texi:5377
10535 #, no-wrap
10536 msgid "cross compilation, package dependencies"
10537 msgstr ""
10538
10539 #. type: table
10540 #: doc/guix.texi:5383
10541 msgid "The distinction between @code{native-inputs} and @code{inputs} is necessary when considering cross-compilation. When cross-compiling, dependencies listed in @code{inputs} are built for the @emph{target} architecture; conversely, dependencies listed in @code{native-inputs} are built for the architecture of the @emph{build} machine."
10542 msgstr ""
10543
10544 #. type: table
10545 #: doc/guix.texi:5388
10546 msgid "@code{native-inputs} is typically used to list tools needed at build time, but not at run time, such as Autoconf, Automake, pkg-config, Gettext, or Bison. @command{guix lint} can report likely mistakes in this area (@pxref{Invoking guix lint})."
10547 msgstr ""
10548
10549 #. type: anchor{#1}
10550 #: doc/guix.texi:5395
10551 msgid "package-propagated-inputs"
10552 msgstr ""
10553
10554 #. type: table
10555 #: doc/guix.texi:5395
10556 msgid "Lastly, @code{propagated-inputs} is similar to @code{inputs}, but the specified packages will be automatically installed alongside the package they belong to (@pxref{package-cmd-propagated-inputs, @command{guix package}}, for information on how @command{guix package} deals with propagated inputs.)"
10557 msgstr ""
10558
10559 #. type: table
10560 #: doc/guix.texi:5399
10561 msgid "For example this is necessary when a C/C++ library needs headers of another library to compile, or when a pkg-config file refers to another one @i{via} its @code{Requires} field."
10562 msgstr ""
10563
10564 #. type: table
10565 #: doc/guix.texi:5406
10566 msgid "Another example where @code{propagated-inputs} is useful is for languages that lack a facility to record the run-time search path akin to the @code{RUNPATH} of ELF files; this includes Guile, Python, Perl, and more. To ensure that libraries written in those languages can find library code they depend on at run time, run-time dependencies must be listed in @code{propagated-inputs} rather than @code{inputs}."
10567 msgstr ""
10568
10569 #. type: item
10570 #: doc/guix.texi:5407
10571 #, no-wrap
10572 msgid "@code{outputs} (default: @code{'(\"out\")})"
10573 msgstr ""
10574
10575 #. type: table
10576 #: doc/guix.texi:5410
10577 msgid "The list of output names of the package. @xref{Packages with Multiple Outputs}, for typical uses of additional outputs."
10578 msgstr ""
10579
10580 #. type: item
10581 #: doc/guix.texi:5411
10582 #, no-wrap
10583 msgid "@code{native-search-paths} (default: @code{'()})"
10584 msgstr ""
10585
10586 #. type: itemx
10587 #: doc/guix.texi:5412
10588 #, no-wrap
10589 msgid "@code{search-paths} (default: @code{'()})"
10590 msgstr ""
10591
10592 #. type: table
10593 #: doc/guix.texi:5415
10594 msgid "A list of @code{search-path-specification} objects describing search-path environment variables honored by the package."
10595 msgstr ""
10596
10597 #. type: item
10598 #: doc/guix.texi:5416
10599 #, no-wrap
10600 msgid "@code{replacement} (default: @code{#f})"
10601 msgstr ""
10602
10603 #. type: table
10604 #: doc/guix.texi:5420
10605 msgid "This must be either @code{#f} or a package object that will be used as a @dfn{replacement} for this package. @xref{Security Updates, grafts}, for details."
10606 msgstr ""
10607
10608 #. type: item
10609 #: doc/guix.texi:5421 doc/guix.texi:9122
10610 #, no-wrap
10611 msgid "synopsis"
10612 msgstr ""
10613
10614 #. type: table
10615 #: doc/guix.texi:5423
10616 msgid "A one-line description of the package."
10617 msgstr ""
10618
10619 #. type: item
10620 #: doc/guix.texi:5424 doc/guix.texi:9123 doc/guix.texi:25003
10621 #, no-wrap
10622 msgid "description"
10623 msgstr ""
10624
10625 #. type: table
10626 #: doc/guix.texi:5426
10627 msgid "A more elaborate description of the package."
10628 msgstr ""
10629
10630 #. type: code{#1}
10631 #: doc/guix.texi:5427
10632 #, no-wrap
10633 msgid "license"
10634 msgstr ""
10635
10636 #. type: cindex
10637 #: doc/guix.texi:5428
10638 #, no-wrap
10639 msgid "license, of packages"
10640 msgstr ""
10641
10642 #. type: table
10643 #: doc/guix.texi:5431
10644 msgid "The license of the package; a value from @code{(guix licenses)}, or a list of such values."
10645 msgstr ""
10646
10647 #. type: itemx
10648 #: doc/guix.texi:5432 doc/guix.texi:9131
10649 #, no-wrap
10650 msgid "home-page"
10651 msgstr ""
10652
10653 #. type: table
10654 #: doc/guix.texi:5434
10655 msgid "The URL to the home-page of the package, as a string."
10656 msgstr ""
10657
10658 #. type: item
10659 #: doc/guix.texi:5435
10660 #, no-wrap
10661 msgid "@code{supported-systems} (default: @var{%supported-systems})"
10662 msgstr ""
10663
10664 #. type: table
10665 #: doc/guix.texi:5438
10666 msgid "The list of systems supported by the package, as strings of the form @code{architecture-kernel}, for example @code{\"x86_64-linux\"}."
10667 msgstr ""
10668
10669 #. type: item
10670 #: doc/guix.texi:5439
10671 #, no-wrap
10672 msgid "@code{maintainers} (default: @code{'()})"
10673 msgstr ""
10674
10675 #. type: table
10676 #: doc/guix.texi:5441
10677 msgid "The list of maintainers of the package, as @code{maintainer} objects."
10678 msgstr ""
10679
10680 #. type: item
10681 #: doc/guix.texi:5442
10682 #, no-wrap
10683 msgid "@code{location} (default: source location of the @code{package} form)"
10684 msgstr ""
10685
10686 #. type: table
10687 #: doc/guix.texi:5446
10688 msgid "The source location of the package. It is useful to override this when inheriting from another package, in which case this field is not automatically corrected."
10689 msgstr ""
10690
10691 #. type: deffn
10692 #: doc/guix.texi:5449
10693 #, no-wrap
10694 msgid "{Scheme Syntax} this-package"
10695 msgstr ""
10696
10697 #. type: deffn
10698 #: doc/guix.texi:5452
10699 msgid "When used in the @emph{lexical scope} of a package field definition, this identifier resolves to the package being defined."
10700 msgstr ""
10701
10702 #. type: deffn
10703 #: doc/guix.texi:5455
10704 msgid "The example below shows how to add a package as a native input of itself when cross-compiling:"
10705 msgstr ""
10706
10707 #. type: example
10708 #: doc/guix.texi:5460
10709 #, no-wrap
10710 msgid ""
10711 "(package\n"
10712 " (name \"guile\")\n"
10713 " ;; ...\n"
10714 "\n"
10715 msgstr ""
10716
10717 #. type: example
10718 #: doc/guix.texi:5466
10719 #, no-wrap
10720 msgid ""
10721 " ;; When cross-compiled, Guile, for example, depends on\n"
10722 " ;; a native version of itself. Add it here.\n"
10723 " (native-inputs (if (%current-target-system)\n"
10724 " `((\"self\" ,this-package))\n"
10725 " '())))\n"
10726 msgstr ""
10727
10728 #. type: deffn
10729 #: doc/guix.texi:5469
10730 msgid "It is an error to refer to @code{this-package} outside a package definition."
10731 msgstr ""
10732
10733 #. type: subsection
10734 #: doc/guix.texi:5472
10735 #, no-wrap
10736 msgid "@code{origin} Reference"
10737 msgstr ""
10738
10739 #. type: Plain text
10740 #: doc/guix.texi:5476
10741 msgid "This section summarizes all the options available in @code{origin} declarations (@pxref{Defining Packages})."
10742 msgstr ""
10743
10744 #. type: deftp
10745 #: doc/guix.texi:5477
10746 #, no-wrap
10747 msgid "{Data Type} origin"
10748 msgstr ""
10749
10750 #. type: deftp
10751 #: doc/guix.texi:5479
10752 msgid "This is the data type representing a source code origin."
10753 msgstr ""
10754
10755 #. type: code{#1}
10756 #: doc/guix.texi:5481 doc/guix.texi:18957
10757 #, no-wrap
10758 msgid "uri"
10759 msgstr ""
10760
10761 #. type: table
10762 #: doc/guix.texi:5486
10763 msgid "An object containing the URI of the source. The object type depends on the @code{method} (see below). For example, when using the @var{url-fetch} method of @code{(guix download)}, the valid @code{uri} values are: a URL represented as a string, or a list thereof."
10764 msgstr ""
10765
10766 #. type: code{#1}
10767 #: doc/guix.texi:5487
10768 #, no-wrap
10769 msgid "method"
10770 msgstr ""
10771
10772 #. type: table
10773 #: doc/guix.texi:5489
10774 msgid "A procedure that handles the URI."
10775 msgstr ""
10776
10777 #. type: table
10778 #: doc/guix.texi:5491
10779 msgid "Examples include:"
10780 msgstr ""
10781
10782 #. type: item
10783 #: doc/guix.texi:5493
10784 #, no-wrap
10785 msgid "@var{url-fetch} from @code{(guix download)}"
10786 msgstr ""
10787
10788 #. type: table
10789 #: doc/guix.texi:5496
10790 msgid "download a file from the HTTP, HTTPS, or FTP URL specified in the @code{uri} field;"
10791 msgstr ""
10792
10793 #. type: vindex
10794 #: doc/guix.texi:5497 doc/guix.texi:8389
10795 #, no-wrap
10796 msgid "git-fetch"
10797 msgstr ""
10798
10799 #. type: item
10800 #: doc/guix.texi:5498
10801 #, no-wrap
10802 msgid "@var{git-fetch} from @code{(guix git-download)}"
10803 msgstr ""
10804
10805 #. type: table
10806 #: doc/guix.texi:5502
10807 msgid "clone the Git version control repository, and check out the revision specified in the @code{uri} field as a @code{git-reference} object; a @code{git-reference} looks like this:"
10808 msgstr ""
10809
10810 #. type: example
10811 #: doc/guix.texi:5507
10812 #, no-wrap
10813 msgid ""
10814 "(git-reference\n"
10815 " (url \"git://git.debian.org/git/pkg-shadow/shadow\")\n"
10816 " (commit \"v4.1.5.1\"))\n"
10817 msgstr ""
10818
10819 #. type: code{#1}
10820 #: doc/guix.texi:5510
10821 #, no-wrap
10822 msgid "sha256"
10823 msgstr ""
10824
10825 #. type: table
10826 #: doc/guix.texi:5514
10827 msgid "A bytevector containing the SHA-256 hash of the source. Typically the @code{base32} form is used here to generate the bytevector from a base-32 string."
10828 msgstr ""
10829
10830 #. type: table
10831 #: doc/guix.texi:5518
10832 msgid "You can obtain this information using @code{guix download} (@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking guix hash})."
10833 msgstr ""
10834
10835 #. type: item
10836 #: doc/guix.texi:5519
10837 #, no-wrap
10838 msgid "@code{file-name} (default: @code{#f})"
10839 msgstr ""
10840
10841 #. type: table
10842 #: doc/guix.texi:5525
10843 msgid "The file name under which the source code should be saved. When this is @code{#f}, a sensible default value will be used in most cases. In case the source is fetched from a URL, the file name from the URL will be used. For version control checkouts, it is recommended to provide the file name explicitly because the default is not very descriptive."
10844 msgstr ""
10845
10846 #. type: item
10847 #: doc/guix.texi:5526
10848 #, no-wrap
10849 msgid "@code{patches} (default: @code{'()})"
10850 msgstr ""
10851
10852 #. type: table
10853 #: doc/guix.texi:5529
10854 msgid "A list of file names, origins, or file-like objects (@pxref{G-Expressions, file-like objects}) pointing to patches to be applied to the source."
10855 msgstr ""
10856
10857 #. type: table
10858 #: doc/guix.texi:5533
10859 msgid "This list of patches must be unconditional. In particular, it cannot depend on the value of @code{%current-system} or @code{%current-target-system}."
10860 msgstr ""
10861
10862 #. type: item
10863 #: doc/guix.texi:5534
10864 #, no-wrap
10865 msgid "@code{snippet} (default: @code{#f})"
10866 msgstr ""
10867
10868 #. type: table
10869 #: doc/guix.texi:5538
10870 msgid "A G-expression (@pxref{G-Expressions}) or S-expression that will be run in the source directory. This is a convenient way to modify the source, sometimes more convenient than a patch."
10871 msgstr ""
10872
10873 #. type: item
10874 #: doc/guix.texi:5539
10875 #, no-wrap
10876 msgid "@code{patch-flags} (default: @code{'(\"-p1\")})"
10877 msgstr ""
10878
10879 #. type: table
10880 #: doc/guix.texi:5542
10881 msgid "A list of command-line flags that should be passed to the @code{patch} command."
10882 msgstr ""
10883
10884 #. type: item
10885 #: doc/guix.texi:5543
10886 #, no-wrap
10887 msgid "@code{patch-inputs} (default: @code{#f})"
10888 msgstr ""
10889
10890 #. type: table
10891 #: doc/guix.texi:5547
10892 msgid "Input packages or derivations to the patching process. When this is @code{#f}, the usual set of inputs necessary for patching are provided, such as GNU@tie{}Patch."
10893 msgstr ""
10894
10895 #. type: item
10896 #: doc/guix.texi:5548
10897 #, no-wrap
10898 msgid "@code{modules} (default: @code{'()})"
10899 msgstr ""
10900
10901 #. type: table
10902 #: doc/guix.texi:5551
10903 msgid "A list of Guile modules that should be loaded during the patching process and while running the code in the @code{snippet} field."
10904 msgstr ""
10905
10906 #. type: item
10907 #: doc/guix.texi:5552
10908 #, no-wrap
10909 msgid "@code{patch-guile} (default: @code{#f})"
10910 msgstr ""
10911
10912 #. type: table
10913 #: doc/guix.texi:5555
10914 msgid "The Guile package that should be used in the patching process. When this is @code{#f}, a sensible default is used."
10915 msgstr ""
10916
10917 #. type: cindex
10918 #: doc/guix.texi:5562
10919 #, no-wrap
10920 msgid "build system"
10921 msgstr ""
10922
10923 #. type: Plain text
10924 #: doc/guix.texi:5567
10925 msgid "Each package definition specifies a @dfn{build system} and arguments for that build system (@pxref{Defining Packages}). This @code{build-system} field represents the build procedure of the package, as well as implicit dependencies of that build procedure."
10926 msgstr ""
10927
10928 #. type: Plain text
10929 #: doc/guix.texi:5571
10930 msgid "Build systems are @code{<build-system>} objects. The interface to create and manipulate them is provided by the @code{(guix build-system)} module, and actual build systems are exported by specific modules."
10931 msgstr ""
10932
10933 #. type: cindex
10934 #: doc/guix.texi:5572
10935 #, no-wrap
10936 msgid "bag (low-level package representation)"
10937 msgstr ""
10938
10939 #. type: Plain text
10940 #: doc/guix.texi:5579
10941 msgid "Under the hood, build systems first compile package objects to @dfn{bags}. A @dfn{bag} is like a package, but with less ornamentation---in other words, a bag is a lower-level representation of a package, which includes all the inputs of that package, including some that were implicitly added by the build system. This intermediate representation is then compiled to a derivation (@pxref{Derivations})."
10942 msgstr ""
10943
10944 #. type: Plain text
10945 #: doc/guix.texi:5587
10946 msgid "Build systems accept an optional list of @dfn{arguments}. In package definitions, these are passed @i{via} the @code{arguments} field (@pxref{Defining Packages}). They are typically keyword arguments (@pxref{Optional Arguments, keyword arguments in Guile,, guile, GNU Guile Reference Manual}). The value of these arguments is usually evaluated in the @dfn{build stratum}---i.e., by a Guile process launched by the daemon (@pxref{Derivations})."
10947 msgstr ""
10948
10949 #. type: Plain text
10950 #: doc/guix.texi:5591
10951 msgid "The main build system is @var{gnu-build-system}, which implements the standard build procedure for GNU and many other packages. It is provided by the @code{(guix build-system gnu)} module."
10952 msgstr ""
10953
10954 #. type: defvr
10955 #: doc/guix.texi:5592
10956 #, no-wrap
10957 msgid "{Scheme Variable} gnu-build-system"
10958 msgstr ""
10959
10960 #. type: defvr
10961 #: doc/guix.texi:5596
10962 msgid "@var{gnu-build-system} represents the GNU Build System, and variants thereof (@pxref{Configuration, configuration and makefile conventions,, standards, GNU Coding Standards})."
10963 msgstr ""
10964
10965 #. type: cindex
10966 #: doc/guix.texi:5597 doc/guix.texi:6259
10967 #, no-wrap
10968 msgid "build phases"
10969 msgstr ""
10970
10971 #. type: defvr
10972 #: doc/guix.texi:5604
10973 msgid "In a nutshell, packages using it are configured, built, and installed with the usual @code{./configure && make && make check && make install} command sequence. In practice, a few additional steps are often needed. All these steps are split up in separate @dfn{phases}, notably@footnote{Please see the @code{(guix build gnu-build-system)} modules for more details about the build phases.}:"
10974 msgstr ""
10975
10976 #. type: item
10977 #: doc/guix.texi:5606
10978 #, no-wrap
10979 msgid "unpack"
10980 msgstr ""
10981
10982 #. type: table
10983 #: doc/guix.texi:5610
10984 msgid "Unpack the source tarball, and change the current directory to the extracted source tree. If the source is actually a directory, copy it to the build tree, and enter that directory."
10985 msgstr ""
10986
10987 #. type: item
10988 #: doc/guix.texi:5611
10989 #, no-wrap
10990 msgid "patch-source-shebangs"
10991 msgstr ""
10992
10993 #. type: table
10994 #: doc/guix.texi:5615
10995 msgid "Patch shebangs encountered in source files so they refer to the right store file names. For instance, this changes @code{#!/bin/sh} to @code{#!/gnu/store/@dots{}-bash-4.3/bin/sh}."
10996 msgstr ""
10997
10998 #. type: item
10999 #: doc/guix.texi:5616 doc/guix.texi:6217 doc/guix.texi:6265
11000 #, no-wrap
11001 msgid "configure"
11002 msgstr ""
11003
11004 #. type: table
11005 #: doc/guix.texi:5620
11006 msgid "Run the @file{configure} script with a number of default options, such as @code{--prefix=/gnu/store/@dots{}}, as well as the options specified by the @code{#:configure-flags} argument."
11007 msgstr ""
11008
11009 #. type: item
11010 #: doc/guix.texi:5621 doc/guix.texi:5810 doc/guix.texi:6222 doc/guix.texi:6269
11011 #: doc/guix.texi:24390
11012 #, no-wrap
11013 msgid "build"
11014 msgstr ""
11015
11016 #. type: table
11017 #: doc/guix.texi:5625
11018 msgid "Run @code{make} with the list of flags specified with @code{#:make-flags}. If the @code{#:parallel-build?} argument is true (the default), build with @code{make -j}."
11019 msgstr ""
11020
11021 #. type: item
11022 #: doc/guix.texi:5626 doc/guix.texi:5820 doc/guix.texi:6226
11023 #, no-wrap
11024 msgid "check"
11025 msgstr ""
11026
11027 #. type: table
11028 #: doc/guix.texi:5631
11029 msgid "Run @code{make check}, or some other target specified with @code{#:test-target}, unless @code{#:tests? #f} is passed. If the @code{#:parallel-tests?} argument is true (the default), run @code{make check -j}."
11030 msgstr ""
11031
11032 #. type: item
11033 #: doc/guix.texi:5632 doc/guix.texi:5828 doc/guix.texi:6230 doc/guix.texi:6273
11034 #, no-wrap
11035 msgid "install"
11036 msgstr ""
11037
11038 #. type: table
11039 #: doc/guix.texi:5634
11040 msgid "Run @code{make install} with the flags listed in @code{#:make-flags}."
11041 msgstr ""
11042
11043 #. type: item
11044 #: doc/guix.texi:5635
11045 #, no-wrap
11046 msgid "patch-shebangs"
11047 msgstr ""
11048
11049 #. type: table
11050 #: doc/guix.texi:5637
11051 msgid "Patch shebangs on the installed executable files."
11052 msgstr ""
11053
11054 #. type: item
11055 #: doc/guix.texi:5638
11056 #, no-wrap
11057 msgid "strip"
11058 msgstr ""
11059
11060 #. type: table
11061 #: doc/guix.texi:5642
11062 msgid "Strip debugging symbols from ELF files (unless @code{#:strip-binaries?} is false), copying them to the @code{debug} output when available (@pxref{Installing Debugging Files})."
11063 msgstr ""
11064
11065 #. type: vindex
11066 #: doc/guix.texi:5644
11067 #, no-wrap
11068 msgid "%standard-phases"
11069 msgstr ""
11070
11071 #. type: defvr
11072 #: doc/guix.texi:5649
11073 msgid "The build-side module @code{(guix build gnu-build-system)} defines @var{%standard-phases} as the default list of build phases. @var{%standard-phases} is a list of symbol/procedure pairs, where the procedure implements the actual phase."
11074 msgstr ""
11075
11076 #. type: defvr
11077 #: doc/guix.texi:5652
11078 msgid "The list of phases used for a particular package can be changed with the @code{#:phases} parameter. For instance, passing:"
11079 msgstr ""
11080
11081 #. type: example
11082 #: doc/guix.texi:5655
11083 #, no-wrap
11084 msgid "#:phases (modify-phases %standard-phases (delete 'configure))\n"
11085 msgstr ""
11086
11087 #. type: defvr
11088 #: doc/guix.texi:5659
11089 msgid "means that all the phases described above will be used, except the @code{configure} phase."
11090 msgstr ""
11091
11092 #. type: defvr
11093 #: doc/guix.texi:5666
11094 msgid "In addition, this build system ensures that the ``standard'' environment for GNU packages is available. This includes tools such as GCC, libc, Coreutils, Bash, Make, Diffutils, grep, and sed (see the @code{(guix build-system gnu)} module for a complete list). We call these the @dfn{implicit inputs} of a package, because package definitions do not have to mention them."
11095 msgstr ""
11096
11097 #. type: Plain text
11098 #: doc/guix.texi:5673
11099 msgid "Other @code{<build-system>} objects are defined to support other conventions and tools used by free software packages. They inherit most of @var{gnu-build-system}, and differ mainly in the set of inputs implicitly added to the build process, and in the list of phases executed. Some of these build systems are listed below."
11100 msgstr ""
11101
11102 #. type: defvr
11103 #: doc/guix.texi:5674
11104 #, no-wrap
11105 msgid "{Scheme Variable} ant-build-system"
11106 msgstr ""
11107
11108 #. type: defvr
11109 #: doc/guix.texi:5678
11110 msgid "This variable is exported by @code{(guix build-system ant)}. It implements the build procedure for Java packages that can be built with @url{https://ant.apache.org/, Ant build tool}."
11111 msgstr ""
11112
11113 #. type: defvr
11114 #: doc/guix.texi:5683
11115 msgid "It adds both @code{ant} and the @dfn{Java Development Kit} (JDK) as provided by the @code{icedtea} package to the set of inputs. Different packages can be specified with the @code{#:ant} and @code{#:jdk} parameters, respectively."
11116 msgstr ""
11117
11118 #. type: defvr
11119 #: doc/guix.texi:5689
11120 msgid "When the original package does not provide a suitable Ant build file, the parameter @code{#:jar-name} can be used to generate a minimal Ant build file @file{build.xml} with tasks to build the specified jar archive. In this case the parameter @code{#:source-dir} can be used to specify the source sub-directory, defaulting to ``src''."
11121 msgstr ""
11122
11123 #. type: defvr
11124 #: doc/guix.texi:5697
11125 msgid "The @code{#:main-class} parameter can be used with the minimal ant buildfile to specify the main class of the resulting jar. This makes the jar file executable. The @code{#:test-include} parameter can be used to specify the list of junit tests to run. It defaults to @code{(list \"**/*Test.java\")}. The @code{#:test-exclude} can be used to disable some tests. It defaults to @code{(list \"**/Abstract*.java\")}, because abstract classes cannot be run as tests."
11126 msgstr ""
11127
11128 #. type: defvr
11129 #: doc/guix.texi:5701
11130 msgid "The parameter @code{#:build-target} can be used to specify the Ant task that should be run during the @code{build} phase. By default the ``jar'' task will be run."
11131 msgstr ""
11132
11133 #. type: defvr
11134 #: doc/guix.texi:5704
11135 #, no-wrap
11136 msgid "{Scheme Variable} android-ndk-build-system"
11137 msgstr ""
11138
11139 #. type: cindex
11140 #: doc/guix.texi:5705
11141 #, no-wrap
11142 msgid "Android distribution"
11143 msgstr ""
11144
11145 #. type: cindex
11146 #: doc/guix.texi:5706
11147 #, no-wrap
11148 msgid "Android NDK build system"
11149 msgstr ""
11150
11151 #. type: defvr
11152 #: doc/guix.texi:5710
11153 msgid "This variable is exported by @code{(guix build-system android-ndk)}. It implements a build procedure for Android NDK (native development kit) packages using a Guix-specific build process."
11154 msgstr ""
11155
11156 #. type: defvr
11157 #: doc/guix.texi:5714
11158 msgid "The build system assumes that packages install their public interface (header) files to the subdirectory \"include\" of the \"out\" output and their libraries to the subdirectory \"lib\" of the \"out\" output."
11159 msgstr ""
11160
11161 #. type: defvr
11162 #: doc/guix.texi:5717
11163 msgid "It's also assumed that the union of all the dependencies of a package has no conflicting files."
11164 msgstr ""
11165
11166 #. type: defvr
11167 #: doc/guix.texi:5720
11168 msgid "For the time being, cross-compilation is not supported - so right now the libraries and header files are assumed to be host tools."
11169 msgstr ""
11170
11171 #. type: defvr
11172 #: doc/guix.texi:5723
11173 #, no-wrap
11174 msgid "{Scheme Variable} asdf-build-system/source"
11175 msgstr ""
11176
11177 #. type: defvrx
11178 #: doc/guix.texi:5724
11179 #, no-wrap
11180 msgid "{Scheme Variable} asdf-build-system/sbcl"
11181 msgstr ""
11182
11183 #. type: defvrx
11184 #: doc/guix.texi:5725
11185 #, no-wrap
11186 msgid "{Scheme Variable} asdf-build-system/ecl"
11187 msgstr ""
11188
11189 #. type: defvr
11190 #: doc/guix.texi:5731
11191 msgid "These variables, exported by @code{(guix build-system asdf)}, implement build procedures for Common Lisp packages using @url{https://common-lisp.net/project/asdf/, ``ASDF''}. ASDF is a system definition facility for Common Lisp programs and libraries."
11192 msgstr ""
11193
11194 #. type: defvr
11195 #: doc/guix.texi:5738
11196 msgid "The @code{asdf-build-system/source} system installs the packages in source form, and can be loaded using any common lisp implementation, via ASDF. The others, such as @code{asdf-build-system/sbcl}, install binary systems in the format which a particular implementation understands. These build systems can also be used to produce executable programs, or lisp images which contain a set of packages pre-loaded."
11197 msgstr ""
11198
11199 #. type: defvr
11200 #: doc/guix.texi:5742
11201 msgid "The build system uses naming conventions. For binary packages, the package name should be prefixed with the lisp implementation, such as @code{sbcl-} for @code{asdf-build-system/sbcl}."
11202 msgstr ""
11203
11204 #. type: defvr
11205 #: doc/guix.texi:5746
11206 msgid "Additionally, the corresponding source package should be labeled using the same convention as python packages (see @ref{Python Modules}), using the @code{cl-} prefix."
11207 msgstr ""
11208
11209 #. type: defvr
11210 #: doc/guix.texi:5751
11211 msgid "For binary packages, each system should be defined as a Guix package. If one package @code{origin} contains several systems, package variants can be created in order to build all the systems. Source packages, which use @code{asdf-build-system/source}, may contain several systems."
11212 msgstr ""
11213
11214 #. type: defvr
11215 #: doc/guix.texi:5758
11216 msgid "In order to create executable programs and images, the build-side procedures @code{build-program} and @code{build-image} can be used. They should be called in a build phase after the @code{create-symlinks} phase, so that the system which was just built can be used within the resulting image. @code{build-program} requires a list of Common Lisp expressions to be passed as the @code{#:entry-program} argument."
11217 msgstr ""
11218
11219 #. type: defvr
11220 #: doc/guix.texi:5767
11221 msgid "If the system is not defined within its own @code{.asd} file of the same name, then the @code{#:asd-file} parameter should be used to specify which file the system is defined in. Furthermore, if the package defines a system for its tests in a separate file, it will be loaded before the tests are run if it is specified by the @code{#:test-asd-file} parameter. If it is not set, the files @code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd}, and @code{test.asd} will be tried if they exist."
11222 msgstr ""
11223
11224 #. type: defvr
11225 #: doc/guix.texi:5771
11226 msgid "If for some reason the package must be named in a different way than the naming conventions suggest, the @code{#:asd-system-name} parameter can be used to specify the name of the system."
11227 msgstr ""
11228
11229 #. type: defvr
11230 #: doc/guix.texi:5774
11231 #, no-wrap
11232 msgid "{Scheme Variable} cargo-build-system"
11233 msgstr ""
11234
11235 #. type: cindex
11236 #: doc/guix.texi:5775
11237 #, no-wrap
11238 msgid "Rust programming language"
11239 msgstr ""
11240
11241 #. type: cindex
11242 #: doc/guix.texi:5776
11243 #, no-wrap
11244 msgid "Cargo (Rust build system)"
11245 msgstr ""
11246
11247 #. type: defvr
11248 #: doc/guix.texi:5780
11249 msgid "This variable is exported by @code{(guix build-system cargo)}. It supports builds of packages using Cargo, the build tool of the @uref{https://www.rust-lang.org, Rust programming language}."
11250 msgstr ""
11251
11252 #. type: defvr
11253 #: doc/guix.texi:5785
11254 msgid "In its @code{configure} phase, this build system replaces dependencies specified in the @file{Cargo.toml} file with inputs to the Guix package. The @code{install} phase installs the binaries, and it also installs the source code and @file{Cargo.toml} file."
11255 msgstr ""
11256
11257 #. type: cindex
11258 #: doc/guix.texi:5787
11259 #, no-wrap
11260 msgid "Clojure (programming language)"
11261 msgstr ""
11262
11263 #. type: cindex
11264 #: doc/guix.texi:5788
11265 #, no-wrap
11266 msgid "simple Clojure build system"
11267 msgstr ""
11268
11269 #. type: defvr
11270 #: doc/guix.texi:5789
11271 #, no-wrap
11272 msgid "{Scheme Variable} clojure-build-system"
11273 msgstr ""
11274
11275 #. type: defvr
11276 #: doc/guix.texi:5794
11277 msgid "This variable is exported by @code{(guix build-system clojure)}. It implements a simple build procedure for @uref{https://clojure.org/, Clojure} packages using plain old @code{compile} in Clojure. Cross-compilation is not supported yet."
11278 msgstr ""
11279
11280 #. type: defvr
11281 #: doc/guix.texi:5798
11282 msgid "It adds @code{clojure}, @code{icedtea} and @code{zip} to the set of inputs. Different packages can be specified with the @code{#:clojure}, @code{#:jdk} and @code{#:zip} parameters, respectively."
11283 msgstr ""
11284
11285 #. type: defvr
11286 #: doc/guix.texi:5804
11287 msgid "A list of source directories, test directories and jar names can be specified with the @code{#:source-dirs}, @code{#:test-dirs} and @code{#:jar-names} parameters, respectively. Compile directory and main class can be specified with the @code{#:compile-dir} and @code{#:main-class} parameters, respectively. Other parameters are documented below."
11288 msgstr ""
11289
11290 #. type: defvr
11291 #: doc/guix.texi:5807
11292 msgid "This build system is an extension of @var{ant-build-system}, but with the following phases changed:"
11293 msgstr ""
11294
11295 #. type: table
11296 #: doc/guix.texi:5819
11297 msgid "This phase calls @code{compile} in Clojure to compile source files and runs @command{jar} to create jars from both source files and compiled files according to the include list and exclude list specified in @code{#:aot-include} and @code{#:aot-exclude}, respectively. The exclude list has priority over the include list. These lists consist of symbols representing Clojure libraries or the special keyword @code{#:all} representing all Clojure libraries found under the source directories. The parameter @code{#:omit-source?} decides if source should be included into the jars."
11298 msgstr ""
11299
11300 #. type: table
11301 #: doc/guix.texi:5827
11302 msgid "This phase runs tests according to the include list and exclude list specified in @code{#:test-include} and @code{#:test-exclude}, respectively. Their meanings are analogous to that of @code{#:aot-include} and @code{#:aot-exclude}, except that the special keyword @code{#:all} now stands for all Clojure libraries found under the test directories. The parameter @code{#:tests?} decides if tests should be run."
11303 msgstr ""
11304
11305 #. type: table
11306 #: doc/guix.texi:5830
11307 msgid "This phase installs all jars built previously."
11308 msgstr ""
11309
11310 #. type: defvr
11311 #: doc/guix.texi:5833
11312 msgid "Apart from the above, this build system also contains an additional phase:"
11313 msgstr ""
11314
11315 #. type: item
11316 #: doc/guix.texi:5836
11317 #, no-wrap
11318 msgid "install-doc"
11319 msgstr ""
11320
11321 #. type: table
11322 #: doc/guix.texi:5841
11323 msgid "This phase installs all top-level files with base name matching @var{%doc-regex}. A different regex can be specified with the @code{#:doc-regex} parameter. All files (recursively) inside the documentation directories specified in @code{#:doc-dirs} are installed as well."
11324 msgstr ""
11325
11326 #. type: defvr
11327 #: doc/guix.texi:5844
11328 #, no-wrap
11329 msgid "{Scheme Variable} cmake-build-system"
11330 msgstr ""
11331
11332 #. type: defvr
11333 #: doc/guix.texi:5848
11334 msgid "This variable is exported by @code{(guix build-system cmake)}. It implements the build procedure for packages using the @url{https://www.cmake.org, CMake build tool}."
11335 msgstr ""
11336
11337 #. type: defvr
11338 #: doc/guix.texi:5852
11339 msgid "It automatically adds the @code{cmake} package to the set of inputs. Which package is used can be specified with the @code{#:cmake} parameter."
11340 msgstr ""
11341
11342 #. type: defvr
11343 #: doc/guix.texi:5859
11344 msgid "The @code{#:configure-flags} parameter is taken as a list of flags passed to the @command{cmake} command. The @code{#:build-type} parameter specifies in abstract terms the flags passed to the compiler; it defaults to @code{\"RelWithDebInfo\"} (short for ``release mode with debugging information''), which roughly means that code is compiled with @code{-O2 -g}, as is the case for Autoconf-based packages by default."
11345 msgstr ""
11346
11347 #. type: defvr
11348 #: doc/guix.texi:5861
11349 #, no-wrap
11350 msgid "{Scheme Variable} dune-build-system"
11351 msgstr ""
11352
11353 #. type: defvr
11354 #: doc/guix.texi:5868
11355 msgid "This variable is exported by @code{(guix build-system dune)}. It supports builds of packages using @uref{https://dune.build/, Dune}, a build tool for the OCaml programming language. It is implemented as an extension of the @code{ocaml-build-system} which is described below. As such, the @code{#:ocaml} and @code{#:findlib} parameters can be passed to this build system."
11356 msgstr ""
11357
11358 #. type: defvr
11359 #: doc/guix.texi:5872
11360 msgid "It automatically adds the @code{dune} package to the set of inputs. Which package is used can be specified with the @code{#:dune} parameter."
11361 msgstr ""
11362
11363 #. type: defvr
11364 #: doc/guix.texi:5876
11365 msgid "There is no @code{configure} phase because dune packages typically don't need to be configured. The @code{#:build-flags} parameter is taken as a list of flags passed to the @code{dune} command during the build."
11366 msgstr ""
11367
11368 #. type: defvr
11369 #: doc/guix.texi:5880
11370 msgid "The @code{#:jbuild?} parameter can be passed to use the @code{jbuild} command instead of the more recent @code{dune} command while building a package. Its default value is @code{#f}."
11371 msgstr ""
11372
11373 #. type: defvr
11374 #: doc/guix.texi:5885
11375 msgid "The @code{#:package} parameter can be passed to specify a package name, which is useful when a package contains multiple packages and you want to build only one of them. This is equivalent to passing the @code{-p} argument to @code{dune}."
11376 msgstr ""
11377
11378 #. type: defvr
11379 #: doc/guix.texi:5887
11380 #, no-wrap
11381 msgid "{Scheme Variable} go-build-system"
11382 msgstr ""
11383
11384 #. type: defvr
11385 #: doc/guix.texi:5892
11386 msgid "This variable is exported by @code{(guix build-system go)}. It implements a build procedure for Go packages using the standard @url{https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies, Go build mechanisms}."
11387 msgstr ""
11388
11389 #. type: defvr
11390 #: doc/guix.texi:5903
11391 msgid "The user is expected to provide a value for the key @code{#:import-path} and, in some cases, @code{#:unpack-path}. The @url{https://golang.org/doc/code.html#ImportPaths, import path} corresponds to the file system path expected by the package's build scripts and any referring packages, and provides a unique way to refer to a Go package. It is typically based on a combination of the package source code's remote URI and file system hierarchy structure. In some cases, you will need to unpack the package's source code to a different directory structure than the one indicated by the import path, and @code{#:unpack-path} should be used in such cases."
11392 msgstr ""
11393
11394 #. type: defvr
11395 #: doc/guix.texi:5908
11396 msgid "Packages that provide Go libraries should install their source code into the built output. The key @code{#:install-source?}, which defaults to @code{#t}, controls whether or not the source code is installed. It can be set to @code{#f} for packages that only provide executable files."
11397 msgstr ""
11398
11399 #. type: defvr
11400 #: doc/guix.texi:5910
11401 #, no-wrap
11402 msgid "{Scheme Variable} glib-or-gtk-build-system"
11403 msgstr ""
11404
11405 #. type: defvr
11406 #: doc/guix.texi:5913
11407 msgid "This variable is exported by @code{(guix build-system glib-or-gtk)}. It is intended for use with packages making use of GLib or GTK+."
11408 msgstr ""
11409
11410 #. type: defvr
11411 #: doc/guix.texi:5916
11412 msgid "This build system adds the following two phases to the ones defined by @var{gnu-build-system}:"
11413 msgstr ""
11414
11415 #. type: item
11416 #: doc/guix.texi:5918 doc/guix.texi:6246
11417 #, no-wrap
11418 msgid "glib-or-gtk-wrap"
11419 msgstr ""
11420
11421 #. type: table
11422 #: doc/guix.texi:5925
11423 msgid "The phase @code{glib-or-gtk-wrap} ensures that programs in @file{bin/} are able to find GLib ``schemas'' and @uref{https://developer.gnome.org/gtk3/stable/gtk-running.html, GTK+ modules}. This is achieved by wrapping the programs in launch scripts that appropriately set the @code{XDG_DATA_DIRS} and @code{GTK_PATH} environment variables."
11424 msgstr ""
11425
11426 #. type: table
11427 #: doc/guix.texi:5932
11428 msgid "It is possible to exclude specific package outputs from that wrapping process by listing their names in the @code{#:glib-or-gtk-wrap-excluded-outputs} parameter. This is useful when an output is known not to contain any GLib or GTK+ binaries, and where wrapping would gratuitously add a dependency of that output on GLib and GTK+."
11429 msgstr ""
11430
11431 #. type: item
11432 #: doc/guix.texi:5933 doc/guix.texi:6250
11433 #, no-wrap
11434 msgid "glib-or-gtk-compile-schemas"
11435 msgstr ""
11436
11437 #. type: table
11438 #: doc/guix.texi:5941
11439 msgid "The phase @code{glib-or-gtk-compile-schemas} makes sure that all @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html, GSettings schemas} of GLib are compiled. Compilation is performed by the @command{glib-compile-schemas} program. It is provided by the package @code{glib:bin} which is automatically imported by the build system. The @code{glib} package providing @command{glib-compile-schemas} can be specified with the @code{#:glib} parameter."
11440 msgstr ""
11441
11442 #. type: defvr
11443 #: doc/guix.texi:5944
11444 msgid "Both phases are executed after the @code{install} phase."
11445 msgstr ""
11446
11447 #. type: defvr
11448 #: doc/guix.texi:5946
11449 #, no-wrap
11450 msgid "{Scheme Variable} guile-build-system"
11451 msgstr ""
11452
11453 #. type: defvr
11454 #: doc/guix.texi:5953
11455 msgid "This build system is for Guile packages that consist exclusively of Scheme code and that are so lean that they don't even have a makefile, let alone a @file{configure} script. It compiles Scheme code using @command{guild compile} (@pxref{Compilation,,, guile, GNU Guile Reference Manual}) and installs the @file{.scm} and @file{.go} files in the right place. It also installs documentation."
11456 msgstr ""
11457
11458 #. type: defvr
11459 #: doc/guix.texi:5956
11460 msgid "This build system supports cross-compilation by using the @code{--target} option of @command{guild compile}."
11461 msgstr ""
11462
11463 #. type: defvr
11464 #: doc/guix.texi:5959
11465 msgid "Packages built with @code{guile-build-system} must provide a Guile package in their @code{native-inputs} field."
11466 msgstr ""
11467
11468 #. type: defvr
11469 #: doc/guix.texi:5961
11470 #, no-wrap
11471 msgid "{Scheme Variable} minify-build-system"
11472 msgstr ""
11473
11474 #. type: defvr
11475 #: doc/guix.texi:5964
11476 msgid "This variable is exported by @code{(guix build-system minify)}. It implements a minification procedure for simple JavaScript packages."
11477 msgstr ""
11478
11479 #. type: defvr
11480 #: doc/guix.texi:5970
11481 msgid "It adds @code{uglify-js} to the set of inputs and uses it to compress all JavaScript files in the @file{src} directory. A different minifier package can be specified with the @code{#:uglify-js} parameter, but it is expected that the package writes the minified code to the standard output."
11482 msgstr ""
11483
11484 #. type: defvr
11485 #: doc/guix.texi:5974
11486 msgid "When the input JavaScript files are not all located in the @file{src} directory, the parameter @code{#:javascript-files} can be used to specify a list of file names to feed to the minifier."
11487 msgstr ""
11488
11489 #. type: defvr
11490 #: doc/guix.texi:5976
11491 #, no-wrap
11492 msgid "{Scheme Variable} ocaml-build-system"
11493 msgstr ""
11494
11495 #. type: defvr
11496 #: doc/guix.texi:5982
11497 msgid "This variable is exported by @code{(guix build-system ocaml)}. It implements a build procedure for @uref{https://ocaml.org, OCaml} packages, which consists of choosing the correct set of commands to run for each package. OCaml packages can expect many different commands to be run. This build system will try some of them."
11498 msgstr ""
11499
11500 #. type: defvr
11501 #: doc/guix.texi:5992
11502 msgid "When the package has a @file{setup.ml} file present at the top-level, it will run @code{ocaml setup.ml -configure}, @code{ocaml setup.ml -build} and @code{ocaml setup.ml -install}. The build system will assume that this file was generated by @uref{http://oasis.forge.ocamlcore.org/, OASIS} and will take care of setting the prefix and enabling tests if they are not disabled. You can pass configure and build flags with the @code{#:configure-flags} and @code{#:build-flags}. The @code{#:test-flags} key can be passed to change the set of flags used to enable tests. The @code{#:use-make?} key can be used to bypass this system in the build and install phases."
11503 msgstr ""
11504
11505 #. type: defvr
11506 #: doc/guix.texi:5997
11507 msgid "When the package has a @file{configure} file, it is assumed that it is a hand-made configure script that requires a different argument format than in the @code{gnu-build-system}. You can add more flags with the @code{#:configure-flags} key."
11508 msgstr ""
11509
11510 #. type: defvr
11511 #: doc/guix.texi:6001
11512 msgid "When the package has a @file{Makefile} file (or @code{#:use-make?} is @code{#t}), it will be used and more flags can be passed to the build and install phases with the @code{#:make-flags} key."
11513 msgstr ""
11514
11515 #. type: defvr
11516 #: doc/guix.texi:6009
11517 msgid "Finally, some packages do not have these files and use a somewhat standard location for its build system. In that case, the build system will run @code{ocaml pkg/pkg.ml} or @code{ocaml pkg/build.ml} and take care of providing the path to the required findlib module. Additional flags can be passed via the @code{#:build-flags} key. Install is taken care of by @command{opam-installer}. In this case, the @code{opam} package must be added to the @code{native-inputs} field of the package definition."
11518 msgstr ""
11519
11520 #. type: defvr
11521 #: doc/guix.texi:6017
11522 msgid "Note that most OCaml packages assume they will be installed in the same directory as OCaml, which is not what we want in guix. In particular, they will install @file{.so} files in their module's directory, which is usually fine because it is in the OCaml compiler directory. In guix though, these libraries cannot be found and we use @code{CAML_LD_LIBRARY_PATH}. This variable points to @file{lib/ocaml/site-lib/stubslibs} and this is where @file{.so} libraries should be installed."
11523 msgstr ""
11524
11525 #. type: defvr
11526 #: doc/guix.texi:6019
11527 #, no-wrap
11528 msgid "{Scheme Variable} python-build-system"
11529 msgstr ""
11530
11531 #. type: defvr
11532 #: doc/guix.texi:6024
11533 msgid "This variable is exported by @code{(guix build-system python)}. It implements the more or less standard build procedure used by Python packages, which consists in running @code{python setup.py build} and then @code{python setup.py install --prefix=/gnu/store/@dots{}}."
11534 msgstr ""
11535
11536 #. type: defvr
11537 #: doc/guix.texi:6028
11538 msgid "For packages that install stand-alone Python programs under @code{bin/}, it takes care of wrapping these programs so that their @code{PYTHONPATH} environment variable points to all the Python libraries they depend on."
11539 msgstr ""
11540
11541 #. type: defvr
11542 #: doc/guix.texi:6034
11543 msgid "Which Python package is used to perform the build can be specified with the @code{#:python} parameter. This is a useful way to force a package to be built for a specific version of the Python interpreter, which might be necessary if the package is only compatible with a single interpreter version."
11544 msgstr ""
11545
11546 #. type: defvr
11547 #: doc/guix.texi:6039
11548 msgid "By default guix calls @code{setup.py} under control of @code{setuptools}, much like @command{pip} does. Some packages are not compatible with setuptools (and pip), thus you can disable this by setting the @code{#:use-setuptools} parameter to @code{#f}."
11549 msgstr ""
11550
11551 #. type: defvr
11552 #: doc/guix.texi:6041
11553 #, no-wrap
11554 msgid "{Scheme Variable} perl-build-system"
11555 msgstr ""
11556
11557 #. type: defvr
11558 #: doc/guix.texi:6053
11559 msgid "This variable is exported by @code{(guix build-system perl)}. It implements the standard build procedure for Perl packages, which either consists in running @code{perl Build.PL --prefix=/gnu/store/@dots{}}, followed by @code{Build} and @code{Build install}; or in running @code{perl Makefile.PL PREFIX=/gnu/store/@dots{}}, followed by @code{make} and @code{make install}, depending on which of @code{Build.PL} or @code{Makefile.PL} is present in the package distribution. Preference is given to the former if both @code{Build.PL} and @code{Makefile.PL} exist in the package distribution. This preference can be reversed by specifying @code{#t} for the @code{#:make-maker?} parameter."
11560 msgstr ""
11561
11562 #. type: defvr
11563 #: doc/guix.texi:6057
11564 msgid "The initial @code{perl Makefile.PL} or @code{perl Build.PL} invocation passes flags specified by the @code{#:make-maker-flags} or @code{#:module-build-flags} parameter, respectively."
11565 msgstr ""
11566
11567 #. type: defvr
11568 #: doc/guix.texi:6059
11569 msgid "Which Perl package is used can be specified with @code{#:perl}."
11570 msgstr ""
11571
11572 #. type: defvr
11573 #: doc/guix.texi:6061
11574 #, no-wrap
11575 msgid "{Scheme Variable} r-build-system"
11576 msgstr ""
11577
11578 #. type: defvr
11579 #: doc/guix.texi:6069
11580 msgid "This variable is exported by @code{(guix build-system r)}. It implements the build procedure used by @uref{https://r-project.org, R} packages, which essentially is little more than running @code{R CMD INSTALL --library=/gnu/store/@dots{}} in an environment where @code{R_LIBS_SITE} contains the paths to all R package inputs. Tests are run after installation using the R function @code{tools::testInstalledPackage}."
11581 msgstr ""
11582
11583 #. type: defvr
11584 #: doc/guix.texi:6071
11585 #, no-wrap
11586 msgid "{Scheme Variable} rakudo-build-system"
11587 msgstr ""
11588
11589 #. type: defvr
11590 #: doc/guix.texi:6079
11591 msgid "This variable is exported by @code{(guix build-system rakudo)}. It implements the build procedure used by @uref{https://rakudo.org/, Rakudo} for @uref{https://perl6.org/, Perl6} packages. It installs the package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and installs the binaries, library files and the resources, as well as wrap the files under the @code{bin/} directory. Tests can be skipped by passing @code{#f} to the @code{tests?} parameter."
11592 msgstr ""
11593
11594 #. type: defvr
11595 #: doc/guix.texi:6087
11596 msgid "Which rakudo package is used can be specified with @code{rakudo}. Which perl6-tap-harness package used for the tests can be specified with @code{#:prove6} or removed by passing @code{#f} to the @code{with-prove6?} parameter. Which perl6-zef package used for tests and installing can be specified with @code{#:zef} or removed by passing @code{#f} to the @code{with-zef?} parameter."
11597 msgstr ""
11598
11599 #. type: defvr
11600 #: doc/guix.texi:6089
11601 #, no-wrap
11602 msgid "{Scheme Variable} texlive-build-system"
11603 msgstr ""
11604
11605 #. type: defvr
11606 #: doc/guix.texi:6094
11607 msgid "This variable is exported by @code{(guix build-system texlive)}. It is used to build TeX packages in batch mode with a specified engine. The build system sets the @code{TEXINPUTS} variable to find all TeX source files in the inputs."
11608 msgstr ""
11609
11610 #. type: defvr
11611 #: doc/guix.texi:6103
11612 msgid "By default it runs @code{luatex} on all files ending on @code{ins}. A different engine and format can be specified with the @code{#:tex-format} argument. Different build targets can be specified with the @code{#:build-targets} argument, which expects a list of file names. The build system adds only @code{texlive-bin} and @code{texlive-latex-base} (both from @code{(gnu packages tex}) to the inputs. Both can be overridden with the arguments @code{#:texlive-bin} and @code{#:texlive-latex-base}, respectively."
11613 msgstr ""
11614
11615 #. type: defvr
11616 #: doc/guix.texi:6106
11617 msgid "The @code{#:tex-directory} parameter tells the build system where to install the built files under the texmf tree."
11618 msgstr ""
11619
11620 #. type: defvr
11621 #: doc/guix.texi:6108
11622 #, no-wrap
11623 msgid "{Scheme Variable} ruby-build-system"
11624 msgstr ""
11625
11626 #. type: defvr
11627 #: doc/guix.texi:6112
11628 msgid "This variable is exported by @code{(guix build-system ruby)}. It implements the RubyGems build procedure used by Ruby packages, which involves running @code{gem build} followed by @code{gem install}."
11629 msgstr ""
11630
11631 #. type: defvr
11632 #: doc/guix.texi:6120
11633 msgid "The @code{source} field of a package that uses this build system typically references a gem archive, since this is the format that Ruby developers use when releasing their software. The build system unpacks the gem archive, potentially patches the source, runs the test suite, repackages the gem, and installs it. Additionally, directories and tarballs may be referenced to allow building unreleased gems from Git or a traditional source release tarball."
11634 msgstr ""
11635
11636 #. type: defvr
11637 #: doc/guix.texi:6124
11638 msgid "Which Ruby package is used can be specified with the @code{#:ruby} parameter. A list of additional flags to be passed to the @command{gem} command can be specified with the @code{#:gem-flags} parameter."
11639 msgstr ""
11640
11641 #. type: defvr
11642 #: doc/guix.texi:6126
11643 #, no-wrap
11644 msgid "{Scheme Variable} waf-build-system"
11645 msgstr ""
11646
11647 #. type: defvr
11648 #: doc/guix.texi:6132
11649 msgid "This variable is exported by @code{(guix build-system waf)}. It implements a build procedure around the @code{waf} script. The common phases---@code{configure}, @code{build}, and @code{install}---are implemented by passing their names as arguments to the @code{waf} script."
11650 msgstr ""
11651
11652 #. type: defvr
11653 #: doc/guix.texi:6136
11654 msgid "The @code{waf} script is executed by the Python interpreter. Which Python package is used to run the script can be specified with the @code{#:python} parameter."
11655 msgstr ""
11656
11657 #. type: defvr
11658 #: doc/guix.texi:6138
11659 #, no-wrap
11660 msgid "{Scheme Variable} scons-build-system"
11661 msgstr ""
11662
11663 #. type: defvr
11664 #: doc/guix.texi:6144
11665 msgid "This variable is exported by @code{(guix build-system scons)}. It implements the build procedure used by the SCons software construction tool. This build system runs @code{scons} to build the package, @code{scons test} to run tests, and then @code{scons install} to install the package."
11666 msgstr ""
11667
11668 #. type: defvr
11669 #: doc/guix.texi:6149
11670 msgid "Additional flags to be passed to @code{scons} can be specified with the @code{#:scons-flags} parameter. The version of Python used to run SCons can be specified by selecting the appropriate SCons package with the @code{#:scons} parameter."
11671 msgstr ""
11672
11673 #. type: defvr
11674 #: doc/guix.texi:6151
11675 #, no-wrap
11676 msgid "{Scheme Variable} haskell-build-system"
11677 msgstr ""
11678
11679 #. type: defvr
11680 #: doc/guix.texi:6165
11681 msgid "This variable is exported by @code{(guix build-system haskell)}. It implements the Cabal build procedure used by Haskell packages, which involves running @code{runhaskell Setup.hs configure --prefix=/gnu/store/@dots{}} and @code{runhaskell Setup.hs build}. Instead of installing the package by running @code{runhaskell Setup.hs install}, to avoid trying to register libraries in the read-only compiler store directory, the build system uses @code{runhaskell Setup.hs copy}, followed by @code{runhaskell Setup.hs register}. In addition, the build system generates the package documentation by running @code{runhaskell Setup.hs haddock}, unless @code{#:haddock? #f} is passed. Optional Haddock parameters can be passed with the help of the @code{#:haddock-flags} parameter. If the file @code{Setup.hs} is not found, the build system looks for @code{Setup.lhs} instead."
11682 msgstr ""
11683
11684 #. type: defvr
11685 #: doc/guix.texi:6168
11686 msgid "Which Haskell compiler is used can be specified with the @code{#:haskell} parameter which defaults to @code{ghc}."
11687 msgstr ""
11688
11689 #. type: defvr
11690 #: doc/guix.texi:6170
11691 #, no-wrap
11692 msgid "{Scheme Variable} dub-build-system"
11693 msgstr ""
11694
11695 #. type: defvr
11696 #: doc/guix.texi:6175
11697 msgid "This variable is exported by @code{(guix build-system dub)}. It implements the Dub build procedure used by D packages, which involves running @code{dub build} and @code{dub run}. Installation is done by copying the files manually."
11698 msgstr ""
11699
11700 #. type: defvr
11701 #: doc/guix.texi:6178
11702 msgid "Which D compiler is used can be specified with the @code{#:ldc} parameter which defaults to @code{ldc}."
11703 msgstr ""
11704
11705 #. type: defvr
11706 #: doc/guix.texi:6180
11707 #, no-wrap
11708 msgid "{Scheme Variable} emacs-build-system"
11709 msgstr ""
11710
11711 #. type: defvr
11712 #: doc/guix.texi:6184
11713 msgid "This variable is exported by @code{(guix build-system emacs)}. It implements an installation procedure similar to the packaging system of Emacs itself (@pxref{Packages,,, emacs, The GNU Emacs Manual})."
11714 msgstr ""
11715
11716 #. type: defvr
11717 #: doc/guix.texi:6191
11718 msgid "It first creates the @code{@var{package}-autoloads.el} file, then it byte compiles all Emacs Lisp files. Differently from the Emacs packaging system, the Info documentation files are moved to the standard documentation directory and the @file{dir} file is deleted. Each package is installed in its own directory under @file{share/emacs/site-lisp/guix.d}."
11719 msgstr ""
11720
11721 #. type: defvr
11722 #: doc/guix.texi:6193
11723 #, no-wrap
11724 msgid "{Scheme Variable} font-build-system"
11725 msgstr ""
11726
11727 #. type: defvr
11728 #: doc/guix.texi:6199
11729 msgid "This variable is exported by @code{(guix build-system font)}. It implements an installation procedure for font packages where upstream provides pre-compiled TrueType, OpenType, etc.@: font files that merely need to be copied into place. It copies font files to standard locations in the output directory."
11730 msgstr ""
11731
11732 #. type: defvr
11733 #: doc/guix.texi:6201
11734 #, no-wrap
11735 msgid "{Scheme Variable} meson-build-system"
11736 msgstr ""
11737
11738 #. type: defvr
11739 #: doc/guix.texi:6205
11740 msgid "This variable is exported by @code{(guix build-system meson)}. It implements the build procedure for packages that use @url{https://mesonbuild.com, Meson} as their build system."
11741 msgstr ""
11742
11743 #. type: defvr
11744 #: doc/guix.texi:6211
11745 msgid "It adds both Meson and @uref{https://ninja-build.org/, Ninja} to the set of inputs, and they can be changed with the parameters @code{#:meson} and @code{#:ninja} if needed. The default Meson is @code{meson-for-build}, which is special because it doesn't clear the @code{RUNPATH} of binaries and libraries when they are installed."
11746 msgstr ""
11747
11748 #. type: defvr
11749 #: doc/guix.texi:6214
11750 msgid "This build system is an extension of @var{gnu-build-system}, but with the following phases changed to some specific for Meson:"
11751 msgstr ""
11752
11753 #. type: table
11754 #: doc/guix.texi:6221
11755 msgid "The phase runs @code{meson} with the flags specified in @code{#:configure-flags}. The flag @code{--build-type} is always set to @code{plain} unless something else is specified in @code{#:build-type}."
11756 msgstr ""
11757
11758 #. type: table
11759 #: doc/guix.texi:6225
11760 msgid "The phase runs @code{ninja} to build the package in parallel by default, but this can be changed with @code{#:parallel-build?}."
11761 msgstr ""
11762
11763 #. type: table
11764 #: doc/guix.texi:6229
11765 msgid "The phase runs @code{ninja} with the target specified in @code{#:test-target}, which is @code{\"test\"} by default."
11766 msgstr ""
11767
11768 #. type: table
11769 #: doc/guix.texi:6232
11770 msgid "The phase runs @code{ninja install} and can not be changed."
11771 msgstr ""
11772
11773 #. type: defvr
11774 #: doc/guix.texi:6235
11775 msgid "Apart from that, the build system also adds the following phases:"
11776 msgstr ""
11777
11778 #. type: item
11779 #: doc/guix.texi:6238
11780 #, no-wrap
11781 msgid "fix-runpath"
11782 msgstr ""
11783
11784 #. type: table
11785 #: doc/guix.texi:6245
11786 msgid "This phase ensures that all binaries can find the libraries they need. It searches for required libraries in subdirectories of the package being built, and adds those to @code{RUNPATH} where needed. It also removes references to libraries left over from the build phase by @code{meson-for-build}, such as test dependencies, that aren't actually required for the program to run."
11787 msgstr ""
11788
11789 #. type: table
11790 #: doc/guix.texi:6249 doc/guix.texi:6253
11791 msgid "This phase is the phase provided by @code{glib-or-gtk-build-system}, and it is not enabled by default. It can be enabled with @code{#:glib-or-gtk?}."
11792 msgstr ""
11793
11794 #. type: defvr
11795 #: doc/guix.texi:6256
11796 #, no-wrap
11797 msgid "{Scheme Variable} linux-module-build-system"
11798 msgstr ""
11799
11800 #. type: defvr
11801 #: doc/guix.texi:6258
11802 msgid "@var{linux-module-build-system} allows building Linux kernel modules."
11803 msgstr ""
11804
11805 #. type: defvr
11806 #: doc/guix.texi:6262
11807 msgid "This build system is an extension of @var{gnu-build-system}, but with the following phases changed:"
11808 msgstr ""
11809
11810 #. type: table
11811 #: doc/guix.texi:6268
11812 msgid "This phase configures the environment so that the Linux kernel's Makefile can be used to build the external kernel module."
11813 msgstr ""
11814
11815 #. type: table
11816 #: doc/guix.texi:6272
11817 msgid "This phase uses the Linux kernel's Makefile in order to build the external kernel module."
11818 msgstr ""
11819
11820 #. type: table
11821 #: doc/guix.texi:6276
11822 msgid "This phase uses the Linux kernel's Makefile in order to install the external kernel module."
11823 msgstr ""
11824
11825 #. type: defvr
11826 #: doc/guix.texi:6281
11827 msgid "It is possible and useful to specify the Linux kernel to use for building the module (in the \"arguments\" form of a package using the linux-module-build-system, use the key #:linux to specify it)."
11828 msgstr ""
11829
11830 #. type: Plain text
11831 #: doc/guix.texi:6287
11832 msgid "Lastly, for packages that do not need anything as sophisticated, a ``trivial'' build system is provided. It is trivial in the sense that it provides basically no support: it does not pull any implicit inputs, and does not have a notion of build phases."
11833 msgstr ""
11834
11835 #. type: defvr
11836 #: doc/guix.texi:6288
11837 #, no-wrap
11838 msgid "{Scheme Variable} trivial-build-system"
11839 msgstr ""
11840
11841 #. type: defvr
11842 #: doc/guix.texi:6290
11843 msgid "This variable is exported by @code{(guix build-system trivial)}."
11844 msgstr ""
11845
11846 #. type: defvr
11847 #: doc/guix.texi:6295
11848 msgid "This build system requires a @code{#:builder} argument. This argument must be a Scheme expression that builds the package output(s)---as with @code{build-expression->derivation} (@pxref{Derivations, @code{build-expression->derivation}})."
11849 msgstr ""
11850
11851 #. type: cindex
11852 #: doc/guix.texi:6301
11853 #, no-wrap
11854 msgid "store items"
11855 msgstr ""
11856
11857 #. type: cindex
11858 #: doc/guix.texi:6302
11859 #, no-wrap
11860 msgid "store paths"
11861 msgstr ""
11862
11863 #. type: Plain text
11864 #: doc/guix.texi:6313
11865 msgid "Conceptually, the @dfn{store} is the place where derivations that have been built successfully are stored---by default, @file{/gnu/store}. Sub-directories in the store are referred to as @dfn{store items} or sometimes @dfn{store paths}. The store has an associated database that contains information such as the store paths referred to by each store path, and the list of @emph{valid} store items---results of successful builds. This database resides in @file{@var{localstatedir}/guix/db}, where @var{localstatedir} is the state directory specified @i{via} @option{--localstatedir} at configure time, usually @file{/var}."
11866 msgstr ""
11867
11868 #. type: Plain text
11869 #: doc/guix.texi:6318
11870 msgid "The store is @emph{always} accessed by the daemon on behalf of its clients (@pxref{Invoking guix-daemon}). To manipulate the store, clients connect to the daemon over a Unix-domain socket, send requests to it, and read the result---these are remote procedure calls, or RPCs."
11871 msgstr ""
11872
11873 #. type: quotation
11874 #: doc/guix.texi:6323
11875 msgid "Users must @emph{never} modify files under @file{/gnu/store} directly. This would lead to inconsistencies and break the immutability assumptions of Guix's functional model (@pxref{Introduction})."
11876 msgstr ""
11877
11878 #. type: quotation
11879 #: doc/guix.texi:6327
11880 msgid "@xref{Invoking guix gc, @command{guix gc --verify}}, for information on how to check the integrity of the store and attempt recovery from accidental modifications."
11881 msgstr ""
11882
11883 #. type: Plain text
11884 #: doc/guix.texi:6334
11885 msgid "The @code{(guix store)} module provides procedures to connect to the daemon, and to perform RPCs. These are described below. By default, @code{open-connection}, and thus all the @command{guix} commands, connect to the local daemon or to the URI specified by the @code{GUIX_DAEMON_SOCKET} environment variable."
11886 msgstr ""
11887
11888 #. type: defvr
11889 #: doc/guix.texi:6335
11890 #, no-wrap
11891 msgid "{Environment Variable} GUIX_DAEMON_SOCKET"
11892 msgstr ""
11893
11894 #. type: defvr
11895 #: doc/guix.texi:6340
11896 msgid "When set, the value of this variable should be a file name or a URI designating the daemon endpoint. When it is a file name, it denotes a Unix-domain socket to connect to. In addition to file names, the supported URI schemes are:"
11897 msgstr ""
11898
11899 #. type: code{#1}
11900 #: doc/guix.texi:6342 doc/guix.texi:18633
11901 #, no-wrap
11902 msgid "file"
11903 msgstr ""
11904
11905 #. type: itemx
11906 #: doc/guix.texi:6343
11907 #, no-wrap
11908 msgid "unix"
11909 msgstr ""
11910
11911 #. type: table
11912 #: doc/guix.texi:6347
11913 msgid "These are for Unix-domain sockets. @code{file:///var/guix/daemon-socket/socket} is equivalent to @file{/var/guix/daemon-socket/socket}."
11914 msgstr ""
11915
11916 #. type: item
11917 #: doc/guix.texi:6348
11918 #, no-wrap
11919 msgid "guix"
11920 msgstr ""
11921
11922 #. type: table
11923 #: doc/guix.texi:6356
11924 msgid "These URIs denote connections over TCP/IP, without encryption nor authentication of the remote host. The URI must specify the host name and optionally a port number (by default port 44146 is used):"
11925 msgstr ""
11926
11927 #. type: example
11928 #: doc/guix.texi:6359
11929 #, no-wrap
11930 msgid "guix://master.guix.example.org:1234\n"
11931 msgstr ""
11932
11933 #. type: table
11934 #: doc/guix.texi:6364
11935 msgid "This setup is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon at @code{master.guix.example.org}."
11936 msgstr ""
11937
11938 #. type: table
11939 #: doc/guix.texi:6368
11940 msgid "The @code{--listen} option of @command{guix-daemon} can be used to instruct it to listen for TCP connections (@pxref{Invoking guix-daemon, @code{--listen}})."
11941 msgstr ""
11942
11943 #. type: item
11944 #: doc/guix.texi:6369
11945 #, no-wrap
11946 msgid "ssh"
11947 msgstr ""
11948
11949 #. type: cindex
11950 #: doc/guix.texi:6370
11951 #, no-wrap
11952 msgid "SSH access to build daemons"
11953 msgstr ""
11954
11955 #. type: table
11956 #: doc/guix.texi:6374
11957 msgid "These URIs allow you to connect to a remote daemon over SSH@footnote{This feature requires Guile-SSH (@pxref{Requirements}).}. A typical URL might look like this:"
11958 msgstr ""
11959
11960 #. type: example
11961 #: doc/guix.texi:6377
11962 #, no-wrap
11963 msgid "ssh://charlie@@guix.example.org:22\n"
11964 msgstr ""
11965
11966 #. type: table
11967 #: doc/guix.texi:6381
11968 msgid "As for @command{guix copy}, the usual OpenSSH client configuration files are honored (@pxref{Invoking guix copy})."
11969 msgstr ""
11970
11971 #. type: defvr
11972 #: doc/guix.texi:6384
11973 msgid "Additional URI schemes may be supported in the future."
11974 msgstr ""
11975
11976 #. type: quotation
11977 #: doc/guix.texi:6391
11978 msgid "The ability to connect to remote build daemons is considered experimental as of @value{VERSION}. Please get in touch with us to share any problems or suggestions you may have (@pxref{Contributing})."
11979 msgstr ""
11980
11981 #. type: deffn
11982 #: doc/guix.texi:6394
11983 #, no-wrap
11984 msgid "{Scheme Procedure} open-connection [@var{uri}] [#:reserve-space? #t]"
11985 msgstr ""
11986
11987 #. type: deffn
11988 #: doc/guix.texi:6399
11989 msgid "Connect to the daemon over the Unix-domain socket at @var{uri} (a string). When @var{reserve-space?} is true, instruct it to reserve a little bit of extra space on the file system so that the garbage collector can still operate should the disk become full. Return a server object."
11990 msgstr ""
11991
11992 #. type: deffn
11993 #: doc/guix.texi:6402
11994 msgid "@var{file} defaults to @var{%default-socket-path}, which is the normal location given the options that were passed to @command{configure}."
11995 msgstr ""
11996
11997 #. type: deffn
11998 #: doc/guix.texi:6404
11999 #, no-wrap
12000 msgid "{Scheme Procedure} close-connection @var{server}"
12001 msgstr ""
12002
12003 #. type: deffn
12004 #: doc/guix.texi:6406
12005 msgid "Close the connection to @var{server}."
12006 msgstr ""
12007
12008 #. type: defvr
12009 #: doc/guix.texi:6408
12010 #, no-wrap
12011 msgid "{Scheme Variable} current-build-output-port"
12012 msgstr ""
12013
12014 #. type: defvr
12015 #: doc/guix.texi:6411
12016 msgid "This variable is bound to a SRFI-39 parameter, which refers to the port where build and error logs sent by the daemon should be written."
12017 msgstr ""
12018
12019 #. type: Plain text
12020 #: doc/guix.texi:6415
12021 msgid "Procedures that make RPCs all take a server object as their first argument."
12022 msgstr ""
12023
12024 #. type: deffn
12025 #: doc/guix.texi:6416
12026 #, no-wrap
12027 msgid "{Scheme Procedure} valid-path? @var{server} @var{path}"
12028 msgstr ""
12029
12030 #. type: cindex
12031 #: doc/guix.texi:6417
12032 #, no-wrap
12033 msgid "invalid store items"
12034 msgstr ""
12035
12036 #. type: deffn
12037 #: doc/guix.texi:6422
12038 msgid "Return @code{#t} when @var{path} designates a valid store item and @code{#f} otherwise (an invalid item may exist on disk but still be invalid, for instance because it is the result of an aborted or failed build.)"
12039 msgstr ""
12040
12041 #. type: deffn
12042 #: doc/guix.texi:6425
12043 msgid "A @code{&store-protocol-error} condition is raised if @var{path} is not prefixed by the store directory (@file{/gnu/store})."
12044 msgstr ""
12045
12046 #. type: deffn
12047 #: doc/guix.texi:6427
12048 #, no-wrap
12049 msgid "{Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} [@var{references}]"
12050 msgstr ""
12051
12052 #. type: deffn
12053 #: doc/guix.texi:6431
12054 msgid "Add @var{text} under file @var{name} in the store, and return its store path. @var{references} is the list of store paths referred to by the resulting store path."
12055 msgstr ""
12056
12057 #. type: deffn
12058 #: doc/guix.texi:6433
12059 #, no-wrap
12060 msgid "{Scheme Procedure} build-derivations @var{server} @var{derivations}"
12061 msgstr ""
12062
12063 #. type: deffn
12064 #: doc/guix.texi:6437
12065 msgid "Build @var{derivations} (a list of @code{<derivation>} objects or derivation paths), and return when the worker is done building them. Return @code{#t} on success."
12066 msgstr ""
12067
12068 #. type: Plain text
12069 #: doc/guix.texi:6443
12070 msgid "Note that the @code{(guix monads)} module provides a monad as well as monadic versions of the above procedures, with the goal of making it more convenient to work with code that accesses the store (@pxref{The Store Monad})."
12071 msgstr ""
12072
12073 #. type: i{#1}
12074 #: doc/guix.texi:6446
12075 msgid "This section is currently incomplete."
12076 msgstr ""
12077
12078 #. type: cindex
12079 #: doc/guix.texi:6450
12080 #, no-wrap
12081 msgid "derivations"
12082 msgstr ""
12083
12084 #. type: Plain text
12085 #: doc/guix.texi:6454
12086 msgid "Low-level build actions and the environment in which they are performed are represented by @dfn{derivations}. A derivation contains the following pieces of information:"
12087 msgstr ""
12088
12089 #. type: itemize
12090 #: doc/guix.texi:6459
12091 msgid "The outputs of the derivation---derivations produce at least one file or directory in the store, but may produce more."
12092 msgstr ""
12093
12094 #. type: cindex
12095 #: doc/guix.texi:6461
12096 #, no-wrap
12097 msgid "build-time dependencies"
12098 msgstr ""
12099
12100 #. type: cindex
12101 #: doc/guix.texi:6462
12102 #, no-wrap
12103 msgid "dependencies, build-time"
12104 msgstr ""
12105
12106 #. type: itemize
12107 #: doc/guix.texi:6466
12108 msgid "The inputs of the derivations---i.e., its build-time dependencies---which may be other derivations or plain files in the store (patches, build scripts, etc.)"
12109 msgstr ""
12110
12111 #. type: itemize
12112 #: doc/guix.texi:6469
12113 msgid "The system type targeted by the derivation---e.g., @code{x86_64-linux}."
12114 msgstr ""
12115
12116 #. type: itemize
12117 #: doc/guix.texi:6473
12118 msgid "The file name of a build script in the store, along with the arguments to be passed."
12119 msgstr ""
12120
12121 #. type: itemize
12122 #: doc/guix.texi:6476
12123 msgid "A list of environment variables to be defined."
12124 msgstr ""
12125
12126 #. type: cindex
12127 #: doc/guix.texi:6479
12128 #, no-wrap
12129 msgid "derivation path"
12130 msgstr ""
12131
12132 #. type: Plain text
12133 #: doc/guix.texi:6487
12134 msgid "Derivations allow clients of the daemon to communicate build actions to the store. They exist in two forms: as an in-memory representation, both on the client- and daemon-side, and as files in the store whose name end in @code{.drv}---these files are referred to as @dfn{derivation paths}. Derivations paths can be passed to the @code{build-derivations} procedure to perform the build actions they prescribe (@pxref{The Store})."
12135 msgstr ""
12136
12137 #. type: cindex
12138 #: doc/guix.texi:6488
12139 #, no-wrap
12140 msgid "fixed-output derivations"
12141 msgstr ""
12142
12143 #. type: Plain text
12144 #: doc/guix.texi:6495
12145 msgid "Operations such as file downloads and version-control checkouts for which the expected content hash is known in advance are modeled as @dfn{fixed-output derivations}. Unlike regular derivations, the outputs of a fixed-output derivation are independent of its inputs---e.g., a source code download produces the same result regardless of the download method and tools being used."
12146 msgstr ""
12147
12148 #. type: item
12149 #: doc/guix.texi:6496 doc/guix.texi:9483
12150 #, no-wrap
12151 msgid "references"
12152 msgstr ""
12153
12154 #. type: cindex
12155 #: doc/guix.texi:6497
12156 #, no-wrap
12157 msgid "run-time dependencies"
12158 msgstr ""
12159
12160 #. type: cindex
12161 #: doc/guix.texi:6498
12162 #, no-wrap
12163 msgid "dependencies, run-time"
12164 msgstr ""
12165
12166 #. type: Plain text
12167 #: doc/guix.texi:6505
12168 msgid "The outputs of derivations---i.e., the build results---have a set of @dfn{references}, as reported by the @code{references} RPC or the @command{guix gc --references} command (@pxref{Invoking guix gc}). References are the set of run-time dependencies of the build results. References are a subset of the inputs of the derivation; this subset is automatically computed by the build daemon by scanning all the files in the outputs."
12169 msgstr ""
12170
12171 #. type: Plain text
12172 #: doc/guix.texi:6510
12173 msgid "The @code{(guix derivations)} module provides a representation of derivations as Scheme objects, along with procedures to create and otherwise manipulate derivations. The lowest-level primitive to create a derivation is the @code{derivation} procedure:"
12174 msgstr ""
12175
12176 #. type: deffn
12177 #: doc/guix.texi:6511
12178 #, no-wrap
12179 msgid "{Scheme Procedure} derivation @var{store} @var{name} @var{builder} @"
12180 msgstr ""
12181
12182 #. type: deffn
12183 #: doc/guix.texi:6520
12184 msgid "@var{args} [#:outputs '(\"out\")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ [#:system (%current-system)] [#:references-graphs #f] @ [#:allowed-references #f] [#:disallowed-references #f] @ [#:leaked-env-vars #f] [#:local-build? #f] @ [#:substitutable? #t] [#:properties '()] Build a derivation with the given arguments, and return the resulting @code{<derivation>} object."
12185 msgstr ""
12186
12187 #. type: deffn
12188 #: doc/guix.texi:6527
12189 msgid "When @var{hash} and @var{hash-algo} are given, a @dfn{fixed-output derivation} is created---i.e., one whose result is known in advance, such as a file download. If, in addition, @var{recursive?} is true, then that fixed output may be an executable file or a directory and @var{hash} must be the hash of an archive containing this output."
12190 msgstr ""
12191
12192 #. type: deffn
12193 #: doc/guix.texi:6532
12194 msgid "When @var{references-graphs} is true, it must be a list of file name/store path pairs. In that case, the reference graph of each store path is exported in the build environment in the corresponding file, in a simple text format."
12195 msgstr ""
12196
12197 #. type: deffn
12198 #: doc/guix.texi:6537
12199 msgid "When @var{allowed-references} is true, it must be a list of store items or outputs that the derivation's output may refer to. Likewise, @var{disallowed-references}, if true, must be a list of things the outputs may @emph{not} refer to."
12200 msgstr ""
12201
12202 #. type: deffn
12203 #: doc/guix.texi:6544
12204 msgid "When @var{leaked-env-vars} is true, it must be a list of strings denoting environment variables that are allowed to ``leak'' from the daemon's environment to the build environment. This is only applicable to fixed-output derivations---i.e., when @var{hash} is true. The main use is to allow variables such as @code{http_proxy} to be passed to derivations that download files."
12205 msgstr ""
12206
12207 #. type: deffn
12208 #: doc/guix.texi:6549
12209 msgid "When @var{local-build?} is true, declare that the derivation is not a good candidate for offloading and should rather be built locally (@pxref{Daemon Offload Setup}). This is the case for small derivations where the costs of data transfers would outweigh the benefits."
12210 msgstr ""
12211
12212 #. type: deffn
12213 #: doc/guix.texi:6554
12214 msgid "When @var{substitutable?} is false, declare that substitutes of the derivation's output should not be used (@pxref{Substitutes}). This is useful, for instance, when building packages that capture details of the host CPU instruction set."
12215 msgstr ""
12216
12217 #. type: deffn
12218 #: doc/guix.texi:6557
12219 msgid "@var{properties} must be an association list describing ``properties'' of the derivation. It is kept as-is, uninterpreted, in the derivation."
12220 msgstr ""
12221
12222 #. type: Plain text
12223 #: doc/guix.texi:6563
12224 msgid "Here's an example with a shell script as its builder, assuming @var{store} is an open connection to the daemon, and @var{bash} points to a Bash executable in the store:"
12225 msgstr ""
12226
12227 #. type: lisp
12228 #: doc/guix.texi:6568
12229 #, no-wrap
12230 msgid ""
12231 "(use-modules (guix utils)\n"
12232 " (guix store)\n"
12233 " (guix derivations))\n"
12234 "\n"
12235 msgstr ""
12236
12237 #. type: lisp
12238 #: doc/guix.texi:6577
12239 #, no-wrap
12240 msgid ""
12241 "(let ((builder ; add the Bash script to the store\n"
12242 " (add-text-to-store store \"my-builder.sh\"\n"
12243 " \"echo hello world > $out\\n\" '())))\n"
12244 " (derivation store \"foo\"\n"
12245 " bash `(\"-e\" ,builder)\n"
12246 " #:inputs `((,bash) (,builder))\n"
12247 " #:env-vars '((\"HOME\" . \"/homeless\"))))\n"
12248 "@result{} #<derivation /gnu/store/@dots{}-foo.drv => /gnu/store/@dots{}-foo>\n"
12249 msgstr ""
12250
12251 #. type: Plain text
12252 #: doc/guix.texi:6584
12253 msgid "As can be guessed, this primitive is cumbersome to use directly. A better approach is to write build scripts in Scheme, of course! The best course of action for that is to write the build code as a ``G-expression'', and to pass it to @code{gexp->derivation}. For more information, @pxref{G-Expressions}."
12254 msgstr ""
12255
12256 #. type: Plain text
12257 #: doc/guix.texi:6589
12258 msgid "Once upon a time, @code{gexp->derivation} did not exist and constructing derivations with build code written in Scheme was achieved with @code{build-expression->derivation}, documented below. This procedure is now deprecated in favor of the much nicer @code{gexp->derivation}."
12259 msgstr ""
12260
12261 #. type: deffn
12262 #: doc/guix.texi:6590
12263 #, no-wrap
12264 msgid "{Scheme Procedure} build-expression->derivation @var{store} @"
12265 msgstr ""
12266
12267 #. type: deffn
12268 #: doc/guix.texi:6606
12269 msgid "@var{name} @var{exp} @ [#:system (%current-system)] [#:inputs '()] @ [#:outputs '(\"out\")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:references-graphs #f] [#:allowed-references #f] @ [#:disallowed-references #f] @ [#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f] Return a derivation that executes Scheme expression @var{exp} as a builder for derivation @var{name}. @var{inputs} must be a list of @code{(name drv-path sub-drv)} tuples; when @var{sub-drv} is omitted, @code{\"out\"} is assumed. @var{modules} is a list of names of Guile modules from the current search path to be copied in the store, compiled, and made available in the load path during the execution of @var{exp}---e.g., @code{((guix build utils) (guix build gnu-build-system))}."
12270 msgstr ""
12271
12272 #. type: deffn
12273 #: doc/guix.texi:6614
12274 msgid "@var{exp} is evaluated in an environment where @code{%outputs} is bound to a list of output/path pairs, and where @code{%build-inputs} is bound to a list of string/output-path pairs made from @var{inputs}. Optionally, @var{env-vars} is a list of string pairs specifying the name and value of environment variables visible to the builder. The builder terminates by passing the result of @var{exp} to @code{exit}; thus, when @var{exp} returns @code{#f}, the build is considered to have failed."
12275 msgstr ""
12276
12277 #. type: deffn
12278 #: doc/guix.texi:6618
12279 msgid "@var{exp} is built using @var{guile-for-build} (a derivation). When @var{guile-for-build} is omitted or is @code{#f}, the value of the @code{%guile-for-build} fluid is used instead."
12280 msgstr ""
12281
12282 #. type: deffn
12283 #: doc/guix.texi:6623
12284 msgid "See the @code{derivation} procedure for the meaning of @var{references-graphs}, @var{allowed-references}, @var{disallowed-references}, @var{local-build?}, and @var{substitutable?}."
12285 msgstr ""
12286
12287 #. type: Plain text
12288 #: doc/guix.texi:6628
12289 msgid "Here's an example of a single-output derivation that creates a directory containing one file:"
12290 msgstr ""
12291
12292 #. type: lisp
12293 #: doc/guix.texi:6636
12294 #, no-wrap
12295 msgid ""
12296 "(let ((builder '(let ((out (assoc-ref %outputs \"out\")))\n"
12297 " (mkdir out) ; create /gnu/store/@dots{}-goo\n"
12298 " (call-with-output-file (string-append out \"/test\")\n"
12299 " (lambda (p)\n"
12300 " (display '(hello guix) p))))))\n"
12301 " (build-expression->derivation store \"goo\" builder))\n"
12302 "\n"
12303 msgstr ""
12304
12305 #. type: lisp
12306 #: doc/guix.texi:6638
12307 #, no-wrap
12308 msgid "@result{} #<derivation /gnu/store/@dots{}-goo.drv => @dots{}>\n"
12309 msgstr ""
12310
12311 #. type: cindex
12312 #: doc/guix.texi:6644
12313 #, no-wrap
12314 msgid "monad"
12315 msgstr ""
12316
12317 #. type: Plain text
12318 #: doc/guix.texi:6650
12319 msgid "The procedures that operate on the store described in the previous sections all take an open connection to the build daemon as their first argument. Although the underlying model is functional, they either have side effects or depend on the current state of the store."
12320 msgstr ""
12321
12322 #. type: Plain text
12323 #: doc/guix.texi:6656
12324 msgid "The former is inconvenient: the connection to the build daemon has to be carried around in all those functions, making it impossible to compose functions that do not take that parameter with functions that do. The latter can be problematic: since store operations have side effects and/or depend on external state, they have to be properly sequenced."
12325 msgstr ""
12326
12327 #. type: cindex
12328 #: doc/guix.texi:6657
12329 #, no-wrap
12330 msgid "monadic values"
12331 msgstr ""
12332
12333 #. type: cindex
12334 #: doc/guix.texi:6658
12335 #, no-wrap
12336 msgid "monadic functions"
12337 msgstr ""
12338
12339 #. type: Plain text
12340 #: doc/guix.texi:6668
12341 msgid "This is where the @code{(guix monads)} module comes in. This module provides a framework for working with @dfn{monads}, and a particularly useful monad for our uses, the @dfn{store monad}. Monads are a construct that allows two things: associating ``context'' with values (in our case, the context is the store), and building sequences of computations (here computations include accesses to the store). Values in a monad---values that carry this additional context---are called @dfn{monadic values}; procedures that return such values are called @dfn{monadic procedures}."
12342 msgstr ""
12343
12344 #. type: Plain text
12345 #: doc/guix.texi:6670
12346 msgid "Consider this ``normal'' procedure:"
12347 msgstr ""
12348
12349 #. type: example
12350 #: doc/guix.texi:6679
12351 #, no-wrap
12352 msgid ""
12353 "(define (sh-symlink store)\n"
12354 " ;; Return a derivation that symlinks the 'bash' executable.\n"
12355 " (let* ((drv (package-derivation store bash))\n"
12356 " (out (derivation->output-path drv))\n"
12357 " (sh (string-append out \"/bin/bash\")))\n"
12358 " (build-expression->derivation store \"sh\"\n"
12359 " `(symlink ,sh %output))))\n"
12360 msgstr ""
12361
12362 #. type: Plain text
12363 #: doc/guix.texi:6683
12364 msgid "Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten as a monadic function:"
12365 msgstr ""
12366
12367 #. type: example
12368 #: doc/guix.texi:6691
12369 #, no-wrap
12370 msgid ""
12371 "(define (sh-symlink)\n"
12372 " ;; Same, but return a monadic value.\n"
12373 " (mlet %store-monad ((drv (package->derivation bash)))\n"
12374 " (gexp->derivation \"sh\"\n"
12375 " #~(symlink (string-append #$drv \"/bin/bash\")\n"
12376 " #$output))))\n"
12377 msgstr ""
12378
12379 #. type: Plain text
12380 #: doc/guix.texi:6698
12381 msgid "There are several things to note in the second version: the @code{store} parameter is now implicit and is ``threaded'' in the calls to the @code{package->derivation} and @code{gexp->derivation} monadic procedures, and the monadic value returned by @code{package->derivation} is @dfn{bound} using @code{mlet} instead of plain @code{let}."
12382 msgstr ""
12383
12384 #. type: Plain text
12385 #: doc/guix.texi:6702
12386 msgid "As it turns out, the call to @code{package->derivation} can even be omitted since it will take place implicitly, as we will see later (@pxref{G-Expressions}):"
12387 msgstr ""
12388
12389 #. type: example
12390 #: doc/guix.texi:6708
12391 #, no-wrap
12392 msgid ""
12393 "(define (sh-symlink)\n"
12394 " (gexp->derivation \"sh\"\n"
12395 " #~(symlink (string-append #$bash \"/bin/bash\")\n"
12396 " #$output)))\n"
12397 msgstr ""
12398
12399 #. type: Plain text
12400 #: doc/guix.texi:6717
12401 msgid "Calling the monadic @code{sh-symlink} has no effect. As someone once said, ``you exit a monad like you exit a building on fire: by running''. So, to exit the monad and get the desired effect, one must use @code{run-with-store}:"
12402 msgstr ""
12403
12404 #. type: example
12405 #: doc/guix.texi:6721
12406 #, no-wrap
12407 msgid ""
12408 "(run-with-store (open-connection) (sh-symlink))\n"
12409 "@result{} /gnu/store/...-sh-symlink\n"
12410 msgstr ""
12411
12412 #. type: Plain text
12413 #: doc/guix.texi:6727
12414 msgid "Note that the @code{(guix monad-repl)} module extends the Guile REPL with new ``meta-commands'' to make it easier to deal with monadic procedures: @code{run-in-store}, and @code{enter-store-monad}. The former is used to ``run'' a single monadic value through the store:"
12415 msgstr ""
12416
12417 #. type: example
12418 #: doc/guix.texi:6731
12419 #, no-wrap
12420 msgid ""
12421 "scheme@@(guile-user)> ,run-in-store (package->derivation hello)\n"
12422 "$1 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>\n"
12423 msgstr ""
12424
12425 #. type: Plain text
12426 #: doc/guix.texi:6735
12427 msgid "The latter enters a recursive REPL, where all the return values are automatically run through the store:"
12428 msgstr ""
12429
12430 #. type: example
12431 #: doc/guix.texi:6744
12432 #, no-wrap
12433 msgid ""
12434 "scheme@@(guile-user)> ,enter-store-monad\n"
12435 "store-monad@@(guile-user) [1]> (package->derivation hello)\n"
12436 "$2 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>\n"
12437 "store-monad@@(guile-user) [1]> (text-file \"foo\" \"Hello!\")\n"
12438 "$3 = \"/gnu/store/@dots{}-foo\"\n"
12439 "store-monad@@(guile-user) [1]> ,q\n"
12440 "scheme@@(guile-user)>\n"
12441 msgstr ""
12442
12443 #. type: Plain text
12444 #: doc/guix.texi:6749
12445 msgid "Note that non-monadic values cannot be returned in the @code{store-monad} REPL."
12446 msgstr ""
12447
12448 #. type: Plain text
12449 #: doc/guix.texi:6752
12450 msgid "The main syntactic forms to deal with monads in general are provided by the @code{(guix monads)} module and are described below."
12451 msgstr ""
12452
12453 #. type: deffn
12454 #: doc/guix.texi:6753
12455 #, no-wrap
12456 msgid "{Scheme Syntax} with-monad @var{monad} @var{body} ..."
12457 msgstr ""
12458
12459 #. type: deffn
12460 #: doc/guix.texi:6756
12461 msgid "Evaluate any @code{>>=} or @code{return} forms in @var{body} as being in @var{monad}."
12462 msgstr ""
12463
12464 #. type: deffn
12465 #: doc/guix.texi:6758
12466 #, no-wrap
12467 msgid "{Scheme Syntax} return @var{val}"
12468 msgstr ""
12469
12470 #. type: deffn
12471 #: doc/guix.texi:6760
12472 msgid "Return a monadic value that encapsulates @var{val}."
12473 msgstr ""
12474
12475 #. type: deffn
12476 #: doc/guix.texi:6762
12477 #, no-wrap
12478 msgid "{Scheme Syntax} >>= @var{mval} @var{mproc} ..."
12479 msgstr ""
12480
12481 #. type: deffn
12482 #: doc/guix.texi:6769
12483 msgid "@dfn{Bind} monadic value @var{mval}, passing its ``contents'' to monadic procedures @var{mproc}@dots{}@footnote{This operation is commonly referred to as ``bind'', but that name denotes an unrelated procedure in Guile. Thus we use this somewhat cryptic symbol inherited from the Haskell language.}. There can be one @var{mproc} or several of them, as in this example:"
12484 msgstr ""
12485
12486 #. type: example
12487 #: doc/guix.texi:6777
12488 #, no-wrap
12489 msgid ""
12490 "(run-with-state\n"
12491 " (with-monad %state-monad\n"
12492 " (>>= (return 1)\n"
12493 " (lambda (x) (return (+ 1 x)))\n"
12494 " (lambda (x) (return (* 2 x)))))\n"
12495 " 'some-state)\n"
12496 "\n"
12497 msgstr ""
12498
12499 #. type: example
12500 #: doc/guix.texi:6780
12501 #, no-wrap
12502 msgid ""
12503 "@result{} 4\n"
12504 "@result{} some-state\n"
12505 msgstr ""
12506
12507 #. type: deffn
12508 #: doc/guix.texi:6783
12509 #, no-wrap
12510 msgid "{Scheme Syntax} mlet @var{monad} ((@var{var} @var{mval}) ...) @"
12511 msgstr ""
12512
12513 #. type: deffn
12514 #: doc/guix.texi:6785
12515 msgid "@var{body} ..."
12516 msgstr ""
12517
12518 #. type: deffnx
12519 #: doc/guix.texi:6785
12520 #, no-wrap
12521 msgid "{Scheme Syntax} mlet* @var{monad} ((@var{var} @var{mval}) ...) @"
12522 msgstr ""
12523
12524 #. type: deffn
12525 #: doc/guix.texi:6797
12526 msgid "@var{body} ... Bind the variables @var{var} to the monadic values @var{mval} in @var{body}, which is a sequence of expressions. As with the bind operator, this can be thought of as ``unpacking'' the raw, non-monadic value ``contained'' in @var{mval} and making @var{var} refer to that raw, non-monadic value within the scope of the @var{body}. The form (@var{var} -> @var{val}) binds @var{var} to the ``normal'' value @var{val}, as per @code{let}. The binding operations occur in sequence from left to right. The last expression of @var{body} must be a monadic expression, and its result will become the result of the @code{mlet} or @code{mlet*} when run in the @var{monad}."
12527 msgstr ""
12528
12529 #. type: deffn
12530 #: doc/guix.texi:6800
12531 msgid "@code{mlet*} is to @code{mlet} what @code{let*} is to @code{let} (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual})."
12532 msgstr ""
12533
12534 #. type: deffn
12535 #: doc/guix.texi:6802
12536 #, no-wrap
12537 msgid "{Scheme System} mbegin @var{monad} @var{mexp} ..."
12538 msgstr ""
12539
12540 #. type: deffn
12541 #: doc/guix.texi:6806
12542 msgid "Bind @var{mexp} and the following monadic expressions in sequence, returning the result of the last expression. Every expression in the sequence must be a monadic expression."
12543 msgstr ""
12544
12545 #. type: deffn
12546 #: doc/guix.texi:6810
12547 msgid "This is akin to @code{mlet}, except that the return values of the monadic expressions are ignored. In that sense, it is analogous to @code{begin}, but applied to monadic expressions."
12548 msgstr ""
12549
12550 #. type: deffn
12551 #: doc/guix.texi:6812
12552 #, no-wrap
12553 msgid "{Scheme System} mwhen @var{condition} @var{mexp0} @var{mexp*} ..."
12554 msgstr ""
12555
12556 #. type: deffn
12557 #: doc/guix.texi:6817
12558 msgid "When @var{condition} is true, evaluate the sequence of monadic expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}. When @var{condition} is false, return @code{*unspecified*} in the current monad. Every expression in the sequence must be a monadic expression."
12559 msgstr ""
12560
12561 #. type: deffn
12562 #: doc/guix.texi:6819
12563 #, no-wrap
12564 msgid "{Scheme System} munless @var{condition} @var{mexp0} @var{mexp*} ..."
12565 msgstr ""
12566
12567 #. type: deffn
12568 #: doc/guix.texi:6824
12569 msgid "When @var{condition} is false, evaluate the sequence of monadic expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}. When @var{condition} is true, return @code{*unspecified*} in the current monad. Every expression in the sequence must be a monadic expression."
12570 msgstr ""
12571
12572 #. type: cindex
12573 #: doc/guix.texi:6826
12574 #, no-wrap
12575 msgid "state monad"
12576 msgstr ""
12577
12578 #. type: Plain text
12579 #: doc/guix.texi:6830
12580 msgid "The @code{(guix monads)} module provides the @dfn{state monad}, which allows an additional value---the state---to be @emph{threaded} through monadic procedure calls."
12581 msgstr ""
12582
12583 #. type: defvr
12584 #: doc/guix.texi:6831
12585 #, no-wrap
12586 msgid "{Scheme Variable} %state-monad"
12587 msgstr ""
12588
12589 #. type: defvr
12590 #: doc/guix.texi:6834
12591 msgid "The state monad. Procedures in the state monad can access and change the state that is threaded."
12592 msgstr ""
12593
12594 #. type: defvr
12595 #: doc/guix.texi:6838
12596 msgid "Consider the example below. The @code{square} procedure returns a value in the state monad. It returns the square of its argument, but also increments the current state value:"
12597 msgstr ""
12598
12599 #. type: example
12600 #: doc/guix.texi:6845
12601 #, no-wrap
12602 msgid ""
12603 "(define (square x)\n"
12604 " (mlet %state-monad ((count (current-state)))\n"
12605 " (mbegin %state-monad\n"
12606 " (set-current-state (+ 1 count))\n"
12607 " (return (* x x)))))\n"
12608 "\n"
12609 msgstr ""
12610
12611 #. type: example
12612 #: doc/guix.texi:6849
12613 #, no-wrap
12614 msgid ""
12615 "(run-with-state (sequence %state-monad (map square (iota 3))) 0)\n"
12616 "@result{} (0 1 4)\n"
12617 "@result{} 3\n"
12618 msgstr ""
12619
12620 #. type: defvr
12621 #: doc/guix.texi:6853
12622 msgid "When ``run'' through @var{%state-monad}, we obtain that additional state value, which is the number of @code{square} calls."
12623 msgstr ""
12624
12625 #. type: deffn
12626 #: doc/guix.texi:6855
12627 #, no-wrap
12628 msgid "{Monadic Procedure} current-state"
12629 msgstr ""
12630
12631 #. type: deffn
12632 #: doc/guix.texi:6857
12633 msgid "Return the current state as a monadic value."
12634 msgstr ""
12635
12636 #. type: deffn
12637 #: doc/guix.texi:6859
12638 #, no-wrap
12639 msgid "{Monadic Procedure} set-current-state @var{value}"
12640 msgstr ""
12641
12642 #. type: deffn
12643 #: doc/guix.texi:6862
12644 msgid "Set the current state to @var{value} and return the previous state as a monadic value."
12645 msgstr ""
12646
12647 #. type: deffn
12648 #: doc/guix.texi:6864
12649 #, no-wrap
12650 msgid "{Monadic Procedure} state-push @var{value}"
12651 msgstr ""
12652
12653 #. type: deffn
12654 #: doc/guix.texi:6867
12655 msgid "Push @var{value} to the current state, which is assumed to be a list, and return the previous state as a monadic value."
12656 msgstr ""
12657
12658 #. type: deffn
12659 #: doc/guix.texi:6869
12660 #, no-wrap
12661 msgid "{Monadic Procedure} state-pop"
12662 msgstr ""
12663
12664 #. type: deffn
12665 #: doc/guix.texi:6872
12666 msgid "Pop a value from the current state and return it as a monadic value. The state is assumed to be a list."
12667 msgstr ""
12668
12669 #. type: deffn
12670 #: doc/guix.texi:6874
12671 #, no-wrap
12672 msgid "{Scheme Procedure} run-with-state @var{mval} [@var{state}]"
12673 msgstr ""
12674
12675 #. type: deffn
12676 #: doc/guix.texi:6877
12677 msgid "Run monadic value @var{mval} starting with @var{state} as the initial state. Return two values: the resulting value, and the resulting state."
12678 msgstr ""
12679
12680 #. type: Plain text
12681 #: doc/guix.texi:6881
12682 msgid "The main interface to the store monad, provided by the @code{(guix store)} module, is as follows."
12683 msgstr ""
12684
12685 #. type: defvr
12686 #: doc/guix.texi:6882
12687 #, no-wrap
12688 msgid "{Scheme Variable} %store-monad"
12689 msgstr ""
12690
12691 #. type: defvr
12692 #: doc/guix.texi:6884
12693 msgid "The store monad---an alias for @var{%state-monad}."
12694 msgstr ""
12695
12696 #. type: defvr
12697 #: doc/guix.texi:6888
12698 msgid "Values in the store monad encapsulate accesses to the store. When its effect is needed, a value of the store monad must be ``evaluated'' by passing it to the @code{run-with-store} procedure (see below.)"
12699 msgstr ""
12700
12701 #. type: deffn
12702 #: doc/guix.texi:6890
12703 #, no-wrap
12704 msgid "{Scheme Procedure} run-with-store @var{store} @var{mval} [#:guile-for-build] [#:system (%current-system)]"
12705 msgstr ""
12706
12707 #. type: deffn
12708 #: doc/guix.texi:6893
12709 msgid "Run @var{mval}, a monadic value in the store monad, in @var{store}, an open store connection."
12710 msgstr ""
12711
12712 #. type: deffn
12713 #: doc/guix.texi:6895
12714 #, no-wrap
12715 msgid "{Monadic Procedure} text-file @var{name} @var{text} [@var{references}]"
12716 msgstr ""
12717
12718 #. type: deffn
12719 #: doc/guix.texi:6899
12720 msgid "Return as a monadic value the absolute file name in the store of the file containing @var{text}, a string. @var{references} is a list of store items that the resulting text file refers to; it defaults to the empty list."
12721 msgstr ""
12722
12723 #. type: deffn
12724 #: doc/guix.texi:6901
12725 #, no-wrap
12726 msgid "{Monadic Procedure} binary-file @var{name} @var{data} [@var{references}]"
12727 msgstr ""
12728
12729 #. type: deffn
12730 #: doc/guix.texi:6905
12731 msgid "Return as a monadic value the absolute file name in the store of the file containing @var{data}, a bytevector. @var{references} is a list of store items that the resulting binary file refers to; it defaults to the empty list."
12732 msgstr ""
12733
12734 #. type: deffn
12735 #: doc/guix.texi:6907
12736 #, no-wrap
12737 msgid "{Monadic Procedure} interned-file @var{file} [@var{name}] @"
12738 msgstr ""
12739
12740 #. type: deffn
12741 #: doc/guix.texi:6912
12742 msgid "[#:recursive? #t] [#:select? (const #t)] Return the name of @var{file} once interned in the store. Use @var{name} as its store name, or the basename of @var{file} if @var{name} is omitted."
12743 msgstr ""
12744
12745 #. type: deffn
12746 #: doc/guix.texi:6916 doc/guix.texi:7329
12747 msgid "When @var{recursive?} is true, the contents of @var{file} are added recursively; if @var{file} designates a flat file and @var{recursive?} is true, its contents are added, and its permission bits are kept."
12748 msgstr ""
12749
12750 #. type: deffn
12751 #: doc/guix.texi:6921 doc/guix.texi:7334
12752 msgid "When @var{recursive?} is true, call @code{(@var{select?} @var{file} @var{stat})} for each directory entry, where @var{file} is the entry's absolute file name and @var{stat} is the result of @code{lstat}; exclude entries for which @var{select?} does not return true."
12753 msgstr ""
12754
12755 #. type: deffn
12756 #: doc/guix.texi:6923
12757 msgid "The example below adds a file to the store, under two different names:"
12758 msgstr ""
12759
12760 #. type: example
12761 #: doc/guix.texi:6929
12762 #, no-wrap
12763 msgid ""
12764 "(run-with-store (open-connection)\n"
12765 " (mlet %store-monad ((a (interned-file \"README\"))\n"
12766 " (b (interned-file \"README\" \"LEGU-MIN\")))\n"
12767 " (return (list a b))))\n"
12768 "\n"
12769 msgstr ""
12770
12771 #. type: example
12772 #: doc/guix.texi:6931
12773 #, no-wrap
12774 msgid "@result{} (\"/gnu/store/rwm@dots{}-README\" \"/gnu/store/44i@dots{}-LEGU-MIN\")\n"
12775 msgstr ""
12776
12777 #. type: Plain text
12778 #: doc/guix.texi:6937
12779 msgid "The @code{(guix packages)} module exports the following package-related monadic procedures:"
12780 msgstr ""
12781
12782 #. type: deffn
12783 #: doc/guix.texi:6938
12784 #, no-wrap
12785 msgid "{Monadic Procedure} package-file @var{package} [@var{file}] @"
12786 msgstr ""
12787
12788 #. type: deffn
12789 #: doc/guix.texi:6946
12790 msgid "[#:system (%current-system)] [#:target #f] @ [#:output \"out\"] Return as a monadic value in the absolute file name of @var{file} within the @var{output} directory of @var{package}. When @var{file} is omitted, return the name of the @var{output} directory of @var{package}. When @var{target} is true, use it as a cross-compilation target triplet."
12791 msgstr ""
12792
12793 #. type: deffn
12794 #: doc/guix.texi:6948
12795 #, no-wrap
12796 msgid "{Monadic Procedure} package->derivation @var{package} [@var{system}]"
12797 msgstr ""
12798
12799 #. type: deffnx
12800 #: doc/guix.texi:6949
12801 #, no-wrap
12802 msgid "{Monadic Procedure} package->cross-derivation @var{package} @"
12803 msgstr ""
12804
12805 #. type: deffn
12806 #: doc/guix.texi:6953
12807 msgid "@var{target} [@var{system}] Monadic version of @code{package-derivation} and @code{package-cross-derivation} (@pxref{Defining Packages})."
12808 msgstr ""
12809
12810 #. type: cindex
12811 #: doc/guix.texi:6959
12812 #, no-wrap
12813 msgid "G-expression"
12814 msgstr ""
12815
12816 #. type: cindex
12817 #: doc/guix.texi:6960
12818 #, no-wrap
12819 msgid "build code quoting"
12820 msgstr ""
12821
12822 #. type: Plain text
12823 #: doc/guix.texi:6966
12824 msgid "So we have ``derivations'', which represent a sequence of build actions to be performed to produce an item in the store (@pxref{Derivations}). These build actions are performed when asking the daemon to actually build the derivations; they are run by the daemon in a container (@pxref{Invoking guix-daemon})."
12825 msgstr ""
12826
12827 #. type: cindex
12828 #: doc/guix.texi:6967
12829 #, no-wrap
12830 msgid "strata of code"
12831 msgstr ""
12832
12833 #. type: Plain text
12834 #: doc/guix.texi:6979
12835 msgid "It should come as no surprise that we like to write these build actions in Scheme. When we do that, we end up with two @dfn{strata} of Scheme code@footnote{The term @dfn{stratum} in this context was coined by Manuel Serrano et al.@: in the context of their work on Hop. Oleg Kiselyov, who has written insightful @url{http://okmij.org/ftp/meta-programming/#meta-scheme, essays and code on this topic}, refers to this kind of code generation as @dfn{staging}.}: the ``host code''---code that defines packages, talks to the daemon, etc.---and the ``build code''---code that actually performs build actions, such as making directories, invoking @command{make}, etc."
12836 msgstr ""
12837
12838 #. type: Plain text
12839 #: doc/guix.texi:6986
12840 msgid "To describe a derivation and its build actions, one typically needs to embed build code inside host code. It boils down to manipulating build code as data, and the homoiconicity of Scheme---code has a direct representation as data---comes in handy for that. But we need more than the normal @code{quasiquote} mechanism in Scheme to construct build expressions."
12841 msgstr ""
12842
12843 #. type: Plain text
12844 #: doc/guix.texi:6995
12845 msgid "The @code{(guix gexp)} module implements @dfn{G-expressions}, a form of S-expressions adapted to build expressions. G-expressions, or @dfn{gexps}, consist essentially of three syntactic forms: @code{gexp}, @code{ungexp}, and @code{ungexp-splicing} (or simply: @code{#~}, @code{#$}, and @code{#$@@}), which are comparable to @code{quasiquote}, @code{unquote}, and @code{unquote-splicing}, respectively (@pxref{Expression Syntax, @code{quasiquote},, guile, GNU Guile Reference Manual}). However, there are major differences:"
12846 msgstr ""
12847
12848 #. type: itemize
12849 #: doc/guix.texi:7000
12850 msgid "Gexps are meant to be written to a file and run or manipulated by other processes."
12851 msgstr ""
12852
12853 #. type: itemize
12854 #: doc/guix.texi:7005
12855 msgid "When a high-level object such as a package or derivation is unquoted inside a gexp, the result is as if its output file name had been introduced."
12856 msgstr ""
12857
12858 #. type: itemize
12859 #: doc/guix.texi:7010
12860 msgid "Gexps carry information about the packages or derivations they refer to, and these dependencies are automatically added as inputs to the build processes that use them."
12861 msgstr ""
12862
12863 #. type: cindex
12864 #: doc/guix.texi:7012 doc/guix.texi:7516
12865 #, no-wrap
12866 msgid "lowering, of high-level objects in gexps"
12867 msgstr ""
12868
12869 #. type: Plain text
12870 #: doc/guix.texi:7022
12871 msgid "This mechanism is not limited to package and derivation objects: @dfn{compilers} able to ``lower'' other high-level objects to derivations or files in the store can be defined, such that these objects can also be inserted into gexps. For example, a useful type of high-level objects that can be inserted in a gexp is ``file-like objects'', which make it easy to add files to the store and to refer to them in derivations and such (see @code{local-file} and @code{plain-file} below.)"
12872 msgstr ""
12873
12874 #. type: Plain text
12875 #: doc/guix.texi:7024
12876 msgid "To illustrate the idea, here is an example of a gexp:"
12877 msgstr ""
12878
12879 #. type: example
12880 #: doc/guix.texi:7032
12881 #, no-wrap
12882 msgid ""
12883 "(define build-exp\n"
12884 " #~(begin\n"
12885 " (mkdir #$output)\n"
12886 " (chdir #$output)\n"
12887 " (symlink (string-append #$coreutils \"/bin/ls\")\n"
12888 " \"list-files\")))\n"
12889 msgstr ""
12890
12891 #. type: Plain text
12892 #: doc/guix.texi:7037
12893 msgid "This gexp can be passed to @code{gexp->derivation}; we obtain a derivation that builds a directory containing exactly one symlink to @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls}:"
12894 msgstr ""
12895
12896 #. type: example
12897 #: doc/guix.texi:7040
12898 #, no-wrap
12899 msgid "(gexp->derivation \"the-thing\" build-exp)\n"
12900 msgstr ""
12901
12902 #. type: Plain text
12903 #: doc/guix.texi:7048
12904 msgid "As one would expect, the @code{\"/gnu/store/@dots{}-coreutils-8.22\"} string is substituted to the reference to the @var{coreutils} package in the actual build code, and @var{coreutils} is automatically made an input to the derivation. Likewise, @code{#$output} (equivalent to @code{(ungexp output)}) is replaced by a string containing the directory name of the output of the derivation."
12905 msgstr ""
12906
12907 #. type: cindex
12908 #: doc/guix.texi:7049
12909 #, no-wrap
12910 msgid "cross compilation"
12911 msgstr ""
12912
12913 #. type: Plain text
12914 #: doc/guix.texi:7055
12915 msgid "In a cross-compilation context, it is useful to distinguish between references to the @emph{native} build of a package---that can run on the host---versus references to cross builds of a package. To that end, the @code{#+} plays the same role as @code{#$}, but is a reference to a native package build:"
12916 msgstr ""
12917
12918 #. type: example
12919 #: doc/guix.texi:7065
12920 #, no-wrap
12921 msgid ""
12922 "(gexp->derivation \"vi\"\n"
12923 " #~(begin\n"
12924 " (mkdir #$output)\n"
12925 " (system* (string-append #+coreutils \"/bin/ln\")\n"
12926 " \"-s\"\n"
12927 " (string-append #$emacs \"/bin/emacs\")\n"
12928 " (string-append #$output \"/bin/vi\")))\n"
12929 " #:target \"mips64el-linux-gnu\")\n"
12930 msgstr ""
12931
12932 #. type: Plain text
12933 #: doc/guix.texi:7071
12934 msgid "In the example above, the native build of @var{coreutils} is used, so that @command{ln} can actually run on the host; but then the cross-compiled build of @var{emacs} is referenced."
12935 msgstr ""
12936
12937 #. type: cindex
12938 #: doc/guix.texi:7072
12939 #, no-wrap
12940 msgid "imported modules, for gexps"
12941 msgstr ""
12942
12943 #. type: findex
12944 #: doc/guix.texi:7073
12945 #, no-wrap
12946 msgid "with-imported-modules"
12947 msgstr ""
12948
12949 #. type: Plain text
12950 #: doc/guix.texi:7078
12951 msgid "Another gexp feature is @dfn{imported modules}: sometimes you want to be able to use certain Guile modules from the ``host environment'' in the gexp, so those modules should be imported in the ``build environment''. The @code{with-imported-modules} form allows you to express that:"
12952 msgstr ""
12953
12954 #. type: example
12955 #: doc/guix.texi:7089
12956 #, no-wrap
12957 msgid ""
12958 "(let ((build (with-imported-modules '((guix build utils))\n"
12959 " #~(begin\n"
12960 " (use-modules (guix build utils))\n"
12961 " (mkdir-p (string-append #$output \"/bin\"))))))\n"
12962 " (gexp->derivation \"empty-dir\"\n"
12963 " #~(begin\n"
12964 " #$build\n"
12965 " (display \"success!\\n\")\n"
12966 " #t)))\n"
12967 msgstr ""
12968
12969 #. type: Plain text
12970 #: doc/guix.texi:7095
12971 msgid "In this example, the @code{(guix build utils)} module is automatically pulled into the isolated build environment of our gexp, such that @code{(use-modules (guix build utils))} works as expected."
12972 msgstr ""
12973
12974 #. type: cindex
12975 #: doc/guix.texi:7096
12976 #, no-wrap
12977 msgid "module closure"
12978 msgstr ""
12979
12980 #. type: findex
12981 #: doc/guix.texi:7097
12982 #, no-wrap
12983 msgid "source-module-closure"
12984 msgstr ""
12985
12986 #. type: Plain text
12987 #: doc/guix.texi:7104
12988 msgid "Usually you want the @emph{closure} of the module to be imported---i.e., the module itself and all the modules it depends on---rather than just the module; failing to do that, attempts to use the module will fail because of missing dependent modules. The @code{source-module-closure} procedure computes the closure of a module by looking at its source file headers, which comes in handy in this case:"
12989 msgstr ""
12990
12991 #. type: example
12992 #: doc/guix.texi:7107
12993 #, no-wrap
12994 msgid ""
12995 "(use-modules (guix modules)) ;for 'source-module-closure'\n"
12996 "\n"
12997 msgstr ""
12998
12999 #. type: example
13000 #: doc/guix.texi:7116
13001 #, no-wrap
13002 msgid ""
13003 "(with-imported-modules (source-module-closure\n"
13004 " '((guix build utils)\n"
13005 " (gnu build vm)))\n"
13006 " (gexp->derivation \"something-with-vms\"\n"
13007 " #~(begin\n"
13008 " (use-modules (guix build utils)\n"
13009 " (gnu build vm))\n"
13010 " @dots{})))\n"
13011 msgstr ""
13012
13013 #. type: cindex
13014 #: doc/guix.texi:7118
13015 #, no-wrap
13016 msgid "extensions, for gexps"
13017 msgstr ""
13018
13019 #. type: findex
13020 #: doc/guix.texi:7119
13021 #, no-wrap
13022 msgid "with-extensions"
13023 msgstr ""
13024
13025 #. type: Plain text
13026 #: doc/guix.texi:7124
13027 msgid "In the same vein, sometimes you want to import not just pure-Scheme modules, but also ``extensions'' such as Guile bindings to C libraries or other ``full-blown'' packages. Say you need the @code{guile-json} package available on the build side, here's how you would do it:"
13028 msgstr ""
13029
13030 #. type: example
13031 #: doc/guix.texi:7127
13032 #, no-wrap
13033 msgid ""
13034 "(use-modules (gnu packages guile)) ;for 'guile-json'\n"
13035 "\n"
13036 msgstr ""
13037
13038 #. type: example
13039 #: doc/guix.texi:7133
13040 #, no-wrap
13041 msgid ""
13042 "(with-extensions (list guile-json)\n"
13043 " (gexp->derivation \"something-with-json\"\n"
13044 " #~(begin\n"
13045 " (use-modules (json))\n"
13046 " @dots{})))\n"
13047 msgstr ""
13048
13049 #. type: Plain text
13050 #: doc/guix.texi:7136
13051 msgid "The syntactic form to construct gexps is summarized below."
13052 msgstr ""
13053
13054 #. type: deffn
13055 #: doc/guix.texi:7137
13056 #, no-wrap
13057 msgid "{Scheme Syntax} #~@var{exp}"
13058 msgstr ""
13059
13060 #. type: deffnx
13061 #: doc/guix.texi:7138
13062 #, no-wrap
13063 msgid "{Scheme Syntax} (gexp @var{exp})"
13064 msgstr ""
13065
13066 #. type: deffn
13067 #: doc/guix.texi:7141
13068 msgid "Return a G-expression containing @var{exp}. @var{exp} may contain one or more of the following forms:"
13069 msgstr ""
13070
13071 #. type: item
13072 #: doc/guix.texi:7143
13073 #, no-wrap
13074 msgid "#$@var{obj}"
13075 msgstr ""
13076
13077 #. type: itemx
13078 #: doc/guix.texi:7144
13079 #, no-wrap
13080 msgid "(ungexp @var{obj})"
13081 msgstr ""
13082
13083 #. type: table
13084 #: doc/guix.texi:7149
13085 msgid "Introduce a reference to @var{obj}. @var{obj} may have one of the supported types, for example a package or a derivation, in which case the @code{ungexp} form is replaced by its output file name---e.g., @code{\"/gnu/store/@dots{}-coreutils-8.22}."
13086 msgstr ""
13087
13088 #. type: table
13089 #: doc/guix.texi:7152
13090 msgid "If @var{obj} is a list, it is traversed and references to supported objects are substituted similarly."
13091 msgstr ""
13092
13093 #. type: table
13094 #: doc/guix.texi:7155
13095 msgid "If @var{obj} is another gexp, its contents are inserted and its dependencies are added to those of the containing gexp."
13096 msgstr ""
13097
13098 #. type: table
13099 #: doc/guix.texi:7157
13100 msgid "If @var{obj} is another kind of object, it is inserted as is."
13101 msgstr ""
13102
13103 #. type: item
13104 #: doc/guix.texi:7158
13105 #, no-wrap
13106 msgid "#$@var{obj}:@var{output}"
13107 msgstr ""
13108
13109 #. type: itemx
13110 #: doc/guix.texi:7159
13111 #, no-wrap
13112 msgid "(ungexp @var{obj} @var{output})"
13113 msgstr ""
13114
13115 #. type: table
13116 #: doc/guix.texi:7163
13117 msgid "This is like the form above, but referring explicitly to the @var{output} of @var{obj}---this is useful when @var{obj} produces multiple outputs (@pxref{Packages with Multiple Outputs})."
13118 msgstr ""
13119
13120 #. type: item
13121 #: doc/guix.texi:7164
13122 #, no-wrap
13123 msgid "#+@var{obj}"
13124 msgstr ""
13125
13126 #. type: itemx
13127 #: doc/guix.texi:7165
13128 #, no-wrap
13129 msgid "#+@var{obj}:output"
13130 msgstr ""
13131
13132 #. type: itemx
13133 #: doc/guix.texi:7166
13134 #, no-wrap
13135 msgid "(ungexp-native @var{obj})"
13136 msgstr ""
13137
13138 #. type: itemx
13139 #: doc/guix.texi:7167
13140 #, no-wrap
13141 msgid "(ungexp-native @var{obj} @var{output})"
13142 msgstr ""
13143
13144 #. type: table
13145 #: doc/guix.texi:7170
13146 msgid "Same as @code{ungexp}, but produces a reference to the @emph{native} build of @var{obj} when used in a cross compilation context."
13147 msgstr ""
13148
13149 #. type: item
13150 #: doc/guix.texi:7171
13151 #, no-wrap
13152 msgid "#$output[:@var{output}]"
13153 msgstr ""
13154
13155 #. type: itemx
13156 #: doc/guix.texi:7172
13157 #, no-wrap
13158 msgid "(ungexp output [@var{output}])"
13159 msgstr ""
13160
13161 #. type: table
13162 #: doc/guix.texi:7175
13163 msgid "Insert a reference to derivation output @var{output}, or to the main output when @var{output} is omitted."
13164 msgstr ""
13165
13166 #. type: table
13167 #: doc/guix.texi:7177
13168 msgid "This only makes sense for gexps passed to @code{gexp->derivation}."
13169 msgstr ""
13170
13171 #. type: item
13172 #: doc/guix.texi:7178
13173 #, no-wrap
13174 msgid "#$@@@var{lst}"
13175 msgstr ""
13176
13177 #. type: itemx
13178 #: doc/guix.texi:7179
13179 #, no-wrap
13180 msgid "(ungexp-splicing @var{lst})"
13181 msgstr ""
13182
13183 #. type: table
13184 #: doc/guix.texi:7182
13185 msgid "Like the above, but splices the contents of @var{lst} inside the containing list."
13186 msgstr ""
13187
13188 #. type: item
13189 #: doc/guix.texi:7183
13190 #, no-wrap
13191 msgid "#+@@@var{lst}"
13192 msgstr ""
13193
13194 #. type: itemx
13195 #: doc/guix.texi:7184
13196 #, no-wrap
13197 msgid "(ungexp-native-splicing @var{lst})"
13198 msgstr ""
13199
13200 #. type: table
13201 #: doc/guix.texi:7187
13202 msgid "Like the above, but refers to native builds of the objects listed in @var{lst}."
13203 msgstr ""
13204
13205 #. type: deffn
13206 #: doc/guix.texi:7192
13207 msgid "G-expressions created by @code{gexp} or @code{#~} are run-time objects of the @code{gexp?} type (see below.)"
13208 msgstr ""
13209
13210 #. type: deffn
13211 #: doc/guix.texi:7194
13212 #, no-wrap
13213 msgid "{Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{}"
13214 msgstr ""
13215
13216 #. type: deffn
13217 #: doc/guix.texi:7197
13218 msgid "Mark the gexps defined in @var{body}@dots{} as requiring @var{modules} in their execution environment."
13219 msgstr ""
13220
13221 #. type: deffn
13222 #: doc/guix.texi:7201
13223 msgid "Each item in @var{modules} can be the name of a module, such as @code{(guix build utils)}, or it can be a module name, followed by an arrow, followed by a file-like object:"
13224 msgstr ""
13225
13226 #. type: example
13227 #: doc/guix.texi:7207
13228 #, no-wrap
13229 msgid ""
13230 "`((guix build utils)\n"
13231 " (guix gcrypt)\n"
13232 " ((guix config) => ,(scheme-file \"config.scm\"\n"
13233 " #~(define-module @dots{}))))\n"
13234 msgstr ""
13235
13236 #. type: deffn
13237 #: doc/guix.texi:7212
13238 msgid "In the example above, the first two modules are taken from the search path, and the last one is created from the given file-like object."
13239 msgstr ""
13240
13241 #. type: deffn
13242 #: doc/guix.texi:7216
13243 msgid "This form has @emph{lexical} scope: it has an effect on the gexps directly defined in @var{body}@dots{}, but not on those defined, say, in procedures called from @var{body}@dots{}."
13244 msgstr ""
13245
13246 #. type: deffn
13247 #: doc/guix.texi:7218
13248 #, no-wrap
13249 msgid "{Scheme Syntax} with-extensions @var{extensions} @var{body}@dots{}"
13250 msgstr ""
13251
13252 #. type: deffn
13253 #: doc/guix.texi:7223
13254 msgid "Mark the gexps defined in @var{body}@dots{} as requiring @var{extensions} in their build and execution environment. @var{extensions} is typically a list of package objects such as those defined in the @code{(gnu packages guile)} module."
13255 msgstr ""
13256
13257 #. type: deffn
13258 #: doc/guix.texi:7228
13259 msgid "Concretely, the packages listed in @var{extensions} are added to the load path while compiling imported modules in @var{body}@dots{}; they are also added to the load path of the gexp returned by @var{body}@dots{}."
13260 msgstr ""
13261
13262 #. type: deffn
13263 #: doc/guix.texi:7230
13264 #, no-wrap
13265 msgid "{Scheme Procedure} gexp? @var{obj}"
13266 msgstr ""
13267
13268 #. type: deffn
13269 #: doc/guix.texi:7232
13270 msgid "Return @code{#t} if @var{obj} is a G-expression."
13271 msgstr ""
13272
13273 #. type: Plain text
13274 #: doc/guix.texi:7238
13275 msgid "G-expressions are meant to be written to disk, either as code building some derivation, or as plain files in the store. The monadic procedures below allow you to do that (@pxref{The Store Monad}, for more information about monads.)"
13276 msgstr ""
13277
13278 #. type: deffn
13279 #: doc/guix.texi:7239
13280 #, no-wrap
13281 msgid "{Monadic Procedure} gexp->derivation @var{name} @var{exp} @"
13282 msgstr ""
13283
13284 #. type: deffn
13285 #: doc/guix.texi:7257
13286 msgid "[#:system (%current-system)] [#:target #f] [#:graft? #t] @ [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:module-path @var{%load-path}] @ [#:effective-version \"2.2\"] @ [#:references-graphs #f] [#:allowed-references #f] @ [#:disallowed-references #f] @ [#:leaked-env-vars #f] @ [#:script-name (string-append @var{name} \"-builder\")] @ [#:deprecation-warnings #f] @ [#:local-build? #f] [#:substitutable? #t] @ [#:properties '()] [#:guile-for-build #f] Return a derivation @var{name} that runs @var{exp} (a gexp) with @var{guile-for-build} (a derivation) on @var{system}; @var{exp} is stored in a file called @var{script-name}. When @var{target} is true, it is used as the cross-compilation target triplet for packages referred to by @var{exp}."
13287 msgstr ""
13288
13289 #. type: deffn
13290 #: doc/guix.texi:7265
13291 msgid "@var{modules} is deprecated in favor of @code{with-imported-modules}. Its meaning is to make @var{modules} available in the evaluation context of @var{exp}; @var{modules} is a list of names of Guile modules searched in @var{module-path} to be copied in the store, compiled, and made available in the load path during the execution of @var{exp}---e.g., @code{((guix build utils) (guix build gnu-build-system))}."
13292 msgstr ""
13293
13294 #. type: deffn
13295 #: doc/guix.texi:7268
13296 msgid "@var{effective-version} determines the string to use when adding extensions of @var{exp} (see @code{with-extensions}) to the search path---e.g., @code{\"2.2\"}."
13297 msgstr ""
13298
13299 #. type: deffn
13300 #: doc/guix.texi:7271
13301 msgid "@var{graft?} determines whether packages referred to by @var{exp} should be grafted when applicable."
13302 msgstr ""
13303
13304 #. type: deffn
13305 #: doc/guix.texi:7274
13306 msgid "When @var{references-graphs} is true, it must be a list of tuples of one of the following forms:"
13307 msgstr ""
13308
13309 #. type: example
13310 #: doc/guix.texi:7281
13311 #, no-wrap
13312 msgid ""
13313 "(@var{file-name} @var{package})\n"
13314 "(@var{file-name} @var{package} @var{output})\n"
13315 "(@var{file-name} @var{derivation})\n"
13316 "(@var{file-name} @var{derivation} @var{output})\n"
13317 "(@var{file-name} @var{store-item})\n"
13318 msgstr ""
13319
13320 #. type: deffn
13321 #: doc/guix.texi:7287
13322 msgid "The right-hand-side of each element of @var{references-graphs} is automatically made an input of the build process of @var{exp}. In the build environment, each @var{file-name} contains the reference graph of the corresponding item, in a simple text format."
13323 msgstr ""
13324
13325 #. type: deffn
13326 #: doc/guix.texi:7293
13327 msgid "@var{allowed-references} must be either @code{#f} or a list of output names and packages. In the latter case, the list denotes store items that the result is allowed to refer to. Any reference to another store item will lead to a build error. Similarly for @var{disallowed-references}, which can list items that must not be referenced by the outputs."
13328 msgstr ""
13329
13330 #. type: deffn
13331 #: doc/guix.texi:7296
13332 msgid "@var{deprecation-warnings} determines whether to show deprecation warnings while compiling modules. It can be @code{#f}, @code{#t}, or @code{'detailed}."
13333 msgstr ""
13334
13335 #. type: deffn
13336 #: doc/guix.texi:7298
13337 msgid "The other arguments are as for @code{derivation} (@pxref{Derivations})."
13338 msgstr ""
13339
13340 #. type: cindex
13341 #: doc/guix.texi:7300
13342 #, no-wrap
13343 msgid "file-like objects"
13344 msgstr ""
13345
13346 #. type: Plain text
13347 #: doc/guix.texi:7305
13348 msgid "The @code{local-file}, @code{plain-file}, @code{computed-file}, @code{program-file}, and @code{scheme-file} procedures below return @dfn{file-like objects}. That is, when unquoted in a G-expression, these objects lead to a file in the store. Consider this G-expression:"
13349 msgstr ""
13350
13351 #. type: example
13352 #: doc/guix.texi:7309
13353 #, no-wrap
13354 msgid ""
13355 "#~(system* #$(file-append glibc \"/sbin/nscd\") \"-f\"\n"
13356 " #$(local-file \"/tmp/my-nscd.conf\"))\n"
13357 msgstr ""
13358
13359 #. type: Plain text
13360 #: doc/guix.texi:7318
13361 msgid "The effect here is to ``intern'' @file{/tmp/my-nscd.conf} by copying it to the store. Once expanded, for instance @i{via} @code{gexp->derivation}, the G-expression refers to that copy under @file{/gnu/store}; thus, modifying or removing the file in @file{/tmp} does not have any effect on what the G-expression does. @code{plain-file} can be used similarly; it differs in that the file content is directly passed as a string."
13362 msgstr ""
13363
13364 #. type: deffn
13365 #: doc/guix.texi:7319
13366 #, no-wrap
13367 msgid "{Scheme Procedure} local-file @var{file} [@var{name}] @"
13368 msgstr ""
13369
13370 #. type: deffn
13371 #: doc/guix.texi:7325
13372 msgid "[#:recursive? #f] [#:select? (const #t)] Return an object representing local file @var{file} to add to the store; this object can be used in a gexp. If @var{file} is a relative file name, it is looked up relative to the source file where this form appears. @var{file} will be added to the store under @var{name}--by default the base name of @var{file}."
13373 msgstr ""
13374
13375 #. type: deffn
13376 #: doc/guix.texi:7337
13377 msgid "This is the declarative counterpart of the @code{interned-file} monadic procedure (@pxref{The Store Monad, @code{interned-file}})."
13378 msgstr ""
13379
13380 #. type: deffn
13381 #: doc/guix.texi:7339
13382 #, no-wrap
13383 msgid "{Scheme Procedure} plain-file @var{name} @var{content}"
13384 msgstr ""
13385
13386 #. type: deffn
13387 #: doc/guix.texi:7342
13388 msgid "Return an object representing a text file called @var{name} with the given @var{content} (a string or a bytevector) to be added to the store."
13389 msgstr ""
13390
13391 #. type: deffn
13392 #: doc/guix.texi:7344
13393 msgid "This is the declarative counterpart of @code{text-file}."
13394 msgstr ""
13395
13396 #. type: deffn
13397 #: doc/guix.texi:7346
13398 #, no-wrap
13399 msgid "{Scheme Procedure} computed-file @var{name} @var{gexp} @"
13400 msgstr ""
13401
13402 #. type: deffn
13403 #: doc/guix.texi:7351
13404 msgid "[#:options '(#:local-build? #t)] Return an object representing the store item @var{name}, a file or directory computed by @var{gexp}. @var{options} is a list of additional arguments to pass to @code{gexp->derivation}."
13405 msgstr ""
13406
13407 #. type: deffn
13408 #: doc/guix.texi:7353
13409 msgid "This is the declarative counterpart of @code{gexp->derivation}."
13410 msgstr ""
13411
13412 #. type: deffn
13413 #: doc/guix.texi:7355
13414 #, no-wrap
13415 msgid "{Monadic Procedure} gexp->script @var{name} @var{exp} @"
13416 msgstr ""
13417
13418 #. type: deffn
13419 #: doc/guix.texi:7360
13420 msgid "[#:guile (default-guile)] [#:module-path %load-path] Return an executable script @var{name} that runs @var{exp} using @var{guile}, with @var{exp}'s imported modules in its search path. Look up @var{exp}'s modules in @var{module-path}."
13421 msgstr ""
13422
13423 #. type: deffn
13424 #: doc/guix.texi:7363
13425 msgid "The example below builds a script that simply invokes the @command{ls} command:"
13426 msgstr ""
13427
13428 #. type: example
13429 #: doc/guix.texi:7366
13430 #, no-wrap
13431 msgid ""
13432 "(use-modules (guix gexp) (gnu packages base))\n"
13433 "\n"
13434 msgstr ""
13435
13436 #. type: example
13437 #: doc/guix.texi:7370
13438 #, no-wrap
13439 msgid ""
13440 "(gexp->script \"list-files\"\n"
13441 " #~(execl #$(file-append coreutils \"/bin/ls\")\n"
13442 " \"ls\"))\n"
13443 msgstr ""
13444
13445 #. type: deffn
13446 #: doc/guix.texi:7375
13447 msgid "When ``running'' it through the store (@pxref{The Store Monad, @code{run-with-store}}), we obtain a derivation that produces an executable file @file{/gnu/store/@dots{}-list-files} along these lines:"
13448 msgstr ""
13449
13450 #. type: example
13451 #: doc/guix.texi:7380
13452 #, no-wrap
13453 msgid ""
13454 "#!/gnu/store/@dots{}-guile-2.0.11/bin/guile -ds\n"
13455 "!#\n"
13456 "(execl \"/gnu/store/@dots{}-coreutils-8.22\"/bin/ls\" \"ls\")\n"
13457 msgstr ""
13458
13459 #. type: deffn
13460 #: doc/guix.texi:7383
13461 #, no-wrap
13462 msgid "{Scheme Procedure} program-file @var{name} @var{exp} @"
13463 msgstr ""
13464
13465 #. type: deffn
13466 #: doc/guix.texi:7388
13467 msgid "[#:guile #f] [#:module-path %load-path] Return an object representing the executable store item @var{name} that runs @var{gexp}. @var{guile} is the Guile package used to execute that script. Imported modules of @var{gexp} are looked up in @var{module-path}."
13468 msgstr ""
13469
13470 #. type: deffn
13471 #: doc/guix.texi:7390
13472 msgid "This is the declarative counterpart of @code{gexp->script}."
13473 msgstr ""
13474
13475 #. type: deffn
13476 #: doc/guix.texi:7392
13477 #, no-wrap
13478 msgid "{Monadic Procedure} gexp->file @var{name} @var{exp} @"
13479 msgstr ""
13480
13481 #. type: deffn
13482 #: doc/guix.texi:7399
13483 msgid "[#:set-load-path? #t] [#:module-path %load-path] @ [#:splice? #f] @ [#:guile (default-guile)] Return a derivation that builds a file @var{name} containing @var{exp}. When @var{splice?} is true, @var{exp} is considered to be a list of expressions that will be spliced in the resulting file."
13484 msgstr ""
13485
13486 #. type: deffn
13487 #: doc/guix.texi:7404
13488 msgid "When @var{set-load-path?} is true, emit code in the resulting file to set @code{%load-path} and @code{%load-compiled-path} to honor @var{exp}'s imported modules. Look up @var{exp}'s modules in @var{module-path}."
13489 msgstr ""
13490
13491 #. type: deffn
13492 #: doc/guix.texi:7407
13493 msgid "The resulting file holds references to all the dependencies of @var{exp} or a subset thereof."
13494 msgstr ""
13495
13496 #. type: deffn
13497 #: doc/guix.texi:7409
13498 #, no-wrap
13499 msgid "{Scheme Procedure} scheme-file @var{name} @var{exp} [#:splice? #f]"
13500 msgstr ""
13501
13502 #. type: deffn
13503 #: doc/guix.texi:7412
13504 msgid "Return an object representing the Scheme file @var{name} that contains @var{exp}."
13505 msgstr ""
13506
13507 #. type: deffn
13508 #: doc/guix.texi:7414
13509 msgid "This is the declarative counterpart of @code{gexp->file}."
13510 msgstr ""
13511
13512 #. type: deffn
13513 #: doc/guix.texi:7416
13514 #, no-wrap
13515 msgid "{Monadic Procedure} text-file* @var{name} @var{text} @dots{}"
13516 msgstr ""
13517
13518 #. type: deffn
13519 #: doc/guix.texi:7422
13520 msgid "Return as a monadic value a derivation that builds a text file containing all of @var{text}. @var{text} may list, in addition to strings, objects of any type that can be used in a gexp: packages, derivations, local file objects, etc. The resulting store file holds references to all these."
13521 msgstr ""
13522
13523 #. type: deffn
13524 #: doc/guix.texi:7427
13525 msgid "This variant should be preferred over @code{text-file} anytime the file to create will reference items from the store. This is typically the case when building a configuration file that embeds store file names, like this:"
13526 msgstr ""
13527
13528 #. type: example
13529 #: doc/guix.texi:7435
13530 #, no-wrap
13531 msgid ""
13532 "(define (profile.sh)\n"
13533 " ;; Return the name of a shell script in the store that\n"
13534 " ;; initializes the 'PATH' environment variable.\n"
13535 " (text-file* \"profile.sh\"\n"
13536 " \"export PATH=\" coreutils \"/bin:\"\n"
13537 " grep \"/bin:\" sed \"/bin\\n\"))\n"
13538 msgstr ""
13539
13540 #. type: deffn
13541 #: doc/guix.texi:7440
13542 msgid "In this example, the resulting @file{/gnu/store/@dots{}-profile.sh} file will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby preventing them from being garbage-collected during its lifetime."
13543 msgstr ""
13544
13545 #. type: deffn
13546 #: doc/guix.texi:7442
13547 #, no-wrap
13548 msgid "{Scheme Procedure} mixed-text-file @var{name} @var{text} @dots{}"
13549 msgstr ""
13550
13551 #. type: deffn
13552 #: doc/guix.texi:7446
13553 msgid "Return an object representing store file @var{name} containing @var{text}. @var{text} is a sequence of strings and file-like objects, as in:"
13554 msgstr ""
13555
13556 #. type: example
13557 #: doc/guix.texi:7450
13558 #, no-wrap
13559 msgid ""
13560 "(mixed-text-file \"profile\"\n"
13561 " \"export PATH=\" coreutils \"/bin:\" grep \"/bin\")\n"
13562 msgstr ""
13563
13564 #. type: deffn
13565 #: doc/guix.texi:7453
13566 msgid "This is the declarative counterpart of @code{text-file*}."
13567 msgstr ""
13568
13569 #. type: deffn
13570 #: doc/guix.texi:7455
13571 #, no-wrap
13572 msgid "{Scheme Procedure} file-union @var{name} @var{files}"
13573 msgstr ""
13574
13575 #. type: deffn
13576 #: doc/guix.texi:7460
13577 msgid "Return a @code{<computed-file>} that builds a directory containing all of @var{files}. Each item in @var{files} must be a two-element list where the first element is the file name to use in the new directory, and the second element is a gexp denoting the target file. Here's an example:"
13578 msgstr ""
13579
13580 #. type: example
13581 #: doc/guix.texi:7467
13582 #, no-wrap
13583 msgid ""
13584 "(file-union \"etc\"\n"
13585 " `((\"hosts\" ,(plain-file \"hosts\"\n"
13586 " \"127.0.0.1 localhost\"))\n"
13587 " (\"bashrc\" ,(plain-file \"bashrc\"\n"
13588 " \"alias ls='ls --color=auto'\"))))\n"
13589 msgstr ""
13590
13591 #. type: deffn
13592 #: doc/guix.texi:7470
13593 msgid "This yields an @code{etc} directory containing these two files."
13594 msgstr ""
13595
13596 #. type: deffn
13597 #: doc/guix.texi:7472
13598 #, no-wrap
13599 msgid "{Scheme Procedure} directory-union @var{name} @var{things}"
13600 msgstr ""
13601
13602 #. type: deffn
13603 #: doc/guix.texi:7475
13604 msgid "Return a directory that is the union of @var{things}, where @var{things} is a list of file-like objects denoting directories. For example:"
13605 msgstr ""
13606
13607 #. type: example
13608 #: doc/guix.texi:7478
13609 #, no-wrap
13610 msgid "(directory-union \"guile+emacs\" (list guile emacs))\n"
13611 msgstr ""
13612
13613 #. type: deffn
13614 #: doc/guix.texi:7481
13615 msgid "yields a directory that is the union of the @code{guile} and @code{emacs} packages."
13616 msgstr ""
13617
13618 #. type: deffn
13619 #: doc/guix.texi:7483
13620 #, no-wrap
13621 msgid "{Scheme Procedure} file-append @var{obj} @var{suffix} @dots{}"
13622 msgstr ""
13623
13624 #. type: deffn
13625 #: doc/guix.texi:7487
13626 msgid "Return a file-like object that expands to the concatenation of @var{obj} and @var{suffix}, where @var{obj} is a lowerable object and each @var{suffix} is a string."
13627 msgstr ""
13628
13629 #. type: deffn
13630 #: doc/guix.texi:7489
13631 msgid "As an example, consider this gexp:"
13632 msgstr ""
13633
13634 #. type: example
13635 #: doc/guix.texi:7494
13636 #, no-wrap
13637 msgid ""
13638 "(gexp->script \"run-uname\"\n"
13639 " #~(system* #$(file-append coreutils\n"
13640 " \"/bin/uname\")))\n"
13641 msgstr ""
13642
13643 #. type: deffn
13644 #: doc/guix.texi:7497
13645 msgid "The same effect could be achieved with:"
13646 msgstr ""
13647
13648 #. type: example
13649 #: doc/guix.texi:7502
13650 #, no-wrap
13651 msgid ""
13652 "(gexp->script \"run-uname\"\n"
13653 " #~(system* (string-append #$coreutils\n"
13654 " \"/bin/uname\")))\n"
13655 msgstr ""
13656
13657 #. type: deffn
13658 #: doc/guix.texi:7508
13659 msgid "There is one difference though: in the @code{file-append} case, the resulting script contains the absolute file name as a string, whereas in the second case, the resulting script contains a @code{(string-append @dots{})} expression to construct the file name @emph{at run time}."
13660 msgstr ""
13661
13662 #. type: Plain text
13663 #: doc/guix.texi:7515
13664 msgid "Of course, in addition to gexps embedded in ``host'' code, there are also modules containing build tools. To make it clear that they are meant to be used in the build stratum, these modules are kept in the @code{(guix build @dots{})} name space."
13665 msgstr ""
13666
13667 #. type: Plain text
13668 #: doc/guix.texi:7521
13669 msgid "Internally, high-level objects are @dfn{lowered}, using their compiler, to either derivations or store items. For instance, lowering a package yields a derivation, and lowering a @code{plain-file} yields a store item. This is achieved using the @code{lower-object} monadic procedure."
13670 msgstr ""
13671
13672 #. type: deffn
13673 #: doc/guix.texi:7522
13674 #, no-wrap
13675 msgid "{Monadic Procedure} lower-object @var{obj} [@var{system}] @"
13676 msgstr ""
13677
13678 #. type: deffn
13679 #: doc/guix.texi:7528
13680 msgid "[#:target #f] Return as a value in @var{%store-monad} the derivation or store item corresponding to @var{obj} for @var{system}, cross-compiling for @var{target} if @var{target} is true. @var{obj} must be an object that has an associated gexp compiler, such as a @code{<package>}."
13681 msgstr ""
13682
13683 #. type: section
13684 #: doc/guix.texi:7531
13685 #, no-wrap
13686 msgid "Invoking @command{guix repl}"
13687 msgstr ""
13688
13689 #. type: cindex
13690 #: doc/guix.texi:7533
13691 #, no-wrap
13692 msgid "REPL, read-eval-print loop"
13693 msgstr ""
13694
13695 #. type: Plain text
13696 #: doc/guix.texi:7539
13697 msgid "The @command{guix repl} command spawns a Guile @dfn{read-eval-print loop} (REPL) for interactive programming (@pxref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}). Compared to just launching the @command{guile} command, @command{guix repl} guarantees that all the Guix modules and all its dependencies are available in the search path. You can use it this way:"
13698 msgstr ""
13699
13700 #. type: example
13701 #: doc/guix.texi:7545
13702 #, no-wrap
13703 msgid ""
13704 "$ guix repl\n"
13705 "scheme@@(guile-user)> ,use (gnu packages base)\n"
13706 "scheme@@(guile-user)> coreutils\n"
13707 "$1 = #<package coreutils@@8.29 gnu/packages/base.scm:327 3e28300>\n"
13708 msgstr ""
13709
13710 #. type: Plain text
13711 #: doc/guix.texi:7552
13712 msgid "In addition, @command{guix repl} implements a simple machine-readable REPL protocol for use by @code{(guix inferior)}, a facility to interact with @dfn{inferiors}, separate processes running a potentially different revision of Guix."
13713 msgstr ""
13714
13715 #. type: Plain text
13716 #: doc/guix.texi:7554
13717 msgid "The available options are as follows:"
13718 msgstr ""
13719
13720 #. type: item
13721 #: doc/guix.texi:7556 doc/guix.texi:9516
13722 #, no-wrap
13723 msgid "--type=@var{type}"
13724 msgstr ""
13725
13726 #. type: itemx
13727 #: doc/guix.texi:7557 doc/guix.texi:9517 doc/guix.texi:24566
13728 #, no-wrap
13729 msgid "-t @var{type}"
13730 msgstr ""
13731
13732 #. type: table
13733 #: doc/guix.texi:7559
13734 msgid "Start a REPL of the given @var{TYPE}, which can be one of the following:"
13735 msgstr ""
13736
13737 #. type: item
13738 #: doc/guix.texi:7561
13739 #, no-wrap
13740 msgid "guile"
13741 msgstr ""
13742
13743 #. type: table
13744 #: doc/guix.texi:7563
13745 msgid "This is default, and it spawns a standard full-featured Guile REPL."
13746 msgstr ""
13747
13748 #. type: item
13749 #: doc/guix.texi:7563
13750 #, no-wrap
13751 msgid "machine"
13752 msgstr ""
13753
13754 #. type: table
13755 #: doc/guix.texi:7566
13756 msgid "Spawn a REPL that uses the machine-readable protocol. This is the protocol that the @code{(guix inferior)} module speaks."
13757 msgstr ""
13758
13759 #. type: table
13760 #: doc/guix.texi:7572
13761 msgid "By default, @command{guix repl} reads from standard input and writes to standard output. When this option is passed, it will instead listen for connections on @var{endpoint}. Here are examples of valid options:"
13762 msgstr ""
13763
13764 #. type: item
13765 #: doc/guix.texi:7574
13766 #, no-wrap
13767 msgid "--listen=tcp:37146"
13768 msgstr ""
13769
13770 #. type: table
13771 #: doc/guix.texi:7576
13772 msgid "Accept connections on localhost on port 37146."
13773 msgstr ""
13774
13775 #. type: item
13776 #: doc/guix.texi:7577
13777 #, no-wrap
13778 msgid "--listen=unix:/tmp/socket"
13779 msgstr ""
13780
13781 #. type: table
13782 #: doc/guix.texi:7579
13783 msgid "Accept connections on the Unix-domain socket @file{/tmp/socket}."
13784 msgstr ""
13785
13786 #. type: Plain text
13787 #: doc/guix.texi:7590
13788 msgid "This section describes Guix command-line utilities. Some of them are primarily targeted at developers and users who write new package definitions, while others are more generally useful. They complement the Scheme programming interface of Guix in a convenient way."
13789 msgstr ""
13790
13791 #. type: cindex
13792 #: doc/guix.texi:7612
13793 #, no-wrap
13794 msgid "package building"
13795 msgstr ""
13796
13797 #. type: command{#1}
13798 #: doc/guix.texi:7613
13799 #, no-wrap
13800 msgid "guix build"
13801 msgstr ""
13802
13803 #. type: Plain text
13804 #: doc/guix.texi:7619
13805 msgid "The @command{guix build} command builds packages or derivations and their dependencies, and prints the resulting store paths. Note that it does not modify the user's profile---this is the job of the @command{guix package} command (@pxref{Invoking guix package}). Thus, it is mainly useful for distribution developers."
13806 msgstr ""
13807
13808 #. type: example
13809 #: doc/guix.texi:7624
13810 #, no-wrap
13811 msgid "guix build @var{options} @var{package-or-derivation}@dots{}\n"
13812 msgstr ""
13813
13814 #. type: Plain text
13815 #: doc/guix.texi:7629
13816 msgid "As an example, the following command builds the latest versions of Emacs and of Guile, displays their build logs, and finally displays the resulting directories:"
13817 msgstr ""
13818
13819 #. type: example
13820 #: doc/guix.texi:7632
13821 #, no-wrap
13822 msgid "guix build emacs guile\n"
13823 msgstr ""
13824
13825 #. type: Plain text
13826 #: doc/guix.texi:7635
13827 msgid "Similarly, the following command builds all the available packages:"
13828 msgstr ""
13829
13830 #. type: example
13831 #: doc/guix.texi:7639
13832 #, no-wrap
13833 msgid ""
13834 "guix build --quiet --keep-going \\\n"
13835 " `guix package -A | cut -f1,2 --output-delimiter=@@`\n"
13836 msgstr ""
13837
13838 #. type: Plain text
13839 #: doc/guix.texi:7647
13840 msgid "@var{package-or-derivation} may be either the name of a package found in the software distribution such as @code{coreutils} or @code{coreutils@@8.20}, or a derivation such as @file{/gnu/store/@dots{}-coreutils-8.19.drv}. In the former case, a package with the corresponding name (and optionally version) is searched for among the GNU distribution modules (@pxref{Package Modules})."
13841 msgstr ""
13842
13843 #. type: Plain text
13844 #: doc/guix.texi:7652
13845 msgid "Alternatively, the @code{--expression} option may be used to specify a Scheme expression that evaluates to a package; this is useful when disambiguating among several same-named packages or package variants is needed."
13846 msgstr ""
13847
13848 #. type: Plain text
13849 #: doc/guix.texi:7655
13850 msgid "There may be zero or more @var{options}. The available options are described in the subsections below."
13851 msgstr ""
13852
13853 #. type: Plain text
13854 #: doc/guix.texi:7670
13855 msgid "A number of options that control the build process are common to @command{guix build} and other commands that can spawn builds, such as @command{guix package} or @command{guix archive}. These are the following:"
13856 msgstr ""
13857
13858 #. type: item
13859 #: doc/guix.texi:7673
13860 #, no-wrap
13861 msgid "--load-path=@var{directory}"
13862 msgstr ""
13863
13864 #. type: itemx
13865 #: doc/guix.texi:7674
13866 #, no-wrap
13867 msgid "-L @var{directory}"
13868 msgstr ""
13869
13870 #. type: table
13871 #: doc/guix.texi:7677
13872 msgid "Add @var{directory} to the front of the package module search path (@pxref{Package Modules})."
13873 msgstr ""
13874
13875 #. type: table
13876 #: doc/guix.texi:7680
13877 msgid "This allows users to define their own packages and make them visible to the command-line tools."
13878 msgstr ""
13879
13880 #. type: item
13881 #: doc/guix.texi:7681
13882 #, no-wrap
13883 msgid "--keep-failed"
13884 msgstr ""
13885
13886 #. type: itemx
13887 #: doc/guix.texi:7682
13888 #, no-wrap
13889 msgid "-K"
13890 msgstr ""
13891
13892 #. type: table
13893 #: doc/guix.texi:7688
13894 msgid "Keep the build tree of failed builds. Thus, if a build fails, its build tree is kept under @file{/tmp}, in a directory whose name is shown at the end of the build log. This is useful when debugging build issues. @xref{Debugging Build Failures}, for tips and tricks on how to debug build issues."
13895 msgstr ""
13896
13897 #. type: table
13898 #: doc/guix.texi:7692
13899 msgid "This option has no effect when connecting to a remote daemon with a @code{guix://} URI (@pxref{The Store, the @code{GUIX_DAEMON_SOCKET} variable})."
13900 msgstr ""
13901
13902 #. type: item
13903 #: doc/guix.texi:7693
13904 #, no-wrap
13905 msgid "--keep-going"
13906 msgstr ""
13907
13908 #. type: itemx
13909 #: doc/guix.texi:7694
13910 #, no-wrap
13911 msgid "-k"
13912 msgstr ""
13913
13914 #. type: table
13915 #: doc/guix.texi:7697
13916 msgid "Keep going when some of the derivations fail to build; return only once all the builds have either completed or failed."
13917 msgstr ""
13918
13919 #. type: table
13920 #: doc/guix.texi:7700
13921 msgid "The default behavior is to stop as soon as one of the specified derivations has failed."
13922 msgstr ""
13923
13924 #. type: table
13925 #: doc/guix.texi:7704
13926 msgid "Do not build the derivations."
13927 msgstr ""
13928
13929 #. type: anchor{#1}
13930 #: doc/guix.texi:7706
13931 msgid "fallback-option"
13932 msgstr ""
13933
13934 #. type: item
13935 #: doc/guix.texi:7706
13936 #, no-wrap
13937 msgid "--fallback"
13938 msgstr ""
13939
13940 #. type: table
13941 #: doc/guix.texi:7709
13942 msgid "When substituting a pre-built binary fails, fall back to building packages locally (@pxref{Substitution Failure})."
13943 msgstr ""
13944
13945 #. type: anchor{#1}
13946 #: doc/guix.texi:7715
13947 msgid "client-substitute-urls"
13948 msgstr ""
13949
13950 #. type: table
13951 #: doc/guix.texi:7715
13952 msgid "Consider @var{urls} the whitespace-separated list of substitute source URLs, overriding the default list of URLs of @command{guix-daemon} (@pxref{daemon-substitute-urls,, @command{guix-daemon} URLs})."
13953 msgstr ""
13954
13955 #. type: table
13956 #: doc/guix.texi:7719
13957 msgid "This means that substitutes may be downloaded from @var{urls}, provided they are signed by a key authorized by the system administrator (@pxref{Substitutes})."
13958 msgstr ""
13959
13960 #. type: table
13961 #: doc/guix.texi:7722
13962 msgid "When @var{urls} is the empty string, substitutes are effectively disabled."
13963 msgstr ""
13964
13965 #. type: item
13966 #: doc/guix.texi:7728
13967 #, no-wrap
13968 msgid "--no-grafts"
13969 msgstr ""
13970
13971 #. type: table
13972 #: doc/guix.texi:7732
13973 msgid "Do not ``graft'' packages. In practice, this means that package updates available as grafts are not applied. @xref{Security Updates}, for more information on grafts."
13974 msgstr ""
13975
13976 #. type: item
13977 #: doc/guix.texi:7733
13978 #, no-wrap
13979 msgid "--rounds=@var{n}"
13980 msgstr ""
13981
13982 #. type: table
13983 #: doc/guix.texi:7736
13984 msgid "Build each derivation @var{n} times in a row, and raise an error if consecutive build results are not bit-for-bit identical."
13985 msgstr ""
13986
13987 #. type: table
13988 #: doc/guix.texi:7741
13989 msgid "This is a useful way to detect non-deterministic builds processes. Non-deterministic build processes are a problem because they make it practically impossible for users to @emph{verify} whether third-party binaries are genuine. @xref{Invoking guix challenge}, for more."
13990 msgstr ""
13991
13992 #. type: table
13993 #: doc/guix.texi:7747
13994 msgid "Note that, currently, the differing build results are not kept around, so you will have to manually investigate in case of an error---e.g., by stashing one of the build results with @code{guix archive --export} (@pxref{Invoking guix archive}), then rebuilding, and finally comparing the two results."
13995 msgstr ""
13996
13997 #. type: table
13998 #: doc/guix.texi:7752
13999 msgid "Do not attempt to offload builds @i{via} the ``build hook'' of the daemon (@pxref{Daemon Offload Setup}). That is, always build things locally instead of offloading builds to remote machines."
14000 msgstr ""
14001
14002 #. type: table
14003 #: doc/guix.texi:7759
14004 msgid "By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, @code{--max-silent-time}})."
14005 msgstr ""
14006
14007 #. type: table
14008 #: doc/guix.texi:7766
14009 msgid "By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, @code{--timeout}})."
14010 msgstr ""
14011
14012 #. type: cindex
14013 #: doc/guix.texi:7769
14014 #, no-wrap
14015 msgid "verbosity, of the command-line tools"
14016 msgstr ""
14017
14018 #. type: cindex
14019 #: doc/guix.texi:7770
14020 #, no-wrap
14021 msgid "build logs, verbosity"
14022 msgstr ""
14023
14024 #. type: item
14025 #: doc/guix.texi:7771
14026 #, no-wrap
14027 msgid "-v @var{level}"
14028 msgstr ""
14029
14030 #. type: itemx
14031 #: doc/guix.texi:7772
14032 #, no-wrap
14033 msgid "--verbosity=@var{level}"
14034 msgstr ""
14035
14036 #. type: table
14037 #: doc/guix.texi:7776
14038 msgid "Use the given verbosity @var{level}, an integer. Choosing 0 means that no output is produced, 1 is for quiet output, and 2 shows all the build log output on standard error."
14039 msgstr ""
14040
14041 #. type: table
14042 #: doc/guix.texi:7781
14043 msgid "Allow the use of up to @var{n} CPU cores for the build. The special value @code{0} means to use as many CPU cores as available."
14044 msgstr ""
14045
14046 #. type: table
14047 #: doc/guix.texi:7787
14048 msgid "Allow at most @var{n} build jobs in parallel. @xref{Invoking guix-daemon, @code{--max-jobs}}, for details about this option and the equivalent @command{guix-daemon} option."
14049 msgstr ""
14050
14051 #. type: item
14052 #: doc/guix.texi:7788
14053 #, no-wrap
14054 msgid "--debug=@var{level}"
14055 msgstr ""
14056
14057 #. type: table
14058 #: doc/guix.texi:7792
14059 msgid "Produce debugging output coming from the build daemon. @var{level} must be an integer between 0 and 5; higher means more verbose output. Setting a level of 4 or more may be helpful when debugging setup issues with the build daemon."
14060 msgstr ""
14061
14062 #. type: Plain text
14063 #: doc/guix.texi:7799
14064 msgid "Behind the scenes, @command{guix build} is essentially an interface to the @code{package-derivation} procedure of the @code{(guix packages)} module, and to the @code{build-derivations} procedure of the @code{(guix derivations)} module."
14065 msgstr ""
14066
14067 #. type: Plain text
14068 #: doc/guix.texi:7803
14069 msgid "In addition to options explicitly passed on the command line, @command{guix build} and other @command{guix} commands that support building honor the @code{GUIX_BUILD_OPTIONS} environment variable."
14070 msgstr ""
14071
14072 #. type: defvr
14073 #: doc/guix.texi:7804
14074 #, no-wrap
14075 msgid "{Environment Variable} GUIX_BUILD_OPTIONS"
14076 msgstr ""
14077
14078 #. type: defvr
14079 #: doc/guix.texi:7809
14080 msgid "Users can define this variable to a list of command line options that will automatically be used by @command{guix build} and other @command{guix} commands that can perform builds, as in the example below:"
14081 msgstr ""
14082
14083 #. type: example
14084 #: doc/guix.texi:7812
14085 #, no-wrap
14086 msgid "$ export GUIX_BUILD_OPTIONS=\"--no-substitutes -c 2 -L /foo/bar\"\n"
14087 msgstr ""
14088
14089 #. type: defvr
14090 #: doc/guix.texi:7816
14091 msgid "These options are parsed independently, and the result is appended to the parsed command-line options."
14092 msgstr ""
14093
14094 #. type: cindex
14095 #: doc/guix.texi:7822
14096 #, no-wrap
14097 msgid "package variants"
14098 msgstr ""
14099
14100 #. type: Plain text
14101 #: doc/guix.texi:7830
14102 msgid "Another set of command-line options supported by @command{guix build} and also @command{guix package} are @dfn{package transformation options}. These are options that make it possible to define @dfn{package variants}---for instance, packages built from different source code. This is a convenient way to create customized packages on the fly without having to type in the definitions of package variants (@pxref{Defining Packages})."
14103 msgstr ""
14104
14105 #. type: item
14106 #: doc/guix.texi:7833
14107 #, no-wrap
14108 msgid "--with-source=@var{source}"
14109 msgstr ""
14110
14111 #. type: itemx
14112 #: doc/guix.texi:7834
14113 #, no-wrap
14114 msgid "--with-source=@var{package}=@var{source}"
14115 msgstr ""
14116
14117 #. type: itemx
14118 #: doc/guix.texi:7835
14119 #, no-wrap
14120 msgid "--with-source=@var{package}@@@var{version}=@var{source}"
14121 msgstr ""
14122
14123 #. type: table
14124 #: doc/guix.texi:7840
14125 msgid "Use @var{source} as the source of @var{package}, and @var{version} as its version number. @var{source} must be a file name or a URL, as for @command{guix download} (@pxref{Invoking guix download})."
14126 msgstr ""
14127
14128 #. type: table
14129 #: doc/guix.texi:7846
14130 msgid "When @var{package} is omitted, it is taken to be the package name specified on the command line that matches the base of @var{source}---e.g., if @var{source} is @code{/src/guile-2.0.10.tar.gz}, the corresponding package is @code{guile}."
14131 msgstr ""
14132
14133 #. type: table
14134 #: doc/guix.texi:7849
14135 msgid "Likewise, when @var{version} is omitted, the version string is inferred from @var{source}; in the previous example, it is @code{2.0.10}."
14136 msgstr ""
14137
14138 #. type: table
14139 #: doc/guix.texi:7854
14140 msgid "This option allows users to try out versions of packages other than the one provided by the distribution. The example below downloads @file{ed-1.7.tar.gz} from a GNU mirror and uses that as the source for the @code{ed} package:"
14141 msgstr ""
14142
14143 #. type: example
14144 #: doc/guix.texi:7857
14145 #, no-wrap
14146 msgid "guix build ed --with-source=mirror://gnu/ed/ed-1.7.tar.gz\n"
14147 msgstr ""
14148
14149 #. type: table
14150 #: doc/guix.texi:7861
14151 msgid "As a developer, @code{--with-source} makes it easy to test release candidates:"
14152 msgstr ""
14153
14154 #. type: example
14155 #: doc/guix.texi:7864
14156 #, no-wrap
14157 msgid "guix build guile --with-source=../guile-2.0.9.219-e1bb7.tar.xz\n"
14158 msgstr ""
14159
14160 #. type: table
14161 #: doc/guix.texi:7867
14162 msgid "@dots{} or to build from a checkout in a pristine environment:"
14163 msgstr ""
14164
14165 #. type: example
14166 #: doc/guix.texi:7871
14167 #, no-wrap
14168 msgid ""
14169 "$ git clone git://git.sv.gnu.org/guix.git\n"
14170 "$ guix build guix --with-source=guix@@1.0=./guix\n"
14171 msgstr ""
14172
14173 #. type: item
14174 #: doc/guix.texi:7873
14175 #, no-wrap
14176 msgid "--with-input=@var{package}=@var{replacement}"
14177 msgstr ""
14178
14179 #. type: table
14180 #: doc/guix.texi:7878
14181 msgid "Replace dependency on @var{package} by a dependency on @var{replacement}. @var{package} must be a package name, and @var{replacement} must be a package specification such as @code{guile} or @code{guile@@1.8}."
14182 msgstr ""
14183
14184 #. type: table
14185 #: doc/guix.texi:7882
14186 msgid "For instance, the following command builds Guix, but replaces its dependency on the current stable version of Guile with a dependency on the legacy version of Guile, @code{guile@@2.0}:"
14187 msgstr ""
14188
14189 #. type: example
14190 #: doc/guix.texi:7885
14191 #, no-wrap
14192 msgid "guix build --with-input=guile=guile@@2.0 guix\n"
14193 msgstr ""
14194
14195 #. type: table
14196 #: doc/guix.texi:7890
14197 msgid "This is a recursive, deep replacement. So in this example, both @code{guix} and its dependency @code{guile-json} (which also depends on @code{guile}) get rebuilt against @code{guile@@2.0}."
14198 msgstr ""
14199
14200 #. type: table
14201 #: doc/guix.texi:7893
14202 msgid "This is implemented using the @code{package-input-rewriting} Scheme procedure (@pxref{Defining Packages, @code{package-input-rewriting}})."
14203 msgstr ""
14204
14205 #. type: item
14206 #: doc/guix.texi:7894
14207 #, no-wrap
14208 msgid "--with-graft=@var{package}=@var{replacement}"
14209 msgstr ""
14210
14211 #. type: table
14212 #: doc/guix.texi:7900
14213 msgid "This is similar to @code{--with-input} but with an important difference: instead of rebuilding the whole dependency chain, @var{replacement} is built and then @dfn{grafted} onto the binaries that were initially referring to @var{package}. @xref{Security Updates}, for more information on grafts."
14214 msgstr ""
14215
14216 #. type: table
14217 #: doc/guix.texi:7904
14218 msgid "For example, the command below grafts version 3.5.4 of GnuTLS onto Wget and all its dependencies, replacing references to the version of GnuTLS they currently refer to:"
14219 msgstr ""
14220
14221 #. type: example
14222 #: doc/guix.texi:7907
14223 #, no-wrap
14224 msgid "guix build --with-graft=gnutls=gnutls@@3.5.4 wget\n"
14225 msgstr ""
14226
14227 #. type: table
14228 #: doc/guix.texi:7916
14229 msgid "This has the advantage of being much faster than rebuilding everything. But there is a caveat: it works if and only if @var{package} and @var{replacement} are strictly compatible---for example, if they provide a library, the application binary interface (ABI) of those libraries must be compatible. If @var{replacement} is somehow incompatible with @var{package}, then the resulting package may be unusable. Use with care!"
14230 msgstr ""
14231
14232 #. type: item
14233 #: doc/guix.texi:7917
14234 #, no-wrap
14235 msgid "--with-git-url=@var{package}=@var{url}"
14236 msgstr ""
14237
14238 #. type: cindex
14239 #: doc/guix.texi:7918
14240 #, no-wrap
14241 msgid "Git, using the latest commit"
14242 msgstr ""
14243
14244 #. type: cindex
14245 #: doc/guix.texi:7919
14246 #, no-wrap
14247 msgid "latest commit, building"
14248 msgstr ""
14249
14250 #. type: table
14251 #: doc/guix.texi:7923
14252 msgid "Build @var{package} from the latest commit of the @code{master} branch of the Git repository at @var{url}. Git sub-modules of the repository are fetched, recursively."
14253 msgstr ""
14254
14255 #. type: table
14256 #: doc/guix.texi:7926
14257 msgid "For example, the following command builds the NumPy Python library against the latest commit of the master branch of Python itself:"
14258 msgstr ""
14259
14260 #. type: example
14261 #: doc/guix.texi:7930
14262 #, no-wrap
14263 msgid ""
14264 "guix build python-numpy \\\n"
14265 " --with-git-url=python=https://github.com/python/cpython\n"
14266 msgstr ""
14267
14268 #. type: table
14269 #: doc/guix.texi:7934
14270 msgid "This option can also be combined with @code{--with-branch} or @code{--with-commit} (see below)."
14271 msgstr ""
14272
14273 #. type: cindex
14274 #: doc/guix.texi:7935 doc/guix.texi:20626
14275 #, no-wrap
14276 msgid "continuous integration"
14277 msgstr ""
14278
14279 #. type: table
14280 #: doc/guix.texi:7941
14281 msgid "Obviously, since it uses the latest commit of the given branch, the result of such a command varies over time. Nevertheless it is a convenient way to rebuild entire software stacks against the latest commit of one or more packages. This is particularly useful in the context of continuous integration (CI)."
14282 msgstr ""
14283
14284 #. type: table
14285 #: doc/guix.texi:7945
14286 msgid "Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed up consecutive accesses to the same repository. You may want to clean it up once in a while to save disk space."
14287 msgstr ""
14288
14289 #. type: item
14290 #: doc/guix.texi:7946
14291 #, no-wrap
14292 msgid "--with-branch=@var{package}=@var{branch}"
14293 msgstr ""
14294
14295 #. type: table
14296 #: doc/guix.texi:7952
14297 msgid "Build @var{package} from the latest commit of @var{branch}. If the @code{source} field of @var{package} is an origin with the @code{git-fetch} method (@pxref{origin Reference}) or a @code{git-checkout} object, the repository URL is taken from that @code{source}. Otherwise you have to use @code{--with-git-url} to specify the URL of the Git repository."
14298 msgstr ""
14299
14300 #. type: table
14301 #: doc/guix.texi:7957
14302 msgid "For instance, the following command builds @code{guile-sqlite3} from the latest commit of its @code{master} branch, and then builds @code{guix} (which depends on it) and @code{cuirass} (which depends on @code{guix}) against this specific @code{guile-sqlite3} build:"
14303 msgstr ""
14304
14305 #. type: example
14306 #: doc/guix.texi:7960
14307 #, no-wrap
14308 msgid "guix build --with-branch=guile-sqlite3=master cuirass\n"
14309 msgstr ""
14310
14311 #. type: item
14312 #: doc/guix.texi:7962
14313 #, no-wrap
14314 msgid "--with-commit=@var{package}=@var{commit}"
14315 msgstr ""
14316
14317 #. type: table
14318 #: doc/guix.texi:7966
14319 msgid "This is similar to @code{--with-branch}, except that it builds from @var{commit} rather than the tip of a branch. @var{commit} must be a valid Git commit SHA1 identifier."
14320 msgstr ""
14321
14322 #. type: Plain text
14323 #: doc/guix.texi:7973
14324 msgid "The command-line options presented below are specific to @command{guix build}."
14325 msgstr ""
14326
14327 #. type: item
14328 #: doc/guix.texi:7976
14329 #, no-wrap
14330 msgid "--quiet"
14331 msgstr ""
14332
14333 #. type: itemx
14334 #: doc/guix.texi:7977
14335 #, no-wrap
14336 msgid "-q"
14337 msgstr ""
14338
14339 #. type: table
14340 #: doc/guix.texi:7981
14341 msgid "Build quietly, without displaying the build log; this is equivalent to @code{--verbosity=0}. Upon completion, the build log is kept in @file{/var} (or similar) and can always be retrieved using the @option{--log-file} option."
14342 msgstr ""
14343
14344 #. type: item
14345 #: doc/guix.texi:7982
14346 #, no-wrap
14347 msgid "--file=@var{file}"
14348 msgstr ""
14349
14350 #. type: table
14351 #: doc/guix.texi:7986
14352 msgid "Build the package, derivation, or other file-like object that the code within @var{file} evaluates to (@pxref{G-Expressions, file-like objects})."
14353 msgstr ""
14354
14355 #. type: table
14356 #: doc/guix.texi:7989
14357 msgid "As an example, @var{file} might contain a package definition like this (@pxref{Defining Packages}):"
14358 msgstr ""
14359
14360 #. type: table
14361 #: doc/guix.texi:7997
14362 msgid "Build the package or derivation @var{expr} evaluates to."
14363 msgstr ""
14364
14365 #. type: table
14366 #: doc/guix.texi:8001
14367 msgid "For example, @var{expr} may be @code{(@@ (gnu packages guile) guile-1.8)}, which unambiguously designates this specific variant of version 1.8 of Guile."
14368 msgstr ""
14369
14370 #. type: table
14371 #: doc/guix.texi:8005
14372 msgid "Alternatively, @var{expr} may be a G-expression, in which case it is used as a build program passed to @code{gexp->derivation} (@pxref{G-Expressions})."
14373 msgstr ""
14374
14375 #. type: table
14376 #: doc/guix.texi:8009
14377 msgid "Lastly, @var{expr} may refer to a zero-argument monadic procedure (@pxref{The Store Monad}). The procedure must return a derivation as a monadic value, which is then passed through @code{run-with-store}."
14378 msgstr ""
14379
14380 #. type: item
14381 #: doc/guix.texi:8010
14382 #, no-wrap
14383 msgid "--source"
14384 msgstr ""
14385
14386 #. type: itemx
14387 #: doc/guix.texi:8011
14388 #, no-wrap
14389 msgid "-S"
14390 msgstr ""
14391
14392 #. type: table
14393 #: doc/guix.texi:8014
14394 msgid "Build the source derivations of the packages, rather than the packages themselves."
14395 msgstr ""
14396
14397 #. type: table
14398 #: doc/guix.texi:8018
14399 msgid "For instance, @code{guix build -S gcc} returns something like @file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, which is the GCC source tarball."
14400 msgstr ""
14401
14402 #. type: table
14403 #: doc/guix.texi:8022
14404 msgid "The returned source tarball is the result of applying any patches and code snippets specified in the package @code{origin} (@pxref{Defining Packages})."
14405 msgstr ""
14406
14407 #. type: item
14408 #: doc/guix.texi:8023
14409 #, no-wrap
14410 msgid "--sources"
14411 msgstr ""
14412
14413 #. type: table
14414 #: doc/guix.texi:8030
14415 msgid "Fetch and return the source of @var{package-or-derivation} and all their dependencies, recursively. This is a handy way to obtain a local copy of all the source code needed to build @var{packages}, allowing you to eventually build them even without network access. It is an extension of the @code{--source} option and can accept one of the following optional argument values:"
14416 msgstr ""
14417
14418 #. type: item
14419 #: doc/guix.texi:8032 doc/guix.texi:9394
14420 #, no-wrap
14421 msgid "package"
14422 msgstr ""
14423
14424 #. type: table
14425 #: doc/guix.texi:8035
14426 msgid "This value causes the @code{--sources} option to behave in the same way as the @code{--source} option."
14427 msgstr ""
14428
14429 #. type: item
14430 #: doc/guix.texi:8036 doc/guix.texi:13887
14431 #, no-wrap
14432 msgid "all"
14433 msgstr ""
14434
14435 #. type: table
14436 #: doc/guix.texi:8039
14437 msgid "Build the source derivations of all packages, including any source that might be listed as @code{inputs}. This is the default value."
14438 msgstr ""
14439
14440 #. type: example
14441 #: doc/guix.texi:8045
14442 #, no-wrap
14443 msgid ""
14444 "$ guix build --sources tzdata\n"
14445 "The following derivations will be built:\n"
14446 " /gnu/store/@dots{}-tzdata2015b.tar.gz.drv\n"
14447 " /gnu/store/@dots{}-tzcode2015b.tar.gz.drv\n"
14448 msgstr ""
14449
14450 #. type: item
14451 #: doc/guix.texi:8047
14452 #, no-wrap
14453 msgid "transitive"
14454 msgstr ""
14455
14456 #. type: table
14457 #: doc/guix.texi:8051
14458 msgid "Build the source derivations of all packages, as well of all transitive inputs to the packages. This can be used e.g.@: to prefetch package source for later offline building."
14459 msgstr ""
14460
14461 #. type: example
14462 #: doc/guix.texi:8062
14463 #, no-wrap
14464 msgid ""
14465 "$ guix build --sources=transitive tzdata\n"
14466 "The following derivations will be built:\n"
14467 " /gnu/store/@dots{}-tzcode2015b.tar.gz.drv\n"
14468 " /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv\n"
14469 " /gnu/store/@dots{}-grep-2.21.tar.xz.drv\n"
14470 " /gnu/store/@dots{}-coreutils-8.23.tar.xz.drv\n"
14471 " /gnu/store/@dots{}-make-4.1.tar.xz.drv\n"
14472 " /gnu/store/@dots{}-bash-4.3.tar.xz.drv\n"
14473 "@dots{}\n"
14474 msgstr ""
14475
14476 #. type: table
14477 #: doc/guix.texi:8072
14478 msgid "Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the system type of the build host. The @command{guix build} command allows you to repeat this option several times, in which case it builds for all the specified systems; other commands ignore extraneous @option{-s} options."
14479 msgstr ""
14480
14481 #. type: quotation
14482 #: doc/guix.texi:8077
14483 msgid "The @code{--system} flag is for @emph{native} compilation and must not be confused with cross-compilation. See @code{--target} below for information on cross-compilation."
14484 msgstr ""
14485
14486 #. type: table
14487 #: doc/guix.texi:8084
14488 msgid "An example use of this is on Linux-based systems, which can emulate different personalities. For instance, passing @code{--system=i686-linux} on an @code{x86_64-linux} system or @code{--system=armhf-linux} on an @code{aarch64-linux} system allows you to build packages in a complete 32-bit environment."
14489 msgstr ""
14490
14491 #. type: quotation
14492 #: doc/guix.texi:8089
14493 msgid "Building for an @code{armhf-linux} system is unconditionally enabled on @code{aarch64-linux} machines, although certain aarch64 chipsets do not allow for this functionality, notably the ThunderX."
14494 msgstr ""
14495
14496 #. type: table
14497 #: doc/guix.texi:8095
14498 msgid "Similarly, when transparent emulation with QEMU and @code{binfmt_misc} is enabled (@pxref{Virtualization Services, @code{qemu-binfmt-service-type}}), you can build for any system for which a QEMU @code{binfmt_misc} handler is installed."
14499 msgstr ""
14500
14501 #. type: table
14502 #: doc/guix.texi:8099
14503 msgid "Builds for a system other than that of the machine you are using can also be offloaded to a remote machine of the right architecture. @xref{Daemon Offload Setup}, for more information on offloading."
14504 msgstr ""
14505
14506 #. type: table
14507 #: doc/guix.texi:8105
14508 msgid "Cross-build for @var{triplet}, which must be a valid GNU triplet, such as @code{\"mips64el-linux-gnu\"} (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf})."
14509 msgstr ""
14510
14511 #. type: anchor{#1}
14512 #: doc/guix.texi:8107
14513 msgid "build-check"
14514 msgstr ""
14515
14516 #. type: item
14517 #: doc/guix.texi:8107
14518 #, no-wrap
14519 msgid "--check"
14520 msgstr ""
14521
14522 #. type: cindex
14523 #: doc/guix.texi:8108
14524 #, no-wrap
14525 msgid "determinism, checking"
14526 msgstr ""
14527
14528 #. type: cindex
14529 #: doc/guix.texi:8109
14530 #, no-wrap
14531 msgid "reproducibility, checking"
14532 msgstr ""
14533
14534 #. type: table
14535 #: doc/guix.texi:8113
14536 msgid "Rebuild @var{package-or-derivation}, which are already available in the store, and raise an error if the build results are not bit-for-bit identical."
14537 msgstr ""
14538
14539 #. type: table
14540 #: doc/guix.texi:8118
14541 msgid "This mechanism allows you to check whether previously installed substitutes are genuine (@pxref{Substitutes}), or whether the build result of a package is deterministic. @xref{Invoking guix challenge}, for more background information and tools."
14542 msgstr ""
14543
14544 #. type: item
14545 #: doc/guix.texi:8123
14546 #, no-wrap
14547 msgid "--repair"
14548 msgstr ""
14549
14550 #. type: cindex
14551 #: doc/guix.texi:8124
14552 #, no-wrap
14553 msgid "repairing store items"
14554 msgstr ""
14555
14556 #. type: table
14557 #: doc/guix.texi:8128
14558 msgid "Attempt to repair the specified store items, if they are corrupt, by re-downloading or rebuilding them."
14559 msgstr ""
14560
14561 #. type: table
14562 #: doc/guix.texi:8130
14563 msgid "This operation is not atomic and thus restricted to @code{root}."
14564 msgstr ""
14565
14566 #. type: item
14567 #: doc/guix.texi:8131
14568 #, no-wrap
14569 msgid "--derivations"
14570 msgstr ""
14571
14572 #. type: itemx
14573 #: doc/guix.texi:8132 doc/guix.texi:24561
14574 #, no-wrap
14575 msgid "-d"
14576 msgstr ""
14577
14578 #. type: table
14579 #: doc/guix.texi:8135
14580 msgid "Return the derivation paths, not the output paths, of the given packages."
14581 msgstr ""
14582
14583 #. type: cindex
14584 #: doc/guix.texi:8138
14585 #, no-wrap
14586 msgid "GC roots, adding"
14587 msgstr ""
14588
14589 #. type: cindex
14590 #: doc/guix.texi:8139
14591 #, no-wrap
14592 msgid "garbage collector roots, adding"
14593 msgstr ""
14594
14595 #. type: table
14596 #: doc/guix.texi:8142 doc/guix.texi:24592
14597 msgid "Make @var{file} a symlink to the result, and register it as a garbage collector root."
14598 msgstr ""
14599
14600 #. type: table
14601 #: doc/guix.texi:8148
14602 msgid "Consequently, the results of this @command{guix build} invocation are protected from garbage collection until @var{file} is removed. When that option is omitted, build results are eligible for garbage collection as soon as the build completes. @xref{Invoking guix gc}, for more on GC roots."
14603 msgstr ""
14604
14605 #. type: item
14606 #: doc/guix.texi:8149
14607 #, no-wrap
14608 msgid "--log-file"
14609 msgstr ""
14610
14611 #. type: cindex
14612 #: doc/guix.texi:8150
14613 #, no-wrap
14614 msgid "build logs, access"
14615 msgstr ""
14616
14617 #. type: table
14618 #: doc/guix.texi:8154
14619 msgid "Return the build log file names or URLs for the given @var{package-or-derivation}, or raise an error if build logs are missing."
14620 msgstr ""
14621
14622 #. type: table
14623 #: doc/guix.texi:8157
14624 msgid "This works regardless of how packages or derivations are specified. For instance, the following invocations are equivalent:"
14625 msgstr ""
14626
14627 #. type: example
14628 #: doc/guix.texi:8163
14629 #, no-wrap
14630 msgid ""
14631 "guix build --log-file `guix build -d guile`\n"
14632 "guix build --log-file `guix build guile`\n"
14633 "guix build --log-file guile\n"
14634 "guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)'\n"
14635 msgstr ""
14636
14637 #. type: table
14638 #: doc/guix.texi:8168
14639 msgid "If a log is unavailable locally, and unless @code{--no-substitutes} is passed, the command looks for a corresponding log on one of the substitute servers (as specified with @code{--substitute-urls}.)"
14640 msgstr ""
14641
14642 #. type: table
14643 #: doc/guix.texi:8171
14644 msgid "So for instance, imagine you want to see the build log of GDB on MIPS, but you are actually on an @code{x86_64} machine:"
14645 msgstr ""
14646
14647 #. type: example
14648 #: doc/guix.texi:8175
14649 #, no-wrap
14650 msgid ""
14651 "$ guix build --log-file gdb -s mips64el-linux\n"
14652 "https://@value{SUBSTITUTE-SERVER}/log/@dots{}-gdb-7.10\n"
14653 msgstr ""
14654
14655 #. type: table
14656 #: doc/guix.texi:8178
14657 msgid "You can freely access a huge library of build logs!"
14658 msgstr ""
14659
14660 #. type: cindex
14661 #: doc/guix.texi:8183
14662 #, no-wrap
14663 msgid "build failures, debugging"
14664 msgstr ""
14665
14666 #. type: Plain text
14667 #: doc/guix.texi:8189
14668 msgid "When defining a new package (@pxref{Defining Packages}), you will probably find yourself spending some time debugging and tweaking the build until it succeeds. To do that, you need to operate the build commands yourself in an environment as close as possible to the one the build daemon uses."
14669 msgstr ""
14670
14671 #. type: Plain text
14672 #: doc/guix.texi:8194
14673 msgid "To that end, the first thing to do is to use the @option{--keep-failed} or @option{-K} option of @command{guix build}, which will keep the failed build tree in @file{/tmp} or whatever directory you specified as @code{TMPDIR} (@pxref{Invoking guix build, @code{--keep-failed}})."
14674 msgstr ""
14675
14676 #. type: Plain text
14677 #: doc/guix.texi:8200
14678 msgid "From there on, you can @command{cd} to the failed build tree and source the @file{environment-variables} file, which contains all the environment variable definitions that were in place when the build failed. So let's say you're debugging a build failure in package @code{foo}; a typical session would look like this:"
14679 msgstr ""
14680
14681 #. type: example
14682 #: doc/guix.texi:8207
14683 #, no-wrap
14684 msgid ""
14685 "$ guix build foo -K\n"
14686 "@dots{} @i{build fails}\n"
14687 "$ cd /tmp/guix-build-foo.drv-0\n"
14688 "$ source ./environment-variables\n"
14689 "$ cd foo-1.2\n"
14690 msgstr ""
14691
14692 #. type: Plain text
14693 #: doc/guix.texi:8211
14694 msgid "Now, you can invoke commands as if you were the daemon (almost) and troubleshoot your build process."
14695 msgstr ""
14696
14697 #. type: Plain text
14698 #: doc/guix.texi:8217
14699 msgid "Sometimes it happens that, for example, a package's tests pass when you run them manually but they fail when the daemon runs them. This can happen because the daemon runs builds in containers where, unlike in our environment above, network access is missing, @file{/bin/sh} does not exist, etc. (@pxref{Build Environment Setup})."
14700 msgstr ""
14701
14702 #. type: Plain text
14703 #: doc/guix.texi:8220
14704 msgid "In such cases, you may need to run inspect the build process from within a container similar to the one the build daemon creates:"
14705 msgstr ""
14706
14707 #. type: example
14708 #: doc/guix.texi:8228
14709 #, no-wrap
14710 msgid ""
14711 "$ guix build -K foo\n"
14712 "@dots{}\n"
14713 "$ cd /tmp/guix-build-foo.drv-0\n"
14714 "$ guix environment --no-grafts -C foo --ad-hoc strace gdb\n"
14715 "[env]# source ./environment-variables\n"
14716 "[env]# cd foo-1.2\n"
14717 msgstr ""
14718
14719 #. type: Plain text
14720 #: doc/guix.texi:8237
14721 msgid "Here, @command{guix environment -C} creates a container and spawns a new shell in it (@pxref{Invoking guix environment}). The @command{--ad-hoc strace gdb} part adds the @command{strace} and @command{gdb} commands to the container, which would may find handy while debugging. The @option{--no-grafts} option makes sure we get the exact same environment, with ungrafted packages (@pxref{Security Updates}, for more info on grafts)."
14722 msgstr ""
14723
14724 #. type: Plain text
14725 #: doc/guix.texi:8240
14726 msgid "To get closer to a container like that used by the build daemon, we can remove @file{/bin/sh}:"
14727 msgstr ""
14728
14729 #. type: example
14730 #: doc/guix.texi:8243
14731 #, no-wrap
14732 msgid "[env]# rm /bin/sh\n"
14733 msgstr ""
14734
14735 #. type: Plain text
14736 #: doc/guix.texi:8247
14737 msgid "(Don't worry, this is harmless: this is all happening in the throw-away container created by @command{guix environment}.)"
14738 msgstr ""
14739
14740 #. type: Plain text
14741 #: doc/guix.texi:8250
14742 msgid "The @command{strace} command is probably not in the search path, but we can run:"
14743 msgstr ""
14744
14745 #. type: example
14746 #: doc/guix.texi:8253
14747 #, no-wrap
14748 msgid "[env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check\n"
14749 msgstr ""
14750
14751 #. type: Plain text
14752 #: doc/guix.texi:8258
14753 msgid "In this way, not only you will have reproduced the environment variables the daemon uses, you will also be running the build process in a container similar to the one the daemon uses."
14754 msgstr ""
14755
14756 #. type: section
14757 #: doc/guix.texi:8261
14758 #, no-wrap
14759 msgid "Invoking @command{guix edit}"
14760 msgstr ""
14761
14762 #. type: command{#1}
14763 #: doc/guix.texi:8263
14764 #, no-wrap
14765 msgid "guix edit"
14766 msgstr ""
14767
14768 #. type: cindex
14769 #: doc/guix.texi:8264
14770 #, no-wrap
14771 msgid "package definition, editing"
14772 msgstr ""
14773
14774 #. type: Plain text
14775 #: doc/guix.texi:8269
14776 msgid "So many packages, so many source files! The @command{guix edit} command facilitates the life of users and packagers by pointing their editor at the source file containing the definition of the specified packages. For instance:"
14777 msgstr ""
14778
14779 #. type: example
14780 #: doc/guix.texi:8272
14781 #, no-wrap
14782 msgid "guix edit gcc@@4.9 vim\n"
14783 msgstr ""
14784
14785 #. type: Plain text
14786 #: doc/guix.texi:8278
14787 msgid "launches the program specified in the @code{VISUAL} or in the @code{EDITOR} environment variable to view the recipe of GCC@tie{}4.9.3 and that of Vim."
14788 msgstr ""
14789
14790 #. type: Plain text
14791 #: doc/guix.texi:8284
14792 msgid "If you are using a Guix Git checkout (@pxref{Building from Git}), or have created your own packages on @code{GUIX_PACKAGE_PATH} (@pxref{Package Modules}), you will be able to edit the package recipes. In other cases, you will be able to examine the read-only recipes for packages currently in the store."
14793 msgstr ""
14794
14795 #. type: section
14796 #: doc/guix.texi:8287
14797 #, no-wrap
14798 msgid "Invoking @command{guix download}"
14799 msgstr ""
14800
14801 #. type: command{#1}
14802 #: doc/guix.texi:8289
14803 #, no-wrap
14804 msgid "guix download"
14805 msgstr ""
14806
14807 #. type: cindex
14808 #: doc/guix.texi:8290
14809 #, no-wrap
14810 msgid "downloading package sources"
14811 msgstr ""
14812
14813 #. type: Plain text
14814 #: doc/guix.texi:8297
14815 msgid "When writing a package definition, developers typically need to download a source tarball, compute its SHA256 hash, and write that hash in the package definition (@pxref{Defining Packages}). The @command{guix download} tool helps with this task: it downloads a file from the given URI, adds it to the store, and prints both its file name in the store and its SHA256 hash."
14816 msgstr ""
14817
14818 #. type: Plain text
14819 #: doc/guix.texi:8304
14820 msgid "The fact that the downloaded file is added to the store saves bandwidth: when the developer eventually tries to build the newly defined package with @command{guix build}, the source tarball will not have to be downloaded again because it is already in the store. It is also a convenient way to temporarily stash files, which may be deleted eventually (@pxref{Invoking guix gc})."
14821 msgstr ""
14822
14823 #. type: Plain text
14824 #: doc/guix.texi:8312
14825 msgid "The @command{guix download} command supports the same URIs as used in package definitions. In particular, it supports @code{mirror://} URIs. @code{https} URIs (HTTP over TLS) are supported @emph{provided} the Guile bindings for GnuTLS are available in the user's environment; when they are not available, an error is raised. @xref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}, for more information."
14826 msgstr ""
14827
14828 #. type: Plain text
14829 #: doc/guix.texi:8317
14830 msgid "@command{guix download} verifies HTTPS server certificates by loading the certificates of X.509 authorities from the directory pointed to by the @code{SSL_CERT_DIR} environment variable (@pxref{X.509 Certificates}), unless @option{--no-check-certificate} is used."
14831 msgstr ""
14832
14833 #. type: Plain text
14834 #: doc/guix.texi:8319 doc/guix.texi:9636
14835 msgid "The following options are available:"
14836 msgstr ""
14837
14838 #. type: item
14839 #: doc/guix.texi:8321 doc/guix.texi:8360
14840 #, no-wrap
14841 msgid "--format=@var{fmt}"
14842 msgstr ""
14843
14844 #. type: itemx
14845 #: doc/guix.texi:8322 doc/guix.texi:8361
14846 #, no-wrap
14847 msgid "-f @var{fmt}"
14848 msgstr ""
14849
14850 #. type: table
14851 #: doc/guix.texi:8325
14852 msgid "Write the hash in the format specified by @var{fmt}. For more information on the valid values for @var{fmt}, @pxref{Invoking guix hash}."
14853 msgstr ""
14854
14855 #. type: item
14856 #: doc/guix.texi:8326
14857 #, no-wrap
14858 msgid "--no-check-certificate"
14859 msgstr ""
14860
14861 #. type: table
14862 #: doc/guix.texi:8328
14863 msgid "Do not validate the X.509 certificates of HTTPS servers."
14864 msgstr ""
14865
14866 #. type: table
14867 #: doc/guix.texi:8332
14868 msgid "When using this option, you have @emph{absolutely no guarantee} that you are communicating with the authentic server responsible for the given URL, which makes you vulnerable to ``man-in-the-middle'' attacks."
14869 msgstr ""
14870
14871 #. type: item
14872 #: doc/guix.texi:8333
14873 #, no-wrap
14874 msgid "--output=@var{file}"
14875 msgstr ""
14876
14877 #. type: itemx
14878 #: doc/guix.texi:8334
14879 #, no-wrap
14880 msgid "-o @var{file}"
14881 msgstr ""
14882
14883 #. type: table
14884 #: doc/guix.texi:8337
14885 msgid "Save the downloaded file to @var{file} instead of adding it to the store."
14886 msgstr ""
14887
14888 #. type: section
14889 #: doc/guix.texi:8340
14890 #, no-wrap
14891 msgid "Invoking @command{guix hash}"
14892 msgstr ""
14893
14894 #. type: command{#1}
14895 #: doc/guix.texi:8342
14896 #, no-wrap
14897 msgid "guix hash"
14898 msgstr ""
14899
14900 #. type: Plain text
14901 #: doc/guix.texi:8347
14902 msgid "The @command{guix hash} command computes the SHA256 hash of a file. It is primarily a convenience tool for anyone contributing to the distribution: it computes the cryptographic hash of a file, which can be used in the definition of a package (@pxref{Defining Packages})."
14903 msgstr ""
14904
14905 #. type: example
14906 #: doc/guix.texi:8352
14907 #, no-wrap
14908 msgid "guix hash @var{option} @var{file}\n"
14909 msgstr ""
14910
14911 #. type: Plain text
14912 #: doc/guix.texi:8357
14913 msgid "When @var{file} is @code{-} (a hyphen), @command{guix hash} computes the hash of data read from standard input. @command{guix hash} has the following options:"
14914 msgstr ""
14915
14916 #. type: table
14917 #: doc/guix.texi:8363
14918 msgid "Write the hash in the format specified by @var{fmt}."
14919 msgstr ""
14920
14921 #. type: table
14922 #: doc/guix.texi:8366
14923 msgid "Supported formats: @code{nix-base32}, @code{base32}, @code{base16} (@code{hex} and @code{hexadecimal} can be used as well)."
14924 msgstr ""
14925
14926 #. type: table
14927 #: doc/guix.texi:8370
14928 msgid "If the @option{--format} option is not specified, @command{guix hash} will output the hash in @code{nix-base32}. This representation is used in the definitions of packages."
14929 msgstr ""
14930
14931 #. type: table
14932 #: doc/guix.texi:8374
14933 msgid "Compute the hash on @var{file} recursively."
14934 msgstr ""
14935
14936 #. type: table
14937 #: doc/guix.texi:8383
14938 msgid "In this case, the hash is computed on an archive containing @var{file}, including its children if it is a directory. Some of the metadata of @var{file} is part of the archive; for instance, when @var{file} is a regular file, the hash is different depending on whether @var{file} is executable or not. Metadata such as time stamps has no impact on the hash (@pxref{Invoking guix archive})."
14939 msgstr ""
14940
14941 #. type: item
14942 #: doc/guix.texi:8384
14943 #, no-wrap
14944 msgid "--exclude-vcs"
14945 msgstr ""
14946
14947 #. type: itemx
14948 #: doc/guix.texi:8385
14949 #, no-wrap
14950 msgid "-x"
14951 msgstr ""
14952
14953 #. type: table
14954 #: doc/guix.texi:8388
14955 msgid "When combined with @option{--recursive}, exclude version control system directories (@file{.bzr}, @file{.git}, @file{.hg}, etc.)"
14956 msgstr ""
14957
14958 #. type: table
14959 #: doc/guix.texi:8393
14960 msgid "As an example, here is how you would compute the hash of a Git checkout, which is useful when using the @code{git-fetch} method (@pxref{origin Reference}):"
14961 msgstr ""
14962
14963 #. type: example
14964 #: doc/guix.texi:8398
14965 #, no-wrap
14966 msgid ""
14967 "$ git clone http://example.org/foo.git\n"
14968 "$ cd foo\n"
14969 "$ guix hash -rx .\n"
14970 msgstr ""
14971
14972 #. type: cindex
14973 #: doc/guix.texi:8402 doc/guix.texi:8407
14974 #, no-wrap
14975 msgid "Invoking @command{guix import}"
14976 msgstr ""
14977
14978 #. type: cindex
14979 #: doc/guix.texi:8404
14980 #, no-wrap
14981 msgid "importing packages"
14982 msgstr ""
14983
14984 #. type: cindex
14985 #: doc/guix.texi:8405
14986 #, no-wrap
14987 msgid "package import"
14988 msgstr ""
14989
14990 #. type: cindex
14991 #: doc/guix.texi:8406
14992 #, no-wrap
14993 msgid "package conversion"
14994 msgstr ""
14995
14996 #. type: Plain text
14997 #: doc/guix.texi:8414
14998 msgid "The @command{guix import} command is useful for people who would like to add a package to the distribution with as little work as possible---a legitimate demand. The command knows of a few repositories from which it can ``import'' package metadata. The result is a package definition, or a template thereof, in the format we know (@pxref{Defining Packages})."
14999 msgstr ""
15000
15001 #. type: example
15002 #: doc/guix.texi:8419
15003 #, no-wrap
15004 msgid "guix import @var{importer} @var{options}@dots{}\n"
15005 msgstr ""
15006
15007 #. type: Plain text
15008 #: doc/guix.texi:8425
15009 msgid "@var{importer} specifies the source from which to import package metadata, and @var{options} specifies a package identifier and other options specific to @var{importer}. Currently, the available ``importers'' are:"
15010 msgstr ""
15011
15012 #. type: item
15013 #: doc/guix.texi:8427 doc/guix.texi:8927
15014 #, no-wrap
15015 msgid "gnu"
15016 msgstr ""
15017
15018 #. type: table
15019 #: doc/guix.texi:8431
15020 msgid "Import metadata for the given GNU package. This provides a template for the latest version of that GNU package, including the hash of its source tarball, and its canonical synopsis and description."
15021 msgstr ""
15022
15023 #. type: table
15024 #: doc/guix.texi:8434
15025 msgid "Additional information such as the package dependencies and its license needs to be figured out manually."
15026 msgstr ""
15027
15028 #. type: table
15029 #: doc/guix.texi:8437
15030 msgid "For example, the following command returns a package definition for GNU@tie{}Hello:"
15031 msgstr ""
15032
15033 #. type: example
15034 #: doc/guix.texi:8440
15035 #, no-wrap
15036 msgid "guix import gnu hello\n"
15037 msgstr ""
15038
15039 #. type: table
15040 #: doc/guix.texi:8443 doc/guix.texi:8670 doc/guix.texi:8720 doc/guix.texi:8749
15041 msgid "Specific command-line options are:"
15042 msgstr ""
15043
15044 #. type: item
15045 #: doc/guix.texi:8445 doc/guix.texi:9076
15046 #, no-wrap
15047 msgid "--key-download=@var{policy}"
15048 msgstr ""
15049
15050 #. type: table
15051 #: doc/guix.texi:8449
15052 msgid "As for @code{guix refresh}, specify the policy to handle missing OpenPGP keys when verifying the package signature. @xref{Invoking guix refresh, @code{--key-download}}."
15053 msgstr ""
15054
15055 #. type: item
15056 #: doc/guix.texi:8451 doc/guix.texi:8452 doc/guix.texi:8945
15057 #, no-wrap
15058 msgid "pypi"
15059 msgstr ""
15060
15061 #. type: table
15062 #: doc/guix.texi:8459
15063 msgid "Import metadata from the @uref{https://pypi.python.org/, Python Package Index}. Information is taken from the JSON-formatted description available at @code{pypi.python.org} and usually includes all the relevant information, including package dependencies. For maximum efficiency, it is recommended to install the @command{unzip} utility, so that the importer can unzip Python wheels and gather data from them."
15064 msgstr ""
15065
15066 #. type: table
15067 #: doc/guix.texi:8462
15068 msgid "The command below imports metadata for the @code{itsdangerous} Python package:"
15069 msgstr ""
15070
15071 #. type: example
15072 #: doc/guix.texi:8465
15073 #, no-wrap
15074 msgid "guix import pypi itsdangerous\n"
15075 msgstr ""
15076
15077 #. type: table
15078 #: doc/guix.texi:8473 doc/guix.texi:8498 doc/guix.texi:8693 doc/guix.texi:8734
15079 #: doc/guix.texi:8781
15080 msgid "Traverse the dependency graph of the given upstream package recursively and generate package expressions for all those packages that are not yet in Guix."
15081 msgstr ""
15082
15083 #. type: item
15084 #: doc/guix.texi:8475 doc/guix.texi:8476 doc/guix.texi:8947
15085 #, no-wrap
15086 msgid "gem"
15087 msgstr ""
15088
15089 #. type: table
15090 #: doc/guix.texi:8485
15091 msgid "Import metadata from @uref{https://rubygems.org/, RubyGems}. Information is taken from the JSON-formatted description available at @code{rubygems.org} and includes most relevant information, including runtime dependencies. There are some caveats, however. The metadata doesn't distinguish between synopses and descriptions, so the same string is used for both fields. Additionally, the details of non-Ruby dependencies required to build native extensions is unavailable and left as an exercise to the packager."
15092 msgstr ""
15093
15094 #. type: table
15095 #: doc/guix.texi:8487
15096 msgid "The command below imports metadata for the @code{rails} Ruby package:"
15097 msgstr ""
15098
15099 #. type: example
15100 #: doc/guix.texi:8490
15101 #, no-wrap
15102 msgid "guix import gem rails\n"
15103 msgstr ""
15104
15105 #. type: item
15106 #: doc/guix.texi:8500 doc/guix.texi:8943
15107 #, no-wrap
15108 msgid "cpan"
15109 msgstr ""
15110
15111 #. type: cindex
15112 #: doc/guix.texi:8501
15113 #, no-wrap
15114 msgid "CPAN"
15115 msgstr ""
15116
15117 #. type: table
15118 #: doc/guix.texi:8509
15119 msgid "Import metadata from @uref{https://www.metacpan.org/, MetaCPAN}. Information is taken from the JSON-formatted metadata provided through @uref{https://fastapi.metacpan.org/, MetaCPAN's API} and includes most relevant information, such as module dependencies. License information should be checked closely. If Perl is available in the store, then the @code{corelist} utility will be used to filter core modules out of the list of dependencies."
15120 msgstr ""
15121
15122 #. type: table
15123 #: doc/guix.texi:8512
15124 msgid "The command command below imports metadata for the @code{Acme::Boolean} Perl module:"
15125 msgstr ""
15126
15127 #. type: example
15128 #: doc/guix.texi:8515
15129 #, no-wrap
15130 msgid "guix import cpan Acme::Boolean\n"
15131 msgstr ""
15132
15133 #. type: item
15134 #: doc/guix.texi:8517 doc/guix.texi:8939
15135 #, no-wrap
15136 msgid "cran"
15137 msgstr ""
15138
15139 #. type: cindex
15140 #: doc/guix.texi:8518
15141 #, no-wrap
15142 msgid "CRAN"
15143 msgstr ""
15144
15145 #. type: cindex
15146 #: doc/guix.texi:8519
15147 #, no-wrap
15148 msgid "Bioconductor"
15149 msgstr ""
15150
15151 #. type: table
15152 #: doc/guix.texi:8523
15153 msgid "Import metadata from @uref{https://cran.r-project.org/, CRAN}, the central repository for the @uref{https://r-project.org, GNU@tie{}R statistical and graphical environment}."
15154 msgstr ""
15155
15156 #. type: table
15157 #: doc/guix.texi:8525
15158 msgid "Information is extracted from the @code{DESCRIPTION} file of the package."
15159 msgstr ""
15160
15161 #. type: table
15162 #: doc/guix.texi:8528
15163 msgid "The command command below imports metadata for the @code{Cairo} R package:"
15164 msgstr ""
15165
15166 #. type: example
15167 #: doc/guix.texi:8531
15168 #, no-wrap
15169 msgid "guix import cran Cairo\n"
15170 msgstr ""
15171
15172 #. type: table
15173 #: doc/guix.texi:8536
15174 msgid "When @code{--recursive} is added, the importer will traverse the dependency graph of the given upstream package recursively and generate package expressions for all those packages that are not yet in Guix."
15175 msgstr ""
15176
15177 #. type: table
15178 #: doc/guix.texi:8541
15179 msgid "When @code{--archive=bioconductor} is added, metadata is imported from @uref{https://www.bioconductor.org/, Bioconductor}, a repository of R packages for for the analysis and comprehension of high-throughput genomic data in bioinformatics."
15180 msgstr ""
15181
15182 #. type: table
15183 #: doc/guix.texi:8544
15184 msgid "Information is extracted from the @code{DESCRIPTION} file of a package published on the web interface of the Bioconductor SVN repository."
15185 msgstr ""
15186
15187 #. type: table
15188 #: doc/guix.texi:8547
15189 msgid "The command below imports metadata for the @code{GenomicRanges} R package:"
15190 msgstr ""
15191
15192 #. type: example
15193 #: doc/guix.texi:8550
15194 #, no-wrap
15195 msgid "guix import cran --archive=bioconductor GenomicRanges\n"
15196 msgstr ""
15197
15198 #. type: item
15199 #: doc/guix.texi:8552
15200 #, no-wrap
15201 msgid "texlive"
15202 msgstr ""
15203
15204 #. type: cindex
15205 #: doc/guix.texi:8553
15206 #, no-wrap
15207 msgid "TeX Live"
15208 msgstr ""
15209
15210 #. type: cindex
15211 #: doc/guix.texi:8554
15212 #, no-wrap
15213 msgid "CTAN"
15214 msgstr ""
15215
15216 #. type: table
15217 #: doc/guix.texi:8558
15218 msgid "Import metadata from @uref{https://www.ctan.org/, CTAN}, the comprehensive TeX archive network for TeX packages that are part of the @uref{https://www.tug.org/texlive/, TeX Live distribution}."
15219 msgstr ""
15220
15221 #. type: table
15222 #: doc/guix.texi:8563
15223 msgid "Information about the package is obtained through the XML API provided by CTAN, while the source code is downloaded from the SVN repository of the Tex Live project. This is done because the CTAN does not keep versioned archives."
15224 msgstr ""
15225
15226 #. type: table
15227 #: doc/guix.texi:8566
15228 msgid "The command command below imports metadata for the @code{fontspec} TeX package:"
15229 msgstr ""
15230
15231 #. type: example
15232 #: doc/guix.texi:8569
15233 #, no-wrap
15234 msgid "guix import texlive fontspec\n"
15235 msgstr ""
15236
15237 #. type: table
15238 #: doc/guix.texi:8575
15239 msgid "When @code{--archive=DIRECTORY} is added, the source code is downloaded not from the @file{latex} sub-directory of the @file{texmf-dist/source} tree in the TeX Live SVN repository, but from the specified sibling directory under the same root."
15240 msgstr ""
15241
15242 #. type: table
15243 #: doc/guix.texi:8579
15244 msgid "The command below imports metadata for the @code{ifxetex} package from CTAN while fetching the sources from the directory @file{texmf/source/generic}:"
15245 msgstr ""
15246
15247 #. type: example
15248 #: doc/guix.texi:8582
15249 #, no-wrap
15250 msgid "guix import texlive --archive=generic ifxetex\n"
15251 msgstr ""
15252
15253 #. type: cindex
15254 #: doc/guix.texi:8585
15255 #, no-wrap
15256 msgid "JSON, import"
15257 msgstr ""
15258
15259 #. type: table
15260 #: doc/guix.texi:8588
15261 msgid "Import package metadata from a local JSON file. Consider the following example package definition in JSON format:"
15262 msgstr ""
15263
15264 #. type: example
15265 #: doc/guix.texi:8601
15266 #, no-wrap
15267 msgid ""
15268 "@{\n"
15269 " \"name\": \"hello\",\n"
15270 " \"version\": \"2.10\",\n"
15271 " \"source\": \"mirror://gnu/hello/hello-2.10.tar.gz\",\n"
15272 " \"build-system\": \"gnu\",\n"
15273 " \"home-page\": \"https://www.gnu.org/software/hello/\",\n"
15274 " \"synopsis\": \"Hello, GNU world: An example GNU package\",\n"
15275 " \"description\": \"GNU Hello prints a greeting.\",\n"
15276 " \"license\": \"GPL-3.0+\",\n"
15277 " \"native-inputs\": [\"gcc@@6\"]\n"
15278 "@}\n"
15279 msgstr ""
15280
15281 #. type: table
15282 #: doc/guix.texi:8607
15283 msgid "The field names are the same as for the @code{<package>} record (@xref{Defining Packages}). References to other packages are provided as JSON lists of quoted package specification strings such as @code{guile} or @code{guile@@2.0}."
15284 msgstr ""
15285
15286 #. type: table
15287 #: doc/guix.texi:8610
15288 msgid "The importer also supports a more explicit source definition using the common fields for @code{<origin>} records:"
15289 msgstr ""
15290
15291 #. type: example
15292 #: doc/guix.texi:8623
15293 #, no-wrap
15294 msgid ""
15295 "@{\n"
15296 " @dots{}\n"
15297 " \"source\": @{\n"
15298 " \"method\": \"url-fetch\",\n"
15299 " \"uri\": \"mirror://gnu/hello/hello-2.10.tar.gz\",\n"
15300 " \"sha256\": @{\n"
15301 " \"base32\": \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"\n"
15302 " @}\n"
15303 " @}\n"
15304 " @dots{}\n"
15305 "@}\n"
15306 msgstr ""
15307
15308 #. type: table
15309 #: doc/guix.texi:8627
15310 msgid "The command below reads metadata from the JSON file @code{hello.json} and outputs a package expression:"
15311 msgstr ""
15312
15313 #. type: example
15314 #: doc/guix.texi:8630
15315 #, no-wrap
15316 msgid "guix import json hello.json\n"
15317 msgstr ""
15318
15319 #. type: item
15320 #: doc/guix.texi:8632
15321 #, no-wrap
15322 msgid "nix"
15323 msgstr ""
15324
15325 #. type: table
15326 #: doc/guix.texi:8641
15327 msgid "Import metadata from a local copy of the source of the @uref{https://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This relies on the @command{nix-instantiate} command of @uref{https://nixos.org/nix/, Nix}.}. Package definitions in Nixpkgs are typically written in a mixture of Nix-language and Bash code. This command only imports the high-level package structure that is written in the Nix language. It normally includes all the basic fields of a package definition."
15328 msgstr ""
15329
15330 #. type: table
15331 #: doc/guix.texi:8644
15332 msgid "When importing a GNU package, the synopsis and descriptions are replaced by their canonical upstream variant."
15333 msgstr ""
15334
15335 #. type: table
15336 #: doc/guix.texi:8646
15337 msgid "Usually, you will first need to do:"
15338 msgstr ""
15339
15340 #. type: example
15341 #: doc/guix.texi:8649
15342 #, no-wrap
15343 msgid "export NIX_REMOTE=daemon\n"
15344 msgstr ""
15345
15346 #. type: table
15347 #: doc/guix.texi:8653
15348 msgid "so that @command{nix-instantiate} does not try to open the Nix database."
15349 msgstr ""
15350
15351 #. type: table
15352 #: doc/guix.texi:8657
15353 msgid "As an example, the command below imports the package definition of LibreOffice (more precisely, it imports the definition of the package bound to the @code{libreoffice} top-level attribute):"
15354 msgstr ""
15355
15356 #. type: example
15357 #: doc/guix.texi:8660
15358 #, no-wrap
15359 msgid "guix import nix ~/path/to/nixpkgs libreoffice\n"
15360 msgstr ""
15361
15362 #. type: item
15363 #: doc/guix.texi:8662 doc/guix.texi:8663 doc/guix.texi:8951
15364 #, no-wrap
15365 msgid "hackage"
15366 msgstr ""
15367
15368 #. type: table
15369 #: doc/guix.texi:8668
15370 msgid "Import metadata from the Haskell community's central package archive @uref{https://hackage.haskell.org/, Hackage}. Information is taken from Cabal files and includes all the relevant information, including package dependencies."
15371 msgstr ""
15372
15373 #. type: item
15374 #: doc/guix.texi:8672
15375 #, no-wrap
15376 msgid "--stdin"
15377 msgstr ""
15378
15379 #. type: itemx
15380 #: doc/guix.texi:8673
15381 #, no-wrap
15382 msgid "-s"
15383 msgstr ""
15384
15385 #. type: table
15386 #: doc/guix.texi:8675
15387 msgid "Read a Cabal file from standard input."
15388 msgstr ""
15389
15390 #. type: item
15391 #: doc/guix.texi:8675 doc/guix.texi:8722
15392 #, no-wrap
15393 msgid "--no-test-dependencies"
15394 msgstr ""
15395
15396 #. type: itemx
15397 #: doc/guix.texi:8676 doc/guix.texi:8723
15398 #, no-wrap
15399 msgid "-t"
15400 msgstr ""
15401
15402 #. type: table
15403 #: doc/guix.texi:8678 doc/guix.texi:8725
15404 msgid "Do not include dependencies required only by the test suites."
15405 msgstr ""
15406
15407 #. type: item
15408 #: doc/guix.texi:8678
15409 #, no-wrap
15410 msgid "--cabal-environment=@var{alist}"
15411 msgstr ""
15412
15413 #. type: itemx
15414 #: doc/guix.texi:8679
15415 #, no-wrap
15416 msgid "-e @var{alist}"
15417 msgstr ""
15418
15419 #. type: table
15420 #: doc/guix.texi:8688
15421 msgid "@var{alist} is a Scheme alist defining the environment in which the Cabal conditionals are evaluated. The accepted keys are: @code{os}, @code{arch}, @code{impl} and a string representing the name of a flag. The value associated with a flag has to be either the symbol @code{true} or @code{false}. The value associated with other keys has to conform to the Cabal file format definition. The default value associated with the keys @code{os}, @code{arch} and @code{impl} is @samp{linux}, @samp{x86_64} and @samp{ghc}, respectively."
15422 msgstr ""
15423
15424 #. type: table
15425 #: doc/guix.texi:8698
15426 msgid "The command below imports metadata for the latest version of the @code{HTTP} Haskell package without including test dependencies and specifying the value of the flag @samp{network-uri} as @code{false}:"
15427 msgstr ""
15428
15429 #. type: example
15430 #: doc/guix.texi:8701
15431 #, no-wrap
15432 msgid "guix import hackage -t -e \"'((\\\"network-uri\\\" . false))\" HTTP\n"
15433 msgstr ""
15434
15435 #. type: table
15436 #: doc/guix.texi:8705
15437 msgid "A specific package version may optionally be specified by following the package name by an at-sign and a version number as in the following example:"
15438 msgstr ""
15439
15440 #. type: example
15441 #: doc/guix.texi:8708
15442 #, no-wrap
15443 msgid "guix import hackage mtl@@2.1.3.1\n"
15444 msgstr ""
15445
15446 #. type: item
15447 #: doc/guix.texi:8710 doc/guix.texi:8711 doc/guix.texi:8953
15448 #, no-wrap
15449 msgid "stackage"
15450 msgstr ""
15451
15452 #. type: table
15453 #: doc/guix.texi:8718
15454 msgid "The @code{stackage} importer is a wrapper around the @code{hackage} one. It takes a package name, looks up the package version included in a long-term support (LTS) @uref{https://www.stackage.org, Stackage} release and uses the @code{hackage} importer to retrieve its metadata. Note that it is up to you to select an LTS release compatible with the GHC compiler used by Guix."
15455 msgstr ""
15456
15457 #. type: item
15458 #: doc/guix.texi:8725
15459 #, no-wrap
15460 msgid "--lts-version=@var{version}"
15461 msgstr ""
15462
15463 #. type: itemx
15464 #: doc/guix.texi:8726
15465 #, no-wrap
15466 msgid "-l @var{version}"
15467 msgstr ""
15468
15469 #. type: table
15470 #: doc/guix.texi:8729
15471 msgid "@var{version} is the desired LTS release version. If omitted the latest release is used."
15472 msgstr ""
15473
15474 #. type: table
15475 #: doc/guix.texi:8738
15476 msgid "The command below imports metadata for the @code{HTTP} Haskell package included in the LTS Stackage release version 7.18:"
15477 msgstr ""
15478
15479 #. type: example
15480 #: doc/guix.texi:8741
15481 #, no-wrap
15482 msgid "guix import stackage --lts-version=7.18 HTTP\n"
15483 msgstr ""
15484
15485 #. type: item
15486 #: doc/guix.texi:8743 doc/guix.texi:8744 doc/guix.texi:8937
15487 #, no-wrap
15488 msgid "elpa"
15489 msgstr ""
15490
15491 #. type: table
15492 #: doc/guix.texi:8747
15493 msgid "Import metadata from an Emacs Lisp Package Archive (ELPA) package repository (@pxref{Packages,,, emacs, The GNU Emacs Manual})."
15494 msgstr ""
15495
15496 #. type: item
15497 #: doc/guix.texi:8751
15498 #, no-wrap
15499 msgid "--archive=@var{repo}"
15500 msgstr ""
15501
15502 #. type: itemx
15503 #: doc/guix.texi:8752
15504 #, no-wrap
15505 msgid "-a @var{repo}"
15506 msgstr ""
15507
15508 #. type: table
15509 #: doc/guix.texi:8756
15510 msgid "@var{repo} identifies the archive repository from which to retrieve the information. Currently the supported repositories and their identifiers are:"
15511 msgstr ""
15512
15513 #. type: itemize
15514 #: doc/guix.texi:8760
15515 msgid "@uref{https://elpa.gnu.org/packages, GNU}, selected by the @code{gnu} identifier. This is the default."
15516 msgstr ""
15517
15518 #. type: itemize
15519 #: doc/guix.texi:8766
15520 msgid "Packages from @code{elpa.gnu.org} are signed with one of the keys contained in the GnuPG keyring at @file{share/emacs/25.1/etc/package-keyring.gpg} (or similar) in the @code{emacs} package (@pxref{Package Installation, ELPA package signatures,, emacs, The GNU Emacs Manual})."
15521 msgstr ""
15522
15523 #. type: itemize
15524 #: doc/guix.texi:8770
15525 msgid "@uref{https://stable.melpa.org/packages, MELPA-Stable}, selected by the @code{melpa-stable} identifier."
15526 msgstr ""
15527
15528 #. type: itemize
15529 #: doc/guix.texi:8774
15530 msgid "@uref{https://melpa.org/packages, MELPA}, selected by the @code{melpa} identifier."
15531 msgstr ""
15532
15533 #. type: item
15534 #: doc/guix.texi:8783 doc/guix.texi:8784 doc/guix.texi:8955
15535 #, no-wrap
15536 msgid "crate"
15537 msgstr ""
15538
15539 #. type: table
15540 #: doc/guix.texi:8787
15541 msgid "Import metadata from the crates.io Rust package repository @uref{https://crates.io, crates.io}."
15542 msgstr ""
15543
15544 #. type: item
15545 #: doc/guix.texi:8788
15546 #, no-wrap
15547 msgid "opam"
15548 msgstr ""
15549
15550 #. type: cindex
15551 #: doc/guix.texi:8789
15552 #, no-wrap
15553 msgid "OPAM"
15554 msgstr ""
15555
15556 #. type: cindex
15557 #: doc/guix.texi:8790
15558 #, no-wrap
15559 msgid "OCaml"
15560 msgstr ""
15561
15562 #. type: table
15563 #: doc/guix.texi:8793
15564 msgid "Import metadata from the @uref{https://opam.ocaml.org/, OPAM} package repository used by the OCaml community."
15565 msgstr ""
15566
15567 #. type: Plain text
15568 #: doc/guix.texi:8798
15569 msgid "The structure of the @command{guix import} code is modular. It would be useful to have more importers for other package formats, and your help is welcome here (@pxref{Contributing})."
15570 msgstr ""
15571
15572 #. type: section
15573 #: doc/guix.texi:8800
15574 #, no-wrap
15575 msgid "Invoking @command{guix refresh}"
15576 msgstr ""
15577
15578 #. type: command{#1}
15579 #: doc/guix.texi:8802
15580 #, no-wrap
15581 msgid "guix refresh"
15582 msgstr ""
15583
15584 #. type: Plain text
15585 #: doc/guix.texi:8807
15586 msgid "The primary audience of the @command{guix refresh} command is developers of the GNU software distribution. By default, it reports any packages provided by the distribution that are outdated compared to the latest upstream version, like this:"
15587 msgstr ""
15588
15589 #. type: example
15590 #: doc/guix.texi:8812
15591 #, no-wrap
15592 msgid ""
15593 "$ guix refresh\n"
15594 "gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18.2.1\n"
15595 "gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0\n"
15596 msgstr ""
15597
15598 #. type: Plain text
15599 #: doc/guix.texi:8816
15600 msgid "Alternately, one can specify packages to consider, in which case a warning is emitted for packages that lack an updater:"
15601 msgstr ""
15602
15603 #. type: example
15604 #: doc/guix.texi:8821
15605 #, no-wrap
15606 msgid ""
15607 "$ guix refresh coreutils guile guile-ssh\n"
15608 "gnu/packages/ssh.scm:205:2: warning: no updater for guile-ssh\n"
15609 "gnu/packages/guile.scm:136:12: guile would be upgraded from 2.0.12 to 2.0.13\n"
15610 msgstr ""
15611
15612 #. type: Plain text
15613 #: doc/guix.texi:8830
15614 msgid "@command{guix refresh} browses the upstream repository of each package and determines the highest version number of the releases therein. The command knows how to update specific types of packages: GNU packages, ELPA packages, etc.---see the documentation for @option{--type} below. There are many packages, though, for which it lacks a method to determine whether a new upstream release is available. However, the mechanism is extensible, so feel free to get in touch with us to add a new method!"
15615 msgstr ""
15616
15617 #. type: table
15618 #: doc/guix.texi:8835
15619 msgid "Consider the packages specified, and all the packages upon which they depend."
15620 msgstr ""
15621
15622 #. type: example
15623 #: doc/guix.texi:8843
15624 #, no-wrap
15625 msgid ""
15626 "$ guix refresh --recursive coreutils\n"
15627 "gnu/packages/acl.scm:35:2: warning: no updater for acl\n"
15628 "gnu/packages/m4.scm:30:12: info: 1.4.18 is already the latest version of m4\n"
15629 "gnu/packages/xml.scm:68:2: warning: no updater for expat\n"
15630 "gnu/packages/multiprecision.scm:40:12: info: 6.1.2 is already the latest version of gmp\n"
15631 "@dots{}\n"
15632 msgstr ""
15633
15634 #. type: Plain text
15635 #: doc/guix.texi:8851
15636 msgid "Sometimes the upstream name differs from the package name used in Guix, and @command{guix refresh} needs a little help. Most updaters honor the @code{upstream-name} property in package definitions, which can be used to that effect:"
15637 msgstr ""
15638
15639 #. type: example
15640 #: doc/guix.texi:8858
15641 #, no-wrap
15642 msgid ""
15643 "(define-public network-manager\n"
15644 " (package\n"
15645 " (name \"network-manager\")\n"
15646 " ;; @dots{}\n"
15647 " (properties '((upstream-name . \"NetworkManager\")))))\n"
15648 msgstr ""
15649
15650 #. type: Plain text
15651 #: doc/guix.texi:8870
15652 msgid "When passed @code{--update}, it modifies distribution source files to update the version numbers and source tarball hashes of those package recipes (@pxref{Defining Packages}). This is achieved by downloading each package's latest source tarball and its associated OpenPGP signature, authenticating the downloaded tarball against its signature using @command{gpg}, and finally computing its hash. When the public key used to sign the tarball is missing from the user's keyring, an attempt is made to automatically retrieve it from a public key server; when this is successful, the key is added to the user's keyring; otherwise, @command{guix refresh} reports an error."
15653 msgstr ""
15654
15655 #. type: Plain text
15656 #: doc/guix.texi:8872
15657 msgid "The following options are supported:"
15658 msgstr ""
15659
15660 #. type: table
15661 #: doc/guix.texi:8880 doc/guix.texi:9538
15662 msgid "This is useful to precisely refer to a package, as in this example:"
15663 msgstr ""
15664
15665 #. type: example
15666 #: doc/guix.texi:8883
15667 #, no-wrap
15668 msgid "guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)'\n"
15669 msgstr ""
15670
15671 #. type: table
15672 #: doc/guix.texi:8887
15673 msgid "This command lists the dependents of the ``final'' libc (essentially all the packages.)"
15674 msgstr ""
15675
15676 #. type: item
15677 #: doc/guix.texi:8888
15678 #, no-wrap
15679 msgid "--update"
15680 msgstr ""
15681
15682 #. type: itemx
15683 #: doc/guix.texi:8889
15684 #, no-wrap
15685 msgid "-u"
15686 msgstr ""
15687
15688 #. type: table
15689 #: doc/guix.texi:8893
15690 msgid "Update distribution source files (package recipes) in place. This is usually run from a checkout of the Guix source tree (@pxref{Running Guix Before It Is Installed}):"
15691 msgstr ""
15692
15693 #. type: example
15694 #: doc/guix.texi:8896
15695 #, no-wrap
15696 msgid "$ ./pre-inst-env guix refresh -s non-core -u\n"
15697 msgstr ""
15698
15699 #. type: table
15700 #: doc/guix.texi:8899
15701 msgid "@xref{Defining Packages}, for more information on package definitions."
15702 msgstr ""
15703
15704 #. type: item
15705 #: doc/guix.texi:8900
15706 #, no-wrap
15707 msgid "--select=[@var{subset}]"
15708 msgstr ""
15709
15710 #. type: itemx
15711 #: doc/guix.texi:8901
15712 #, no-wrap
15713 msgid "-s @var{subset}"
15714 msgstr ""
15715
15716 #. type: table
15717 #: doc/guix.texi:8904
15718 msgid "Select all the packages in @var{subset}, one of @code{core} or @code{non-core}."
15719 msgstr ""
15720
15721 #. type: table
15722 #: doc/guix.texi:8911
15723 msgid "The @code{core} subset refers to all the packages at the core of the distribution---i.e., packages that are used to build ``everything else''. This includes GCC, libc, Binutils, Bash, etc. Usually, changing one of these packages in the distribution entails a rebuild of all the others. Thus, such updates are an inconvenience to users in terms of build time or bandwidth used to achieve the upgrade."
15724 msgstr ""
15725
15726 #. type: table
15727 #: doc/guix.texi:8915
15728 msgid "The @code{non-core} subset refers to the remaining packages. It is typically useful in cases where an update of the core packages would be inconvenient."
15729 msgstr ""
15730
15731 #. type: table
15732 #: doc/guix.texi:8920
15733 msgid "Select all the packages from the manifest in @var{file}. This is useful to check if any packages of the user manifest can be updated."
15734 msgstr ""
15735
15736 #. type: item
15737 #: doc/guix.texi:8921
15738 #, no-wrap
15739 msgid "--type=@var{updater}"
15740 msgstr ""
15741
15742 #. type: itemx
15743 #: doc/guix.texi:8922
15744 #, no-wrap
15745 msgid "-t @var{updater}"
15746 msgstr ""
15747
15748 #. type: table
15749 #: doc/guix.texi:8925
15750 msgid "Select only packages handled by @var{updater} (may be a comma-separated list of updaters). Currently, @var{updater} may be one of:"
15751 msgstr ""
15752
15753 #. type: table
15754 #: doc/guix.texi:8929
15755 msgid "the updater for GNU packages;"
15756 msgstr ""
15757
15758 #. type: item
15759 #: doc/guix.texi:8929
15760 #, no-wrap
15761 msgid "gnome"
15762 msgstr ""
15763
15764 #. type: table
15765 #: doc/guix.texi:8931
15766 msgid "the updater for GNOME packages;"
15767 msgstr ""
15768
15769 #. type: item
15770 #: doc/guix.texi:8931
15771 #, no-wrap
15772 msgid "kde"
15773 msgstr ""
15774
15775 #. type: table
15776 #: doc/guix.texi:8933
15777 msgid "the updater for KDE packages;"
15778 msgstr ""
15779
15780 #. type: item
15781 #: doc/guix.texi:8933
15782 #, no-wrap
15783 msgid "xorg"
15784 msgstr ""
15785
15786 #. type: table
15787 #: doc/guix.texi:8935
15788 msgid "the updater for X.org packages;"
15789 msgstr ""
15790
15791 #. type: item
15792 #: doc/guix.texi:8935
15793 #, no-wrap
15794 msgid "kernel.org"
15795 msgstr ""
15796
15797 #. type: table
15798 #: doc/guix.texi:8937
15799 msgid "the updater for packages hosted on kernel.org;"
15800 msgstr ""
15801
15802 #. type: table
15803 #: doc/guix.texi:8939
15804 msgid "the updater for @uref{https://elpa.gnu.org/, ELPA} packages;"
15805 msgstr ""
15806
15807 #. type: table
15808 #: doc/guix.texi:8941
15809 msgid "the updater for @uref{https://cran.r-project.org/, CRAN} packages;"
15810 msgstr ""
15811
15812 #. type: item
15813 #: doc/guix.texi:8941
15814 #, no-wrap
15815 msgid "bioconductor"
15816 msgstr ""
15817
15818 #. type: table
15819 #: doc/guix.texi:8943
15820 msgid "the updater for @uref{https://www.bioconductor.org/, Bioconductor} R packages;"
15821 msgstr ""
15822
15823 #. type: table
15824 #: doc/guix.texi:8945
15825 msgid "the updater for @uref{https://www.cpan.org/, CPAN} packages;"
15826 msgstr ""
15827
15828 #. type: table
15829 #: doc/guix.texi:8947
15830 msgid "the updater for @uref{https://pypi.python.org, PyPI} packages."
15831 msgstr ""
15832
15833 #. type: table
15834 #: doc/guix.texi:8949
15835 msgid "the updater for @uref{https://rubygems.org, RubyGems} packages."
15836 msgstr ""
15837
15838 #. type: item
15839 #: doc/guix.texi:8949
15840 #, no-wrap
15841 msgid "github"
15842 msgstr ""
15843
15844 #. type: table
15845 #: doc/guix.texi:8951
15846 msgid "the updater for @uref{https://github.com, GitHub} packages."
15847 msgstr ""
15848
15849 #. type: table
15850 #: doc/guix.texi:8953
15851 msgid "the updater for @uref{https://hackage.haskell.org, Hackage} packages."
15852 msgstr ""
15853
15854 #. type: table
15855 #: doc/guix.texi:8955
15856 msgid "the updater for @uref{https://www.stackage.org, Stackage} packages."
15857 msgstr ""
15858
15859 #. type: table
15860 #: doc/guix.texi:8957
15861 msgid "the updater for @uref{https://crates.io, Crates} packages."
15862 msgstr ""
15863
15864 #. type: item
15865 #: doc/guix.texi:8957
15866 #, no-wrap
15867 msgid "launchpad"
15868 msgstr ""
15869
15870 #. type: table
15871 #: doc/guix.texi:8959
15872 msgid "the updater for @uref{https://launchpad.net, Launchpad} packages."
15873 msgstr ""
15874
15875 #. type: table
15876 #: doc/guix.texi:8963
15877 msgid "For instance, the following command only checks for updates of Emacs packages hosted at @code{elpa.gnu.org} and for updates of CRAN packages:"
15878 msgstr ""
15879
15880 #. type: example
15881 #: doc/guix.texi:8968
15882 #, no-wrap
15883 msgid ""
15884 "$ guix refresh --type=elpa,cran\n"
15885 "gnu/packages/statistics.scm:819:13: r-testthat would be upgraded from 0.10.0 to 0.11.0\n"
15886 "gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 11.88.9\n"
15887 msgstr ""
15888
15889 #. type: Plain text
15890 #: doc/guix.texi:8974
15891 msgid "In addition, @command{guix refresh} can be passed one or more package names, as in this example:"
15892 msgstr ""
15893
15894 #. type: example
15895 #: doc/guix.texi:8977
15896 #, no-wrap
15897 msgid "$ ./pre-inst-env guix refresh -u emacs idutils gcc@@4.8\n"
15898 msgstr ""
15899
15900 #. type: Plain text
15901 #: doc/guix.texi:8983
15902 msgid "The command above specifically updates the @code{emacs} and @code{idutils} packages. The @code{--select} option would have no effect in this case."
15903 msgstr ""
15904
15905 #. type: Plain text
15906 #: doc/guix.texi:8988
15907 msgid "When considering whether to upgrade a package, it is sometimes convenient to know which packages would be affected by the upgrade and should be checked for compatibility. For this the following option may be used when passing @command{guix refresh} one or more package names:"
15908 msgstr ""
15909
15910 #. type: item
15911 #: doc/guix.texi:8991
15912 #, no-wrap
15913 msgid "--list-updaters"
15914 msgstr ""
15915
15916 #. type: itemx
15917 #: doc/guix.texi:8992
15918 #, no-wrap
15919 msgid "-L"
15920 msgstr ""
15921
15922 #. type: table
15923 #: doc/guix.texi:8994
15924 msgid "List available updaters and exit (see @option{--type} above.)"
15925 msgstr ""
15926
15927 #. type: table
15928 #: doc/guix.texi:8997
15929 msgid "For each updater, display the fraction of packages it covers; at the end, display the fraction of packages covered by all these updaters."
15930 msgstr ""
15931
15932 #. type: item
15933 #: doc/guix.texi:8998
15934 #, no-wrap
15935 msgid "--list-dependent"
15936 msgstr ""
15937
15938 #. type: itemx
15939 #: doc/guix.texi:8999 doc/guix.texi:9215
15940 #, no-wrap
15941 msgid "-l"
15942 msgstr ""
15943
15944 #. type: table
15945 #: doc/guix.texi:9002
15946 msgid "List top-level dependent packages that would need to be rebuilt as a result of upgrading one or more packages."
15947 msgstr ""
15948
15949 #. type: table
15950 #: doc/guix.texi:9006
15951 msgid "@xref{Invoking guix graph, the @code{reverse-package} type of @command{guix graph}}, for information on how to visualize the list of dependents of a package."
15952 msgstr ""
15953
15954 #. type: Plain text
15955 #: doc/guix.texi:9012
15956 msgid "Be aware that the @code{--list-dependent} option only @emph{approximates} the rebuilds that would be required as a result of an upgrade. More rebuilds might be required under some circumstances."
15957 msgstr ""
15958
15959 #. type: example
15960 #: doc/guix.texi:9017
15961 #, no-wrap
15962 msgid ""
15963 "$ guix refresh --list-dependent flex\n"
15964 "Building the following 120 packages would ensure 213 dependent packages are rebuilt:\n"
15965 "hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{}\n"
15966 msgstr ""
15967
15968 #. type: Plain text
15969 #: doc/guix.texi:9021
15970 msgid "The command above lists a set of packages that could be built to check for compatibility with an upgraded @code{flex} package."
15971 msgstr ""
15972
15973 #. type: item
15974 #: doc/guix.texi:9024
15975 #, no-wrap
15976 msgid "--list-transitive"
15977 msgstr ""
15978
15979 #. type: table
15980 #: doc/guix.texi:9026
15981 msgid "List all the packages which one or more packages depend upon."
15982 msgstr ""
15983
15984 #. type: example
15985 #: doc/guix.texi:9031
15986 #, no-wrap
15987 msgid ""
15988 "$ guix refresh --list-transitive flex\n"
15989 "flex@@2.6.4 depends on the following 25 packages: perl@@5.28.0 help2man@@1.47.6\n"
15990 "bison@@3.0.5 indent@@2.2.10 tar@@1.30 gzip@@1.9 bzip2@@1.0.6 xz@@5.2.4 file@@5.33 @dots{}\n"
15991 msgstr ""
15992
15993 #. type: Plain text
15994 #: doc/guix.texi:9037
15995 msgid "The command above lists a set of packages which, when changed, would cause @code{flex} to be rebuilt."
15996 msgstr ""
15997
15998 #. type: Plain text
15999 #: doc/guix.texi:9039
16000 msgid "The following options can be used to customize GnuPG operation:"
16001 msgstr ""
16002
16003 #. type: item
16004 #: doc/guix.texi:9042
16005 #, no-wrap
16006 msgid "--gpg=@var{command}"
16007 msgstr ""
16008
16009 #. type: table
16010 #: doc/guix.texi:9045
16011 msgid "Use @var{command} as the GnuPG 2.x command. @var{command} is searched for in @code{$PATH}."
16012 msgstr ""
16013
16014 #. type: item
16015 #: doc/guix.texi:9046
16016 #, no-wrap
16017 msgid "--keyring=@var{file}"
16018 msgstr ""
16019
16020 #. type: table
16021 #: doc/guix.texi:9052
16022 msgid "Use @var{file} as the keyring for upstream keys. @var{file} must be in the @dfn{keybox format}. Keybox files usually have a name ending in @file{.kbx} and the GNU@tie{}Privacy Guard (GPG) can manipulate these files (@pxref{kbxutil, @command{kbxutil},, gnupg, Using the GNU Privacy Guard}, for information on a tool to manipulate keybox files)."
16023 msgstr ""
16024
16025 #. type: table
16026 #: doc/guix.texi:9058
16027 msgid "When this option is omitted, @command{guix refresh} uses @file{~/.config/guix/upstream/trustedkeys.kbx} as the keyring for upstream signing keys. OpenPGP signatures are checked against keys from this keyring; missing keys are downloaded to this keyring as well (see @option{--key-download} below.)"
16028 msgstr ""
16029
16030 #. type: table
16031 #: doc/guix.texi:9061
16032 msgid "You can export keys from your default GPG keyring into a keybox file using commands like this one:"
16033 msgstr ""
16034
16035 #. type: example
16036 #: doc/guix.texi:9064
16037 #, no-wrap
16038 msgid "gpg --export rms@@gnu.org | kbxutil --import-openpgp >> mykeyring.kbx\n"
16039 msgstr ""
16040
16041 #. type: table
16042 #: doc/guix.texi:9067
16043 msgid "Likewise, you can fetch keys to a specific keybox file like this:"
16044 msgstr ""
16045
16046 #. type: example
16047 #: doc/guix.texi:9071
16048 #, no-wrap
16049 msgid ""
16050 "gpg --no-default-keyring --keyring mykeyring.kbx \\\n"
16051 " --recv-keys @value{OPENPGP-SIGNING-KEY-ID}\n"
16052 msgstr ""
16053
16054 #. type: table
16055 #: doc/guix.texi:9075
16056 msgid "@ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU Privacy Guard}, for more information on GPG's @option{--keyring} option."
16057 msgstr ""
16058
16059 #. type: table
16060 #: doc/guix.texi:9079
16061 msgid "Handle missing OpenPGP keys according to @var{policy}, which may be one of:"
16062 msgstr ""
16063
16064 #. type: item
16065 #: doc/guix.texi:9081 doc/guix.texi:16048
16066 #, no-wrap
16067 msgid "always"
16068 msgstr ""
16069
16070 #. type: table
16071 #: doc/guix.texi:9084
16072 msgid "Always download missing OpenPGP keys from the key server, and add them to the user's GnuPG keyring."
16073 msgstr ""
16074
16075 #. type: item
16076 #: doc/guix.texi:9085 doc/guix.texi:16050
16077 #, no-wrap
16078 msgid "never"
16079 msgstr ""
16080
16081 #. type: table
16082 #: doc/guix.texi:9087
16083 msgid "Never try to download missing OpenPGP keys. Instead just bail out."
16084 msgstr ""
16085
16086 #. type: item
16087 #: doc/guix.texi:9088
16088 #, no-wrap
16089 msgid "interactive"
16090 msgstr ""
16091
16092 #. type: table
16093 #: doc/guix.texi:9091
16094 msgid "When a package signed with an unknown OpenPGP key is encountered, ask the user whether to download it or not. This is the default behavior."
16095 msgstr ""
16096
16097 #. type: item
16098 #: doc/guix.texi:9093
16099 #, no-wrap
16100 msgid "--key-server=@var{host}"
16101 msgstr ""
16102
16103 #. type: table
16104 #: doc/guix.texi:9095
16105 msgid "Use @var{host} as the OpenPGP key server when importing a public key."
16106 msgstr ""
16107
16108 #. type: Plain text
16109 #: doc/guix.texi:9108
16110 msgid "The @code{github} updater uses the @uref{https://developer.github.com/v3/, GitHub API} to query for new releases. When used repeatedly e.g.@: when refreshing all packages, GitHub will eventually refuse to answer any further API requests. By default 60 API requests per hour are allowed, and a full refresh on all GitHub packages in Guix requires more than this. Authentication with GitHub through the use of an API token alleviates these limits. To use an API token, set the environment variable @code{GUIX_GITHUB_TOKEN} to a token procured from @uref{https://github.com/settings/tokens} or otherwise."
16111 msgstr ""
16112
16113 #. type: section
16114 #: doc/guix.texi:9111
16115 #, no-wrap
16116 msgid "Invoking @command{guix lint}"
16117 msgstr ""
16118
16119 #. type: command{#1}
16120 #: doc/guix.texi:9113
16121 #, no-wrap
16122 msgid "guix lint"
16123 msgstr ""
16124
16125 #. type: cindex
16126 #: doc/guix.texi:9114
16127 #, no-wrap
16128 msgid "package, checking for errors"
16129 msgstr ""
16130
16131 #. type: Plain text
16132 #: doc/guix.texi:9120
16133 msgid "The @command{guix lint} command is meant to help package developers avoid common errors and use a consistent style. It runs a number of checks on a given set of packages in order to find common mistakes in their definitions. Available @dfn{checkers} include (see @code{--list-checkers} for a complete list):"
16134 msgstr ""
16135
16136 #. type: table
16137 #: doc/guix.texi:9126
16138 msgid "Validate certain typographical and stylistic rules about package descriptions and synopses."
16139 msgstr ""
16140
16141 #. type: item
16142 #: doc/guix.texi:9127
16143 #, no-wrap
16144 msgid "inputs-should-be-native"
16145 msgstr ""
16146
16147 #. type: table
16148 #: doc/guix.texi:9129
16149 msgid "Identify inputs that should most likely be native inputs."
16150 msgstr ""
16151
16152 #. type: itemx
16153 #: doc/guix.texi:9132
16154 #, no-wrap
16155 msgid "mirror-url"
16156 msgstr ""
16157
16158 #. type: itemx
16159 #: doc/guix.texi:9133
16160 #, no-wrap
16161 msgid "github-url"
16162 msgstr ""
16163
16164 #. type: itemx
16165 #: doc/guix.texi:9134
16166 #, no-wrap
16167 msgid "source-file-name"
16168 msgstr ""
16169
16170 #. type: table
16171 #: doc/guix.texi:9141
16172 msgid "Probe @code{home-page} and @code{source} URLs and report those that are invalid. Suggest a @code{mirror://} URL when applicable. If the @code{source} URL redirects to a GitHub URL, recommend usage of the GitHub URL. Check that the source file name is meaningful, e.g.@: is not just a version number or ``git-checkout'', without a declared @code{file-name} (@pxref{origin Reference})."
16173 msgstr ""
16174
16175 #. type: item
16176 #: doc/guix.texi:9142
16177 #, no-wrap
16178 msgid "source-unstable-tarball"
16179 msgstr ""
16180
16181 #. type: table
16182 #: doc/guix.texi:9146
16183 msgid "Parse the @code{source} URL to determine if a tarball from GitHub is autogenerated or if it is a release tarball. Unfortunately GitHub's autogenerated tarballs are sometimes regenerated."
16184 msgstr ""
16185
16186 #. type: item
16187 #: doc/guix.texi:9147
16188 #, no-wrap
16189 msgid "cve"
16190 msgstr ""
16191
16192 #. type: cindex
16193 #: doc/guix.texi:9148 doc/guix.texi:25526
16194 #, no-wrap
16195 msgid "security vulnerabilities"
16196 msgstr ""
16197
16198 #. type: cindex
16199 #: doc/guix.texi:9149
16200 #, no-wrap
16201 msgid "CVE, Common Vulnerabilities and Exposures"
16202 msgstr ""
16203
16204 #. type: table
16205 #: doc/guix.texi:9154
16206 msgid "Report known vulnerabilities found in the Common Vulnerabilities and Exposures (CVE) databases of the current and past year @uref{https://nvd.nist.gov/download.cfm#CVE_FEED, published by the US NIST}."
16207 msgstr ""
16208
16209 #. type: table
16210 #: doc/guix.texi:9156
16211 msgid "To view information about a particular vulnerability, visit pages such as:"
16212 msgstr ""
16213
16214 #. type: indicateurl{#1}
16215 #: doc/guix.texi:9160
16216 msgid "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-YYYY-ABCD"
16217 msgstr ""
16218
16219 #. type: indicateurl{#1}
16220 #: doc/guix.texi:9162
16221 msgid "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-YYYY-ABCD"
16222 msgstr ""
16223
16224 #. type: table
16225 #: doc/guix.texi:9167
16226 msgid "where @code{CVE-YYYY-ABCD} is the CVE identifier---e.g., @code{CVE-2015-7554}."
16227 msgstr ""
16228
16229 #. type: table
16230 #: doc/guix.texi:9172
16231 msgid "Package developers can specify in package recipes the @uref{https://nvd.nist.gov/cpe.cfm,Common Platform Enumeration (CPE)} name and version of the package when they differ from the name or version that Guix uses, as in this example:"
16232 msgstr ""
16233
16234 #. type: example
16235 #: doc/guix.texi:9180
16236 #, no-wrap
16237 msgid ""
16238 "(package\n"
16239 " (name \"grub\")\n"
16240 " ;; @dots{}\n"
16241 " ;; CPE calls this package \"grub2\".\n"
16242 " (properties '((cpe-name . \"grub2\")\n"
16243 " (cpe-version . \"2.3\")))\n"
16244 msgstr ""
16245
16246 #. type: table
16247 #: doc/guix.texi:9187
16248 msgid "Some entries in the CVE database do not specify which version of a package they apply to, and would thus ``stick around'' forever. Package developers who found CVE alerts and verified they can be ignored can declare them as in this example:"
16249 msgstr ""
16250
16251 #. type: example
16252 #: doc/guix.texi:9197
16253 #, no-wrap
16254 msgid ""
16255 "(package\n"
16256 " (name \"t1lib\")\n"
16257 " ;; @dots{}\n"
16258 " ;; These CVEs no longer apply and can be safely ignored.\n"
16259 " (properties `((lint-hidden-cve . (\"CVE-2011-0433\"\n"
16260 " \"CVE-2011-1553\"\n"
16261 " \"CVE-2011-1554\"\n"
16262 " \"CVE-2011-5244\")))))\n"
16263 msgstr ""
16264
16265 #. type: item
16266 #: doc/guix.texi:9199
16267 #, no-wrap
16268 msgid "formatting"
16269 msgstr ""
16270
16271 #. type: table
16272 #: doc/guix.texi:9202
16273 msgid "Warn about obvious source code formatting issues: trailing white space, use of tabulations, etc."
16274 msgstr ""
16275
16276 #. type: example
16277 #: doc/guix.texi:9208
16278 #, no-wrap
16279 msgid "guix lint @var{options} @var{package}@dots{}\n"
16280 msgstr ""
16281
16282 #. type: Plain text
16283 #: doc/guix.texi:9212
16284 msgid "If no package is given on the command line, then all packages are checked. The @var{options} may be zero or more of the following:"
16285 msgstr ""
16286
16287 #. type: item
16288 #: doc/guix.texi:9214
16289 #, no-wrap
16290 msgid "--list-checkers"
16291 msgstr ""
16292
16293 #. type: table
16294 #: doc/guix.texi:9218
16295 msgid "List and describe all the available checkers that will be run on packages and exit."
16296 msgstr ""
16297
16298 #. type: item
16299 #: doc/guix.texi:9219
16300 #, no-wrap
16301 msgid "--checkers"
16302 msgstr ""
16303
16304 #. type: itemx
16305 #: doc/guix.texi:9220
16306 #, no-wrap
16307 msgid "-c"
16308 msgstr ""
16309
16310 #. type: table
16311 #: doc/guix.texi:9223
16312 msgid "Only enable the checkers specified in a comma-separated list using the names returned by @code{--list-checkers}."
16313 msgstr ""
16314
16315 #. type: section
16316 #: doc/guix.texi:9227
16317 #, no-wrap
16318 msgid "Invoking @command{guix size}"
16319 msgstr ""
16320
16321 #. type: cindex
16322 #: doc/guix.texi:9229
16323 #, no-wrap
16324 msgid "size"
16325 msgstr ""
16326
16327 #. type: cindex
16328 #: doc/guix.texi:9230
16329 #, no-wrap
16330 msgid "package size"
16331 msgstr ""
16332
16333 #. type: command{#1}
16334 #: doc/guix.texi:9232
16335 #, no-wrap
16336 msgid "guix size"
16337 msgstr ""
16338
16339 #. type: Plain text
16340 #: doc/guix.texi:9239
16341 msgid "The @command{guix size} command helps package developers profile the disk usage of packages. It is easy to overlook the impact of an additional dependency added to a package, or the impact of using a single output for a package that could easily be split (@pxref{Packages with Multiple Outputs}). Such are the typical issues that @command{guix size} can highlight."
16342 msgstr ""
16343
16344 #. type: Plain text
16345 #: doc/guix.texi:9244
16346 msgid "The command can be passed one or more package specifications such as @code{gcc@@4.8} or @code{guile:debug}, or a file name in the store. Consider this example:"
16347 msgstr ""
16348
16349 #. type: example
16350 #: doc/guix.texi:9257
16351 #, no-wrap
16352 msgid ""
16353 "$ guix size coreutils\n"
16354 "store item total self\n"
16355 "/gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1%\n"
16356 "/gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6%\n"
16357 "/gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0%\n"
16358 "/gnu/store/@dots{}-gmp-6.1.2 63.1 2.7 3.4%\n"
16359 "/gnu/store/@dots{}-bash-static-4.4.12 1.5 1.5 1.9%\n"
16360 "/gnu/store/@dots{}-acl-2.2.52 61.1 0.4 0.5%\n"
16361 "/gnu/store/@dots{}-attr-2.4.47 60.6 0.2 0.3%\n"
16362 "/gnu/store/@dots{}-libcap-2.25 60.5 0.2 0.2%\n"
16363 "total: 78.9 MiB\n"
16364 msgstr ""
16365
16366 #. type: Plain text
16367 #: doc/guix.texi:9263
16368 msgid "The store items listed here constitute the @dfn{transitive closure} of Coreutils---i.e., Coreutils and all its dependencies, recursively---as would be returned by:"
16369 msgstr ""
16370
16371 #. type: example
16372 #: doc/guix.texi:9266
16373 #, no-wrap
16374 msgid "$ guix gc -R /gnu/store/@dots{}-coreutils-8.23\n"
16375 msgstr ""
16376
16377 #. type: Plain text
16378 #: doc/guix.texi:9274
16379 msgid "Here the output shows three columns next to store items. The first column, labeled ``total'', shows the size in mebibytes (MiB) of the closure of the store item---that is, its own size plus the size of all its dependencies. The next column, labeled ``self'', shows the size of the item itself. The last column shows the ratio of the size of the item itself to the space occupied by all the items listed here."
16380 msgstr ""
16381
16382 #. type: Plain text
16383 #: doc/guix.texi:9280
16384 msgid "In this example, we see that the closure of Coreutils weighs in at 79@tie{}MiB, most of which is taken by libc and GCC's run-time support libraries. (That libc and GCC's libraries represent a large fraction of the closure is not a problem @i{per se} because they are always available on the system anyway.)"
16385 msgstr ""
16386
16387 #. type: Plain text
16388 #: doc/guix.texi:9289
16389 msgid "When the package(s) passed to @command{guix size} are available in the store@footnote{More precisely, @command{guix size} looks for the @emph{ungrafted} variant of the given package(s), as returned by @code{guix build @var{package} --no-grafts}. @xref{Security Updates}, for information on grafts.}, @command{guix size} queries the daemon to determine its dependencies, and measures its size in the store, similar to @command{du -ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU Coreutils})."
16390 msgstr ""
16391
16392 #. type: Plain text
16393 #: doc/guix.texi:9294
16394 msgid "When the given packages are @emph{not} in the store, @command{guix size} reports information based on the available substitutes (@pxref{Substitutes}). This makes it possible it to profile disk usage of store items that are not even on disk, only available remotely."
16395 msgstr ""
16396
16397 #. type: Plain text
16398 #: doc/guix.texi:9296
16399 msgid "You can also specify several package names:"
16400 msgstr ""
16401
16402 #. type: example
16403 #: doc/guix.texi:9306
16404 #, no-wrap
16405 msgid ""
16406 "$ guix size coreutils grep sed bash\n"
16407 "store item total self\n"
16408 "/gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4%\n"
16409 "/gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8%\n"
16410 "/gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6%\n"
16411 "/gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2%\n"
16412 "@dots{}\n"
16413 "total: 102.3 MiB\n"
16414 msgstr ""
16415
16416 #. type: Plain text
16417 #: doc/guix.texi:9312
16418 msgid "In this example we see that the combination of the four packages takes 102.3@tie{}MiB in total, which is much less than the sum of each closure since they have a lot of dependencies in common."
16419 msgstr ""
16420
16421 #. type: Plain text
16422 #: doc/guix.texi:9314
16423 msgid "The available options are:"
16424 msgstr ""
16425
16426 #. type: table
16427 #: doc/guix.texi:9320
16428 msgid "Use substitute information from @var{urls}. @xref{client-substitute-urls, the same option for @code{guix build}}."
16429 msgstr ""
16430
16431 #. type: item
16432 #: doc/guix.texi:9321
16433 #, no-wrap
16434 msgid "--sort=@var{key}"
16435 msgstr ""
16436
16437 #. type: table
16438 #: doc/guix.texi:9323
16439 msgid "Sort lines according to @var{key}, one of the following options:"
16440 msgstr ""
16441
16442 #. type: item
16443 #: doc/guix.texi:9325
16444 #, no-wrap
16445 msgid "self"
16446 msgstr ""
16447
16448 #. type: table
16449 #: doc/guix.texi:9327
16450 msgid "the size of each item (the default);"
16451 msgstr ""
16452
16453 #. type: table
16454 #: doc/guix.texi:9329
16455 msgid "the total size of the item's closure."
16456 msgstr ""
16457
16458 #. type: item
16459 #: doc/guix.texi:9331
16460 #, no-wrap
16461 msgid "--map-file=@var{file}"
16462 msgstr ""
16463
16464 #. type: table
16465 #: doc/guix.texi:9333
16466 msgid "Write a graphical map of disk usage in PNG format to @var{file}."
16467 msgstr ""
16468
16469 #. type: table
16470 #: doc/guix.texi:9335
16471 msgid "For the example above, the map looks like this:"
16472 msgstr ""
16473
16474 #. type: table
16475 #: doc/guix.texi:9338
16476 msgid "@image{images/coreutils-size-map,5in,, map of Coreutils disk usage produced by @command{guix size}}"
16477 msgstr ""
16478
16479 #. type: table
16480 #: doc/guix.texi:9343
16481 msgid "This option requires that @uref{https://wingolog.org/software/guile-charting/, Guile-Charting} be installed and visible in Guile's module search path. When that is not the case, @command{guix size} fails as it tries to load it."
16482 msgstr ""
16483
16484 #. type: table
16485 #: doc/guix.texi:9347
16486 msgid "Consider packages for @var{system}---e.g., @code{x86_64-linux}."
16487 msgstr ""
16488
16489 #. type: section
16490 #: doc/guix.texi:9351
16491 #, no-wrap
16492 msgid "Invoking @command{guix graph}"
16493 msgstr ""
16494
16495 #. type: cindex
16496 #: doc/guix.texi:9353
16497 #, no-wrap
16498 msgid "DAG"
16499 msgstr ""
16500
16501 #. type: command{#1}
16502 #: doc/guix.texi:9354
16503 #, no-wrap
16504 msgid "guix graph"
16505 msgstr ""
16506
16507 #. type: Plain text
16508 #: doc/guix.texi:9368
16509 msgid "Packages and their dependencies form a @dfn{graph}, specifically a directed acyclic graph (DAG). It can quickly become difficult to have a mental model of the package DAG, so the @command{guix graph} command provides a visual representation of the DAG. By default, @command{guix graph} emits a DAG representation in the input format of @uref{https://www.graphviz.org/, Graphviz}, so its output can be passed directly to the @command{dot} command of Graphviz. It can also emit an HTML page with embedded JavaScript code to display a ``chord diagram'' in a Web browser, using the @uref{https://d3js.org/, d3.js} library, or emit Cypher queries to construct a graph in a graph database supporting the @uref{https://www.opencypher.org/, openCypher} query language. The general syntax is:"
16510 msgstr ""
16511
16512 #. type: example
16513 #: doc/guix.texi:9371
16514 #, no-wrap
16515 msgid "guix graph @var{options} @var{package}@dots{}\n"
16516 msgstr ""
16517
16518 #. type: Plain text
16519 #: doc/guix.texi:9376
16520 msgid "For example, the following command generates a PDF file representing the package DAG for the GNU@tie{}Core Utilities, showing its build-time dependencies:"
16521 msgstr ""
16522
16523 #. type: example
16524 #: doc/guix.texi:9379
16525 #, no-wrap
16526 msgid "guix graph coreutils | dot -Tpdf > dag.pdf\n"
16527 msgstr ""
16528
16529 #. type: Plain text
16530 #: doc/guix.texi:9382
16531 msgid "The output looks like this:"
16532 msgstr ""
16533
16534 #. type: Plain text
16535 #: doc/guix.texi:9384
16536 msgid "@image{images/coreutils-graph,2in,,Dependency graph of the GNU Coreutils}"
16537 msgstr ""
16538
16539 #. type: Plain text
16540 #: doc/guix.texi:9386
16541 msgid "Nice little graph, no?"
16542 msgstr ""
16543
16544 #. type: Plain text
16545 #: doc/guix.texi:9392
16546 msgid "But there is more than one graph! The one above is concise: it is the graph of package objects, omitting implicit inputs such as GCC, libc, grep, etc. It is often useful to have such a concise graph, but sometimes one may want to see more details. @command{guix graph} supports several types of graphs, allowing you to choose the level of detail:"
16547 msgstr ""
16548
16549 #. type: table
16550 #: doc/guix.texi:9398
16551 msgid "This is the default type used in the example above. It shows the DAG of package objects, excluding implicit dependencies. It is concise, but filters out many details."
16552 msgstr ""
16553
16554 #. type: item
16555 #: doc/guix.texi:9399
16556 #, no-wrap
16557 msgid "reverse-package"
16558 msgstr ""
16559
16560 #. type: table
16561 #: doc/guix.texi:9401
16562 msgid "This shows the @emph{reverse} DAG of packages. For example:"
16563 msgstr ""
16564
16565 #. type: example
16566 #: doc/guix.texi:9404
16567 #, no-wrap
16568 msgid "guix graph --type=reverse-package ocaml\n"
16569 msgstr ""
16570
16571 #. type: table
16572 #: doc/guix.texi:9409
16573 msgid "...@: yields the graph of packages that @emph{explicitly} depend on OCaml (if you are also interested in cases where OCaml is an implicit dependency, see @code{reverse-bag} below.)"
16574 msgstr ""
16575
16576 #. type: table
16577 #: doc/guix.texi:9414
16578 msgid "Note that for core packages this can yield huge graphs. If all you want is to know the number of packages that depend on a given package, use @command{guix refresh --list-dependent} (@pxref{Invoking guix refresh, @option{--list-dependent}})."
16579 msgstr ""
16580
16581 #. type: item
16582 #: doc/guix.texi:9415
16583 #, no-wrap
16584 msgid "bag-emerged"
16585 msgstr ""
16586
16587 #. type: table
16588 #: doc/guix.texi:9417
16589 msgid "This is the package DAG, @emph{including} implicit inputs."
16590 msgstr ""
16591
16592 #. type: table
16593 #: doc/guix.texi:9419
16594 msgid "For instance, the following command:"
16595 msgstr ""
16596
16597 #. type: example
16598 #: doc/guix.texi:9422
16599 #, no-wrap
16600 msgid "guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf\n"
16601 msgstr ""
16602
16603 #. type: table
16604 #: doc/guix.texi:9425
16605 msgid "...@: yields this bigger graph:"
16606 msgstr ""
16607
16608 #. type: table
16609 #: doc/guix.texi:9427
16610 msgid "@image{images/coreutils-bag-graph,,5in,Detailed dependency graph of the GNU Coreutils}"
16611 msgstr ""
16612
16613 #. type: table
16614 #: doc/guix.texi:9430
16615 msgid "At the bottom of the graph, we see all the implicit inputs of @var{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}})."
16616 msgstr ""
16617
16618 #. type: table
16619 #: doc/guix.texi:9434
16620 msgid "Now, note that the dependencies of these implicit inputs---that is, the @dfn{bootstrap dependencies} (@pxref{Bootstrapping})---are not shown here, for conciseness."
16621 msgstr ""
16622
16623 #. type: item
16624 #: doc/guix.texi:9435
16625 #, no-wrap
16626 msgid "bag"
16627 msgstr ""
16628
16629 #. type: table
16630 #: doc/guix.texi:9438
16631 msgid "Similar to @code{bag-emerged}, but this time including all the bootstrap dependencies."
16632 msgstr ""
16633
16634 #. type: item
16635 #: doc/guix.texi:9439
16636 #, no-wrap
16637 msgid "bag-with-origins"
16638 msgstr ""
16639
16640 #. type: table
16641 #: doc/guix.texi:9441
16642 msgid "Similar to @code{bag}, but also showing origins and their dependencies."
16643 msgstr ""
16644
16645 #. type: item
16646 #: doc/guix.texi:9442
16647 #, no-wrap
16648 msgid "reverse-bag"
16649 msgstr ""
16650
16651 #. type: table
16652 #: doc/guix.texi:9445
16653 msgid "This shows the @emph{reverse} DAG of packages. Unlike @code{reverse-package}, it also takes implicit dependencies into account. For example:"
16654 msgstr ""
16655
16656 #. type: example
16657 #: doc/guix.texi:9448
16658 #, no-wrap
16659 msgid "guix graph -t reverse-bag dune\n"
16660 msgstr ""
16661
16662 #. type: table
16663 #: doc/guix.texi:9455
16664 msgid "...@: yields the graph of all packages that depend on Dune, directly or indirectly. Since Dune is an @emph{implicit} dependency of many packages @i{via} @code{dune-build-system}, this shows a large number of packages, whereas @code{reverse-package} would show very few if any."
16665 msgstr ""
16666
16667 #. type: table
16668 #: doc/guix.texi:9461
16669 msgid "This is the most detailed representation: It shows the DAG of derivations (@pxref{Derivations}) and plain store items. Compared to the above representation, many additional nodes are visible, including build scripts, patches, Guile modules, etc."
16670 msgstr ""
16671
16672 #. type: table
16673 #: doc/guix.texi:9464
16674 msgid "For this type of graph, it is also possible to pass a @file{.drv} file name instead of a package name, as in:"
16675 msgstr ""
16676
16677 #. type: example
16678 #: doc/guix.texi:9467
16679 #, no-wrap
16680 msgid "guix graph -t derivation `guix system build -d my-config.scm`\n"
16681 msgstr ""
16682
16683 #. type: item
16684 #: doc/guix.texi:9469
16685 #, no-wrap
16686 msgid "module"
16687 msgstr ""
16688
16689 #. type: table
16690 #: doc/guix.texi:9473
16691 msgid "This is the graph of @dfn{package modules} (@pxref{Package Modules}). For example, the following command shows the graph for the package module that defines the @code{guile} package:"
16692 msgstr ""
16693
16694 #. type: example
16695 #: doc/guix.texi:9476
16696 #, no-wrap
16697 msgid "guix graph -t module guile | dot -Tpdf > module-graph.pdf\n"
16698 msgstr ""
16699
16700 #. type: Plain text
16701 #: doc/guix.texi:9481
16702 msgid "All the types above correspond to @emph{build-time dependencies}. The following graph type represents the @emph{run-time dependencies}:"
16703 msgstr ""
16704
16705 #. type: table
16706 #: doc/guix.texi:9486
16707 msgid "This is the graph of @dfn{references} of a package output, as returned by @command{guix gc --references} (@pxref{Invoking guix gc})."
16708 msgstr ""
16709
16710 #. type: table
16711 #: doc/guix.texi:9489
16712 msgid "If the given package output is not available in the store, @command{guix graph} attempts to obtain dependency information from substitutes."
16713 msgstr ""
16714
16715 #. type: table
16716 #: doc/guix.texi:9493
16717 msgid "Here you can also pass a store file name instead of a package name. For example, the command below produces the reference graph of your profile (which can be big!):"
16718 msgstr ""
16719
16720 #. type: example
16721 #: doc/guix.texi:9496
16722 #, no-wrap
16723 msgid "guix graph -t references `readlink -f ~/.guix-profile`\n"
16724 msgstr ""
16725
16726 #. type: item
16727 #: doc/guix.texi:9498
16728 #, no-wrap
16729 msgid "referrers"
16730 msgstr ""
16731
16732 #. type: table
16733 #: doc/guix.texi:9501
16734 msgid "This is the graph of the @dfn{referrers} of a store item, as returned by @command{guix gc --referrers} (@pxref{Invoking guix gc})."
16735 msgstr ""
16736
16737 #. type: table
16738 #: doc/guix.texi:9507
16739 msgid "This relies exclusively on local information from your store. For instance, let us suppose that the current Inkscape is available in 10 profiles on your machine; @command{guix graph -t referrers inkscape} will show a graph rooted at Inkscape and with those 10 profiles linked to it."
16740 msgstr ""
16741
16742 #. type: table
16743 #: doc/guix.texi:9510
16744 msgid "It can help determine what is preventing a store item from being garbage collected."
16745 msgstr ""
16746
16747 #. type: Plain text
16748 #: doc/guix.texi:9514
16749 msgid "The available options are the following:"
16750 msgstr ""
16751
16752 #. type: table
16753 #: doc/guix.texi:9520
16754 msgid "Produce a graph output of @var{type}, where @var{type} must be one of the values listed above."
16755 msgstr ""
16756
16757 #. type: item
16758 #: doc/guix.texi:9521
16759 #, no-wrap
16760 msgid "--list-types"
16761 msgstr ""
16762
16763 #. type: table
16764 #: doc/guix.texi:9523
16765 msgid "List the supported graph types."
16766 msgstr ""
16767
16768 #. type: item
16769 #: doc/guix.texi:9524
16770 #, no-wrap
16771 msgid "--backend=@var{backend}"
16772 msgstr ""
16773
16774 #. type: itemx
16775 #: doc/guix.texi:9525
16776 #, no-wrap
16777 msgid "-b @var{backend}"
16778 msgstr ""
16779
16780 #. type: table
16781 #: doc/guix.texi:9527
16782 msgid "Produce a graph using the selected @var{backend}."
16783 msgstr ""
16784
16785 #. type: item
16786 #: doc/guix.texi:9528
16787 #, no-wrap
16788 msgid "--list-backends"
16789 msgstr ""
16790
16791 #. type: table
16792 #: doc/guix.texi:9530
16793 msgid "List the supported graph backends."
16794 msgstr ""
16795
16796 #. type: table
16797 #: doc/guix.texi:9532
16798 msgid "Currently, the available backends are Graphviz and d3.js."
16799 msgstr ""
16800
16801 #. type: example
16802 #: doc/guix.texi:9541
16803 #, no-wrap
16804 msgid "guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)'\n"
16805 msgstr ""
16806
16807 #. type: table
16808 #: doc/guix.texi:9546
16809 msgid "Display the graph for @var{system}---e.g., @code{i686-linux}."
16810 msgstr ""
16811
16812 #. type: table
16813 #: doc/guix.texi:9549
16814 msgid "The package dependency graph is largely architecture-independent, but there are some architecture-dependent bits that this option allows you to visualize."
16815 msgstr ""
16816
16817 #. type: section
16818 #: doc/guix.texi:9554
16819 #, no-wrap
16820 msgid "Invoking @command{guix publish}"
16821 msgstr ""
16822
16823 #. type: command{#1}
16824 #: doc/guix.texi:9556
16825 #, no-wrap
16826 msgid "guix publish"
16827 msgstr ""
16828
16829 #. type: Plain text
16830 #: doc/guix.texi:9560
16831 msgid "The purpose of @command{guix publish} is to enable users to easily share their store with others, who can then use it as a substitute server (@pxref{Substitutes})."
16832 msgstr ""
16833
16834 #. type: Plain text
16835 #: doc/guix.texi:9566
16836 msgid "When @command{guix publish} runs, it spawns an HTTP server which allows anyone with network access to obtain substitutes from it. This means that any machine running Guix can also act as if it were a build farm, since the HTTP interface is compatible with Hydra, the software behind the @code{@value{SUBSTITUTE-SERVER}} build farm."
16837 msgstr ""
16838
16839 #. type: Plain text
16840 #: doc/guix.texi:9572
16841 msgid "For security, each substitute is signed, allowing recipients to check their authenticity and integrity (@pxref{Substitutes}). Because @command{guix publish} uses the signing key of the system, which is only readable by the system administrator, it must be started as root; the @code{--user} option makes it drop root privileges early on."
16842 msgstr ""
16843
16844 #. type: Plain text
16845 #: doc/guix.texi:9576
16846 msgid "The signing key pair must be generated before @command{guix publish} is launched, using @command{guix archive --generate-key} (@pxref{Invoking guix archive})."
16847 msgstr ""
16848
16849 #. type: example
16850 #: doc/guix.texi:9581
16851 #, no-wrap
16852 msgid "guix publish @var{options}@dots{}\n"
16853 msgstr ""
16854
16855 #. type: Plain text
16856 #: doc/guix.texi:9585
16857 msgid "Running @command{guix publish} without any additional arguments will spawn an HTTP server on port 8080:"
16858 msgstr ""
16859
16860 #. type: example
16861 #: doc/guix.texi:9588
16862 #, no-wrap
16863 msgid "guix publish\n"
16864 msgstr ""
16865
16866 #. type: Plain text
16867 #: doc/guix.texi:9592
16868 msgid "Once a publishing server has been authorized (@pxref{Invoking guix archive}), the daemon may download substitutes from it:"
16869 msgstr ""
16870
16871 #. type: example
16872 #: doc/guix.texi:9595
16873 #, no-wrap
16874 msgid "guix-daemon --substitute-urls=http://example.org:8080\n"
16875 msgstr ""
16876
16877 #. type: Plain text
16878 #: doc/guix.texi:9604
16879 msgid "By default, @command{guix publish} compresses archives on the fly as it serves them. This ``on-the-fly'' mode is convenient in that it requires no setup and is immediately available. However, when serving lots of clients, we recommend using the @option{--cache} option, which enables caching of the archives before they are sent to clients---see below for details. The @command{guix weather} command provides a handy way to check what a server provides (@pxref{Invoking guix weather})."
16880 msgstr ""
16881
16882 #. type: Plain text
16883 #: doc/guix.texi:9611
16884 msgid "As a bonus, @command{guix publish} also serves as a content-addressed mirror for source files referenced in @code{origin} records (@pxref{origin Reference}). For instance, assuming @command{guix publish} is running on @code{example.org}, the following URL returns the raw @file{hello-2.10.tar.gz} file with the given SHA256 hash (represented in @code{nix-base32} format, @pxref{Invoking guix hash}):"
16885 msgstr ""
16886
16887 #. type: example
16888 #: doc/guix.texi:9614
16889 #, no-wrap
16890 msgid "http://example.org/file/hello-2.10.tar.gz/sha256/0ssi1@dots{}ndq1i\n"
16891 msgstr ""
16892
16893 #. type: Plain text
16894 #: doc/guix.texi:9618
16895 msgid "Obviously, these URLs only work for files that are in the store; in other cases, they return 404 (``Not Found'')."
16896 msgstr ""
16897
16898 #. type: cindex
16899 #: doc/guix.texi:9619
16900 #, no-wrap
16901 msgid "build logs, publication"
16902 msgstr ""
16903
16904 #. type: Plain text
16905 #: doc/guix.texi:9621
16906 msgid "Build logs are available from @code{/log} URLs like:"
16907 msgstr ""
16908
16909 #. type: example
16910 #: doc/guix.texi:9624
16911 #, no-wrap
16912 msgid "http://example.org/log/gwspk@dots{}-guile-2.2.3\n"
16913 msgstr ""
16914
16915 #. type: Plain text
16916 #: doc/guix.texi:9634
16917 msgid "When @command{guix-daemon} is configured to save compressed build logs, as is the case by default (@pxref{Invoking guix-daemon}), @code{/log} URLs return the compressed log as-is, with an appropriate @code{Content-Type} and/or @code{Content-Encoding} header. We recommend running @command{guix-daemon} with @code{--log-compression=gzip} since Web browsers can automatically decompress it, which is not the case with bzip2 compression."
16918 msgstr ""
16919
16920 #. type: item
16921 #: doc/guix.texi:9638
16922 #, no-wrap
16923 msgid "--port=@var{port}"
16924 msgstr ""
16925
16926 #. type: itemx
16927 #: doc/guix.texi:9639
16928 #, no-wrap
16929 msgid "-p @var{port}"
16930 msgstr ""
16931
16932 #. type: table
16933 #: doc/guix.texi:9641
16934 msgid "Listen for HTTP requests on @var{port}."
16935 msgstr ""
16936
16937 #. type: item
16938 #: doc/guix.texi:9642 doc/guix.texi:20713
16939 #, no-wrap
16940 msgid "--listen=@var{host}"
16941 msgstr ""
16942
16943 #. type: table
16944 #: doc/guix.texi:9645
16945 msgid "Listen on the network interface for @var{host}. The default is to accept connections from any interface."
16946 msgstr ""
16947
16948 #. type: table
16949 #: doc/guix.texi:9650
16950 msgid "Change privileges to @var{user} as soon as possible---i.e., once the server socket is open and the signing key has been read."
16951 msgstr ""
16952
16953 #. type: item
16954 #: doc/guix.texi:9651
16955 #, no-wrap
16956 msgid "--compression[=@var{level}]"
16957 msgstr ""
16958
16959 #. type: itemx
16960 #: doc/guix.texi:9652
16961 #, no-wrap
16962 msgid "-C [@var{level}]"
16963 msgstr ""
16964
16965 #. type: table
16966 #: doc/guix.texi:9657
16967 msgid "Compress data using the given @var{level}. When @var{level} is zero, disable compression. The range 1 to 9 corresponds to different gzip compression levels: 1 is the fastest, and 9 is the best (CPU-intensive). The default is 3."
16968 msgstr ""
16969
16970 #. type: table
16971 #: doc/guix.texi:9666
16972 msgid "Unless @option{--cache} is used, compression occurs on the fly and the compressed streams are not cached. Thus, to reduce load on the machine that runs @command{guix publish}, it may be a good idea to choose a low compression level, to run @command{guix publish} behind a caching proxy, or to use @option{--cache}. Using @option{--cache} has the advantage that it allows @command{guix publish} to add @code{Content-Length} HTTP header to its responses."
16973 msgstr ""
16974
16975 #. type: item
16976 #: doc/guix.texi:9667
16977 #, no-wrap
16978 msgid "--cache=@var{directory}"
16979 msgstr ""
16980
16981 #. type: itemx
16982 #: doc/guix.texi:9668
16983 #, no-wrap
16984 msgid "-c @var{directory}"
16985 msgstr ""
16986
16987 #. type: table
16988 #: doc/guix.texi:9671
16989 msgid "Cache archives and meta-data (@code{.narinfo} URLs) to @var{directory} and only serve archives that are in cache."
16990 msgstr ""
16991
16992 #. type: table
16993 #: doc/guix.texi:9679
16994 msgid "When this option is omitted, archives and meta-data are created on-the-fly. This can reduce the available bandwidth, especially when compression is enabled, since this may become CPU-bound. Another drawback of the default mode is that the length of archives is not known in advance, so @command{guix publish} does not add a @code{Content-Length} HTTP header to its responses, which in turn prevents clients from knowing the amount of data being downloaded."
16995 msgstr ""
16996
16997 #. type: table
16998 #: doc/guix.texi:9687
16999 msgid "Conversely, when @option{--cache} is used, the first request for a store item (@i{via} a @code{.narinfo} URL) returns 404 and triggers a background process to @dfn{bake} the archive---computing its @code{.narinfo} and compressing the archive, if needed. Once the archive is cached in @var{directory}, subsequent requests succeed and are served directly from the cache, which guarantees that clients get the best possible bandwidth."
17000 msgstr ""
17001
17002 #. type: table
17003 #: doc/guix.texi:9691
17004 msgid "The ``baking'' process is performed by worker threads. By default, one thread per CPU core is created, but this can be customized. See @option{--workers} below."
17005 msgstr ""
17006
17007 #. type: table
17008 #: doc/guix.texi:9694
17009 msgid "When @option{--ttl} is used, cached entries are automatically deleted when they have expired."
17010 msgstr ""
17011
17012 #. type: item
17013 #: doc/guix.texi:9695
17014 #, no-wrap
17015 msgid "--workers=@var{N}"
17016 msgstr ""
17017
17018 #. type: table
17019 #: doc/guix.texi:9698
17020 msgid "When @option{--cache} is used, request the allocation of @var{N} worker threads to ``bake'' archives."
17021 msgstr ""
17022
17023 #. type: item
17024 #: doc/guix.texi:9699
17025 #, no-wrap
17026 msgid "--ttl=@var{ttl}"
17027 msgstr ""
17028
17029 #. type: table
17030 #: doc/guix.texi:9703
17031 msgid "Produce @code{Cache-Control} HTTP headers that advertise a time-to-live (TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5 days, @code{1m} means 1 month, and so on."
17032 msgstr ""
17033
17034 #. type: table
17035 #: doc/guix.texi:9708
17036 msgid "This allows the user's Guix to keep substitute information in cache for @var{ttl}. However, note that @code{guix publish} does not itself guarantee that the store items it provides will indeed remain available for as long as @var{ttl}."
17037 msgstr ""
17038
17039 #. type: table
17040 #: doc/guix.texi:9712
17041 msgid "Additionally, when @option{--cache} is used, cached entries that have not been accessed for @var{ttl} and that no longer have a corresponding item in the store, may be deleted."
17042 msgstr ""
17043
17044 #. type: item
17045 #: doc/guix.texi:9713
17046 #, no-wrap
17047 msgid "--nar-path=@var{path}"
17048 msgstr ""
17049
17050 #. type: table
17051 #: doc/guix.texi:9716
17052 msgid "Use @var{path} as the prefix for the URLs of ``nar'' files (@pxref{Invoking guix archive, normalized archives})."
17053 msgstr ""
17054
17055 #. type: table
17056 #: doc/guix.texi:9720
17057 msgid "By default, nars are served at a URL such as @code{/nar/gzip/@dots{}-coreutils-8.25}. This option allows you to change the @code{/nar} part to @var{path}."
17058 msgstr ""
17059
17060 #. type: item
17061 #: doc/guix.texi:9721
17062 #, no-wrap
17063 msgid "--public-key=@var{file}"
17064 msgstr ""
17065
17066 #. type: itemx
17067 #: doc/guix.texi:9722
17068 #, no-wrap
17069 msgid "--private-key=@var{file}"
17070 msgstr ""
17071
17072 #. type: table
17073 #: doc/guix.texi:9725
17074 msgid "Use the specific @var{file}s as the public/private key pair used to sign the store items being published."
17075 msgstr ""
17076
17077 #. type: table
17078 #: doc/guix.texi:9732
17079 msgid "The files must correspond to the same key pair (the private key is used for signing and the public key is merely advertised in the signature metadata). They must contain keys in the canonical s-expression format as produced by @command{guix archive --generate-key} (@pxref{Invoking guix archive}). By default, @file{/etc/guix/signing-key.pub} and @file{/etc/guix/signing-key.sec} are used."
17080 msgstr ""
17081
17082 #. type: item
17083 #: doc/guix.texi:9733
17084 #, no-wrap
17085 msgid "--repl[=@var{port}]"
17086 msgstr ""
17087
17088 #. type: itemx
17089 #: doc/guix.texi:9734
17090 #, no-wrap
17091 msgid "-r [@var{port}]"
17092 msgstr ""
17093
17094 #. type: table
17095 #: doc/guix.texi:9738
17096 msgid "Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile Reference Manual}) on @var{port} (37146 by default). This is used primarily for debugging a running @command{guix publish} server."
17097 msgstr ""
17098
17099 #. type: Plain text
17100 #: doc/guix.texi:9744
17101 msgid "Enabling @command{guix publish} on Guix System is a one-liner: just instantiate a @code{guix-publish-service-type} service in the @code{services} field of the @code{operating-system} declaration (@pxref{guix-publish-service-type, @code{guix-publish-service-type}})."
17102 msgstr ""
17103
17104 #. type: Plain text
17105 #: doc/guix.texi:9747
17106 msgid "If you are instead running Guix on a ``foreign distro'', follow these instructions:”"
17107 msgstr ""
17108
17109 #. type: itemize
17110 #: doc/guix.texi:9751
17111 msgid "If your host distro uses the systemd init system:"
17112 msgstr ""
17113
17114 #. type: example
17115 #: doc/guix.texi:9756
17116 #, no-wrap
17117 msgid ""
17118 "# ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \\\n"
17119 " /etc/systemd/system/\n"
17120 "# systemctl start guix-publish && systemctl enable guix-publish\n"
17121 msgstr ""
17122
17123 #. type: example
17124 #: doc/guix.texi:9764
17125 #, no-wrap
17126 msgid ""
17127 "# ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/\n"
17128 "# start guix-publish\n"
17129 msgstr ""
17130
17131 #. type: itemize
17132 #: doc/guix.texi:9768
17133 msgid "Otherwise, proceed similarly with your distro's init system."
17134 msgstr ""
17135
17136 #. type: section
17137 #: doc/guix.texi:9771
17138 #, no-wrap
17139 msgid "Invoking @command{guix challenge}"
17140 msgstr ""
17141
17142 #. type: cindex
17143 #: doc/guix.texi:9774
17144 #, no-wrap
17145 msgid "verifiable builds"
17146 msgstr ""
17147
17148 #. type: command{#1}
17149 #: doc/guix.texi:9775
17150 #, no-wrap
17151 msgid "guix challenge"
17152 msgstr ""
17153
17154 #. type: cindex
17155 #: doc/guix.texi:9776
17156 #, no-wrap
17157 msgid "challenge"
17158 msgstr ""
17159
17160 #. type: Plain text
17161 #: doc/guix.texi:9781
17162 msgid "Do the binaries provided by this server really correspond to the source code it claims to build? Is a package build process deterministic? These are the questions the @command{guix challenge} command attempts to answer."
17163 msgstr ""
17164
17165 #. type: Plain text
17166 #: doc/guix.texi:9789
17167 msgid "The former is obviously an important question: Before using a substitute server (@pxref{Substitutes}), one had better @emph{verify} that it provides the right binaries, and thus @emph{challenge} it. The latter is what enables the former: If package builds are deterministic, then independent builds of the package should yield the exact same result, bit for bit; if a server provides a binary different from the one obtained locally, it may be either corrupt or malicious."
17168 msgstr ""
17169
17170 #. type: Plain text
17171 #: doc/guix.texi:9798
17172 msgid "We know that the hash that shows up in @file{/gnu/store} file names is the hash of all the inputs of the process that built the file or directory---compilers, libraries, build scripts, etc. (@pxref{Introduction}). Assuming deterministic build processes, one store file name should map to exactly one build output. @command{guix challenge} checks whether there is, indeed, a single mapping by comparing the build outputs of several independent builds of any given store item."
17173 msgstr ""
17174
17175 #. type: Plain text
17176 #: doc/guix.texi:9800
17177 msgid "The command output looks like this:"
17178 msgstr ""
17179
17180 #. type: smallexample
17181 #: doc/guix.texi:9817
17182 #, no-wrap
17183 msgid ""
17184 "$ guix challenge --substitute-urls=\"https://@value{SUBSTITUTE-SERVER} https://guix.example.org\"\n"
17185 "updating list of substitutes from 'https://@value{SUBSTITUTE-SERVER}'... 100.0%\n"
17186 "updating list of substitutes from 'https://guix.example.org'... 100.0%\n"
17187 "/gnu/store/@dots{}-openssl-1.0.2d contents differ:\n"
17188 " local hash: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q\n"
17189 " https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-openssl-1.0.2d: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q\n"
17190 " https://guix.example.org/nar/@dots{}-openssl-1.0.2d: 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim\n"
17191 "/gnu/store/@dots{}-git-2.5.0 contents differ:\n"
17192 " local hash: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha\n"
17193 " https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0: 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f\n"
17194 " https://guix.example.org/nar/@dots{}-git-2.5.0: 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73\n"
17195 "/gnu/store/@dots{}-pius-2.1.1 contents differ:\n"
17196 " local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax\n"
17197 " https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax\n"
17198 " https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs\n"
17199 "\n"
17200 msgstr ""
17201
17202 #. type: smallexample
17203 #: doc/guix.texi:9819
17204 #, no-wrap
17205 msgid ""
17206 "@dots{}\n"
17207 "\n"
17208 msgstr ""
17209
17210 #. type: smallexample
17211 #: doc/guix.texi:9824
17212 #, no-wrap
17213 msgid ""
17214 "6,406 store items were analyzed:\n"
17215 " - 4,749 (74.1%) were identical\n"
17216 " - 525 (8.2%) differed\n"
17217 " - 1,132 (17.7%) were inconclusive\n"
17218 msgstr ""
17219
17220 #. type: Plain text
17221 #: doc/guix.texi:9832
17222 msgid "In this example, @command{guix challenge} first scans the store to determine the set of locally-built derivations---as opposed to store items that were downloaded from a substitute server---and then queries all the substitute servers. It then reports those store items for which the servers obtained a result different from the local build."
17223 msgstr ""
17224
17225 #. type: cindex
17226 #: doc/guix.texi:9833
17227 #, no-wrap
17228 msgid "non-determinism, in package builds"
17229 msgstr ""
17230
17231 #. type: Plain text
17232 #: doc/guix.texi:9844
17233 msgid "As an example, @code{guix.example.org} always gets a different answer. Conversely, @code{@value{SUBSTITUTE-SERVER}} agrees with local builds, except in the case of Git. This might indicate that the build process of Git is non-deterministic, meaning that its output varies as a function of various things that Guix does not fully control, in spite of building packages in isolated environments (@pxref{Features}). Most common sources of non-determinism include the addition of timestamps in build results, the inclusion of random numbers, and directory listings sorted by inode number. See @uref{https://reproducible-builds.org/docs/}, for more information."
17234 msgstr ""
17235
17236 #. type: Plain text
17237 #: doc/guix.texi:9847
17238 msgid "To find out what is wrong with this Git binary, we can do something along these lines (@pxref{Invoking guix archive}):"
17239 msgstr ""
17240
17241 #. type: example
17242 #: doc/guix.texi:9852
17243 #, no-wrap
17244 msgid ""
17245 "$ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 \\\n"
17246 " | guix archive -x /tmp/git\n"
17247 "$ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git\n"
17248 msgstr ""
17249
17250 #. type: Plain text
17251 #: doc/guix.texi:9861
17252 msgid "This command shows the difference between the files resulting from the local build, and the files resulting from the build on @code{@value{SUBSTITUTE-SERVER}} (@pxref{Overview, Comparing and Merging Files,, diffutils, Comparing and Merging Files}). The @command{diff} command works great for text files. When binary files differ, a better option is @uref{https://diffoscope.org/, Diffoscope}, a tool that helps visualize differences for all kinds of files."
17253 msgstr ""
17254
17255 #. type: Plain text
17256 #: doc/guix.texi:9869
17257 msgid "Once you have done that work, you can tell whether the differences are due to a non-deterministic build process or to a malicious server. We try hard to remove sources of non-determinism in packages to make it easier to verify substitutes, but of course, this is a process that involves not just Guix, but a large part of the free software community. In the meantime, @command{guix challenge} is one tool to help address the problem."
17258 msgstr ""
17259
17260 #. type: Plain text
17261 #: doc/guix.texi:9873
17262 msgid "If you are writing packages for Guix, you are encouraged to check whether @code{@value{SUBSTITUTE-SERVER}} and other substitute servers obtain the same build result as you did with:"
17263 msgstr ""
17264
17265 #. type: example
17266 #: doc/guix.texi:9876
17267 #, no-wrap
17268 msgid "$ guix challenge @var{package}\n"
17269 msgstr ""
17270
17271 #. type: Plain text
17272 #: doc/guix.texi:9881
17273 msgid "where @var{package} is a package specification such as @code{guile@@2.0} or @code{glibc:debug}."
17274 msgstr ""
17275
17276 #. type: example
17277 #: doc/guix.texi:9886
17278 #, no-wrap
17279 msgid "guix challenge @var{options} [@var{packages}@dots{}]\n"
17280 msgstr ""
17281
17282 #. type: Plain text
17283 #: doc/guix.texi:9893
17284 msgid "When a difference is found between the hash of a locally-built item and that of a server-provided substitute, or among substitutes provided by different servers, the command displays it as in the example above and its exit code is 2 (other non-zero exit codes denote other kinds of errors.)"
17285 msgstr ""
17286
17287 #. type: Plain text
17288 #: doc/guix.texi:9895
17289 msgid "The one option that matters is:"
17290 msgstr ""
17291
17292 #. type: table
17293 #: doc/guix.texi:9901
17294 msgid "Consider @var{urls} the whitespace-separated list of substitute source URLs to compare to."
17295 msgstr ""
17296
17297 #. type: itemx
17298 #: doc/guix.texi:9903
17299 #, no-wrap
17300 msgid "-v"
17301 msgstr ""
17302
17303 #. type: table
17304 #: doc/guix.texi:9906
17305 msgid "Show details about matches (identical contents) in addition to information about mismatches."
17306 msgstr ""
17307
17308 #. type: section
17309 #: doc/guix.texi:9910
17310 #, no-wrap
17311 msgid "Invoking @command{guix copy}"
17312 msgstr ""
17313
17314 #. type: cindex
17315 #: doc/guix.texi:9912
17316 #, no-wrap
17317 msgid "copy, of store items, over SSH"
17318 msgstr ""
17319
17320 #. type: cindex
17321 #: doc/guix.texi:9913
17322 #, no-wrap
17323 msgid "SSH, copy of store items"
17324 msgstr ""
17325
17326 #. type: cindex
17327 #: doc/guix.texi:9914
17328 #, no-wrap
17329 msgid "sharing store items across machines"
17330 msgstr ""
17331
17332 #. type: cindex
17333 #: doc/guix.texi:9915
17334 #, no-wrap
17335 msgid "transferring store items across machines"
17336 msgstr ""
17337
17338 #. type: Plain text
17339 #: doc/guix.texi:9922
17340 msgid "The @command{guix copy} command copies items from the store of one machine to that of another machine over a secure shell (SSH) connection@footnote{This command is available only when Guile-SSH was found. @xref{Requirements}, for details.}. For example, the following command copies the @code{coreutils} package, the user's profile, and all their dependencies over to @var{host}, logged in as @var{user}:"
17341 msgstr ""
17342
17343 #. type: example
17344 #: doc/guix.texi:9926
17345 #, no-wrap
17346 msgid ""
17347 "guix copy --to=@var{user}@@@var{host} \\\n"
17348 " coreutils `readlink -f ~/.guix-profile`\n"
17349 msgstr ""
17350
17351 #. type: Plain text
17352 #: doc/guix.texi:9930
17353 msgid "If some of the items to be copied are already present on @var{host}, they are not actually sent."
17354 msgstr ""
17355
17356 #. type: Plain text
17357 #: doc/guix.texi:9933
17358 msgid "The command below retrieves @code{libreoffice} and @code{gimp} from @var{host}, assuming they are available there:"
17359 msgstr ""
17360
17361 #. type: example
17362 #: doc/guix.texi:9936
17363 #, no-wrap
17364 msgid "guix copy --from=@var{host} libreoffice gimp\n"
17365 msgstr ""
17366
17367 #. type: Plain text
17368 #: doc/guix.texi:9941
17369 msgid "The SSH connection is established using the Guile-SSH client, which is compatible with OpenSSH: it honors @file{~/.ssh/known_hosts} and @file{~/.ssh/config}, and uses the SSH agent for authentication."
17370 msgstr ""
17371
17372 #. type: Plain text
17373 #: doc/guix.texi:9947
17374 msgid "The key used to sign items that are sent must be accepted by the remote machine. Likewise, the key used by the remote machine to sign items you are retrieving must be in @file{/etc/guix/acl} so it is accepted by your own daemon. @xref{Invoking guix archive}, for more information about store item authentication."
17375 msgstr ""
17376
17377 #. type: example
17378 #: doc/guix.texi:9952
17379 #, no-wrap
17380 msgid "guix copy [--to=@var{spec}|--from=@var{spec}] @var{items}@dots{}\n"
17381 msgstr ""
17382
17383 #. type: Plain text
17384 #: doc/guix.texi:9955
17385 msgid "You must always specify one of the following options:"
17386 msgstr ""
17387
17388 #. type: item
17389 #: doc/guix.texi:9957
17390 #, no-wrap
17391 msgid "--to=@var{spec}"
17392 msgstr ""
17393
17394 #. type: itemx
17395 #: doc/guix.texi:9958
17396 #, no-wrap
17397 msgid "--from=@var{spec}"
17398 msgstr ""
17399
17400 #. type: table
17401 #: doc/guix.texi:9962
17402 msgid "Specify the host to send to or receive from. @var{spec} must be an SSH spec such as @code{example.org}, @code{charlie@@example.org}, or @code{charlie@@example.org:2222}."
17403 msgstr ""
17404
17405 #. type: Plain text
17406 #: doc/guix.texi:9966
17407 msgid "The @var{items} can be either package names, such as @code{gimp}, or store items, such as @file{/gnu/store/@dots{}-idutils-4.6}."
17408 msgstr ""
17409
17410 #. type: Plain text
17411 #: doc/guix.texi:9970
17412 msgid "When specifying the name of a package to send, it is first built if needed, unless @option{--dry-run} was specified. Common build options are supported (@pxref{Common Build Options})."
17413 msgstr ""
17414
17415 #. type: section
17416 #: doc/guix.texi:9973
17417 #, no-wrap
17418 msgid "Invoking @command{guix container}"
17419 msgstr ""
17420
17421 #. type: command{#1}
17422 #: doc/guix.texi:9975
17423 #, no-wrap
17424 msgid "guix container"
17425 msgstr ""
17426
17427 #. type: quotation
17428 #: doc/guix.texi:9979
17429 msgid "As of version @value{VERSION}, this tool is experimental. The interface is subject to radical change in the future."
17430 msgstr ""
17431
17432 #. type: Plain text
17433 #: doc/guix.texi:9986
17434 msgid "The purpose of @command{guix container} is to manipulate processes running within an isolated environment, commonly known as a ``container'', typically created by the @command{guix environment} (@pxref{Invoking guix environment}) and @command{guix system container} (@pxref{Invoking guix system}) commands."
17435 msgstr ""
17436
17437 #. type: example
17438 #: doc/guix.texi:9991
17439 #, no-wrap
17440 msgid "guix container @var{action} @var{options}@dots{}\n"
17441 msgstr ""
17442
17443 #. type: Plain text
17444 #: doc/guix.texi:9995
17445 msgid "@var{action} specifies the operation to perform with a container, and @var{options} specifies the context-specific arguments for the action."
17446 msgstr ""
17447
17448 #. type: Plain text
17449 #: doc/guix.texi:9997
17450 msgid "The following actions are available:"
17451 msgstr ""
17452
17453 #. type: item
17454 #: doc/guix.texi:9999
17455 #, no-wrap
17456 msgid "exec"
17457 msgstr ""
17458
17459 #. type: table
17460 #: doc/guix.texi:10001
17461 msgid "Execute a command within the context of a running container."
17462 msgstr ""
17463
17464 #. type: table
17465 #: doc/guix.texi:10003
17466 msgid "The syntax is:"
17467 msgstr ""
17468
17469 #. type: example
17470 #: doc/guix.texi:10006
17471 #, no-wrap
17472 msgid "guix container exec @var{pid} @var{program} @var{arguments}@dots{}\n"
17473 msgstr ""
17474
17475 #. type: table
17476 #: doc/guix.texi:10012
17477 msgid "@var{pid} specifies the process ID of the running container. @var{program} specifies an executable file name within the root file system of the container. @var{arguments} are the additional options that will be passed to @var{program}."
17478 msgstr ""
17479
17480 #. type: table
17481 #: doc/guix.texi:10016
17482 msgid "The following command launches an interactive login shell inside a Guix system container, started by @command{guix system container}, and whose process ID is 9001:"
17483 msgstr ""
17484
17485 #. type: example
17486 #: doc/guix.texi:10019
17487 #, no-wrap
17488 msgid "guix container exec 9001 /run/current-system/profile/bin/bash --login\n"
17489 msgstr ""
17490
17491 #. type: table
17492 #: doc/guix.texi:10023
17493 msgid "Note that the @var{pid} cannot be the parent process of a container. It must be PID 1 of the container or one of its child processes."
17494 msgstr ""
17495
17496 #. type: section
17497 #: doc/guix.texi:10027
17498 #, no-wrap
17499 msgid "Invoking @command{guix weather}"
17500 msgstr ""
17501
17502 #. type: Plain text
17503 #: doc/guix.texi:10036
17504 msgid "Occasionally you're grumpy because substitutes are lacking and you end up building packages by yourself (@pxref{Substitutes}). The @command{guix weather} command reports on substitute availability on the specified servers so you can have an idea of whether you'll be grumpy today. It can sometimes be useful info as a user, but it is primarily useful to people running @command{guix publish} (@pxref{Invoking guix publish})."
17505 msgstr ""
17506
17507 #. type: cindex
17508 #: doc/guix.texi:10037
17509 #, no-wrap
17510 msgid "statistics, for substitutes"
17511 msgstr ""
17512
17513 #. type: cindex
17514 #: doc/guix.texi:10038
17515 #, no-wrap
17516 msgid "availability of substitutes"
17517 msgstr ""
17518
17519 #. type: cindex
17520 #: doc/guix.texi:10039
17521 #, no-wrap
17522 msgid "substitute availability"
17523 msgstr ""
17524
17525 #. type: cindex
17526 #: doc/guix.texi:10040
17527 #, no-wrap
17528 msgid "weather, substitute availability"
17529 msgstr ""
17530
17531 #. type: Plain text
17532 #: doc/guix.texi:10042
17533 msgid "Here's a sample run:"
17534 msgstr ""
17535
17536 #. type: example
17537 #: doc/guix.texi:10054
17538 #, no-wrap
17539 msgid ""
17540 "$ guix weather --substitute-urls=https://guix.example.org\n"
17541 "computing 5,872 package derivations for x86_64-linux...\n"
17542 "looking for 6,128 store items on https://guix.example.org..\n"
17543 "updating list of substitutes from 'https://guix.example.org'... 100.0%\n"
17544 "https://guix.example.org\n"
17545 " 43.4% substitutes available (2,658 out of 6,128)\n"
17546 " 7,032.5 MiB of nars (compressed)\n"
17547 " 19,824.2 MiB on disk (uncompressed)\n"
17548 " 0.030 seconds per request (182.9 seconds in total)\n"
17549 " 33.5 requests per second\n"
17550 "\n"
17551 msgstr ""
17552
17553 #. type: example
17554 #: doc/guix.texi:10064
17555 #, no-wrap
17556 msgid ""
17557 " 9.8% (342 out of 3,470) of the missing items are queued\n"
17558 " 867 queued builds\n"
17559 " x86_64-linux: 518 (59.7%)\n"
17560 " i686-linux: 221 (25.5%)\n"
17561 " aarch64-linux: 128 (14.8%)\n"
17562 " build rate: 23.41 builds per hour\n"
17563 " x86_64-linux: 11.16 builds per hour\n"
17564 " i686-linux: 6.03 builds per hour\n"
17565 " aarch64-linux: 6.41 builds per hour\n"
17566 msgstr ""
17567
17568 #. type: cindex
17569 #: doc/guix.texi:10066
17570 #, no-wrap
17571 msgid "continuous integration, statistics"
17572 msgstr ""
17573
17574 #. type: Plain text
17575 #: doc/guix.texi:10077
17576 msgid "As you can see, it reports the fraction of all the packages for which substitutes are available on the server---regardless of whether substitutes are enabled, and regardless of whether this server's signing key is authorized. It also reports the size of the compressed archives (``nars'') provided by the server, the size the corresponding store items occupy in the store (assuming deduplication is turned off), and the server's throughput. The second part gives continuous integration (CI) statistics, if the server supports it. In addition, using the @option{--coverage} option, @command{guix weather} can list ``important'' package substitutes missing on the server (see below)."
17577 msgstr ""
17578
17579 #. type: Plain text
17580 #: doc/guix.texi:10083
17581 msgid "To achieve that, @command{guix weather} queries over HTTP(S) meta-data (@dfn{narinfos}) for all the relevant store items. Like @command{guix challenge}, it ignores signatures on those substitutes, which is innocuous since the command only gathers statistics and cannot install those substitutes."
17582 msgstr ""
17583
17584 #. type: Plain text
17585 #: doc/guix.texi:10086
17586 msgid "Among other things, it is possible to query specific system types and specific package sets. The available options are listed below."
17587 msgstr ""
17588
17589 #. type: table
17590 #: doc/guix.texi:10092
17591 msgid "@var{urls} is the space-separated list of substitute server URLs to query. When this option is omitted, the default set of substitute servers is queried."
17592 msgstr ""
17593
17594 #. type: table
17595 #: doc/guix.texi:10098
17596 msgid "Query substitutes for @var{system}---e.g., @code{aarch64-linux}. This option can be repeated, in which case @command{guix weather} will query substitutes for several system types."
17597 msgstr ""
17598
17599 #. type: table
17600 #: doc/guix.texi:10104
17601 msgid "Instead of querying substitutes for all the packages, only ask for those specified in @var{file}. @var{file} must contain a @dfn{manifest}, as with the @code{-m} option of @command{guix package} (@pxref{Invoking guix package})."
17602 msgstr ""
17603
17604 #. type: item
17605 #: doc/guix.texi:10105
17606 #, no-wrap
17607 msgid "--coverage[=@var{count}]"
17608 msgstr ""
17609
17610 #. type: itemx
17611 #: doc/guix.texi:10106
17612 #, no-wrap
17613 msgid "-c [@var{count}]"
17614 msgstr ""
17615
17616 #. type: table
17617 #: doc/guix.texi:10112
17618 msgid "Report on substitute coverage for packages: list packages with at least @var{count} dependents (zero by default) for which substitutes are unavailable. Dependent packages themselves are not listed: if @var{b} depends on @var{a} and @var{a} has no substitutes, only @var{a} is listed, even though @var{b} usually lacks substitutes as well. The result looks like this:"
17619 msgstr ""
17620
17621 #. type: example
17622 #: doc/guix.texi:10126
17623 #, no-wrap
17624 msgid ""
17625 "$ guix weather --substitute-urls=@value{SUBSTITUTE-URL} -c 10\n"
17626 "computing 8,983 package derivations for x86_64-linux...\n"
17627 "looking for 9,343 store items on @value{SUBSTITUTE-URL}...\n"
17628 "updating substitutes from '@value{SUBSTITUTE-URL}'... 100.0%\n"
17629 "@value{SUBSTITUTE-URL}\n"
17630 " 64.7% substitutes available (6,047 out of 9,343)\n"
17631 "@dots{}\n"
17632 "2502 packages are missing from '@value{SUBSTITUTE-URL}' for 'x86_64-linux', among which:\n"
17633 " 58 kcoreaddons@@5.49.0 /gnu/store/@dots{}-kcoreaddons-5.49.0\n"
17634 " 46 qgpgme@@1.11.1 /gnu/store/@dots{}-qgpgme-1.11.1\n"
17635 " 37 perl-http-cookiejar@@0.008 /gnu/store/@dots{}-perl-http-cookiejar-0.008\n"
17636 " @dots{}\n"
17637 msgstr ""
17638
17639 #. type: table
17640 #: doc/guix.texi:10131
17641 msgid "What this example shows is that @code{kcoreaddons} and presumably the 58 packages that depend on it have no substitutes at @code{ci.guix.info}; likewise for @code{qgpgme} and the 46 packages that depend on it."
17642 msgstr ""
17643
17644 #. type: table
17645 #: doc/guix.texi:10135
17646 msgid "If you are a Guix developer, or if you are taking care of this build farm, you'll probably want to have a closer look at these packages: they may simply fail to build."
17647 msgstr ""
17648
17649 #. type: section
17650 #: doc/guix.texi:10138
17651 #, no-wrap
17652 msgid "Invoking @command{guix processes}"
17653 msgstr ""
17654
17655 #. type: Plain text
17656 #: doc/guix.texi:10146
17657 msgid "The @command{guix processes} command can be useful to developers and system administrators, especially on multi-user machines and on build farms: it lists the current sessions (connections to the daemon), as well as information about the processes involved@footnote{Remote sessions, when @command{guix-daemon} is started with @option{--listen} specifying a TCP endpoint, are @emph{not} listed.}. Here's an example of the information it returns:"
17658 msgstr ""
17659
17660 #. type: example
17661 #: doc/guix.texi:10152
17662 #, no-wrap
17663 msgid ""
17664 "$ sudo guix processes\n"
17665 "SessionPID: 19002\n"
17666 "ClientPID: 19090\n"
17667 "ClientCommand: guix environment --ad-hoc python\n"
17668 "\n"
17669 msgstr ""
17670
17671 #. type: example
17672 #: doc/guix.texi:10156
17673 #, no-wrap
17674 msgid ""
17675 "SessionPID: 19402\n"
17676 "ClientPID: 19367\n"
17677 "ClientCommand: guix publish -u guix-publish -p 3000 -C 9 @dots{}\n"
17678 "\n"
17679 msgstr ""
17680
17681 #. type: example
17682 #: doc/guix.texi:10166
17683 #, no-wrap
17684 msgid ""
17685 "SessionPID: 19444\n"
17686 "ClientPID: 19419\n"
17687 "ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}\n"
17688 "LockHeld: /gnu/store/@dots{}-perl-ipc-cmd-0.96.lock\n"
17689 "LockHeld: /gnu/store/@dots{}-python-six-bootstrap-1.11.0.lock\n"
17690 "LockHeld: /gnu/store/@dots{}-libjpeg-turbo-2.0.0.lock\n"
17691 "ChildProcess: 20495: guix offload x86_64-linux 7200 1 28800\n"
17692 "ChildProcess: 27733: guix offload x86_64-linux 7200 1 28800\n"
17693 "ChildProcess: 27793: guix offload x86_64-linux 7200 1 28800\n"
17694 msgstr ""
17695
17696 #. type: Plain text
17697 #: doc/guix.texi:10173
17698 msgid "In this example we see that @command{guix-daemon} has three clients: @command{guix environment}, @command{guix publish}, and the Cuirass continuous integration tool; their process identifier (PID) is given by the @code{ClientPID} field. The @code{SessionPID} field gives the PID of the @command{guix-daemon} sub-process of this particular session."
17699 msgstr ""
17700
17701 #. type: Plain text
17702 #: doc/guix.texi:10180
17703 msgid "The @code{LockHeld} fields show which store items are currently locked by this session, which corresponds to store items being built or substituted (the @code{LockHeld} field is not displayed when @command{guix processes} is not running as root.) Last, by looking at the @code{ChildProcess} field, we understand that these three builds are being offloaded (@pxref{Daemon Offload Setup})."
17704 msgstr ""
17705
17706 #. type: Plain text
17707 #: doc/guix.texi:10185
17708 msgid "The output is in Recutils format so we can use the handy @command{recsel} command to select sessions of interest (@pxref{Selection Expressions,,, recutils, GNU recutils manual}). As an example, the command shows the command line and PID of the client that triggered the build of a Perl package:"
17709 msgstr ""
17710
17711 #. type: example
17712 #: doc/guix.texi:10191
17713 #, no-wrap
17714 msgid ""
17715 "$ sudo guix processes | \\\n"
17716 " recsel -p ClientPID,ClientCommand -e 'LockHeld ~ \"perl\"'\n"
17717 "ClientPID: 19419\n"
17718 "ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}\n"
17719 msgstr ""
17720
17721 #. type: cindex
17722 #: doc/guix.texi:10197
17723 #, no-wrap
17724 msgid "system configuration"
17725 msgstr ""
17726
17727 #. type: Plain text
17728 #: doc/guix.texi:10203
17729 msgid "Guix System supports a consistent whole-system configuration mechanism. By that we mean that all aspects of the global system configuration---such as the available system services, timezone and locale settings, user accounts---are declared in a single place. Such a @dfn{system configuration} can be @dfn{instantiated}---i.e., effected."
17730 msgstr ""
17731
17732 #. type: Plain text
17733 #: doc/guix.texi:10213
17734 msgid "One of the advantages of putting all the system configuration under the control of Guix is that it supports transactional system upgrades, and makes it possible to roll back to a previous system instantiation, should something go wrong with the new one (@pxref{Features}). Another advantage is that it makes it easy to replicate the exact same configuration across different machines, or at different points in time, without having to resort to additional administration tools layered on top of the own tools of the system."
17735 msgstr ""
17736
17737 #. type: Plain text
17738 #: doc/guix.texi:10218
17739 msgid "This section describes this mechanism. First we focus on the system administrator's viewpoint---explaining how the system is configured and instantiated. Then we show how this mechanism can be extended, for instance to support new system services."
17740 msgstr ""
17741
17742 #. type: Plain text
17743 #: doc/guix.texi:10246
17744 msgid "The operating system is configured by providing an @code{operating-system} declaration in a file that can then be passed to the @command{guix system} command (@pxref{Invoking guix system}). A simple setup, with the default system services, the default Linux-Libre kernel, initial RAM disk, and boot loader looks like this:"
17745 msgstr ""
17746
17747 #. type: findex
17748 #: doc/guix.texi:10247
17749 #, no-wrap
17750 msgid "operating-system"
17751 msgstr ""
17752
17753 #. type: include
17754 #: doc/guix.texi:10249
17755 #, no-wrap
17756 msgid "os-config-bare-bones.texi"
17757 msgstr ""
17758
17759 #. type: Plain text
17760 #: doc/guix.texi:10256
17761 msgid "This example should be self-describing. Some of the fields defined above, such as @code{host-name} and @code{bootloader}, are mandatory. Others, such as @code{packages} and @code{services}, can be omitted, in which case they get a default value."
17762 msgstr ""
17763
17764 #. type: Plain text
17765 #: doc/guix.texi:10261
17766 msgid "Below we discuss the effect of some of the most important fields (@pxref{operating-system Reference}, for details about all the available fields), and how to @dfn{instantiate} the operating system using @command{guix system}."
17767 msgstr ""
17768
17769 #. type: unnumberedsubsec
17770 #: doc/guix.texi:10262
17771 #, no-wrap
17772 msgid "Bootloader"
17773 msgstr ""
17774
17775 #. type: cindex
17776 #: doc/guix.texi:10264
17777 #, no-wrap
17778 msgid "legacy boot, on Intel machines"
17779 msgstr ""
17780
17781 #. type: cindex
17782 #: doc/guix.texi:10265
17783 #, no-wrap
17784 msgid "BIOS boot, on Intel machines"
17785 msgstr ""
17786
17787 #. type: cindex
17788 #: doc/guix.texi:10266
17789 #, no-wrap
17790 msgid "UEFI boot"
17791 msgstr ""
17792
17793 #. type: cindex
17794 #: doc/guix.texi:10267
17795 #, no-wrap
17796 msgid "EFI boot"
17797 msgstr ""
17798
17799 #. type: Plain text
17800 #: doc/guix.texi:10273
17801 msgid "The @code{bootloader} field describes the method that will be used to boot your system. Machines based on Intel processors can boot in ``legacy'' BIOS mode, as in the example above. However, more recent machines rely instead on the @dfn{Unified Extensible Firmware Interface} (UEFI) to boot. In that case, the @code{bootloader} field should contain something along these lines:"
17802 msgstr ""
17803
17804 #. type: example
17805 #: doc/guix.texi:10278
17806 #, no-wrap
17807 msgid ""
17808 "(bootloader-configuration\n"
17809 " (bootloader grub-efi-bootloader)\n"
17810 " (target \"/boot/efi\"))\n"
17811 msgstr ""
17812
17813 #. type: Plain text
17814 #: doc/guix.texi:10282
17815 msgid "@xref{Bootloader Configuration}, for more information on the available configuration options."
17816 msgstr ""
17817
17818 #. type: unnumberedsubsec
17819 #: doc/guix.texi:10283
17820 #, no-wrap
17821 msgid "Globally-Visible Packages"
17822 msgstr ""
17823
17824 #. type: vindex
17825 #: doc/guix.texi:10285
17826 #, no-wrap
17827 msgid "%base-packages"
17828 msgstr ""
17829
17830 #. type: Plain text
17831 #: doc/guix.texi:10298
17832 msgid "The @code{packages} field lists packages that will be globally visible on the system, for all user accounts---i.e., in every user's @code{PATH} environment variable---in addition to the per-user profiles (@pxref{Invoking guix package}). The @var{%base-packages} variable provides all the tools one would expect for basic user and administrator tasks---including the GNU Core Utilities, the GNU Networking Utilities, the GNU Zile lightweight text editor, @command{find}, @command{grep}, etc. The example above adds GNU@tie{}Screen to those, taken from the @code{(gnu packages screen)} module (@pxref{Package Modules}). The @code{(list package output)} syntax can be used to add a specific output of a package:"
17833 msgstr ""
17834
17835 #. type: lisp
17836 #: doc/guix.texi:10302
17837 #, no-wrap
17838 msgid ""
17839 "(use-modules (gnu packages))\n"
17840 "(use-modules (gnu packages dns))\n"
17841 "\n"
17842 msgstr ""
17843
17844 #. type: lisp
17845 #: doc/guix.texi:10307
17846 #, no-wrap
17847 msgid ""
17848 "(operating-system\n"
17849 " ;; ...\n"
17850 " (packages (cons (list bind \"utils\")\n"
17851 " %base-packages)))\n"
17852 msgstr ""
17853
17854 #. type: findex
17855 #: doc/guix.texi:10309
17856 #, no-wrap
17857 msgid "specification->package"
17858 msgstr ""
17859
17860 #. type: Plain text
17861 #: doc/guix.texi:10318
17862 msgid "Referring to packages by variable name, like @code{bind} above, has the advantage of being unambiguous; it also allows typos and such to be diagnosed right away as ``unbound variables''. The downside is that one needs to know which module defines which package, and to augment the @code{use-package-modules} line accordingly. To avoid that, one can use the @code{specification->package} procedure of the @code{(gnu packages)} module, which returns the best package for a given name or name and version:"
17863 msgstr ""
17864
17865 #. type: lisp
17866 #: doc/guix.texi:10321
17867 #, no-wrap
17868 msgid ""
17869 "(use-modules (gnu packages))\n"
17870 "\n"
17871 msgstr ""
17872
17873 #. type: lisp
17874 #: doc/guix.texi:10327
17875 #, no-wrap
17876 msgid ""
17877 "(operating-system\n"
17878 " ;; ...\n"
17879 " (packages (append (map specification->package\n"
17880 " '(\"tcpdump\" \"htop\" \"gnupg@@2.0\"))\n"
17881 " %base-packages)))\n"
17882 msgstr ""
17883
17884 #. type: unnumberedsubsec
17885 #: doc/guix.texi:10329
17886 #, no-wrap
17887 msgid "System Services"
17888 msgstr ""
17889
17890 #. type: cindex
17891 #: doc/guix.texi:10331 doc/guix.texi:23820 doc/guix.texi:24827
17892 #, no-wrap
17893 msgid "services"
17894 msgstr ""
17895
17896 #. type: vindex
17897 #: doc/guix.texi:10332
17898 #, no-wrap
17899 msgid "%base-services"
17900 msgstr ""
17901
17902 #. type: Plain text
17903 #: doc/guix.texi:10342
17904 msgid "The @code{services} field lists @dfn{system services} to be made available when the system starts (@pxref{Services}). The @code{operating-system} declaration above specifies that, in addition to the basic services, we want the OpenSSH secure shell daemon listening on port 2222 (@pxref{Networking Services, @code{openssh-service-type}}). Under the hood, @code{openssh-service-type} arranges so that @command{sshd} is started with the right command-line options, possibly with supporting configuration files generated as needed (@pxref{Defining Services})."
17905 msgstr ""
17906
17907 #. type: cindex
17908 #: doc/guix.texi:10343
17909 #, no-wrap
17910 msgid "customization, of services"
17911 msgstr ""
17912
17913 #. type: findex
17914 #: doc/guix.texi:10344
17915 #, no-wrap
17916 msgid "modify-services"
17917 msgstr ""
17918
17919 #. type: Plain text
17920 #: doc/guix.texi:10348
17921 msgid "Occasionally, instead of using the base services as is, you will want to customize them. To do this, use @code{modify-services} (@pxref{Service Reference, @code{modify-services}}) to modify the list."
17922 msgstr ""
17923
17924 #. type: Plain text
17925 #: doc/guix.texi:10353
17926 msgid "For example, suppose you want to modify @code{guix-daemon} and Mingetty (the console log-in) in the @var{%base-services} list (@pxref{Base Services, @code{%base-services}}). To do that, you can write the following in your operating system declaration:"
17927 msgstr ""
17928
17929 #. type: lisp
17930 #: doc/guix.texi:10366
17931 #, no-wrap
17932 msgid ""
17933 "(define %my-services\n"
17934 " ;; My very own list of services.\n"
17935 " (modify-services %base-services\n"
17936 " (guix-service-type config =>\n"
17937 " (guix-configuration\n"
17938 " (inherit config)\n"
17939 " (use-substitutes? #f)\n"
17940 " (extra-options '(\"--gc-keep-derivations\"))))\n"
17941 " (mingetty-service-type config =>\n"
17942 " (mingetty-configuration\n"
17943 " (inherit config)))))\n"
17944 "\n"
17945 msgstr ""
17946
17947 #. type: lisp
17948 #: doc/guix.texi:10370
17949 #, no-wrap
17950 msgid ""
17951 "(operating-system\n"
17952 " ;; @dots{}\n"
17953 " (services %my-services))\n"
17954 msgstr ""
17955
17956 #. type: Plain text
17957 #: doc/guix.texi:10381
17958 msgid "This changes the configuration---i.e., the service parameters---of the @code{guix-service-type} instance, and that of all the @code{mingetty-service-type} instances in the @var{%base-services} list. Observe how this is accomplished: first, we arrange for the original configuration to be bound to the identifier @code{config} in the @var{body}, and then we write the @var{body} so that it evaluates to the desired configuration. In particular, notice how we use @code{inherit} to create a new configuration which has the same values as the old configuration, but with a few modifications."
17959 msgstr ""
17960
17961 #. type: Plain text
17962 #: doc/guix.texi:10388
17963 msgid "The configuration for a typical ``desktop'' usage, with an encrypted root partition, the X11 display server, GNOME and Xfce (users can choose which of these desktop environments to use at the log-in screen by pressing @kbd{F1}), network management, power management, and more, would look like this:"
17964 msgstr ""
17965
17966 #. type: include
17967 #: doc/guix.texi:10390
17968 #, no-wrap
17969 msgid "os-config-desktop.texi"
17970 msgstr ""
17971
17972 #. type: Plain text
17973 #: doc/guix.texi:10395
17974 msgid "A graphical system with a choice of lightweight window managers instead of full-blown desktop environments would look like this:"
17975 msgstr ""
17976
17977 #. type: include
17978 #: doc/guix.texi:10397
17979 #, no-wrap
17980 msgid "os-config-lightweight-desktop.texi"
17981 msgstr ""
17982
17983 #. type: Plain text
17984 #: doc/guix.texi:10403
17985 msgid "This example refers to the @file{/boot/efi} file system by its UUID, @code{1234-ABCD}. Replace this UUID with the right UUID on your system, as returned by the @command{blkid} command."
17986 msgstr ""
17987
17988 #. type: Plain text
17989 #: doc/guix.texi:10407
17990 msgid "@xref{Desktop Services}, for the exact list of services provided by @var{%desktop-services}. @xref{X.509 Certificates}, for background information about the @code{nss-certs} package that is used here."
17991 msgstr ""
17992
17993 #. type: Plain text
17994 #: doc/guix.texi:10414
17995 msgid "Again, @var{%desktop-services} is just a list of service objects. If you want to remove services from there, you can do so using the procedures for list filtering (@pxref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile Reference Manual}). For instance, the following expression returns a list that contains all the services in @var{%desktop-services} minus the Avahi service:"
17996 msgstr ""
17997
17998 #. type: example
17999 #: doc/guix.texi:10419
18000 #, no-wrap
18001 msgid ""
18002 "(remove (lambda (service)\n"
18003 " (eq? (service-kind service) avahi-service-type))\n"
18004 " %desktop-services)\n"
18005 msgstr ""
18006
18007 #. type: unnumberedsubsec
18008 #: doc/guix.texi:10421
18009 #, no-wrap
18010 msgid "Instantiating the System"
18011 msgstr ""
18012
18013 #. type: Plain text
18014 #: doc/guix.texi:10428
18015 msgid "Assuming the @code{operating-system} declaration is stored in the @file{my-system-config.scm} file, the @command{guix system reconfigure my-system-config.scm} command instantiates that configuration, and makes it the default GRUB boot entry (@pxref{Invoking guix system})."
18016 msgstr ""
18017
18018 #. type: Plain text
18019 #: doc/guix.texi:10436
18020 msgid "The normal way to change the system configuration is by updating this file and re-running @command{guix system reconfigure}. One should never have to touch files in @file{/etc} or to run commands that modify the system state such as @command{useradd} or @command{grub-install}. In fact, you must avoid that since that would not only void your warranty but also prevent you from rolling back to previous versions of your system, should you ever need to."
18021 msgstr ""
18022
18023 #. type: cindex
18024 #: doc/guix.texi:10437
18025 #, no-wrap
18026 msgid "roll-back, of the operating system"
18027 msgstr ""
18028
18029 #. type: Plain text
18030 #: doc/guix.texi:10447
18031 msgid "Speaking of roll-back, each time you run @command{guix system reconfigure}, a new @dfn{generation} of the system is created---without modifying or deleting previous generations. Old system generations get an entry in the bootloader boot menu, allowing you to boot them in case something went wrong with the latest generation. Reassuring, no? The @command{guix system list-generations} command lists the system generations available on disk. It is also possible to roll back the system via the commands @command{guix system roll-back} and @command{guix system switch-generation}."
18032 msgstr ""
18033
18034 #. type: Plain text
18035 #: doc/guix.texi:10453
18036 msgid "Although the @command{guix system reconfigure} command will not modify previous generations, you must take care when the current generation is not the latest (e.g., after invoking @command{guix system roll-back}), since the operation might overwrite a later generation (@pxref{Invoking guix system})."
18037 msgstr ""
18038
18039 #. type: unnumberedsubsec
18040 #: doc/guix.texi:10454
18041 #, no-wrap
18042 msgid "The Programming Interface"
18043 msgstr ""
18044
18045 #. type: Plain text
18046 #: doc/guix.texi:10459
18047 msgid "At the Scheme level, the bulk of an @code{operating-system} declaration is instantiated with the following monadic procedure (@pxref{The Store Monad}):"
18048 msgstr ""
18049
18050 #. type: deffn
18051 #: doc/guix.texi:10460
18052 #, no-wrap
18053 msgid "{Monadic Procedure} operating-system-derivation os"
18054 msgstr ""
18055
18056 #. type: deffn
18057 #: doc/guix.texi:10463
18058 msgid "Return a derivation that builds @var{os}, an @code{operating-system} object (@pxref{Derivations})."
18059 msgstr ""
18060
18061 #. type: deffn
18062 #: doc/guix.texi:10467
18063 msgid "The output of the derivation is a single directory that refers to all the packages, configuration files, and other supporting files needed to instantiate @var{os}."
18064 msgstr ""
18065
18066 #. type: Plain text
18067 #: doc/guix.texi:10472
18068 msgid "This procedure is provided by the @code{(gnu system)} module. Along with @code{(gnu services)} (@pxref{Services}), this module contains the guts of Guix System. Make sure to visit it!"
18069 msgstr ""
18070
18071 #. type: section
18072 #: doc/guix.texi:10475
18073 #, no-wrap
18074 msgid "@code{operating-system} Reference"
18075 msgstr ""
18076
18077 #. type: Plain text
18078 #: doc/guix.texi:10480
18079 msgid "This section summarizes all the options available in @code{operating-system} declarations (@pxref{Using the Configuration System})."
18080 msgstr ""
18081
18082 #. type: deftp
18083 #: doc/guix.texi:10481
18084 #, no-wrap
18085 msgid "{Data Type} operating-system"
18086 msgstr ""
18087
18088 #. type: deftp
18089 #: doc/guix.texi:10485
18090 msgid "This is the data type representing an operating system configuration. By that, we mean all the global system configuration, not per-user configuration (@pxref{Using the Configuration System})."
18091 msgstr ""
18092
18093 #. type: item
18094 #: doc/guix.texi:10487
18095 #, no-wrap
18096 msgid "@code{kernel} (default: @var{linux-libre})"
18097 msgstr ""
18098
18099 #. type: table
18100 #: doc/guix.texi:10491
18101 msgid "The package object of the operating system kernel to use@footnote{Currently only the Linux-libre kernel is supported. In the future, it will be possible to use the GNU@tie{}Hurd.}."
18102 msgstr ""
18103
18104 #. type: item
18105 #: doc/guix.texi:10492
18106 #, no-wrap
18107 msgid "@code{kernel-arguments} (default: @code{'(\"quiet\")})"
18108 msgstr ""
18109
18110 #. type: table
18111 #: doc/guix.texi:10495
18112 msgid "List of strings or gexps representing additional arguments to pass on the command-line of the kernel---e.g., @code{(\"console=ttyS0\")}."
18113 msgstr ""
18114
18115 #. type: code{#1}
18116 #: doc/guix.texi:10496 doc/guix.texi:24031 doc/guix.texi:24050
18117 #, no-wrap
18118 msgid "bootloader"
18119 msgstr ""
18120
18121 #. type: table
18122 #: doc/guix.texi:10498
18123 msgid "The system bootloader configuration object. @xref{Bootloader Configuration}."
18124 msgstr ""
18125
18126 #. type: code{#1}
18127 #: doc/guix.texi:10499 doc/guix.texi:24170
18128 #, no-wrap
18129 msgid "label"
18130 msgstr ""
18131
18132 #. type: table
18133 #: doc/guix.texi:10502
18134 msgid "This is the label (a string) as it appears in the bootloader's menu entry. The default label includes the kernel name and version."
18135 msgstr ""
18136
18137 #. type: item
18138 #: doc/guix.texi:10503 doc/guix.texi:13709 doc/guix.texi:24100
18139 #, no-wrap
18140 msgid "@code{keyboard-layout} (default: @code{#f})"
18141 msgstr ""
18142
18143 #. type: table
18144 #: doc/guix.texi:10507
18145 msgid "This field specifies the keyboard layout to use in the console. It can be either @code{#f}, in which case the default keyboard layout is used (usually US English), or a @code{<keyboard-layout>} record."
18146 msgstr ""
18147
18148 #. type: table
18149 #: doc/guix.texi:10512
18150 msgid "This keyboard layout is in effect as soon as the kernel has booted. For instance, it is the keyboard layout in effect when you type a passphrase if your root file system is on a @code{luks-device-mapping} mapped device (@pxref{Mapped Devices})."
18151 msgstr ""
18152
18153 #. type: quotation
18154 #: doc/guix.texi:10519
18155 msgid "This does @emph{not} specify the keyboard layout used by the bootloader, nor that used by the graphical display server. @xref{Bootloader Configuration}, for information on how to specify the bootloader's keyboard layout. @xref{X Window}, for information on how to specify the keyboard layout used by the X Window System."
18156 msgstr ""
18157
18158 #. type: item
18159 #: doc/guix.texi:10521
18160 #, no-wrap
18161 msgid "@code{initrd-modules} (default: @code{%base-initrd-modules})"
18162 msgstr ""
18163
18164 #. type: code{#1}
18165 #: doc/guix.texi:10522 doc/guix.texi:23857 doc/guix.texi:23960
18166 #: doc/guix.texi:24195
18167 #, no-wrap
18168 msgid "initrd"
18169 msgstr ""
18170
18171 #. type: cindex
18172 #: doc/guix.texi:10523 doc/guix.texi:23858 doc/guix.texi:23961
18173 #, no-wrap
18174 msgid "initial RAM disk"
18175 msgstr ""
18176
18177 #. type: table
18178 #: doc/guix.texi:10526
18179 msgid "The list of Linux kernel modules that need to be available in the initial RAM disk. @xref{Initial RAM Disk}."
18180 msgstr ""
18181
18182 #. type: item
18183 #: doc/guix.texi:10527
18184 #, no-wrap
18185 msgid "@code{initrd} (default: @code{base-initrd})"
18186 msgstr ""
18187
18188 #. type: table
18189 #: doc/guix.texi:10531
18190 msgid "A procedure that returns an initial RAM disk for the Linux kernel. This field is provided to support low-level customization and should rarely be needed for casual use. @xref{Initial RAM Disk}."
18191 msgstr ""
18192
18193 #. type: item
18194 #: doc/guix.texi:10532
18195 #, no-wrap
18196 msgid "@code{firmware} (default: @var{%base-firmware})"
18197 msgstr ""
18198
18199 #. type: cindex
18200 #: doc/guix.texi:10533
18201 #, no-wrap
18202 msgid "firmware"
18203 msgstr ""
18204
18205 #. type: table
18206 #: doc/guix.texi:10535
18207 msgid "List of firmware packages loadable by the operating system kernel."
18208 msgstr ""
18209
18210 #. type: table
18211 #: doc/guix.texi:10540
18212 msgid "The default includes firmware needed for Atheros- and Broadcom-based WiFi devices (Linux-libre modules @code{ath9k} and @code{b43-open}, respectively). @xref{Hardware Considerations}, for more info on supported hardware."
18213 msgstr ""
18214
18215 #. type: code{#1}
18216 #: doc/guix.texi:10541
18217 #, no-wrap
18218 msgid "host-name"
18219 msgstr ""
18220
18221 #. type: table
18222 #: doc/guix.texi:10543
18223 msgid "The host name."
18224 msgstr ""
18225
18226 #. type: code{#1}
18227 #: doc/guix.texi:10544
18228 #, no-wrap
18229 msgid "hosts-file"
18230 msgstr ""
18231
18232 #. type: cindex
18233 #: doc/guix.texi:10545
18234 #, no-wrap
18235 msgid "hosts file"
18236 msgstr ""
18237
18238 #. type: table
18239 #: doc/guix.texi:10550
18240 msgid "A file-like object (@pxref{G-Expressions, file-like objects}) for use as @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). The default is a file with entries for @code{localhost} and @var{host-name}."
18241 msgstr ""
18242
18243 #. type: item
18244 #: doc/guix.texi:10551
18245 #, no-wrap
18246 msgid "@code{mapped-devices} (default: @code{'()})"
18247 msgstr ""
18248
18249 #. type: table
18250 #: doc/guix.texi:10553
18251 msgid "A list of mapped devices. @xref{Mapped Devices}."
18252 msgstr ""
18253
18254 #. type: code{#1}
18255 #: doc/guix.texi:10554
18256 #, no-wrap
18257 msgid "file-systems"
18258 msgstr ""
18259
18260 #. type: table
18261 #: doc/guix.texi:10556
18262 msgid "A list of file systems. @xref{File Systems}."
18263 msgstr ""
18264
18265 #. type: item
18266 #: doc/guix.texi:10557
18267 #, no-wrap
18268 msgid "@code{swap-devices} (default: @code{'()})"
18269 msgstr ""
18270
18271 #. type: cindex
18272 #: doc/guix.texi:10558
18273 #, no-wrap
18274 msgid "swap devices"
18275 msgstr ""
18276
18277 #. type: table
18278 #: doc/guix.texi:10565
18279 msgid "A list of strings identifying devices or files to be used for ``swap space'' (@pxref{Memory Concepts,,, libc, The GNU C Library Reference Manual}). For example, @code{'(\"/dev/sda3\")} or @code{'(\"/swapfile\")}. It is possible to specify a swap file in a file system on a mapped device, provided that the necessary device mapping and file system are also specified. @xref{Mapped Devices} and @ref{File Systems}."
18280 msgstr ""
18281
18282 #. type: item
18283 #: doc/guix.texi:10566
18284 #, no-wrap
18285 msgid "@code{users} (default: @code{%base-user-accounts})"
18286 msgstr ""
18287
18288 #. type: itemx
18289 #: doc/guix.texi:10567
18290 #, no-wrap
18291 msgid "@code{groups} (default: @var{%base-groups})"
18292 msgstr ""
18293
18294 #. type: table
18295 #: doc/guix.texi:10569
18296 msgid "List of user accounts and groups. @xref{User Accounts}."
18297 msgstr ""
18298
18299 #. type: table
18300 #: doc/guix.texi:10572
18301 msgid "If the @code{users} list lacks a user account with UID@tie{}0, a ``root'' account with UID@tie{}0 is automatically added."
18302 msgstr ""
18303
18304 #. type: item
18305 #: doc/guix.texi:10573
18306 #, no-wrap
18307 msgid "@code{skeletons} (default: @code{(default-skeletons)})"
18308 msgstr ""
18309
18310 #. type: table
18311 #: doc/guix.texi:10577
18312 msgid "A list target file name/file-like object tuples (@pxref{G-Expressions, file-like objects}). These are the skeleton files that will be added to the home directory of newly-created user accounts."
18313 msgstr ""
18314
18315 #. type: table
18316 #: doc/guix.texi:10579
18317 msgid "For instance, a valid value may look like this:"
18318 msgstr ""
18319
18320 #. type: example
18321 #: doc/guix.texi:10585
18322 #, no-wrap
18323 msgid ""
18324 "`((\".bashrc\" ,(plain-file \"bashrc\" \"echo Hello\\n\"))\n"
18325 " (\".guile\" ,(plain-file \"guile\"\n"
18326 " \"(use-modules (ice-9 readline))\n"
18327 " (activate-readline)\")))\n"
18328 msgstr ""
18329
18330 #. type: item
18331 #: doc/guix.texi:10587
18332 #, no-wrap
18333 msgid "@code{issue} (default: @var{%default-issue})"
18334 msgstr ""
18335
18336 #. type: table
18337 #: doc/guix.texi:10590
18338 msgid "A string denoting the contents of the @file{/etc/issue} file, which is displayed when users log in on a text console."
18339 msgstr ""
18340
18341 #. type: item
18342 #: doc/guix.texi:10591
18343 #, no-wrap
18344 msgid "@code{packages} (default: @var{%base-packages})"
18345 msgstr ""
18346
18347 #. type: table
18348 #: doc/guix.texi:10594
18349 msgid "The set of packages installed in the global profile, which is accessible at @file{/run/current-system/profile}."
18350 msgstr ""
18351
18352 #. type: table
18353 #: doc/guix.texi:10598
18354 msgid "The default set includes core utilities and it is good practice to install non-core utilities in user profiles (@pxref{Invoking guix package})."
18355 msgstr ""
18356
18357 #. type: code{#1}
18358 #: doc/guix.texi:10599
18359 #, no-wrap
18360 msgid "timezone"
18361 msgstr ""
18362
18363 #. type: table
18364 #: doc/guix.texi:10601
18365 msgid "A timezone identifying string---e.g., @code{\"Europe/Paris\"}."
18366 msgstr ""
18367
18368 #. type: table
18369 #: doc/guix.texi:10605
18370 msgid "You can run the @command{tzselect} command to find out which timezone string corresponds to your region. Choosing an invalid timezone name causes @command{guix system} to fail."
18371 msgstr ""
18372
18373 #. type: item
18374 #: doc/guix.texi:10606
18375 #, no-wrap
18376 msgid "@code{locale} (default: @code{\"en_US.utf8\"})"
18377 msgstr ""
18378
18379 #. type: table
18380 #: doc/guix.texi:10609
18381 msgid "The name of the default locale (@pxref{Locale Names,,, libc, The GNU C Library Reference Manual}). @xref{Locales}, for more information."
18382 msgstr ""
18383
18384 #. type: item
18385 #: doc/guix.texi:10610
18386 #, no-wrap
18387 msgid "@code{locale-definitions} (default: @var{%default-locale-definitions})"
18388 msgstr ""
18389
18390 #. type: table
18391 #: doc/guix.texi:10613
18392 msgid "The list of locale definitions to be compiled and that may be used at run time. @xref{Locales}."
18393 msgstr ""
18394
18395 #. type: item
18396 #: doc/guix.texi:10614
18397 #, no-wrap
18398 msgid "@code{locale-libcs} (default: @code{(list @var{glibc})})"
18399 msgstr ""
18400
18401 #. type: table
18402 #: doc/guix.texi:10618
18403 msgid "The list of GNU@tie{}libc packages whose locale data and tools are used to build the locale definitions. @xref{Locales}, for compatibility considerations that justify this option."
18404 msgstr ""
18405
18406 #. type: item
18407 #: doc/guix.texi:10619
18408 #, no-wrap
18409 msgid "@code{name-service-switch} (default: @var{%default-nss})"
18410 msgstr ""
18411
18412 #. type: table
18413 #: doc/guix.texi:10623
18414 msgid "Configuration of the libc name service switch (NSS)---a @code{<name-service-switch>} object. @xref{Name Service Switch}, for details."
18415 msgstr ""
18416
18417 #. type: item
18418 #: doc/guix.texi:10624
18419 #, no-wrap
18420 msgid "@code{services} (default: @var{%base-services})"
18421 msgstr ""
18422
18423 #. type: table
18424 #: doc/guix.texi:10626
18425 msgid "A list of service objects denoting system services. @xref{Services}."
18426 msgstr ""
18427
18428 #. type: cindex
18429 #: doc/guix.texi:10627
18430 #, no-wrap
18431 msgid "essential services"
18432 msgstr ""
18433
18434 #. type: item
18435 #: doc/guix.texi:10628
18436 #, no-wrap
18437 msgid "@code{essential-services} (default: ...)"
18438 msgstr ""
18439
18440 #. type: table
18441 #: doc/guix.texi:10633
18442 msgid "The list of ``essential services''---i.e., things like instances of @code{system-service-type} and @code{host-name-service-type} (@pxref{Service Reference}), which are derived from the operating system definition itself. As a user you should @emph{never} need to touch this field."
18443 msgstr ""
18444
18445 #. type: item
18446 #: doc/guix.texi:10634
18447 #, no-wrap
18448 msgid "@code{pam-services} (default: @code{(base-pam-services)})"
18449 msgstr ""
18450
18451 #. type: cindex
18452 #: doc/guix.texi:10635
18453 #, no-wrap
18454 msgid "PAM"
18455 msgstr ""
18456
18457 #. type: cindex
18458 #: doc/guix.texi:10636
18459 #, no-wrap
18460 msgid "pluggable authentication modules"
18461 msgstr ""
18462
18463 #. type: table
18464 #: doc/guix.texi:10639
18465 msgid "Linux @dfn{pluggable authentication module} (PAM) services."
18466 msgstr ""
18467
18468 #. type: item
18469 #: doc/guix.texi:10640
18470 #, no-wrap
18471 msgid "@code{setuid-programs} (default: @var{%setuid-programs})"
18472 msgstr ""
18473
18474 #. type: table
18475 #: doc/guix.texi:10643
18476 msgid "List of string-valued G-expressions denoting setuid programs. @xref{Setuid Programs}."
18477 msgstr ""
18478
18479 #. type: item
18480 #: doc/guix.texi:10644
18481 #, no-wrap
18482 msgid "@code{sudoers-file} (default: @var{%sudoers-specification})"
18483 msgstr ""
18484
18485 #. type: cindex
18486 #: doc/guix.texi:10645
18487 #, no-wrap
18488 msgid "sudoers file"
18489 msgstr ""
18490
18491 #. type: table
18492 #: doc/guix.texi:10648
18493 msgid "The contents of the @file{/etc/sudoers} file as a file-like object (@pxref{G-Expressions, @code{local-file} and @code{plain-file}})."
18494 msgstr ""
18495
18496 #. type: table
18497 #: doc/guix.texi:10653
18498 msgid "This file specifies which users can use the @command{sudo} command, what they are allowed to do, and what privileges they may gain. The default is that only @code{root} and members of the @code{wheel} group may use @code{sudo}."
18499 msgstr ""
18500
18501 #. type: deffn
18502 #: doc/guix.texi:10656
18503 #, no-wrap
18504 msgid "{Scheme Syntax} this-operating-system"
18505 msgstr ""
18506
18507 #. type: deffn
18508 #: doc/guix.texi:10659
18509 msgid "When used in the @emph{lexical scope} of an operating system field definition, this identifier resolves to the operating system being defined."
18510 msgstr ""
18511
18512 #. type: deffn
18513 #: doc/guix.texi:10662
18514 msgid "The example below shows how to refer to the operating system being defined in the definition of the @code{label} field:"
18515 msgstr ""
18516
18517 #. type: example
18518 #: doc/guix.texi:10665 doc/guix.texi:13330
18519 #, no-wrap
18520 msgid ""
18521 "(use-modules (gnu) (guix))\n"
18522 "\n"
18523 msgstr ""
18524
18525 #. type: example
18526 #: doc/guix.texi:10670
18527 #, no-wrap
18528 msgid ""
18529 "(operating-system\n"
18530 " ;; ...\n"
18531 " (label (package-full-name\n"
18532 " (operating-system-kernel this-operating-system))))\n"
18533 msgstr ""
18534
18535 #. type: deffn
18536 #: doc/guix.texi:10674
18537 msgid "It is an error to refer to @code{this-operating-system} outside an operating system definition."
18538 msgstr ""
18539
18540 #. type: Plain text
18541 #: doc/guix.texi:10685
18542 msgid "The list of file systems to be mounted is specified in the @code{file-systems} field of the operating system declaration (@pxref{Using the Configuration System}). Each file system is declared using the @code{file-system} form, like this:"
18543 msgstr ""
18544
18545 #. type: example
18546 #: doc/guix.texi:10691
18547 #, no-wrap
18548 msgid ""
18549 "(file-system\n"
18550 " (mount-point \"/home\")\n"
18551 " (device \"/dev/sda3\")\n"
18552 " (type \"ext4\"))\n"
18553 msgstr ""
18554
18555 #. type: Plain text
18556 #: doc/guix.texi:10695
18557 msgid "As usual, some of the fields are mandatory---those shown in the example above---while others can be omitted. These are described below."
18558 msgstr ""
18559
18560 #. type: deftp
18561 #: doc/guix.texi:10696
18562 #, no-wrap
18563 msgid "{Data Type} file-system"
18564 msgstr ""
18565
18566 #. type: deftp
18567 #: doc/guix.texi:10699
18568 msgid "Objects of this type represent file systems to be mounted. They contain the following members:"
18569 msgstr ""
18570
18571 #. type: item
18572 #: doc/guix.texi:10701 doc/guix.texi:10892
18573 #, no-wrap
18574 msgid "type"
18575 msgstr ""
18576
18577 #. type: table
18578 #: doc/guix.texi:10704
18579 msgid "This is a string specifying the type of the file system---e.g., @code{\"ext4\"}."
18580 msgstr ""
18581
18582 #. type: code{#1}
18583 #: doc/guix.texi:10705
18584 #, no-wrap
18585 msgid "mount-point"
18586 msgstr ""
18587
18588 #. type: table
18589 #: doc/guix.texi:10707
18590 msgid "This designates the place where the file system is to be mounted."
18591 msgstr ""
18592
18593 #. type: code{#1}
18594 #: doc/guix.texi:10708
18595 #, no-wrap
18596 msgid "device"
18597 msgstr ""
18598
18599 #. type: table
18600 #: doc/guix.texi:10718
18601 msgid "This names the ``source'' of the file system. It can be one of three things: a file system label, a file system UUID, or the name of a @file{/dev} node. Labels and UUIDs offer a way to refer to file systems without having to hard-code their actual device name@footnote{Note that, while it is tempting to use @file{/dev/disk/by-uuid} and similar device names to achieve the same result, this is not recommended: These special device nodes are created by the udev daemon and may be unavailable at the time the device is mounted.}."
18602 msgstr ""
18603
18604 #. type: findex
18605 #: doc/guix.texi:10719
18606 #, no-wrap
18607 msgid "file-system-label"
18608 msgstr ""
18609
18610 #. type: table
18611 #: doc/guix.texi:10724
18612 msgid "File system labels are created using the @code{file-system-label} procedure, UUIDs are created using @code{uuid}, and @file{/dev} node are plain strings. Here's an example of a file system referred to by its label, as shown by the @command{e2label} command:"
18613 msgstr ""
18614
18615 #. type: example
18616 #: doc/guix.texi:10730
18617 #, no-wrap
18618 msgid ""
18619 "(file-system\n"
18620 " (mount-point \"/home\")\n"
18621 " (type \"ext4\")\n"
18622 " (device (file-system-label \"my-home\")))\n"
18623 msgstr ""
18624
18625 #. type: findex
18626 #: doc/guix.texi:10732
18627 #, no-wrap
18628 msgid "uuid"
18629 msgstr ""
18630
18631 #. type: table
18632 #: doc/guix.texi:10740
18633 msgid "UUIDs are converted from their string representation (as shown by the @command{tune2fs -l} command) using the @code{uuid} form@footnote{The @code{uuid} form expects 16-byte UUIDs as defined in @uref{https://tools.ietf.org/html/rfc4122, RFC@tie{}4122}. This is the form of UUID used by the ext2 family of file systems and others, but it is different from ``UUIDs'' found in FAT file systems, for instance.}, like this:"
18634 msgstr ""
18635
18636 #. type: example
18637 #: doc/guix.texi:10746
18638 #, no-wrap
18639 msgid ""
18640 "(file-system\n"
18641 " (mount-point \"/home\")\n"
18642 " (type \"ext4\")\n"
18643 " (device (uuid \"4dab5feb-d176-45de-b287-9b0a6e4c01cb\")))\n"
18644 msgstr ""
18645
18646 #. type: table
18647 #: doc/guix.texi:10754
18648 msgid "When the source of a file system is a mapped device (@pxref{Mapped Devices}), its @code{device} field @emph{must} refer to the mapped device name---e.g., @file{\"/dev/mapper/root-partition\"}. This is required so that the system knows that mounting the file system depends on having the corresponding device mapping established."
18649 msgstr ""
18650
18651 #. type: item
18652 #: doc/guix.texi:10755
18653 #, no-wrap
18654 msgid "@code{flags} (default: @code{'()})"
18655 msgstr ""
18656
18657 #. type: table
18658 #: doc/guix.texi:10762
18659 msgid "This is a list of symbols denoting mount flags. Recognized flags include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow access to special files), @code{no-suid} (ignore setuid and setgid bits), @code{no-atime} (do not update file access times), and @code{no-exec} (disallow program execution). @xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual}, for more information on these flags."
18660 msgstr ""
18661
18662 #. type: item
18663 #: doc/guix.texi:10763
18664 #, no-wrap
18665 msgid "@code{options} (default: @code{#f})"
18666 msgstr ""
18667
18668 #. type: table
18669 #: doc/guix.texi:10768
18670 msgid "This is either @code{#f}, or a string denoting mount options passed to the file system driver. @xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual}, for details and run @command{man 8 mount} for options for various file systems."
18671 msgstr ""
18672
18673 #. type: item
18674 #: doc/guix.texi:10769
18675 #, no-wrap
18676 msgid "@code{mount?} (default: @code{#t})"
18677 msgstr ""
18678
18679 #. type: table
18680 #: doc/guix.texi:10774
18681 msgid "This value indicates whether to automatically mount the file system when the system is brought up. When set to @code{#f}, the file system gets an entry in @file{/etc/fstab} (read by the @command{mount} command) but is not automatically mounted."
18682 msgstr ""
18683
18684 #. type: item
18685 #: doc/guix.texi:10775
18686 #, no-wrap
18687 msgid "@code{needed-for-boot?} (default: @code{#f})"
18688 msgstr ""
18689
18690 #. type: table
18691 #: doc/guix.texi:10780
18692 msgid "This Boolean value indicates whether the file system is needed when booting. If that is true, then the file system is mounted when the initial RAM disk (initrd) is loaded. This is always the case, for instance, for the root file system."
18693 msgstr ""
18694
18695 #. type: item
18696 #: doc/guix.texi:10781
18697 #, no-wrap
18698 msgid "@code{check?} (default: @code{#t})"
18699 msgstr ""
18700
18701 #. type: table
18702 #: doc/guix.texi:10784
18703 msgid "This Boolean indicates whether the file system needs to be checked for errors before being mounted."
18704 msgstr ""
18705
18706 #. type: item
18707 #: doc/guix.texi:10785
18708 #, no-wrap
18709 msgid "@code{create-mount-point?} (default: @code{#f})"
18710 msgstr ""
18711
18712 #. type: table
18713 #: doc/guix.texi:10787
18714 msgid "When true, the mount point is created if it does not exist yet."
18715 msgstr ""
18716
18717 #. type: item
18718 #: doc/guix.texi:10788
18719 #, no-wrap
18720 msgid "@code{dependencies} (default: @code{'()})"
18721 msgstr ""
18722
18723 #. type: table
18724 #: doc/guix.texi:10792
18725 msgid "This is a list of @code{<file-system>} or @code{<mapped-device>} objects representing file systems that must be mounted or mapped devices that must be opened before (and unmounted or closed after) this one."
18726 msgstr ""
18727
18728 #. type: table
18729 #: doc/guix.texi:10796
18730 msgid "As an example, consider a hierarchy of mounts: @file{/sys/fs/cgroup} is a dependency of @file{/sys/fs/cgroup/cpu} and @file{/sys/fs/cgroup/memory}."
18731 msgstr ""
18732
18733 #. type: table
18734 #: doc/guix.texi:10799
18735 msgid "Another example is a file system that depends on a mapped device, for example for an encrypted partition (@pxref{Mapped Devices})."
18736 msgstr ""
18737
18738 #. type: Plain text
18739 #: doc/guix.texi:10804
18740 msgid "The @code{(gnu system file-systems)} exports the following useful variables."
18741 msgstr ""
18742
18743 #. type: defvr
18744 #: doc/guix.texi:10805
18745 #, no-wrap
18746 msgid "{Scheme Variable} %base-file-systems"
18747 msgstr ""
18748
18749 #. type: defvr
18750 #: doc/guix.texi:10810
18751 msgid "These are essential file systems that are required on normal systems, such as @var{%pseudo-terminal-file-system} and @var{%immutable-store} (see below.) Operating system declarations should always contain at least these."
18752 msgstr ""
18753
18754 #. type: defvr
18755 #: doc/guix.texi:10812
18756 #, no-wrap
18757 msgid "{Scheme Variable} %pseudo-terminal-file-system"
18758 msgstr ""
18759
18760 #. type: defvr
18761 #: doc/guix.texi:10818
18762 msgid "This is the file system to be mounted as @file{/dev/pts}. It supports @dfn{pseudo-terminals} created @i{via} @code{openpty} and similar functions (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}). Pseudo-terminals are used by terminal emulators such as @command{xterm}."
18763 msgstr ""
18764
18765 #. type: defvr
18766 #: doc/guix.texi:10820
18767 #, no-wrap
18768 msgid "{Scheme Variable} %shared-memory-file-system"
18769 msgstr ""
18770
18771 #. type: defvr
18772 #: doc/guix.texi:10824
18773 msgid "This file system is mounted as @file{/dev/shm} and is used to support memory sharing across processes (@pxref{Memory-mapped I/O, @code{shm_open},, libc, The GNU C Library Reference Manual})."
18774 msgstr ""
18775
18776 #. type: defvr
18777 #: doc/guix.texi:10826
18778 #, no-wrap
18779 msgid "{Scheme Variable} %immutable-store"
18780 msgstr ""
18781
18782 #. type: defvr
18783 #: doc/guix.texi:10831
18784 msgid "This file system performs a read-only ``bind mount'' of @file{/gnu/store}, making it read-only for all the users including @code{root}. This prevents against accidental modification by software running as @code{root} or by system administrators."
18785 msgstr ""
18786
18787 #. type: defvr
18788 #: doc/guix.texi:10834
18789 msgid "The daemon itself is still able to write to the store: it remounts it read-write in its own ``name space.''"
18790 msgstr ""
18791
18792 #. type: defvr
18793 #: doc/guix.texi:10836
18794 #, no-wrap
18795 msgid "{Scheme Variable} %binary-format-file-system"
18796 msgstr ""
18797
18798 #. type: defvr
18799 #: doc/guix.texi:10840
18800 msgid "The @code{binfmt_misc} file system, which allows handling of arbitrary executable file types to be delegated to user space. This requires the @code{binfmt.ko} kernel module to be loaded."
18801 msgstr ""
18802
18803 #. type: defvr
18804 #: doc/guix.texi:10842
18805 #, no-wrap
18806 msgid "{Scheme Variable} %fuse-control-file-system"
18807 msgstr ""
18808
18809 #. type: defvr
18810 #: doc/guix.texi:10846
18811 msgid "The @code{fusectl} file system, which allows unprivileged users to mount and unmount user-space FUSE file systems. This requires the @code{fuse.ko} kernel module to be loaded."
18812 msgstr ""
18813
18814 #. type: cindex
18815 #: doc/guix.texi:10851
18816 #, no-wrap
18817 msgid "device mapping"
18818 msgstr ""
18819
18820 #. type: cindex
18821 #: doc/guix.texi:10852
18822 #, no-wrap
18823 msgid "mapped devices"
18824 msgstr ""
18825
18826 #. type: Plain text
18827 #: doc/guix.texi:10870
18828 msgid "The Linux kernel has a notion of @dfn{device mapping}: a block device, such as a hard disk partition, can be @dfn{mapped} into another device, usually in @code{/dev/mapper/}, with additional processing over the data that flows through it@footnote{Note that the GNU@tie{}Hurd makes no difference between the concept of a ``mapped device'' and that of a file system: both boil down to @emph{translating} input/output operations made on a file to operations on its backing store. Thus, the Hurd implements mapped devices, like file systems, using the generic @dfn{translator} mechanism (@pxref{Translators,,, hurd, The GNU Hurd Reference Manual}).}. A typical example is encryption device mapping: all writes to the mapped device are encrypted, and all reads are deciphered, transparently. Guix extends this notion by considering any device or set of devices that are @dfn{transformed} in some way to create a new device; for instance, RAID devices are obtained by @dfn{assembling} several other devices, such as hard disks or partitions, into a new one that behaves as one partition. Other examples, not yet implemented, are LVM logical volumes."
18829 msgstr ""
18830
18831 #. type: Plain text
18832 #: doc/guix.texi:10873
18833 msgid "Mapped devices are declared using the @code{mapped-device} form, defined as follows; for examples, see below."
18834 msgstr ""
18835
18836 #. type: deftp
18837 #: doc/guix.texi:10874
18838 #, no-wrap
18839 msgid "{Data Type} mapped-device"
18840 msgstr ""
18841
18842 #. type: deftp
18843 #: doc/guix.texi:10877
18844 msgid "Objects of this type represent device mappings that will be made when the system boots up."
18845 msgstr ""
18846
18847 #. type: table
18848 #: doc/guix.texi:10883
18849 msgid "This is either a string specifying the name of the block device to be mapped, such as @code{\"/dev/sda3\"}, or a list of such strings when several devices need to be assembled for creating a new one."
18850 msgstr ""
18851
18852 #. type: code{#1}
18853 #: doc/guix.texi:10884 doc/guix.texi:24075
18854 #, no-wrap
18855 msgid "target"
18856 msgstr ""
18857
18858 #. type: table
18859 #: doc/guix.texi:10891
18860 msgid "This string specifies the name of the resulting mapped device. For kernel mappers such as encrypted devices of type @code{luks-device-mapping}, specifying @code{\"my-partition\"} leads to the creation of the @code{\"/dev/mapper/my-partition\"} device. For RAID devices of type @code{raid-device-mapping}, the full device name such as @code{\"/dev/md0\"} needs to be given."
18861 msgstr ""
18862
18863 #. type: table
18864 #: doc/guix.texi:10895
18865 msgid "This must be a @code{mapped-device-kind} object, which specifies how @var{source} is mapped to @var{target}."
18866 msgstr ""
18867
18868 #. type: defvr
18869 #: doc/guix.texi:10898
18870 #, no-wrap
18871 msgid "{Scheme Variable} luks-device-mapping"
18872 msgstr ""
18873
18874 #. type: defvr
18875 #: doc/guix.texi:10902
18876 msgid "This defines LUKS block device encryption using the @command{cryptsetup} command from the package with the same name. It relies on the @code{dm-crypt} Linux kernel module."
18877 msgstr ""
18878
18879 #. type: defvr
18880 #: doc/guix.texi:10904
18881 #, no-wrap
18882 msgid "{Scheme Variable} raid-device-mapping"
18883 msgstr ""
18884
18885 #. type: defvr
18886 #: doc/guix.texi:10909
18887 msgid "This defines a RAID device, which is assembled using the @code{mdadm} command from the package with the same name. It requires a Linux kernel module for the appropriate RAID level to be loaded, such as @code{raid456} for RAID-4, RAID-5 or RAID-6, or @code{raid10} for RAID-10."
18888 msgstr ""
18889
18890 #. type: cindex
18891 #: doc/guix.texi:10911
18892 #, no-wrap
18893 msgid "disk encryption"
18894 msgstr ""
18895
18896 #. type: cindex
18897 #: doc/guix.texi:10912
18898 #, no-wrap
18899 msgid "LUKS"
18900 msgstr ""
18901
18902 #. type: Plain text
18903 #: doc/guix.texi:10920
18904 msgid "The following example specifies a mapping from @file{/dev/sda3} to @file{/dev/mapper/home} using LUKS---the @url{https://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup}, a standard mechanism for disk encryption. The @file{/dev/mapper/home} device can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems})."
18905 msgstr ""
18906
18907 #. type: example
18908 #: doc/guix.texi:10926
18909 #, no-wrap
18910 msgid ""
18911 "(mapped-device\n"
18912 " (source \"/dev/sda3\")\n"
18913 " (target \"home\")\n"
18914 " (type luks-device-mapping))\n"
18915 msgstr ""
18916
18917 #. type: Plain text
18918 #: doc/guix.texi:10931
18919 msgid "Alternatively, to become independent of device numbering, one may obtain the LUKS UUID (@dfn{unique identifier}) of the source device by a command like:"
18920 msgstr ""
18921
18922 #. type: example
18923 #: doc/guix.texi:10934
18924 #, no-wrap
18925 msgid "cryptsetup luksUUID /dev/sda3\n"
18926 msgstr ""
18927
18928 #. type: Plain text
18929 #: doc/guix.texi:10937
18930 msgid "and use it as follows:"
18931 msgstr ""
18932
18933 #. type: example
18934 #: doc/guix.texi:10943
18935 #, no-wrap
18936 msgid ""
18937 "(mapped-device\n"
18938 " (source (uuid \"cb67fc72-0d54-4c88-9d4b-b225f30b0f44\"))\n"
18939 " (target \"home\")\n"
18940 " (type luks-device-mapping))\n"
18941 msgstr ""
18942
18943 #. type: cindex
18944 #: doc/guix.texi:10945
18945 #, no-wrap
18946 msgid "swap encryption"
18947 msgstr ""
18948
18949 #. type: Plain text
18950 #: doc/guix.texi:10951
18951 msgid "It is also desirable to encrypt swap space, since swap space may contain sensitive data. One way to accomplish that is to use a swap file in a file system on a device mapped via LUKS encryption. In this way, the swap file is encrypted because the entire device is encrypted. @xref{Preparing for Installation,,Disk Partitioning}, for an example."
18952 msgstr ""
18953
18954 #. type: Plain text
18955 #: doc/guix.texi:10954
18956 msgid "A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1} may be declared as follows:"
18957 msgstr ""
18958
18959 #. type: example
18960 #: doc/guix.texi:10960
18961 #, no-wrap
18962 msgid ""
18963 "(mapped-device\n"
18964 " (source (list \"/dev/sda1\" \"/dev/sdb1\"))\n"
18965 " (target \"/dev/md0\")\n"
18966 " (type raid-device-mapping))\n"
18967 msgstr ""
18968
18969 #. type: Plain text
18970 #: doc/guix.texi:10967
18971 msgid "The @file{/dev/md0} device can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems}). Note that the RAID level need not be given; it is chosen during the initial creation and formatting of the RAID device and is determined automatically later."
18972 msgstr ""
18973
18974 #. type: cindex
18975 #: doc/guix.texi:10972
18976 #, no-wrap
18977 msgid "users"
18978 msgstr ""
18979
18980 #. type: cindex
18981 #: doc/guix.texi:10973
18982 #, no-wrap
18983 msgid "accounts"
18984 msgstr ""
18985
18986 #. type: cindex
18987 #: doc/guix.texi:10974
18988 #, no-wrap
18989 msgid "user accounts"
18990 msgstr ""
18991
18992 #. type: Plain text
18993 #: doc/guix.texi:10978
18994 msgid "User accounts and groups are entirely managed through the @code{operating-system} declaration. They are specified with the @code{user-account} and @code{user-group} forms:"
18995 msgstr ""
18996
18997 #. type: example
18998 #: doc/guix.texi:10989
18999 #, no-wrap
19000 msgid ""
19001 "(user-account\n"
19002 " (name \"alice\")\n"
19003 " (group \"users\")\n"
19004 " (supplementary-groups '(\"wheel\" ;allow use of sudo, etc.\n"
19005 " \"audio\" ;sound card\n"
19006 " \"video\" ;video devices such as webcams\n"
19007 " \"cdrom\")) ;the good ol' CD-ROM\n"
19008 " (comment \"Bob's sister\")\n"
19009 " (home-directory \"/home/alice\"))\n"
19010 msgstr ""
19011
19012 #. type: Plain text
19013 #: doc/guix.texi:10998
19014 msgid "When booting or upon completion of @command{guix system reconfigure}, the system ensures that only the user accounts and groups specified in the @code{operating-system} declaration exist, and with the specified properties. Thus, account or group creations or modifications made by directly invoking commands such as @command{useradd} are lost upon reconfiguration or reboot. This ensures that the system remains exactly as declared."
19015 msgstr ""
19016
19017 #. type: deftp
19018 #: doc/guix.texi:10999
19019 #, no-wrap
19020 msgid "{Data Type} user-account"
19021 msgstr ""
19022
19023 #. type: deftp
19024 #: doc/guix.texi:11002
19025 msgid "Objects of this type represent user accounts. The following members may be specified:"
19026 msgstr ""
19027
19028 #. type: table
19029 #: doc/guix.texi:11006
19030 msgid "The name of the user account."
19031 msgstr ""
19032
19033 #. type: itemx
19034 #: doc/guix.texi:11007 doc/guix.texi:23811
19035 #, no-wrap
19036 msgid "group"
19037 msgstr ""
19038
19039 #. type: cindex
19040 #: doc/guix.texi:11008 doc/guix.texi:11075
19041 #, no-wrap
19042 msgid "groups"
19043 msgstr ""
19044
19045 #. type: table
19046 #: doc/guix.texi:11011
19047 msgid "This is the name (a string) or identifier (a number) of the user group this account belongs to."
19048 msgstr ""
19049
19050 #. type: item
19051 #: doc/guix.texi:11012
19052 #, no-wrap
19053 msgid "@code{supplementary-groups} (default: @code{'()})"
19054 msgstr ""
19055
19056 #. type: table
19057 #: doc/guix.texi:11015
19058 msgid "Optionally, this can be defined as a list of group names that this account belongs to."
19059 msgstr ""
19060
19061 #. type: item
19062 #: doc/guix.texi:11016
19063 #, no-wrap
19064 msgid "@code{uid} (default: @code{#f})"
19065 msgstr ""
19066
19067 #. type: table
19068 #: doc/guix.texi:11020
19069 msgid "This is the user ID for this account (a number), or @code{#f}. In the latter case, a number is automatically chosen by the system when the account is created."
19070 msgstr ""
19071
19072 #. type: item
19073 #: doc/guix.texi:11021
19074 #, no-wrap
19075 msgid "@code{comment} (default: @code{\"\"})"
19076 msgstr ""
19077
19078 #. type: table
19079 #: doc/guix.texi:11023
19080 msgid "A comment about the account, such as the account owner's full name."
19081 msgstr ""
19082
19083 #. type: code{#1}
19084 #: doc/guix.texi:11024
19085 #, no-wrap
19086 msgid "home-directory"
19087 msgstr ""
19088
19089 #. type: table
19090 #: doc/guix.texi:11026
19091 msgid "This is the name of the home directory for the account."
19092 msgstr ""
19093
19094 #. type: item
19095 #: doc/guix.texi:11027
19096 #, no-wrap
19097 msgid "@code{create-home-directory?} (default: @code{#t})"
19098 msgstr ""
19099
19100 #. type: table
19101 #: doc/guix.texi:11030
19102 msgid "Indicates whether the home directory of this account should be created if it does not exist yet."
19103 msgstr ""
19104
19105 #. type: item
19106 #: doc/guix.texi:11031
19107 #, no-wrap
19108 msgid "@code{shell} (default: Bash)"
19109 msgstr ""
19110
19111 #. type: table
19112 #: doc/guix.texi:11034
19113 msgid "This is a G-expression denoting the file name of a program to be used as the shell (@pxref{G-Expressions})."
19114 msgstr ""
19115
19116 #. type: item
19117 #: doc/guix.texi:11035 doc/guix.texi:11093
19118 #, no-wrap
19119 msgid "@code{system?} (default: @code{#f})"
19120 msgstr ""
19121
19122 #. type: table
19123 #: doc/guix.texi:11039
19124 msgid "This Boolean value indicates whether the account is a ``system'' account. System accounts are sometimes treated specially; for instance, graphical login managers do not list them."
19125 msgstr ""
19126
19127 #. type: anchor{#1}
19128 #: doc/guix.texi:11041
19129 msgid "user-account-password"
19130 msgstr ""
19131
19132 #. type: cindex
19133 #: doc/guix.texi:11041
19134 #, no-wrap
19135 msgid "password, for user accounts"
19136 msgstr ""
19137
19138 #. type: item
19139 #: doc/guix.texi:11042 doc/guix.texi:11097
19140 #, no-wrap
19141 msgid "@code{password} (default: @code{#f})"
19142 msgstr ""
19143
19144 #. type: table
19145 #: doc/guix.texi:11048
19146 msgid "You would normally leave this field to @code{#f}, initialize user passwords as @code{root} with the @command{passwd} command, and then let users change it with @command{passwd}. Passwords set with @command{passwd} are of course preserved across reboot and reconfiguration."
19147 msgstr ""
19148
19149 #. type: table
19150 #: doc/guix.texi:11052
19151 msgid "If you @emph{do} want to set an initial password for an account, then this field must contain the encrypted password, as a string. You can use the @code{crypt} procedure for this purpose:"
19152 msgstr ""
19153
19154 #. type: example
19155 #: doc/guix.texi:11057
19156 #, no-wrap
19157 msgid ""
19158 "(user-account\n"
19159 " (name \"charlie\")\n"
19160 " (group \"users\")\n"
19161 "\n"
19162 msgstr ""
19163
19164 #. type: example
19165 #: doc/guix.texi:11060
19166 #, no-wrap
19167 msgid ""
19168 " ;; Specify a SHA-512-hashed initial password.\n"
19169 " (password (crypt \"InitialPassword!\" \"$6$abc\")))\n"
19170 msgstr ""
19171
19172 #. type: quotation
19173 #: doc/guix.texi:11066
19174 msgid "The hash of this initial password will be available in a file in @file{/gnu/store}, readable by all the users, so this method must be used with care."
19175 msgstr ""
19176
19177 #. type: table
19178 #: doc/guix.texi:11071
19179 msgid "@xref{Passphrase Storage,,, libc, The GNU C Library Reference Manual}, for more information on password encryption, and @ref{Encryption,,, guile, GNU Guile Reference Manual}, for information on Guile's @code{crypt} procedure."
19180 msgstr ""
19181
19182 #. type: Plain text
19183 #: doc/guix.texi:11077
19184 msgid "User group declarations are even simpler:"
19185 msgstr ""
19186
19187 #. type: example
19188 #: doc/guix.texi:11080
19189 #, no-wrap
19190 msgid "(user-group (name \"students\"))\n"
19191 msgstr ""
19192
19193 #. type: deftp
19194 #: doc/guix.texi:11082
19195 #, no-wrap
19196 msgid "{Data Type} user-group"
19197 msgstr ""
19198
19199 #. type: deftp
19200 #: doc/guix.texi:11084
19201 msgid "This type is for, well, user groups. There are just a few fields:"
19202 msgstr ""
19203
19204 #. type: table
19205 #: doc/guix.texi:11088
19206 msgid "The name of the group."
19207 msgstr ""
19208
19209 #. type: item
19210 #: doc/guix.texi:11089
19211 #, no-wrap
19212 msgid "@code{id} (default: @code{#f})"
19213 msgstr ""
19214
19215 #. type: table
19216 #: doc/guix.texi:11092
19217 msgid "The group identifier (a number). If @code{#f}, a new number is automatically allocated when the group is created."
19218 msgstr ""
19219
19220 #. type: table
19221 #: doc/guix.texi:11096
19222 msgid "This Boolean value indicates whether the group is a ``system'' group. System groups have low numerical IDs."
19223 msgstr ""
19224
19225 #. type: table
19226 #: doc/guix.texi:11100
19227 msgid "What, user groups can have a password? Well, apparently yes. Unless @code{#f}, this field specifies the password of the group."
19228 msgstr ""
19229
19230 #. type: Plain text
19231 #: doc/guix.texi:11106
19232 msgid "For convenience, a variable lists all the basic user groups one may expect:"
19233 msgstr ""
19234
19235 #. type: defvr
19236 #: doc/guix.texi:11107
19237 #, no-wrap
19238 msgid "{Scheme Variable} %base-groups"
19239 msgstr ""
19240
19241 #. type: defvr
19242 #: doc/guix.texi:11112
19243 msgid "This is the list of basic user groups that users and/or packages expect to be present on the system. This includes groups such as ``root'', ``wheel'', and ``users'', as well as groups used to control access to specific devices such as ``audio'', ``disk'', and ``cdrom''."
19244 msgstr ""
19245
19246 #. type: defvr
19247 #: doc/guix.texi:11114
19248 #, no-wrap
19249 msgid "{Scheme Variable} %base-user-accounts"
19250 msgstr ""
19251
19252 #. type: defvr
19253 #: doc/guix.texi:11117
19254 msgid "This is the list of basic system accounts that programs may expect to find on a GNU/Linux system, such as the ``nobody'' account."
19255 msgstr ""
19256
19257 #. type: defvr
19258 #: doc/guix.texi:11120
19259 msgid "Note that the ``root'' account is not included here. It is a special-case and is automatically added whether or not it is specified."
19260 msgstr ""
19261
19262 #. type: cindex
19263 #: doc/guix.texi:11126
19264 #, no-wrap
19265 msgid "keymap"
19266 msgstr ""
19267
19268 #. type: Plain text
19269 #: doc/guix.texi:11134
19270 msgid "To specify what each key of your keyboard does, you need to tell the operating system what @dfn{keyboard layout} you want to use. The default, when nothing is specified, is the US English QWERTY layout for 105-key PC keyboards. However, German speakers will usually prefer the German QWERTZ layout, French speakers will want the AZERTY layout, and so on; hackers might prefer Dvorak or bépo, and they might even want to further customize the effect of some of the keys. This section explains how to get that done."
19271 msgstr ""
19272
19273 #. type: cindex
19274 #: doc/guix.texi:11135
19275 #, no-wrap
19276 msgid "keyboard layout, definition"
19277 msgstr ""
19278
19279 #. type: Plain text
19280 #: doc/guix.texi:11137
19281 msgid "There are three components that will want to know about your keyboard layout:"
19282 msgstr ""
19283
19284 #. type: itemize
19285 #: doc/guix.texi:11144
19286 msgid "The @emph{bootloader} may want to know what keyboard layout you want to use (@pxref{Bootloader Configuration, @code{keyboard-layout}}). This is useful if you want, for instance, to make sure that you can type the passphrase of your encrypted root partition using the right layout."
19287 msgstr ""
19288
19289 #. type: itemize
19290 #: doc/guix.texi:11149
19291 msgid "The @emph{operating system kernel}, Linux, will need that so that the console is properly configured (@pxref{operating-system Reference, @code{keyboard-layout}})."
19292 msgstr ""
19293
19294 #. type: itemize
19295 #: doc/guix.texi:11153
19296 msgid "The @emph{graphical display server}, usually Xorg, also has its own idea of the keyboard layout (@pxref{X Window, @code{keyboard-layout}})."
19297 msgstr ""
19298
19299 #. type: Plain text
19300 #: doc/guix.texi:11157
19301 msgid "Guix allows you to configure all three separately but, fortunately, it allows you to share the same keyboard layout for all three components."
19302 msgstr ""
19303
19304 #. type: cindex
19305 #: doc/guix.texi:11158
19306 #, no-wrap
19307 msgid "XKB, keyboard layouts"
19308 msgstr ""
19309
19310 #. type: Plain text
19311 #: doc/guix.texi:11166
19312 msgid "Keyboard layouts are represented by records created by the @code{keyboard-layout} procedure of @code{(gnu system keyboard)}. Following the X Keyboard extension (XKB), each layout has four attributes: a name (often a language code such as ``fi'' for Finnish or ``jp'' for Japanese), an optional variant name, an optional keyboard model name, and a possibly empty list of additional options. In most cases the layout name is all you care about. Here are a few example:"
19313 msgstr ""
19314
19315 #. type: example
19316 #: doc/guix.texi:11171
19317 #, no-wrap
19318 msgid ""
19319 ";; The German QWERTZ layout. Here we assume a standard\n"
19320 ";; \"pc105\" keyboard model.\n"
19321 "(keyboard-layout \"de\")\n"
19322 "\n"
19323 msgstr ""
19324
19325 #. type: example
19326 #: doc/guix.texi:11174
19327 #, no-wrap
19328 msgid ""
19329 ";; The bépo variant of the French layout.\n"
19330 "(keyboard-layout \"fr\" \"bepo\")\n"
19331 "\n"
19332 msgstr ""
19333
19334 #. type: example
19335 #: doc/guix.texi:11177
19336 #, no-wrap
19337 msgid ""
19338 ";; The Catalan layout.\n"
19339 "(keyboard-layout \"es\" \"cat\")\n"
19340 "\n"
19341 msgstr ""
19342
19343 #. type: example
19344 #: doc/guix.texi:11184
19345 #, no-wrap
19346 msgid ""
19347 ";; The Latin American Spanish layout. In addition, the\n"
19348 ";; \"Caps Lock\" key is used as an additional \"Ctrl\" key,\n"
19349 ";; and the \"Menu\" key is used as a \"Compose\" key to enter\n"
19350 ";; accented letters.\n"
19351 "(keyboard-layout \"latam\"\n"
19352 " #:options '(\"ctrl:nocaps\" \"compose:menu\"))\n"
19353 "\n"
19354 msgstr ""
19355
19356 #. type: example
19357 #: doc/guix.texi:11187
19358 #, no-wrap
19359 msgid ""
19360 ";; The Russian layout for a ThinkPad keyboard.\n"
19361 "(keyboard-layout \"ru\" #:model \"thinkpad\")\n"
19362 "\n"
19363 msgstr ""
19364
19365 #. type: example
19366 #: doc/guix.texi:11192
19367 #, no-wrap
19368 msgid ""
19369 ";; The \"US international\" layout, which is the US layout plus\n"
19370 ";; dead keys to enter accented characters. This is for an\n"
19371 ";; Apple MacBook keyboard.\n"
19372 "(keyboard-layout \"us\" \"intl\" #:model \"macbook78\")\n"
19373 msgstr ""
19374
19375 #. type: Plain text
19376 #: doc/guix.texi:11196
19377 msgid "See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} package for a complete list of supported layouts, variants, and models."
19378 msgstr ""
19379
19380 #. type: cindex
19381 #: doc/guix.texi:11197
19382 #, no-wrap
19383 msgid "keyboard layout, configuration"
19384 msgstr ""
19385
19386 #. type: Plain text
19387 #: doc/guix.texi:11201
19388 msgid "Let's say you want your system to use the Turkish keyboard layout throughout your system---bootloader, console, and Xorg. Here's what your system configuration would look like:"
19389 msgstr ""
19390
19391 #. type: findex
19392 #: doc/guix.texi:11202
19393 #, no-wrap
19394 msgid "set-xorg-configuration"
19395 msgstr ""
19396
19397 #. type: lisp
19398 #: doc/guix.texi:11206
19399 #, no-wrap
19400 msgid ""
19401 ";; Using the Turkish layout for the bootloader, the console,\n"
19402 ";; and for Xorg.\n"
19403 "\n"
19404 msgstr ""
19405
19406 #. type: lisp
19407 #: doc/guix.texi:11218
19408 #, no-wrap
19409 msgid ""
19410 "(operating-system\n"
19411 " ;; ...\n"
19412 " (keyboard-layout (keyboard-layout \"tr\")) ;for the console\n"
19413 " (bootloader (bootloader-configuration\n"
19414 " (bootloader grub-efi-bootloader)\n"
19415 " (target \"/boot/efi\")\n"
19416 " (keyboard-layout keyboard-layout))) ;for GRUB\n"
19417 " (services (cons (set-xorg-configuration\n"
19418 " (xorg-configuration ;for Xorg\n"
19419 " (keyboard-layout keyboard-layout)))\n"
19420 " %desktop-services)))\n"
19421 msgstr ""
19422
19423 #. type: Plain text
19424 #: doc/guix.texi:11225
19425 msgid "In the example above, for GRUB and for Xorg, we just refer to the @code{keyboard-layout} field defined above, but we could just as well refer to a different layout. The @code{set-xorg-configuration} procedure communicates the desired Xorg configuration to the graphical log-in manager, by default GDM."
19426 msgstr ""
19427
19428 #. type: Plain text
19429 #: doc/guix.texi:11228
19430 msgid "We've discussed how to specify the @emph{default} keyboard layout of your system when it starts, but you can also adjust it at run time:"
19431 msgstr ""
19432
19433 #. type: itemize
19434 #: doc/guix.texi:11233
19435 msgid "If you're using GNOME, its settings panel has a ``Region & Language'' entry where you can select one or more keyboard layouts."
19436 msgstr ""
19437
19438 #. type: itemize
19439 #: doc/guix.texi:11238
19440 msgid "Under Xorg, the @command{setxkbmap} command (from the same-named package) allows you to change the current layout. For example, this is how you would change the layout to US Dvorak:"
19441 msgstr ""
19442
19443 #. type: example
19444 #: doc/guix.texi:11241
19445 #, no-wrap
19446 msgid "setxkbmap us dvorak\n"
19447 msgstr ""
19448
19449 #. type: itemize
19450 #: doc/guix.texi:11248
19451 msgid "The @code{loadkeys} command changes the keyboard layout in effect in the Linux console. However, note that @code{loadkeys} does @emph{not} use the XKB keyboard layout categorization described above. The command below loads the French bépo layout:"
19452 msgstr ""
19453
19454 #. type: example
19455 #: doc/guix.texi:11251
19456 #, no-wrap
19457 msgid "loadkeys fr-bepo\n"
19458 msgstr ""
19459
19460 #. type: cindex
19461 #: doc/guix.texi:11257
19462 #, no-wrap
19463 msgid "locale"
19464 msgstr ""
19465
19466 #. type: Plain text
19467 #: doc/guix.texi:11264
19468 msgid "A @dfn{locale} defines cultural conventions for a particular language and region of the world (@pxref{Locales,,, libc, The GNU C Library Reference Manual}). Each locale has a name that typically has the form @code{@var{language}_@var{territory}.@var{codeset}}---e.g., @code{fr_LU.utf8} designates the locale for the French language, with cultural conventions from Luxembourg, and using the UTF-8 encoding."
19469 msgstr ""
19470
19471 #. type: cindex
19472 #: doc/guix.texi:11265
19473 #, no-wrap
19474 msgid "locale definition"
19475 msgstr ""
19476
19477 #. type: Plain text
19478 #: doc/guix.texi:11269
19479 msgid "Usually, you will want to specify the default locale for the machine using the @code{locale} field of the @code{operating-system} declaration (@pxref{operating-system Reference, @code{locale}})."
19480 msgstr ""
19481
19482 #. type: Plain text
19483 #: doc/guix.texi:11278
19484 msgid "The selected locale is automatically added to the @dfn{locale definitions} known to the system if needed, with its codeset inferred from its name---e.g., @code{bo_CN.utf8} will be assumed to use the @code{UTF-8} codeset. Additional locale definitions can be specified in the @code{locale-definitions} slot of @code{operating-system}---this is useful, for instance, if the codeset could not be inferred from the locale name. The default set of locale definitions includes some widely used locales, but not all the available locales, in order to save space."
19485 msgstr ""
19486
19487 #. type: Plain text
19488 #: doc/guix.texi:11281
19489 msgid "For instance, to add the North Frisian locale for Germany, the value of that field may be:"
19490 msgstr ""
19491
19492 #. type: example
19493 #: doc/guix.texi:11286
19494 #, no-wrap
19495 msgid ""
19496 "(cons (locale-definition\n"
19497 " (name \"fy_DE.utf8\") (source \"fy_DE\"))\n"
19498 " %default-locale-definitions)\n"
19499 msgstr ""
19500
19501 #. type: Plain text
19502 #: doc/guix.texi:11290
19503 msgid "Likewise, to save space, one might want @code{locale-definitions} to list only the locales that are actually used, as in:"
19504 msgstr ""
19505
19506 #. type: example
19507 #: doc/guix.texi:11295
19508 #, no-wrap
19509 msgid ""
19510 "(list (locale-definition\n"
19511 " (name \"ja_JP.eucjp\") (source \"ja_JP\")\n"
19512 " (charset \"EUC-JP\")))\n"
19513 msgstr ""
19514
19515 #. type: Plain text
19516 #: doc/guix.texi:11304
19517 msgid "The compiled locale definitions are available at @file{/run/current-system/locale/X.Y}, where @code{X.Y} is the libc version, which is the default location where the GNU@tie{}libc provided by Guix looks for locale data. This can be overridden using the @code{LOCPATH} environment variable (@pxref{locales-and-locpath, @code{LOCPATH} and locale packages})."
19518 msgstr ""
19519
19520 #. type: Plain text
19521 #: doc/guix.texi:11307
19522 msgid "The @code{locale-definition} form is provided by the @code{(gnu system locale)} module. Details are given below."
19523 msgstr ""
19524
19525 #. type: deftp
19526 #: doc/guix.texi:11308
19527 #, no-wrap
19528 msgid "{Data Type} locale-definition"
19529 msgstr ""
19530
19531 #. type: deftp
19532 #: doc/guix.texi:11310
19533 msgid "This is the data type of a locale definition."
19534 msgstr ""
19535
19536 #. type: table
19537 #: doc/guix.texi:11316
19538 msgid "The name of the locale. @xref{Locale Names,,, libc, The GNU C Library Reference Manual}, for more information on locale names."
19539 msgstr ""
19540
19541 #. type: table
19542 #: doc/guix.texi:11320
19543 msgid "The name of the source for that locale. This is typically the @code{@var{language}_@var{territory}} part of the locale name."
19544 msgstr ""
19545
19546 #. type: item
19547 #: doc/guix.texi:11321
19548 #, no-wrap
19549 msgid "@code{charset} (default: @code{\"UTF-8\"})"
19550 msgstr ""
19551
19552 #. type: table
19553 #: doc/guix.texi:11325
19554 msgid "The ``character set'' or ``code set'' for that locale, @uref{https://www.iana.org/assignments/character-sets, as defined by IANA}."
19555 msgstr ""
19556
19557 #. type: defvr
19558 #: doc/guix.texi:11329
19559 #, no-wrap
19560 msgid "{Scheme Variable} %default-locale-definitions"
19561 msgstr ""
19562
19563 #. type: defvr
19564 #: doc/guix.texi:11333
19565 msgid "A list of commonly used UTF-8 locales, used as the default value of the @code{locale-definitions} field of @code{operating-system} declarations."
19566 msgstr ""
19567
19568 #. type: cindex
19569 #: doc/guix.texi:11334
19570 #, no-wrap
19571 msgid "locale name"
19572 msgstr ""
19573
19574 #. type: cindex
19575 #: doc/guix.texi:11335
19576 #, no-wrap
19577 msgid "normalized codeset in locale names"
19578 msgstr ""
19579
19580 #. type: defvr
19581 #: doc/guix.texi:11341
19582 msgid "These locale definitions use the @dfn{normalized codeset} for the part that follows the dot in the name (@pxref{Using gettextized software, normalized codeset,, libc, The GNU C Library Reference Manual}). So for instance it has @code{uk_UA.utf8} but @emph{not}, say, @code{uk_UA.UTF-8}."
19583 msgstr ""
19584
19585 #. type: subsection
19586 #: doc/guix.texi:11343
19587 #, no-wrap
19588 msgid "Locale Data Compatibility Considerations"
19589 msgstr ""
19590
19591 #. type: cindex
19592 #: doc/guix.texi:11345
19593 #, no-wrap
19594 msgid "incompatibility, of locale data"
19595 msgstr ""
19596
19597 #. type: Plain text
19598 #: doc/guix.texi:11352
19599 msgid "@code{operating-system} declarations provide a @code{locale-libcs} field to specify the GNU@tie{}libc packages that are used to compile locale declarations (@pxref{operating-system Reference}). ``Why would I care?'', you may ask. Well, it turns out that the binary format of locale data is occasionally incompatible from one libc version to another."
19600 msgstr ""
19601
19602 #. type: Plain text
19603 #: doc/guix.texi:11364
19604 msgid "For instance, a program linked against libc version 2.21 is unable to read locale data produced with libc 2.22; worse, that program @emph{aborts} instead of simply ignoring the incompatible locale data@footnote{Versions 2.23 and later of GNU@tie{}libc will simply skip the incompatible locale data, which is already an improvement.}. Similarly, a program linked against libc 2.22 can read most, but not all, of the locale data from libc 2.21 (specifically, @code{LC_COLLATE} data is incompatible); thus calls to @code{setlocale} may fail, but programs will not abort."
19605 msgstr ""
19606
19607 #. type: Plain text
19608 #: doc/guix.texi:11369
19609 msgid "The ``problem'' with Guix is that users have a lot of freedom: They can choose whether and when to upgrade software in their profiles, and might be using a libc version different from the one the system administrator used to build the system-wide locale data."
19610 msgstr ""
19611
19612 #. type: Plain text
19613 #: doc/guix.texi:11373
19614 msgid "Fortunately, unprivileged users can also install their own locale data and define @var{GUIX_LOCPATH} accordingly (@pxref{locales-and-locpath, @code{GUIX_LOCPATH} and locale packages})."
19615 msgstr ""
19616
19617 #. type: Plain text
19618 #: doc/guix.texi:11380
19619 msgid "Still, it is best if the system-wide locale data at @file{/run/current-system/locale} is built for all the libc versions actually in use on the system, so that all the programs can access it---this is especially crucial on a multi-user system. To do that, the administrator can specify several libc packages in the @code{locale-libcs} field of @code{operating-system}:"
19620 msgstr ""
19621
19622 #. type: example
19623 #: doc/guix.texi:11383
19624 #, no-wrap
19625 msgid ""
19626 "(use-package-modules base)\n"
19627 "\n"
19628 msgstr ""
19629
19630 #. type: example
19631 #: doc/guix.texi:11387
19632 #, no-wrap
19633 msgid ""
19634 "(operating-system\n"
19635 " ;; @dots{}\n"
19636 " (locale-libcs (list glibc-2.21 (canonical-package glibc))))\n"
19637 msgstr ""
19638
19639 #. type: Plain text
19640 #: doc/guix.texi:11392
19641 msgid "This example would lead to a system containing locale definitions for both libc 2.21 and the current version of libc in @file{/run/current-system/locale}."
19642 msgstr ""
19643
19644 #. type: cindex
19645 #: doc/guix.texi:11397
19646 #, no-wrap
19647 msgid "system services"
19648 msgstr ""
19649
19650 #. type: Plain text
19651 #: doc/guix.texi:11403
19652 msgid "An important part of preparing an @code{operating-system} declaration is listing @dfn{system services} and their configuration (@pxref{Using the Configuration System}). System services are typically daemons launched when the system boots, or other actions needed at that time---e.g., configuring network access."
19653 msgstr ""
19654
19655 #. type: Plain text
19656 #: doc/guix.texi:11410
19657 msgid "Guix has a broad definition of ``service'' (@pxref{Service Composition}), but many services are managed by the GNU@tie{}Shepherd (@pxref{Shepherd Services}). On a running system, the @command{herd} command allows you to list the available services, show their status, start and stop them, or do other specific operations (@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}). For example:"
19658 msgstr ""
19659
19660 #. type: example
19661 #: doc/guix.texi:11413
19662 #, no-wrap
19663 msgid "# herd status\n"
19664 msgstr ""
19665
19666 #. type: Plain text
19667 #: doc/guix.texi:11418
19668 msgid "The above command, run as @code{root}, lists the currently defined services. The @command{herd doc} command shows a synopsis of the given service and its associated actions:"
19669 msgstr ""
19670
19671 #. type: example
19672 #: doc/guix.texi:11422
19673 #, no-wrap
19674 msgid ""
19675 "# herd doc nscd\n"
19676 "Run libc's name service cache daemon (nscd).\n"
19677 "\n"
19678 msgstr ""
19679
19680 #. type: example
19681 #: doc/guix.texi:11425
19682 #, no-wrap
19683 msgid ""
19684 "# herd doc nscd action invalidate\n"
19685 "invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups.\n"
19686 msgstr ""
19687
19688 #. type: Plain text
19689 #: doc/guix.texi:11430
19690 msgid "The @command{start}, @command{stop}, and @command{restart} sub-commands have the effect you would expect. For instance, the commands below stop the nscd service and restart the Xorg display server:"
19691 msgstr ""
19692
19693 #. type: example
19694 #: doc/guix.texi:11437
19695 #, no-wrap
19696 msgid ""
19697 "# herd stop nscd\n"
19698 "Service nscd has been stopped.\n"
19699 "# herd restart xorg-server\n"
19700 "Service xorg-server has been stopped.\n"
19701 "Service xorg-server has been started.\n"
19702 msgstr ""
19703
19704 #. type: Plain text
19705 #: doc/guix.texi:11442
19706 msgid "The following sections document the available services, starting with the core services, that may be used in an @code{operating-system} declaration."
19707 msgstr ""
19708
19709 #. type: subsection
19710 #: doc/guix.texi:11471 doc/guix.texi:18084 doc/guix.texi:18085
19711 #, no-wrap
19712 msgid "LDAP Services"
19713 msgstr ""
19714
19715 #. type: menuentry
19716 #: doc/guix.texi:11471
19717 msgid "LDAP services."
19718 msgstr ""
19719
19720 #. type: Plain text
19721 #: doc/guix.texi:11479
19722 msgid "The @code{(gnu services base)} module provides definitions for the basic services that one expects from the system. The services exported by this module are listed below."
19723 msgstr ""
19724
19725 #. type: defvr
19726 #: doc/guix.texi:11480
19727 #, no-wrap
19728 msgid "{Scheme Variable} %base-services"
19729 msgstr ""
19730
19731 #. type: defvr
19732 #: doc/guix.texi:11486
19733 msgid "This variable contains a list of basic services (@pxref{Service Types and Services}, for more information on service objects) one would expect from the system: a login service (mingetty) on each tty, syslogd, the libc name service cache daemon (nscd), the udev device manager, and more."
19734 msgstr ""
19735
19736 #. type: defvr
19737 #: doc/guix.texi:11491
19738 msgid "This is the default value of the @code{services} field of @code{operating-system} declarations. Usually, when customizing a system, you will want to append services to @var{%base-services}, like this:"
19739 msgstr ""
19740
19741 #. type: example
19742 #: doc/guix.texi:11496
19743 #, no-wrap
19744 msgid ""
19745 "(append (list (service avahi-service-type)\n"
19746 " (service openssh-service-type))\n"
19747 " %base-services)\n"
19748 msgstr ""
19749
19750 #. type: defvr
19751 #: doc/guix.texi:11499
19752 #, no-wrap
19753 msgid "{Scheme Variable} special-files-service-type"
19754 msgstr ""
19755
19756 #. type: defvr
19757 #: doc/guix.texi:11502
19758 msgid "This is the service that sets up ``special files'' such as @file{/bin/sh}; an instance of it is part of @code{%base-services}."
19759 msgstr ""
19760
19761 #. type: defvr
19762 #: doc/guix.texi:11506
19763 msgid "The value associated with @code{special-files-service-type} services must be a list of tuples where the first element is the ``special file'' and the second element is its target. By default it is:"
19764 msgstr ""
19765
19766 #. type: file{#1}
19767 #: doc/guix.texi:11507
19768 #, no-wrap
19769 msgid "/bin/sh"
19770 msgstr ""
19771
19772 #. type: cindex
19773 #: doc/guix.texi:11508
19774 #, no-wrap
19775 msgid "@file{sh}, in @file{/bin}"
19776 msgstr ""
19777
19778 #. type: example
19779 #: doc/guix.texi:11511
19780 #, no-wrap
19781 msgid "`((\"/bin/sh\" ,(file-append @var{bash} \"/bin/sh\")))\n"
19782 msgstr ""
19783
19784 #. type: file{#1}
19785 #: doc/guix.texi:11513
19786 #, no-wrap
19787 msgid "/usr/bin/env"
19788 msgstr ""
19789
19790 #. type: cindex
19791 #: doc/guix.texi:11514
19792 #, no-wrap
19793 msgid "@file{env}, in @file{/usr/bin}"
19794 msgstr ""
19795
19796 #. type: defvr
19797 #: doc/guix.texi:11517
19798 msgid "If you want to add, say, @code{/usr/bin/env} to your system, you can change it to:"
19799 msgstr ""
19800
19801 #. type: example
19802 #: doc/guix.texi:11521
19803 #, no-wrap
19804 msgid ""
19805 "`((\"/bin/sh\" ,(file-append @var{bash} \"/bin/sh\"))\n"
19806 " (\"/usr/bin/env\" ,(file-append @var{coreutils} \"/bin/env\")))\n"
19807 msgstr ""
19808
19809 #. type: defvr
19810 #: doc/guix.texi:11528
19811 msgid "Since this is part of @code{%base-services}, you can use @code{modify-services} to customize the set of special files (@pxref{Service Reference, @code{modify-services}}). But the simple way to add a special file is @i{via} the @code{extra-special-file} procedure (see below.)"
19812 msgstr ""
19813
19814 #. type: deffn
19815 #: doc/guix.texi:11530
19816 #, no-wrap
19817 msgid "{Scheme Procedure} extra-special-file @var{file} @var{target}"
19818 msgstr ""
19819
19820 #. type: deffn
19821 #: doc/guix.texi:11532
19822 msgid "Use @var{target} as the ``special file'' @var{file}."
19823 msgstr ""
19824
19825 #. type: deffn
19826 #: doc/guix.texi:11536
19827 msgid "For example, adding the following lines to the @code{services} field of your operating system declaration leads to a @file{/usr/bin/env} symlink:"
19828 msgstr ""
19829
19830 #. type: example
19831 #: doc/guix.texi:11540
19832 #, no-wrap
19833 msgid ""
19834 "(extra-special-file \"/usr/bin/env\"\n"
19835 " (file-append coreutils \"/bin/env\"))\n"
19836 msgstr ""
19837
19838 #. type: deffn
19839 #: doc/guix.texi:11543
19840 #, no-wrap
19841 msgid "{Scheme Procedure} host-name-service @var{name}"
19842 msgstr ""
19843
19844 #. type: deffn
19845 #: doc/guix.texi:11545
19846 msgid "Return a service that sets the host name to @var{name}."
19847 msgstr ""
19848
19849 #. type: deffn
19850 #: doc/guix.texi:11547
19851 #, no-wrap
19852 msgid "{Scheme Procedure} login-service @var{config}"
19853 msgstr ""
19854
19855 #. type: deffn
19856 #: doc/guix.texi:11551
19857 msgid "Return a service to run login according to @var{config}, a @code{<login-configuration>} object, which specifies the message of the day, among other things."
19858 msgstr ""
19859
19860 #. type: deftp
19861 #: doc/guix.texi:11553
19862 #, no-wrap
19863 msgid "{Data Type} login-configuration"
19864 msgstr ""
19865
19866 #. type: deftp
19867 #: doc/guix.texi:11555
19868 msgid "This is the data type representing the configuration of login."
19869 msgstr ""
19870
19871 #. type: code{#1}
19872 #: doc/guix.texi:11558
19873 #, no-wrap
19874 msgid "motd"
19875 msgstr ""
19876
19877 #. type: cindex
19878 #: doc/guix.texi:11559
19879 #, no-wrap
19880 msgid "message of the day"
19881 msgstr ""
19882
19883 #. type: table
19884 #: doc/guix.texi:11561
19885 msgid "A file-like object containing the ``message of the day''."
19886 msgstr ""
19887
19888 #. type: item
19889 #: doc/guix.texi:11562 doc/guix.texi:13522
19890 #, no-wrap
19891 msgid "@code{allow-empty-passwords?} (default: @code{#t})"
19892 msgstr ""
19893
19894 #. type: table
19895 #: doc/guix.texi:11565
19896 msgid "Allow empty passwords by default so that first-time users can log in when the 'root' account has just been created."
19897 msgstr ""
19898
19899 #. type: deffn
19900 #: doc/guix.texi:11569
19901 #, no-wrap
19902 msgid "{Scheme Procedure} mingetty-service @var{config}"
19903 msgstr ""
19904
19905 #. type: deffn
19906 #: doc/guix.texi:11573
19907 msgid "Return a service to run mingetty according to @var{config}, a @code{<mingetty-configuration>} object, which specifies the tty to run, among other things."
19908 msgstr ""
19909
19910 #. type: deftp
19911 #: doc/guix.texi:11575
19912 #, no-wrap
19913 msgid "{Data Type} mingetty-configuration"
19914 msgstr ""
19915
19916 #. type: deftp
19917 #: doc/guix.texi:11578
19918 msgid "This is the data type representing the configuration of Mingetty, which provides the default implementation of virtual console log-in."
19919 msgstr ""
19920
19921 #. type: code{#1}
19922 #: doc/guix.texi:11581 doc/guix.texi:11617
19923 #, no-wrap
19924 msgid "tty"
19925 msgstr ""
19926
19927 #. type: table
19928 #: doc/guix.texi:11583
19929 msgid "The name of the console this Mingetty runs on---e.g., @code{\"tty1\"}."
19930 msgstr ""
19931
19932 #. type: item
19933 #: doc/guix.texi:11584 doc/guix.texi:11646 doc/guix.texi:11805
19934 #, no-wrap
19935 msgid "@code{auto-login} (default: @code{#f})"
19936 msgstr ""
19937
19938 #. type: table
19939 #: doc/guix.texi:11588
19940 msgid "When true, this field must be a string denoting the user name under which the system automatically logs in. When it is @code{#f}, a user name and password must be entered to log in."
19941 msgstr ""
19942
19943 #. type: item
19944 #: doc/guix.texi:11589
19945 #, no-wrap
19946 msgid "@code{login-program} (default: @code{#f})"
19947 msgstr ""
19948
19949 #. type: table
19950 #: doc/guix.texi:11593
19951 msgid "This must be either @code{#f}, in which case the default log-in program is used (@command{login} from the Shadow tool suite), or a gexp denoting the name of the log-in program."
19952 msgstr ""
19953
19954 #. type: item
19955 #: doc/guix.texi:11594
19956 #, no-wrap
19957 msgid "@code{login-pause?} (default: @code{#f})"
19958 msgstr ""
19959
19960 #. type: table
19961 #: doc/guix.texi:11597
19962 msgid "When set to @code{#t} in conjunction with @var{auto-login}, the user will have to press a key before the log-in shell is launched."
19963 msgstr ""
19964
19965 #. type: item
19966 #: doc/guix.texi:11598
19967 #, no-wrap
19968 msgid "@code{mingetty} (default: @var{mingetty})"
19969 msgstr ""
19970
19971 #. type: table
19972 #: doc/guix.texi:11600
19973 msgid "The Mingetty package to use."
19974 msgstr ""
19975
19976 #. type: deffn
19977 #: doc/guix.texi:11604
19978 #, no-wrap
19979 msgid "{Scheme Procedure} agetty-service @var{config}"
19980 msgstr ""
19981
19982 #. type: deffn
19983 #: doc/guix.texi:11608
19984 msgid "Return a service to run agetty according to @var{config}, an @code{<agetty-configuration>} object, which specifies the tty to run, among other things."
19985 msgstr ""
19986
19987 #. type: deftp
19988 #: doc/guix.texi:11610
19989 #, no-wrap
19990 msgid "{Data Type} agetty-configuration"
19991 msgstr ""
19992
19993 #. type: deftp
19994 #: doc/guix.texi:11614
19995 msgid "This is the data type representing the configuration of agetty, which implements virtual and serial console log-in. See the @code{agetty(8)} man page for more information."
19996 msgstr ""
19997
19998 #. type: table
19999 #: doc/guix.texi:11621
20000 msgid "The name of the console this agetty runs on, as a string---e.g., @code{\"ttyS0\"}. This argument is optional, it will default to a reasonable default serial port used by the kernel Linux."
20001 msgstr ""
20002
20003 #. type: table
20004 #: doc/guix.texi:11625
20005 msgid "For this, if there is a value for an option @code{agetty.tty} in the kernel command line, agetty will extract the device name of the serial port from it and use that."
20006 msgstr ""
20007
20008 #. type: table
20009 #: doc/guix.texi:11629
20010 msgid "If not and if there is a value for an option @code{console} with a tty in the Linux command line, agetty will extract the device name of the serial port from it and use that."
20011 msgstr ""
20012
20013 #. type: table
20014 #: doc/guix.texi:11633
20015 msgid "In both cases, agetty will leave the other serial device settings (baud rate etc.)@: alone---in the hope that Linux pinned them to the correct values."
20016 msgstr ""
20017
20018 #. type: item
20019 #: doc/guix.texi:11634
20020 #, no-wrap
20021 msgid "@code{baud-rate} (default: @code{#f})"
20022 msgstr ""
20023
20024 #. type: table
20025 #: doc/guix.texi:11637
20026 msgid "A string containing a comma-separated list of one or more baud rates, in descending order."
20027 msgstr ""
20028
20029 #. type: item
20030 #: doc/guix.texi:11638
20031 #, no-wrap
20032 msgid "@code{term} (default: @code{#f})"
20033 msgstr ""
20034
20035 #. type: table
20036 #: doc/guix.texi:11641
20037 msgid "A string containing the value used for the @code{TERM} environment variable."
20038 msgstr ""
20039
20040 #. type: item
20041 #: doc/guix.texi:11642
20042 #, no-wrap
20043 msgid "@code{eight-bits?} (default: @code{#f})"
20044 msgstr ""
20045
20046 #. type: table
20047 #: doc/guix.texi:11645
20048 msgid "When @code{#t}, the tty is assumed to be 8-bit clean, and parity detection is disabled."
20049 msgstr ""
20050
20051 #. type: table
20052 #: doc/guix.texi:11649 doc/guix.texi:11808
20053 msgid "When passed a login name, as a string, the specified user will be logged in automatically without prompting for their login name or password."
20054 msgstr ""
20055
20056 #. type: item
20057 #: doc/guix.texi:11650
20058 #, no-wrap
20059 msgid "@code{no-reset?} (default: @code{#f})"
20060 msgstr ""
20061
20062 #. type: table
20063 #: doc/guix.texi:11652
20064 msgid "When @code{#t}, don't reset terminal cflags (control modes)."
20065 msgstr ""
20066
20067 #. type: item
20068 #: doc/guix.texi:11653
20069 #, no-wrap
20070 msgid "@code{host} (default: @code{#f})"
20071 msgstr ""
20072
20073 #. type: table
20074 #: doc/guix.texi:11656
20075 msgid "This accepts a string containing the \"login_host\", which will be written into the @file{/var/run/utmpx} file."
20076 msgstr ""
20077
20078 #. type: item
20079 #: doc/guix.texi:11657
20080 #, no-wrap
20081 msgid "@code{remote?} (default: @code{#f})"
20082 msgstr ""
20083
20084 #. type: table
20085 #: doc/guix.texi:11661
20086 msgid "When set to @code{#t} in conjunction with @var{host}, this will add an @code{-r} fakehost option to the command line of the login program specified in @var{login-program}."
20087 msgstr ""
20088
20089 #. type: item
20090 #: doc/guix.texi:11662
20091 #, no-wrap
20092 msgid "@code{flow-control?} (default: @code{#f})"
20093 msgstr ""
20094
20095 #. type: table
20096 #: doc/guix.texi:11664
20097 msgid "When set to @code{#t}, enable hardware (RTS/CTS) flow control."
20098 msgstr ""
20099
20100 #. type: item
20101 #: doc/guix.texi:11665
20102 #, no-wrap
20103 msgid "@code{no-issue?} (default: @code{#f})"
20104 msgstr ""
20105
20106 #. type: table
20107 #: doc/guix.texi:11668
20108 msgid "When set to @code{#t}, the contents of the @file{/etc/issue} file will not be displayed before presenting the login prompt."
20109 msgstr ""
20110
20111 #. type: item
20112 #: doc/guix.texi:11669
20113 #, no-wrap
20114 msgid "@code{init-string} (default: @code{#f})"
20115 msgstr ""
20116
20117 #. type: table
20118 #: doc/guix.texi:11672
20119 msgid "This accepts a string that will be sent to the tty or modem before sending anything else. It can be used to initialize a modem."
20120 msgstr ""
20121
20122 #. type: item
20123 #: doc/guix.texi:11673
20124 #, no-wrap
20125 msgid "@code{no-clear?} (default: @code{#f})"
20126 msgstr ""
20127
20128 #. type: table
20129 #: doc/guix.texi:11676
20130 msgid "When set to @code{#t}, agetty will not clear the screen before showing the login prompt."
20131 msgstr ""
20132
20133 #. type: item
20134 #: doc/guix.texi:11677
20135 #, no-wrap
20136 msgid "@code{login-program} (default: (file-append shadow \"/bin/login\"))"
20137 msgstr ""
20138
20139 #. type: table
20140 #: doc/guix.texi:11681
20141 msgid "This must be either a gexp denoting the name of a log-in program, or unset, in which case the default value is the @command{login} from the Shadow tool suite."
20142 msgstr ""
20143
20144 #. type: item
20145 #: doc/guix.texi:11682
20146 #, no-wrap
20147 msgid "@code{local-line} (default: @code{#f})"
20148 msgstr ""
20149
20150 #. type: table
20151 #: doc/guix.texi:11686
20152 msgid "Control the CLOCAL line flag. This accepts one of three symbols as arguments, @code{'auto}, @code{'always}, or @code{'never}. If @code{#f}, the default value chosen by agetty is @code{'auto}."
20153 msgstr ""
20154
20155 #. type: item
20156 #: doc/guix.texi:11687
20157 #, no-wrap
20158 msgid "@code{extract-baud?} (default: @code{#f})"
20159 msgstr ""
20160
20161 #. type: table
20162 #: doc/guix.texi:11690
20163 msgid "When set to @code{#t}, instruct agetty to try to extract the baud rate from the status messages produced by certain types of modems."
20164 msgstr ""
20165
20166 #. type: item
20167 #: doc/guix.texi:11691
20168 #, no-wrap
20169 msgid "@code{skip-login?} (default: @code{#f})"
20170 msgstr ""
20171
20172 #. type: table
20173 #: doc/guix.texi:11695
20174 msgid "When set to @code{#t}, do not prompt the user for a login name. This can be used with @var{login-program} field to use non-standard login systems."
20175 msgstr ""
20176
20177 #. type: item
20178 #: doc/guix.texi:11696
20179 #, no-wrap
20180 msgid "@code{no-newline?} (default: @code{#f})"
20181 msgstr ""
20182
20183 #. type: table
20184 #: doc/guix.texi:11699
20185 msgid "When set to @code{#t}, do not print a newline before printing the @file{/etc/issue} file."
20186 msgstr ""
20187
20188 #. type: item
20189 #: doc/guix.texi:11701
20190 #, no-wrap
20191 msgid "@code{login-options} (default: @code{#f})"
20192 msgstr ""
20193
20194 #. type: table
20195 #: doc/guix.texi:11706
20196 msgid "This option accepts a string containing options that are passed to the login program. When used with the @var{login-program}, be aware that a malicious user could try to enter a login name containing embedded options that could be parsed by the login program."
20197 msgstr ""
20198
20199 #. type: item
20200 #: doc/guix.texi:11707
20201 #, no-wrap
20202 msgid "@code{login-pause} (default: @code{#f})"
20203 msgstr ""
20204
20205 #. type: table
20206 #: doc/guix.texi:11711
20207 msgid "When set to @code{#t}, wait for any key before showing the login prompt. This can be used in conjunction with @var{auto-login} to save memory by lazily spawning shells."
20208 msgstr ""
20209
20210 #. type: item
20211 #: doc/guix.texi:11712
20212 #, no-wrap
20213 msgid "@code{chroot} (default: @code{#f})"
20214 msgstr ""
20215
20216 #. type: table
20217 #: doc/guix.texi:11715
20218 msgid "Change root to the specified directory. This option accepts a directory path as a string."
20219 msgstr ""
20220
20221 #. type: item
20222 #: doc/guix.texi:11716
20223 #, no-wrap
20224 msgid "@code{hangup?} (default: @code{#f})"
20225 msgstr ""
20226
20227 #. type: table
20228 #: doc/guix.texi:11719
20229 msgid "Use the Linux system call @code{vhangup} to do a virtual hangup of the specified terminal."
20230 msgstr ""
20231
20232 #. type: item
20233 #: doc/guix.texi:11720
20234 #, no-wrap
20235 msgid "@code{keep-baud?} (default: @code{#f})"
20236 msgstr ""
20237
20238 #. type: table
20239 #: doc/guix.texi:11724
20240 msgid "When set to @code{#t}, try to keep the existing baud rate. The baud rates from @var{baud-rate} are used when agetty receives a @key{BREAK} character."
20241 msgstr ""
20242
20243 #. type: item
20244 #: doc/guix.texi:11725
20245 #, no-wrap
20246 msgid "@code{timeout} (default: @code{#f})"
20247 msgstr ""
20248
20249 #. type: table
20250 #: doc/guix.texi:11728
20251 msgid "When set to an integer value, terminate if no user name could be read within @var{timeout} seconds."
20252 msgstr ""
20253
20254 #. type: item
20255 #: doc/guix.texi:11729
20256 #, no-wrap
20257 msgid "@code{detect-case?} (default: @code{#f})"
20258 msgstr ""
20259
20260 #. type: table
20261 #: doc/guix.texi:11735
20262 msgid "When set to @code{#t}, turn on support for detecting an uppercase-only terminal. This setting will detect a login name containing only uppercase letters as indicating an uppercase-only terminal and turn on some upper-to-lower case conversions. Note that this will not support Unicode characters."
20263 msgstr ""
20264
20265 #. type: item
20266 #: doc/guix.texi:11736
20267 #, no-wrap
20268 msgid "@code{wait-cr?} (default: @code{#f})"
20269 msgstr ""
20270
20271 #. type: table
20272 #: doc/guix.texi:11741
20273 msgid "When set to @code{#t}, wait for the user or modem to send a carriage-return or linefeed character before displaying @file{/etc/issue} or login prompt. This is typically used with the @var{init-string} option."
20274 msgstr ""
20275
20276 #. type: item
20277 #: doc/guix.texi:11742
20278 #, no-wrap
20279 msgid "@code{no-hints?} (default: @code{#f})"
20280 msgstr ""
20281
20282 #. type: table
20283 #: doc/guix.texi:11745
20284 msgid "When set to @code{#t}, do not print hints about Num, Caps, and Scroll locks."
20285 msgstr ""
20286
20287 #. type: item
20288 #: doc/guix.texi:11746
20289 #, no-wrap
20290 msgid "@code{no-hostname?} (default: @code{#f})"
20291 msgstr ""
20292
20293 #. type: table
20294 #: doc/guix.texi:11749
20295 msgid "By default, the hostname is printed. When this option is set to @code{#t}, no hostname will be shown at all."
20296 msgstr ""
20297
20298 #. type: item
20299 #: doc/guix.texi:11750
20300 #, no-wrap
20301 msgid "@code{long-hostname?} (default: @code{#f})"
20302 msgstr ""
20303
20304 #. type: table
20305 #: doc/guix.texi:11754
20306 msgid "By default, the hostname is only printed until the first dot. When this option is set to @code{#t}, the fully qualified hostname by @code{gethostname} or @code{getaddrinfo} is shown."
20307 msgstr ""
20308
20309 #. type: item
20310 #: doc/guix.texi:11755
20311 #, no-wrap
20312 msgid "@code{erase-characters} (default: @code{#f})"
20313 msgstr ""
20314
20315 #. type: table
20316 #: doc/guix.texi:11758
20317 msgid "This option accepts a string of additional characters that should be interpreted as backspace when the user types their login name."
20318 msgstr ""
20319
20320 #. type: item
20321 #: doc/guix.texi:11759
20322 #, no-wrap
20323 msgid "@code{kill-characters} (default: @code{#f})"
20324 msgstr ""
20325
20326 #. type: table
20327 #: doc/guix.texi:11763
20328 msgid "This option accepts a string that should be interpreted to mean \"ignore all previous characters\" (also called a \"kill\" character) when the user types their login name."
20329 msgstr ""
20330
20331 #. type: item
20332 #: doc/guix.texi:11764
20333 #, no-wrap
20334 msgid "@code{chdir} (default: @code{#f})"
20335 msgstr ""
20336
20337 #. type: table
20338 #: doc/guix.texi:11767
20339 msgid "This option accepts, as a string, a directory path that will be changed to before login."
20340 msgstr ""
20341
20342 #. type: item
20343 #: doc/guix.texi:11768
20344 #, no-wrap
20345 msgid "@code{delay} (default: @code{#f})"
20346 msgstr ""
20347
20348 #. type: table
20349 #: doc/guix.texi:11771
20350 msgid "This options accepts, as an integer, the number of seconds to sleep before opening the tty and displaying the login prompt."
20351 msgstr ""
20352
20353 #. type: item
20354 #: doc/guix.texi:11772
20355 #, no-wrap
20356 msgid "@code{nice} (default: @code{#f})"
20357 msgstr ""
20358
20359 #. type: table
20360 #: doc/guix.texi:11775
20361 msgid "This option accepts, as an integer, the nice value with which to run the @command{login} program."
20362 msgstr ""
20363
20364 #. type: item
20365 #: doc/guix.texi:11776 doc/guix.texi:12007 doc/guix.texi:12694
20366 #: doc/guix.texi:19064
20367 #, no-wrap
20368 msgid "@code{extra-options} (default: @code{'()})"
20369 msgstr ""
20370
20371 #. type: table
20372 #: doc/guix.texi:11779
20373 msgid "This option provides an \"escape hatch\" for the user to provide arbitrary command-line arguments to @command{agetty} as a list of strings."
20374 msgstr ""
20375
20376 #. type: deffn
20377 #: doc/guix.texi:11783
20378 #, no-wrap
20379 msgid "{Scheme Procedure} kmscon-service-type @var{config}"
20380 msgstr ""
20381
20382 #. type: deffn
20383 #: doc/guix.texi:11787
20384 msgid "Return a service to run @uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon} according to @var{config}, a @code{<kmscon-configuration>} object, which specifies the tty to run, among other things."
20385 msgstr ""
20386
20387 #. type: deftp
20388 #: doc/guix.texi:11789
20389 #, no-wrap
20390 msgid "{Data Type} kmscon-configuration"
20391 msgstr ""
20392
20393 #. type: deftp
20394 #: doc/guix.texi:11792
20395 msgid "This is the data type representing the configuration of Kmscon, which implements virtual console log-in."
20396 msgstr ""
20397
20398 #. type: code{#1}
20399 #: doc/guix.texi:11795
20400 #, no-wrap
20401 msgid "virtual-terminal"
20402 msgstr ""
20403
20404 #. type: table
20405 #: doc/guix.texi:11797
20406 msgid "The name of the console this Kmscon runs on---e.g., @code{\"tty1\"}."
20407 msgstr ""
20408
20409 #. type: item
20410 #: doc/guix.texi:11798
20411 #, no-wrap
20412 msgid "@code{login-program} (default: @code{#~(string-append #$shadow \"/bin/login\")})"
20413 msgstr ""
20414
20415 #. type: table
20416 #: doc/guix.texi:11801
20417 msgid "A gexp denoting the name of the log-in program. The default log-in program is @command{login} from the Shadow tool suite."
20418 msgstr ""
20419
20420 #. type: item
20421 #: doc/guix.texi:11802
20422 #, no-wrap
20423 msgid "@code{login-arguments} (default: @code{'(\"-p\")})"
20424 msgstr ""
20425
20426 #. type: table
20427 #: doc/guix.texi:11804
20428 msgid "A list of arguments to pass to @command{login}."
20429 msgstr ""
20430
20431 #. type: item
20432 #: doc/guix.texi:11809
20433 #, no-wrap
20434 msgid "@code{hardware-acceleration?} (default: #f)"
20435 msgstr ""
20436
20437 #. type: table
20438 #: doc/guix.texi:11811
20439 msgid "Whether to use hardware acceleration."
20440 msgstr ""
20441
20442 #. type: item
20443 #: doc/guix.texi:11812
20444 #, no-wrap
20445 msgid "@code{kmscon} (default: @var{kmscon})"
20446 msgstr ""
20447
20448 #. type: table
20449 #: doc/guix.texi:11814
20450 msgid "The Kmscon package to use."
20451 msgstr ""
20452
20453 #. type: cindex
20454 #: doc/guix.texi:11818
20455 #, no-wrap
20456 msgid "name service cache daemon"
20457 msgstr ""
20458
20459 #. type: cindex
20460 #: doc/guix.texi:11819
20461 #, no-wrap
20462 msgid "nscd"
20463 msgstr ""
20464
20465 #. type: deffn
20466 #: doc/guix.texi:11820
20467 #, no-wrap
20468 msgid "{Scheme Procedure} nscd-service [@var{config}] [#:glibc glibc] @"
20469 msgstr ""
20470
20471 #. type: deffn
20472 #: doc/guix.texi:11825
20473 msgid "[#:name-services '()] Return a service that runs the libc name service cache daemon (nscd) with the given @var{config}---an @code{<nscd-configuration>} object. @xref{Name Service Switch}, for an example."
20474 msgstr ""
20475
20476 #. type: deffn
20477 #: doc/guix.texi:11827
20478 msgid "For convenience, the Shepherd service for nscd provides the following actions:"
20479 msgstr ""
20480
20481 #. type: item
20482 #: doc/guix.texi:11829
20483 #, no-wrap
20484 msgid "invalidate"
20485 msgstr ""
20486
20487 #. type: cindex
20488 #: doc/guix.texi:11830
20489 #, no-wrap
20490 msgid "cache invalidation, nscd"
20491 msgstr ""
20492
20493 #. type: cindex
20494 #: doc/guix.texi:11831
20495 #, no-wrap
20496 msgid "nscd, cache invalidation"
20497 msgstr ""
20498
20499 #. type: table
20500 #: doc/guix.texi:11833
20501 msgid "This invalidate the given cache. For instance, running:"
20502 msgstr ""
20503
20504 #. type: example
20505 #: doc/guix.texi:11836
20506 #, no-wrap
20507 msgid "herd invalidate nscd hosts\n"
20508 msgstr ""
20509
20510 #. type: table
20511 #: doc/guix.texi:11840
20512 msgid "invalidates the host name lookup cache of nscd."
20513 msgstr ""
20514
20515 #. type: item
20516 #: doc/guix.texi:11841
20517 #, no-wrap
20518 msgid "statistics"
20519 msgstr ""
20520
20521 #. type: table
20522 #: doc/guix.texi:11844
20523 msgid "Running @command{herd statistics nscd} displays information about nscd usage and caches."
20524 msgstr ""
20525
20526 #. type: defvr
20527 #: doc/guix.texi:11848
20528 #, no-wrap
20529 msgid "{Scheme Variable} %nscd-default-configuration"
20530 msgstr ""
20531
20532 #. type: defvr
20533 #: doc/guix.texi:11852
20534 msgid "This is the default @code{<nscd-configuration>} value (see below) used by @code{nscd-service}. It uses the caches defined by @var{%nscd-default-caches}; see below."
20535 msgstr ""
20536
20537 #. type: deftp
20538 #: doc/guix.texi:11854
20539 #, no-wrap
20540 msgid "{Data Type} nscd-configuration"
20541 msgstr ""
20542
20543 #. type: deftp
20544 #: doc/guix.texi:11857
20545 msgid "This is the data type representing the name service cache daemon (nscd) configuration."
20546 msgstr ""
20547
20548 #. type: item
20549 #: doc/guix.texi:11860
20550 #, no-wrap
20551 msgid "@code{name-services} (default: @code{'()})"
20552 msgstr ""
20553
20554 #. type: table
20555 #: doc/guix.texi:11863
20556 msgid "List of packages denoting @dfn{name services} that must be visible to the nscd---e.g., @code{(list @var{nss-mdns})}."
20557 msgstr ""
20558
20559 #. type: item
20560 #: doc/guix.texi:11864
20561 #, no-wrap
20562 msgid "@code{glibc} (default: @var{glibc})"
20563 msgstr ""
20564
20565 #. type: table
20566 #: doc/guix.texi:11867
20567 msgid "Package object denoting the GNU C Library providing the @command{nscd} command."
20568 msgstr ""
20569
20570 #. type: item
20571 #: doc/guix.texi:11868
20572 #, no-wrap
20573 msgid "@code{log-file} (default: @code{\"/var/log/nscd.log\"})"
20574 msgstr ""
20575
20576 #. type: table
20577 #: doc/guix.texi:11871
20578 msgid "Name of the nscd log file. This is where debugging output goes when @code{debug-level} is strictly positive."
20579 msgstr ""
20580
20581 #. type: item
20582 #: doc/guix.texi:11872
20583 #, no-wrap
20584 msgid "@code{debug-level} (default: @code{0})"
20585 msgstr ""
20586
20587 #. type: table
20588 #: doc/guix.texi:11875
20589 msgid "Integer denoting the debugging levels. Higher numbers mean that more debugging output is logged."
20590 msgstr ""
20591
20592 #. type: item
20593 #: doc/guix.texi:11876
20594 #, no-wrap
20595 msgid "@code{caches} (default: @var{%nscd-default-caches})"
20596 msgstr ""
20597
20598 #. type: table
20599 #: doc/guix.texi:11879
20600 msgid "List of @code{<nscd-cache>} objects denoting things to be cached; see below."
20601 msgstr ""
20602
20603 #. type: deftp
20604 #: doc/guix.texi:11883
20605 #, no-wrap
20606 msgid "{Data Type} nscd-cache"
20607 msgstr ""
20608
20609 #. type: deftp
20610 #: doc/guix.texi:11885
20611 msgid "Data type representing a cache database of nscd and its parameters."
20612 msgstr ""
20613
20614 #. type: cindex
20615 #: doc/guix.texi:11888 doc/guix.texi:15088
20616 #, no-wrap
20617 msgid "database"
20618 msgstr ""
20619
20620 #. type: table
20621 #: doc/guix.texi:11893
20622 msgid "This is a symbol representing the name of the database to be cached. Valid values are @code{passwd}, @code{group}, @code{hosts}, and @code{services}, which designate the corresponding NSS database (@pxref{NSS Basics,,, libc, The GNU C Library Reference Manual})."
20623 msgstr ""
20624
20625 #. type: code{#1}
20626 #: doc/guix.texi:11894
20627 #, no-wrap
20628 msgid "positive-time-to-live"
20629 msgstr ""
20630
20631 #. type: itemx
20632 #: doc/guix.texi:11895
20633 #, no-wrap
20634 msgid "@code{negative-time-to-live} (default: @code{20})"
20635 msgstr ""
20636
20637 #. type: table
20638 #: doc/guix.texi:11898
20639 msgid "A number representing the number of seconds during which a positive or negative lookup result remains in cache."
20640 msgstr ""
20641
20642 #. type: item
20643 #: doc/guix.texi:11899
20644 #, no-wrap
20645 msgid "@code{check-files?} (default: @code{#t})"
20646 msgstr ""
20647
20648 #. type: table
20649 #: doc/guix.texi:11902
20650 msgid "Whether to check for updates of the files corresponding to @var{database}."
20651 msgstr ""
20652
20653 #. type: table
20654 #: doc/guix.texi:11906
20655 msgid "For instance, when @var{database} is @code{hosts}, setting this flag instructs nscd to check for updates in @file{/etc/hosts} and to take them into account."
20656 msgstr ""
20657
20658 #. type: item
20659 #: doc/guix.texi:11907
20660 #, no-wrap
20661 msgid "@code{persistent?} (default: @code{#t})"
20662 msgstr ""
20663
20664 #. type: table
20665 #: doc/guix.texi:11909
20666 msgid "Whether the cache should be stored persistently on disk."
20667 msgstr ""
20668
20669 #. type: item
20670 #: doc/guix.texi:11910
20671 #, no-wrap
20672 msgid "@code{shared?} (default: @code{#t})"
20673 msgstr ""
20674
20675 #. type: table
20676 #: doc/guix.texi:11912
20677 msgid "Whether the cache should be shared among users."
20678 msgstr ""
20679
20680 #. type: item
20681 #: doc/guix.texi:11913
20682 #, no-wrap
20683 msgid "@code{max-database-size} (default: 32@tie{}MiB)"
20684 msgstr ""
20685
20686 #. type: table
20687 #: doc/guix.texi:11915
20688 msgid "Maximum size in bytes of the database cache."
20689 msgstr ""
20690
20691 #. type: defvr
20692 #: doc/guix.texi:11922
20693 #, no-wrap
20694 msgid "{Scheme Variable} %nscd-default-caches"
20695 msgstr ""
20696
20697 #. type: defvr
20698 #: doc/guix.texi:11925
20699 msgid "List of @code{<nscd-cache>} objects used by default by @code{nscd-configuration} (see above)."
20700 msgstr ""
20701
20702 #. type: defvr
20703 #: doc/guix.texi:11931
20704 msgid "It enables persistent and aggressive caching of service and host name lookups. The latter provides better host name lookup performance, resilience in the face of unreliable name servers, and also better privacy---often the result of host name lookups is in local cache, so external name servers do not even need to be queried."
20705 msgstr ""
20706
20707 #. type: anchor{#1}
20708 #: doc/guix.texi:11934
20709 msgid "syslog-configuration-type"
20710 msgstr ""
20711
20712 #. type: cindex
20713 #: doc/guix.texi:11934 doc/guix.texi:11950
20714 #, no-wrap
20715 msgid "syslog"
20716 msgstr ""
20717
20718 #. type: cindex
20719 #: doc/guix.texi:11935 doc/guix.texi:12372
20720 #, no-wrap
20721 msgid "logging"
20722 msgstr ""
20723
20724 #. type: deftp
20725 #: doc/guix.texi:11936
20726 #, no-wrap
20727 msgid "{Data Type} syslog-configuration"
20728 msgstr ""
20729
20730 #. type: deftp
20731 #: doc/guix.texi:11938
20732 msgid "This data type represents the configuration of the syslog daemon."
20733 msgstr ""
20734
20735 #. type: item
20736 #: doc/guix.texi:11940
20737 #, no-wrap
20738 msgid "@code{syslogd} (default: @code{#~(string-append #$inetutils \"/libexec/syslogd\")})"
20739 msgstr ""
20740
20741 #. type: table
20742 #: doc/guix.texi:11942
20743 msgid "The syslog daemon to use."
20744 msgstr ""
20745
20746 #. type: item
20747 #: doc/guix.texi:11943
20748 #, no-wrap
20749 msgid "@code{config-file} (default: @code{%default-syslog.conf})"
20750 msgstr ""
20751
20752 #. type: table
20753 #: doc/guix.texi:11945
20754 msgid "The syslog configuration file to use."
20755 msgstr ""
20756
20757 #. type: anchor{#1}
20758 #: doc/guix.texi:11950
20759 msgid "syslog-service"
20760 msgstr ""
20761
20762 #. type: deffn
20763 #: doc/guix.texi:11951
20764 #, no-wrap
20765 msgid "{Scheme Procedure} syslog-service @var{config}"
20766 msgstr ""
20767
20768 #. type: deffn
20769 #: doc/guix.texi:11953
20770 msgid "Return a service that runs a syslog daemon according to @var{config}."
20771 msgstr ""
20772
20773 #. type: deffn
20774 #: doc/guix.texi:11956
20775 msgid "@xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more information on the configuration file syntax."
20776 msgstr ""
20777
20778 #. type: defvr
20779 #: doc/guix.texi:11958
20780 #, no-wrap
20781 msgid "{Scheme Variable} guix-service-type"
20782 msgstr ""
20783
20784 #. type: defvr
20785 #: doc/guix.texi:11962
20786 msgid "This is the type of the service that runs the build daemon, @command{guix-daemon} (@pxref{Invoking guix-daemon}). Its value must be a @code{guix-configuration} record as described below."
20787 msgstr ""
20788
20789 #. type: anchor{#1}
20790 #: doc/guix.texi:11965
20791 msgid "guix-configuration-type"
20792 msgstr ""
20793
20794 #. type: deftp
20795 #: doc/guix.texi:11965
20796 #, no-wrap
20797 msgid "{Data Type} guix-configuration"
20798 msgstr ""
20799
20800 #. type: deftp
20801 #: doc/guix.texi:11968
20802 msgid "This data type represents the configuration of the Guix build daemon. @xref{Invoking guix-daemon}, for more information."
20803 msgstr ""
20804
20805 #. type: item
20806 #: doc/guix.texi:11970
20807 #, no-wrap
20808 msgid "@code{guix} (default: @var{guix})"
20809 msgstr ""
20810
20811 #. type: table
20812 #: doc/guix.texi:11972 doc/guix.texi:12192
20813 msgid "The Guix package to use."
20814 msgstr ""
20815
20816 #. type: item
20817 #: doc/guix.texi:11973
20818 #, no-wrap
20819 msgid "@code{build-group} (default: @code{\"guixbuild\"})"
20820 msgstr ""
20821
20822 #. type: table
20823 #: doc/guix.texi:11975
20824 msgid "Name of the group for build user accounts."
20825 msgstr ""
20826
20827 #. type: item
20828 #: doc/guix.texi:11976
20829 #, no-wrap
20830 msgid "@code{build-accounts} (default: @code{10})"
20831 msgstr ""
20832
20833 #. type: table
20834 #: doc/guix.texi:11978
20835 msgid "Number of build user accounts to create."
20836 msgstr ""
20837
20838 #. type: item
20839 #: doc/guix.texi:11979
20840 #, no-wrap
20841 msgid "@code{authorize-key?} (default: @code{#t})"
20842 msgstr ""
20843
20844 #. type: table
20845 #: doc/guix.texi:11984
20846 msgid "Whether to authorize the substitute keys listed in @code{authorized-keys}---by default that of @code{@value{SUBSTITUTE-SERVER}} (@pxref{Substitutes})."
20847 msgstr ""
20848
20849 #. type: vindex
20850 #: doc/guix.texi:11985
20851 #, no-wrap
20852 msgid "%default-authorized-guix-keys"
20853 msgstr ""
20854
20855 #. type: item
20856 #: doc/guix.texi:11986
20857 #, no-wrap
20858 msgid "@code{authorized-keys} (default: @var{%default-authorized-guix-keys})"
20859 msgstr ""
20860
20861 #. type: table
20862 #: doc/guix.texi:11990
20863 msgid "The list of authorized key files for archive imports, as a list of string-valued gexps (@pxref{Invoking guix archive}). By default, it contains that of @code{@value{SUBSTITUTE-SERVER}} (@pxref{Substitutes})."
20864 msgstr ""
20865
20866 #. type: item
20867 #: doc/guix.texi:11991
20868 #, no-wrap
20869 msgid "@code{use-substitutes?} (default: @code{#t})"
20870 msgstr ""
20871
20872 #. type: table
20873 #: doc/guix.texi:11993
20874 msgid "Whether to use substitutes."
20875 msgstr ""
20876
20877 #. type: item
20878 #: doc/guix.texi:11994
20879 #, no-wrap
20880 msgid "@code{substitute-urls} (default: @var{%default-substitute-urls})"
20881 msgstr ""
20882
20883 #. type: table
20884 #: doc/guix.texi:11996
20885 msgid "The list of URLs where to look for substitutes by default."
20886 msgstr ""
20887
20888 #. type: item
20889 #: doc/guix.texi:11997
20890 #, no-wrap
20891 msgid "@code{max-silent-time} (default: @code{0})"
20892 msgstr ""
20893
20894 #. type: itemx
20895 #: doc/guix.texi:11998
20896 #, no-wrap
20897 msgid "@code{timeout} (default: @code{0})"
20898 msgstr ""
20899
20900 #. type: table
20901 #: doc/guix.texi:12002
20902 msgid "The number of seconds of silence and the number of seconds of activity, respectively, after which a build process times out. A value of zero disables the timeout."
20903 msgstr ""
20904
20905 #. type: item
20906 #: doc/guix.texi:12003
20907 #, no-wrap
20908 msgid "@code{log-compression} (default: @code{'bzip2})"
20909 msgstr ""
20910
20911 #. type: table
20912 #: doc/guix.texi:12006
20913 msgid "The type of compression used for build logs---one of @code{gzip}, @code{bzip2}, or @code{none}."
20914 msgstr ""
20915
20916 #. type: table
20917 #: doc/guix.texi:12009
20918 msgid "List of extra command-line options for @command{guix-daemon}."
20919 msgstr ""
20920
20921 #. type: item
20922 #: doc/guix.texi:12010
20923 #, no-wrap
20924 msgid "@code{log-file} (default: @code{\"/var/log/guix-daemon.log\"})"
20925 msgstr ""
20926
20927 #. type: table
20928 #: doc/guix.texi:12013
20929 msgid "File where @command{guix-daemon}'s standard output and standard error are written."
20930 msgstr ""
20931
20932 #. type: item
20933 #: doc/guix.texi:12014
20934 #, no-wrap
20935 msgid "@code{http-proxy} (default: @code{#f})"
20936 msgstr ""
20937
20938 #. type: table
20939 #: doc/guix.texi:12017
20940 msgid "The HTTP proxy used for downloading fixed-output derivations and substitutes."
20941 msgstr ""
20942
20943 #. type: item
20944 #: doc/guix.texi:12018
20945 #, no-wrap
20946 msgid "@code{tmpdir} (default: @code{#f})"
20947 msgstr ""
20948
20949 #. type: table
20950 #: doc/guix.texi:12020
20951 msgid "A directory path where the @command{guix-daemon} will perform builds."
20952 msgstr ""
20953
20954 #. type: deffn
20955 #: doc/guix.texi:12024
20956 #, no-wrap
20957 msgid "{Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]"
20958 msgstr ""
20959
20960 #. type: deffn
20961 #: doc/guix.texi:12029
20962 msgid "Run @var{udev}, which populates the @file{/dev} directory dynamically. udev rules can be provided as a list of files through the @var{rules} variable. The procedures @code{udev-rule} and @code{file->udev-rule} from @code{(gnu services base)} simplify the creation of such rule files."
20963 msgstr ""
20964
20965 #. type: deffn
20966 #: doc/guix.texi:12031
20967 #, no-wrap
20968 msgid "{Scheme Procedure} udev-rule [@var{file-name} @var{contents}]"
20969 msgstr ""
20970
20971 #. type: deffn
20972 #: doc/guix.texi:12034
20973 msgid "Return a udev-rule file named @var{file-name} containing the rules defined by the @var{contents} literal."
20974 msgstr ""
20975
20976 #. type: deffn
20977 #: doc/guix.texi:12038
20978 msgid "In the following example, a rule for a USB device is defined to be stored in the file @file{90-usb-thing.rules}. The rule runs a script upon detecting a USB device with a given product identifier."
20979 msgstr ""
20980
20981 #. type: example
20982 #: doc/guix.texi:12046
20983 #, no-wrap
20984 msgid ""
20985 "(define %example-udev-rule\n"
20986 " (udev-rule\n"
20987 " \"90-usb-thing.rules\"\n"
20988 " (string-append \"ACTION==\\\"add\\\", SUBSYSTEM==\\\"usb\\\", \"\n"
20989 " \"ATTR@{product@}==\\\"Example\\\", \"\n"
20990 " \"RUN+=\\\"/path/to/script\\\"\")))\n"
20991 msgstr ""
20992
20993 #. type: deffn
20994 #: doc/guix.texi:12050
20995 msgid "The @command{herd rules udev} command, as root, returns the name of the directory containing all the active udev rules."
20996 msgstr ""
20997
20998 #. type: Plain text
20999 #: doc/guix.texi:12053
21000 msgid "Here we show how the default @var{udev-service} can be extended with it."
21001 msgstr ""
21002
21003 #. type: example
21004 #: doc/guix.texi:12063
21005 #, no-wrap
21006 msgid ""
21007 "(operating-system\n"
21008 " ;; @dots{}\n"
21009 " (services\n"
21010 " (modify-services %desktop-services\n"
21011 " (udev-service-type config =>\n"
21012 " (udev-configuration (inherit config)\n"
21013 " (rules (append (udev-configuration-rules config)\n"
21014 " (list %example-udev-rule))))))))\n"
21015 msgstr ""
21016
21017 #. type: deffn
21018 #: doc/guix.texi:12065
21019 #, no-wrap
21020 msgid "{Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]"
21021 msgstr ""
21022
21023 #. type: deffn
21024 #: doc/guix.texi:12068
21025 msgid "Return a udev file named @var{file-name} containing the rules defined within @var{file}, a file-like object."
21026 msgstr ""
21027
21028 #. type: deffn
21029 #: doc/guix.texi:12070
21030 msgid "The following example showcases how we can use an existing rule file."
21031 msgstr ""
21032
21033 #. type: example
21034 #: doc/guix.texi:12075
21035 #, no-wrap
21036 msgid ""
21037 "(use-modules (guix download) ;for url-fetch\n"
21038 " (guix packages) ;for origin\n"
21039 " ;; @dots{})\n"
21040 "\n"
21041 msgstr ""
21042
21043 #. type: example
21044 #: doc/guix.texi:12086
21045 #, no-wrap
21046 msgid ""
21047 "(define %android-udev-rules\n"
21048 " (file->udev-rule\n"
21049 " \"51-android-udev.rules\"\n"
21050 " (let ((version \"20170910\"))\n"
21051 " (origin\n"
21052 " (method url-fetch)\n"
21053 " (uri (string-append \"https://raw.githubusercontent.com/M0Rf30/\"\n"
21054 " \"android-udev-rules/\" version \"/51-android.rules\"))\n"
21055 " (sha256\n"
21056 " (base32 \"0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003\"))))))\n"
21057 msgstr ""
21058
21059 #. type: Plain text
21060 #: doc/guix.texi:12095
21061 msgid "Additionally, Guix package definitions can be included in @var{rules} in order to extend the udev rules with the definitions found under their @file{lib/udev/rules.d} sub-directory. In lieu of the previous @var{file->udev-rule} example, we could have used the @var{android-udev-rules} package which exists in Guix in the @code{(gnu packages android)} module."
21062 msgstr ""
21063
21064 #. type: Plain text
21065 #: doc/guix.texi:12104
21066 msgid "The following example shows how to use the @var{android-udev-rules} package so that the Android tool @command{adb} can detect devices without root privileges. It also details how to create the @code{adbusers} group, which is required for the proper functioning of the rules defined within the @var{android-udev-rules} package. To create such a group, we must define it both as part of the @var{supplementary-groups} of our @var{user-account} declaration, as well as in the @var{groups} field of the @var{operating-system} record."
21067 msgstr ""
21068
21069 #. type: example
21070 #: doc/guix.texi:12109
21071 #, no-wrap
21072 msgid ""
21073 "(use-modules (gnu packages android) ;for android-udev-rules\n"
21074 " (gnu system shadow) ;for user-group\n"
21075 " ;; @dots{})\n"
21076 "\n"
21077 msgstr ""
21078
21079 #. type: example
21080 #: doc/guix.texi:12118
21081 #, no-wrap
21082 msgid ""
21083 "(operating-system\n"
21084 " ;; @dots{}\n"
21085 " (users (cons (user-acount\n"
21086 " ;; @dots{}\n"
21087 " (supplementary-groups\n"
21088 " '(\"adbusers\" ;for adb\n"
21089 " \"wheel\" \"netdev\" \"audio\" \"video\"))\n"
21090 " ;; @dots{})))\n"
21091 "\n"
21092 msgstr ""
21093
21094 #. type: example
21095 #: doc/guix.texi:12121
21096 #, no-wrap
21097 msgid ""
21098 " (groups (cons (user-group (system? #t) (name \"adbusers\"))\n"
21099 " %base-groups))\n"
21100 "\n"
21101 msgstr ""
21102
21103 #. type: example
21104 #: doc/guix.texi:12123
21105 #, no-wrap
21106 msgid ""
21107 " ;; @dots{}\n"
21108 "\n"
21109 msgstr ""
21110
21111 #. type: example
21112 #: doc/guix.texi:12131
21113 #, no-wrap
21114 msgid ""
21115 " (services\n"
21116 " (modify-services %desktop-services\n"
21117 " (udev-service-type\n"
21118 " config =>\n"
21119 " (udev-configuration (inherit config)\n"
21120 " (rules (cons android-udev-rules\n"
21121 " (udev-configuration-rules config))))))))\n"
21122 msgstr ""
21123
21124 #. type: defvr
21125 #: doc/guix.texi:12133
21126 #, no-wrap
21127 msgid "{Scheme Variable} urandom-seed-service-type"
21128 msgstr ""
21129
21130 #. type: defvr
21131 #: doc/guix.texi:12138
21132 msgid "Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom} when rebooting. It also tries to seed @file{/dev/urandom} from @file{/dev/hwrng} while booting, if @file{/dev/hwrng} exists and is readable."
21133 msgstr ""
21134
21135 #. type: defvr
21136 #: doc/guix.texi:12140
21137 #, no-wrap
21138 msgid "{Scheme Variable} %random-seed-file"
21139 msgstr ""
21140
21141 #. type: defvr
21142 #: doc/guix.texi:12144
21143 msgid "This is the name of the file where some random bytes are saved by @var{urandom-seed-service} to seed @file{/dev/urandom} when rebooting. It defaults to @file{/var/lib/random-seed}."
21144 msgstr ""
21145
21146 #. type: cindex
21147 #: doc/guix.texi:12146
21148 #, no-wrap
21149 msgid "mouse"
21150 msgstr ""
21151
21152 #. type: cindex
21153 #: doc/guix.texi:12147
21154 #, no-wrap
21155 msgid "gpm"
21156 msgstr ""
21157
21158 #. type: defvr
21159 #: doc/guix.texi:12148
21160 #, no-wrap
21161 msgid "{Scheme Variable} gpm-service-type"
21162 msgstr ""
21163
21164 #. type: defvr
21165 #: doc/guix.texi:12153
21166 msgid "This is the type of the service that runs GPM, the @dfn{general-purpose mouse daemon}, which provides mouse support to the Linux console. GPM allows users to use the mouse in the console, notably to select, copy, and paste text."
21167 msgstr ""
21168
21169 #. type: defvr
21170 #: doc/guix.texi:12156
21171 msgid "The value for services of this type must be a @code{gpm-configuration} (see below). This service is not part of @var{%base-services}."
21172 msgstr ""
21173
21174 #. type: deftp
21175 #: doc/guix.texi:12158
21176 #, no-wrap
21177 msgid "{Data Type} gpm-configuration"
21178 msgstr ""
21179
21180 #. type: deftp
21181 #: doc/guix.texi:12160
21182 msgid "Data type representing the configuration of GPM."
21183 msgstr ""
21184
21185 #. type: item
21186 #: doc/guix.texi:12162
21187 #, no-wrap
21188 msgid "@code{options} (default: @code{%default-gpm-options})"
21189 msgstr ""
21190
21191 #. type: table
21192 #: doc/guix.texi:12167
21193 msgid "Command-line options passed to @command{gpm}. The default set of options instruct @command{gpm} to listen to mouse events on @file{/dev/input/mice}. @xref{Command Line,,, gpm, gpm manual}, for more information."
21194 msgstr ""
21195
21196 #. type: item
21197 #: doc/guix.texi:12168
21198 #, no-wrap
21199 msgid "@code{gpm} (default: @code{gpm})"
21200 msgstr ""
21201
21202 #. type: table
21203 #: doc/guix.texi:12170
21204 msgid "The GPM package to use."
21205 msgstr ""
21206
21207 #. type: anchor{#1}
21208 #: doc/guix.texi:12175
21209 msgid "guix-publish-service-type"
21210 msgstr ""
21211
21212 #. type: deffn
21213 #: doc/guix.texi:12175
21214 #, no-wrap
21215 msgid "{Scheme Variable} guix-publish-service-type"
21216 msgstr ""
21217
21218 #. type: deffn
21219 #: doc/guix.texi:12179
21220 msgid "This is the service type for @command{guix publish} (@pxref{Invoking guix publish}). Its value must be a @code{guix-configuration} object, as described below."
21221 msgstr ""
21222
21223 #. type: deffn
21224 #: doc/guix.texi:12183
21225 msgid "This assumes that @file{/etc/guix} already contains a signing key pair as created by @command{guix archive --generate-key} (@pxref{Invoking guix archive}). If that is not the case, the service will fail to start."
21226 msgstr ""
21227
21228 #. type: deftp
21229 #: doc/guix.texi:12185
21230 #, no-wrap
21231 msgid "{Data Type} guix-publish-configuration"
21232 msgstr ""
21233
21234 #. type: deftp
21235 #: doc/guix.texi:12188
21236 msgid "Data type representing the configuration of the @code{guix publish} service."
21237 msgstr ""
21238
21239 #. type: item
21240 #: doc/guix.texi:12190
21241 #, no-wrap
21242 msgid "@code{guix} (default: @code{guix})"
21243 msgstr ""
21244
21245 #. type: item
21246 #: doc/guix.texi:12193
21247 #, no-wrap
21248 msgid "@code{port} (default: @code{80})"
21249 msgstr ""
21250
21251 #. type: table
21252 #: doc/guix.texi:12195
21253 msgid "The TCP port to listen for connections."
21254 msgstr ""
21255
21256 #. type: item
21257 #: doc/guix.texi:12196
21258 #, no-wrap
21259 msgid "@code{host} (default: @code{\"localhost\"})"
21260 msgstr ""
21261
21262 #. type: table
21263 #: doc/guix.texi:12199
21264 msgid "The host (and thus, network interface) to listen to. Use @code{\"0.0.0.0\"} to listen on all the network interfaces."
21265 msgstr ""
21266
21267 #. type: table
21268 #: doc/guix.texi:12204
21269 msgid "The gzip compression level at which substitutes are compressed. Use @code{0} to disable compression altogether, and @code{9} to get the best compression ratio at the expense of increased CPU usage."
21270 msgstr ""
21271
21272 #. type: item
21273 #: doc/guix.texi:12205
21274 #, no-wrap
21275 msgid "@code{nar-path} (default: @code{\"nar\"})"
21276 msgstr ""
21277
21278 #. type: table
21279 #: doc/guix.texi:12208
21280 msgid "The URL path at which ``nars'' can be fetched. @xref{Invoking guix publish, @code{--nar-path}}, for details."
21281 msgstr ""
21282
21283 #. type: item
21284 #: doc/guix.texi:12209
21285 #, no-wrap
21286 msgid "@code{cache} (default: @code{#f})"
21287 msgstr ""
21288
21289 #. type: table
21290 #: doc/guix.texi:12215
21291 msgid "When it is @code{#f}, disable caching and instead generate archives on demand. Otherwise, this should be the name of a directory---e.g., @code{\"/var/cache/guix/publish\"}---where @command{guix publish} caches archives and meta-data ready to be sent. @xref{Invoking guix publish, @option{--cache}}, for more information on the tradeoffs involved."
21292 msgstr ""
21293
21294 #. type: item
21295 #: doc/guix.texi:12216
21296 #, no-wrap
21297 msgid "@code{workers} (default: @code{#f})"
21298 msgstr ""
21299
21300 #. type: table
21301 #: doc/guix.texi:12220
21302 msgid "When it is an integer, this is the number of worker threads used for caching; when @code{#f}, the number of processors is used. @xref{Invoking guix publish, @option{--workers}}, for more information."
21303 msgstr ""
21304
21305 #. type: item
21306 #: doc/guix.texi:12221
21307 #, no-wrap
21308 msgid "@code{ttl} (default: @code{#f})"
21309 msgstr ""
21310
21311 #. type: table
21312 #: doc/guix.texi:12225
21313 msgid "When it is an integer, this denotes the @dfn{time-to-live} in seconds of the published archives. @xref{Invoking guix publish, @option{--ttl}}, for more information."
21314 msgstr ""
21315
21316 #. type: anchor{#1}
21317 #: doc/guix.texi:12229
21318 msgid "rngd-service"
21319 msgstr ""
21320
21321 #. type: deffn
21322 #: doc/guix.texi:12229
21323 #, no-wrap
21324 msgid "{Scheme Procedure} rngd-service [#:rng-tools @var{rng-tools}] @"
21325 msgstr ""
21326
21327 #. type: deffn
21328 #: doc/guix.texi:12234
21329 msgid "[#:device \"/dev/hwrng\"] Return a service that runs the @command{rngd} program from @var{rng-tools} to add @var{device} to the kernel's entropy pool. The service will fail if @var{device} does not exist."
21330 msgstr ""
21331
21332 #. type: anchor{#1}
21333 #: doc/guix.texi:12237
21334 msgid "pam-limits-service"
21335 msgstr ""
21336
21337 #. type: cindex
21338 #: doc/guix.texi:12237
21339 #, no-wrap
21340 msgid "session limits"
21341 msgstr ""
21342
21343 #. type: cindex
21344 #: doc/guix.texi:12238
21345 #, no-wrap
21346 msgid "ulimit"
21347 msgstr ""
21348
21349 #. type: cindex
21350 #: doc/guix.texi:12239
21351 #, no-wrap
21352 msgid "priority"
21353 msgstr ""
21354
21355 #. type: cindex
21356 #: doc/guix.texi:12240
21357 #, no-wrap
21358 msgid "realtime"
21359 msgstr ""
21360
21361 #. type: cindex
21362 #: doc/guix.texi:12241
21363 #, no-wrap
21364 msgid "jackd"
21365 msgstr ""
21366
21367 #. type: deffn
21368 #: doc/guix.texi:12242
21369 #, no-wrap
21370 msgid "{Scheme Procedure} pam-limits-service [#:limits @code{'()}]"
21371 msgstr ""
21372
21373 #. type: deffn
21374 #: doc/guix.texi:12249
21375 msgid "Return a service that installs a configuration file for the @uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html, @code{pam_limits} module}. The procedure optionally takes a list of @code{pam-limits-entry} values, which can be used to specify @code{ulimit} limits and nice priority limits to user sessions."
21376 msgstr ""
21377
21378 #. type: deffn
21379 #: doc/guix.texi:12252
21380 msgid "The following limits definition sets two hard and soft limits for all login sessions of users in the @code{realtime} group:"
21381 msgstr ""
21382
21383 #. type: example
21384 #: doc/guix.texi:12258
21385 #, no-wrap
21386 msgid ""
21387 "(pam-limits-service\n"
21388 " (list\n"
21389 " (pam-limits-entry \"@@realtime\" 'both 'rtprio 99)\n"
21390 " (pam-limits-entry \"@@realtime\" 'both 'memlock 'unlimited)))\n"
21391 msgstr ""
21392
21393 #. type: deffn
21394 #: doc/guix.texi:12264
21395 msgid "The first entry increases the maximum realtime priority for non-privileged processes; the second entry lifts any restriction of the maximum address space that can be locked in memory. These settings are commonly used for real-time audio systems."
21396 msgstr ""
21397
21398 #. type: cindex
21399 #: doc/guix.texi:12269
21400 #, no-wrap
21401 msgid "cron"
21402 msgstr ""
21403
21404 #. type: cindex
21405 #: doc/guix.texi:12270
21406 #, no-wrap
21407 msgid "mcron"
21408 msgstr ""
21409
21410 #. type: cindex
21411 #: doc/guix.texi:12271
21412 #, no-wrap
21413 msgid "scheduling jobs"
21414 msgstr ""
21415
21416 #. type: Plain text
21417 #: doc/guix.texi:12278
21418 msgid "The @code{(gnu services mcron)} module provides an interface to GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, mcron, GNU@tie{}mcron}). GNU@tie{}mcron is similar to the traditional Unix @command{cron} daemon; the main difference is that it is implemented in Guile Scheme, which provides a lot of flexibility when specifying the scheduling of jobs and their actions."
21419 msgstr ""
21420
21421 #. type: Plain text
21422 #: doc/guix.texi:12286
21423 msgid "The example below defines an operating system that runs the @command{updatedb} (@pxref{Invoking updatedb,,, find, Finding Files}) and the @command{guix gc} commands (@pxref{Invoking guix gc}) daily, as well as the @command{mkid} command on behalf of an unprivileged user (@pxref{mkid invocation,,, idutils, ID Database Utilities}). It uses gexps to introduce job definitions that are passed to mcron (@pxref{G-Expressions})."
21424 msgstr ""
21425
21426 #. type: lisp
21427 #: doc/guix.texi:12290
21428 #, no-wrap
21429 msgid ""
21430 "(use-modules (guix) (gnu) (gnu services mcron))\n"
21431 "(use-package-modules base idutils)\n"
21432 "\n"
21433 msgstr ""
21434
21435 #. type: lisp
21436 #: doc/guix.texi:12299
21437 #, no-wrap
21438 msgid ""
21439 "(define updatedb-job\n"
21440 " ;; Run 'updatedb' at 3AM every day. Here we write the\n"
21441 " ;; job's action as a Scheme procedure.\n"
21442 " #~(job '(next-hour '(3))\n"
21443 " (lambda ()\n"
21444 " (execl (string-append #$findutils \"/bin/updatedb\")\n"
21445 " \"updatedb\"\n"
21446 " \"--prunepaths=/tmp /var/tmp /gnu/store\"))))\n"
21447 "\n"
21448 msgstr ""
21449
21450 #. type: lisp
21451 #: doc/guix.texi:12305
21452 #, no-wrap
21453 msgid ""
21454 "(define garbage-collector-job\n"
21455 " ;; Collect garbage 5 minutes after midnight every day.\n"
21456 " ;; The job's action is a shell command.\n"
21457 " #~(job \"5 0 * * *\" ;Vixie cron syntax\n"
21458 " \"guix gc -F 1G\"))\n"
21459 "\n"
21460 msgstr ""
21461
21462 #. type: lisp
21463 #: doc/guix.texi:12312
21464 #, no-wrap
21465 msgid ""
21466 "(define idutils-job\n"
21467 " ;; Update the index database as user \"charlie\" at 12:15PM\n"
21468 " ;; and 19:15PM. This runs from the user's home directory.\n"
21469 " #~(job '(next-minute-from (next-hour '(12 19)) '(15))\n"
21470 " (string-append #$idutils \"/bin/mkid src\")\n"
21471 " #:user \"charlie\"))\n"
21472 "\n"
21473 msgstr ""
21474
21475 #. type: lisp
21476 #: doc/guix.texi:12321
21477 #, no-wrap
21478 msgid ""
21479 "(operating-system\n"
21480 " ;; @dots{}\n"
21481 " (services (cons (service mcron-service-type\n"
21482 " (mcron-configuration\n"
21483 " (jobs (list garbage-collector-job\n"
21484 " updatedb-job\n"
21485 " idutils-job))))\n"
21486 " %base-services)))\n"
21487 msgstr ""
21488
21489 #. type: Plain text
21490 #: doc/guix.texi:12326
21491 msgid "@xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, for more information on mcron job specifications. Below is the reference of the mcron service."
21492 msgstr ""
21493
21494 #. type: Plain text
21495 #: doc/guix.texi:12329
21496 msgid "On a running system, you can use the @code{schedule} action of the service to visualize the mcron jobs that will be executed next:"
21497 msgstr ""
21498
21499 #. type: example
21500 #: doc/guix.texi:12332
21501 #, no-wrap
21502 msgid "# herd schedule mcron\n"
21503 msgstr ""
21504
21505 #. type: Plain text
21506 #: doc/guix.texi:12337
21507 msgid "The example above lists the next five tasks that will be executed, but you can also specify the number of tasks to display:"
21508 msgstr ""
21509
21510 #. type: example
21511 #: doc/guix.texi:12340
21512 #, no-wrap
21513 msgid "# herd schedule mcron 10\n"
21514 msgstr ""
21515
21516 #. type: defvr
21517 #: doc/guix.texi:12342
21518 #, no-wrap
21519 msgid "{Scheme Variable} mcron-service-type"
21520 msgstr ""
21521
21522 #. type: defvr
21523 #: doc/guix.texi:12345
21524 msgid "This is the type of the @code{mcron} service, whose value is an @code{mcron-configuration} object."
21525 msgstr ""
21526
21527 #. type: defvr
21528 #: doc/guix.texi:12350
21529 msgid "This service type can be the target of a service extension that provides it additional job specifications (@pxref{Service Composition}). In other words, it is possible to define services that provide additional mcron jobs to run."
21530 msgstr ""
21531
21532 #. type: deftp
21533 #: doc/guix.texi:12352
21534 #, no-wrap
21535 msgid "{Data Type} mcron-configuration"
21536 msgstr ""
21537
21538 #. type: deftp
21539 #: doc/guix.texi:12354
21540 msgid "Data type representing the configuration of mcron."
21541 msgstr ""
21542
21543 #. type: item
21544 #: doc/guix.texi:12356
21545 #, no-wrap
21546 msgid "@code{mcron} (default: @var{mcron})"
21547 msgstr ""
21548
21549 #. type: table
21550 #: doc/guix.texi:12358
21551 msgid "The mcron package to use."
21552 msgstr ""
21553
21554 #. type: code{#1}
21555 #: doc/guix.texi:12359 doc/guix.texi:12418
21556 #, no-wrap
21557 msgid "jobs"
21558 msgstr ""
21559
21560 #. type: table
21561 #: doc/guix.texi:12363
21562 msgid "This is a list of gexps (@pxref{G-Expressions}), where each gexp corresponds to an mcron job specification (@pxref{Syntax, mcron job specifications,, mcron, GNU@tie{}mcron})."
21563 msgstr ""
21564
21565 #. type: cindex
21566 #: doc/guix.texi:12370
21567 #, no-wrap
21568 msgid "rottlog"
21569 msgstr ""
21570
21571 #. type: cindex
21572 #: doc/guix.texi:12371
21573 #, no-wrap
21574 msgid "log rotation"
21575 msgstr ""
21576
21577 #. type: Plain text
21578 #: doc/guix.texi:12378
21579 msgid "Log files such as those found in @file{/var/log} tend to grow endlessly, so it's a good idea to @dfn{rotate} them once in a while---i.e., archive their contents in separate files, possibly compressed. The @code{(gnu services admin)} module provides an interface to GNU@tie{}Rot[t]log, a log rotation tool (@pxref{Top,,, rottlog, GNU Rot[t]log Manual})."
21580 msgstr ""
21581
21582 #. type: Plain text
21583 #: doc/guix.texi:12381
21584 msgid "The example below defines an operating system that provides log rotation with the default settings, for commonly encountered log files."
21585 msgstr ""
21586
21587 #. type: lisp
21588 #: doc/guix.texi:12386
21589 #, no-wrap
21590 msgid ""
21591 "(use-modules (guix) (gnu))\n"
21592 "(use-service-modules admin mcron)\n"
21593 "(use-package-modules base idutils)\n"
21594 "\n"
21595 msgstr ""
21596
21597 #. type: lisp
21598 #: doc/guix.texi:12391
21599 #, no-wrap
21600 msgid ""
21601 "(operating-system\n"
21602 " ;; @dots{}\n"
21603 " (services (cons (service rottlog-service-type)\n"
21604 " %base-services)))\n"
21605 msgstr ""
21606
21607 #. type: defvr
21608 #: doc/guix.texi:12393
21609 #, no-wrap
21610 msgid "{Scheme Variable} rottlog-service-type"
21611 msgstr ""
21612
21613 #. type: defvr
21614 #: doc/guix.texi:12396
21615 msgid "This is the type of the Rottlog service, whose value is a @code{rottlog-configuration} object."
21616 msgstr ""
21617
21618 #. type: defvr
21619 #: doc/guix.texi:12399
21620 msgid "Other services can extend this one with new @code{log-rotation} objects (see below), thereby augmenting the set of files to be rotated."
21621 msgstr ""
21622
21623 #. type: defvr
21624 #: doc/guix.texi:12402
21625 msgid "This service type can define mcron jobs (@pxref{Scheduled Job Execution}) to run the rottlog service."
21626 msgstr ""
21627
21628 #. type: deftp
21629 #: doc/guix.texi:12404
21630 #, no-wrap
21631 msgid "{Data Type} rottlog-configuration"
21632 msgstr ""
21633
21634 #. type: deftp
21635 #: doc/guix.texi:12406
21636 msgid "Data type representing the configuration of rottlog."
21637 msgstr ""
21638
21639 #. type: item
21640 #: doc/guix.texi:12408
21641 #, no-wrap
21642 msgid "@code{rottlog} (default: @code{rottlog})"
21643 msgstr ""
21644
21645 #. type: table
21646 #: doc/guix.texi:12410
21647 msgid "The Rottlog package to use."
21648 msgstr ""
21649
21650 #. type: item
21651 #: doc/guix.texi:12411
21652 #, no-wrap
21653 msgid "@code{rc-file} (default: @code{(file-append rottlog \"/etc/rc\")})"
21654 msgstr ""
21655
21656 #. type: table
21657 #: doc/guix.texi:12414
21658 msgid "The Rottlog configuration file to use (@pxref{Mandatory RC Variables,,, rottlog, GNU Rot[t]log Manual})."
21659 msgstr ""
21660
21661 #. type: item
21662 #: doc/guix.texi:12415
21663 #, no-wrap
21664 msgid "@code{rotations} (default: @code{%default-rotations})"
21665 msgstr ""
21666
21667 #. type: table
21668 #: doc/guix.texi:12417
21669 msgid "A list of @code{log-rotation} objects as defined below."
21670 msgstr ""
21671
21672 #. type: table
21673 #: doc/guix.texi:12421
21674 msgid "This is a list of gexps where each gexp corresponds to an mcron job specification (@pxref{Scheduled Job Execution})."
21675 msgstr ""
21676
21677 #. type: deftp
21678 #: doc/guix.texi:12424
21679 #, no-wrap
21680 msgid "{Data Type} log-rotation"
21681 msgstr ""
21682
21683 #. type: deftp
21684 #: doc/guix.texi:12426
21685 msgid "Data type representing the rotation of a group of log files."
21686 msgstr ""
21687
21688 #. type: deftp
21689 #: doc/guix.texi:12430
21690 msgid "Taking an example from the Rottlog manual (@pxref{Period Related File Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be defined like this:"
21691 msgstr ""
21692
21693 #. type: example
21694 #: doc/guix.texi:12439
21695 #, no-wrap
21696 msgid ""
21697 "(log-rotation\n"
21698 " (frequency 'daily)\n"
21699 " (files '(\"/var/log/apache/*\"))\n"
21700 " (options '(\"storedir apache-archives\"\n"
21701 " \"rotate 6\"\n"
21702 " \"notifempty\"\n"
21703 " \"nocompress\")))\n"
21704 msgstr ""
21705
21706 #. type: deftp
21707 #: doc/guix.texi:12442
21708 msgid "The list of fields is as follows:"
21709 msgstr ""
21710
21711 #. type: item
21712 #: doc/guix.texi:12444
21713 #, no-wrap
21714 msgid "@code{frequency} (default: @code{'weekly})"
21715 msgstr ""
21716
21717 #. type: table
21718 #: doc/guix.texi:12446
21719 msgid "The log rotation frequency, a symbol."
21720 msgstr ""
21721
21722 #. type: code{#1}
21723 #: doc/guix.texi:12447
21724 #, no-wrap
21725 msgid "files"
21726 msgstr ""
21727
21728 #. type: table
21729 #: doc/guix.texi:12449
21730 msgid "The list of files or file glob patterns to rotate."
21731 msgstr ""
21732
21733 #. type: item
21734 #: doc/guix.texi:12450
21735 #, no-wrap
21736 msgid "@code{options} (default: @code{'()})"
21737 msgstr ""
21738
21739 #. type: table
21740 #: doc/guix.texi:12453
21741 msgid "The list of rottlog options for this rotation (@pxref{Configuration parameters,,, rottlog, GNU Rot[t]lg Manual})."
21742 msgstr ""
21743
21744 #. type: item
21745 #: doc/guix.texi:12454
21746 #, no-wrap
21747 msgid "@code{post-rotate} (default: @code{#f})"
21748 msgstr ""
21749
21750 #. type: table
21751 #: doc/guix.texi:12456
21752 msgid "Either @code{#f} or a gexp to execute once the rotation has completed."
21753 msgstr ""
21754
21755 #. type: defvr
21756 #: doc/guix.texi:12459
21757 #, no-wrap
21758 msgid "{Scheme Variable} %default-rotations"
21759 msgstr ""
21760
21761 #. type: defvr
21762 #: doc/guix.texi:12462
21763 msgid "Specifies weekly rotation of @var{%rotated-files} and a couple of other files."
21764 msgstr ""
21765
21766 #. type: defvr
21767 #: doc/guix.texi:12464
21768 #, no-wrap
21769 msgid "{Scheme Variable} %rotated-files"
21770 msgstr ""
21771
21772 #. type: defvr
21773 #: doc/guix.texi:12467
21774 msgid "The list of syslog-controlled files to be rotated. By default it is: @code{'(\"/var/log/messages\" \"/var/log/secure\")}."
21775 msgstr ""
21776
21777 #. type: Plain text
21778 #: doc/guix.texi:12474
21779 msgid "The @code{(gnu services networking)} module provides services to configure the network interface."
21780 msgstr ""
21781
21782 #. type: cindex
21783 #: doc/guix.texi:12475
21784 #, no-wrap
21785 msgid "DHCP, networking service"
21786 msgstr ""
21787
21788 #. type: defvr
21789 #: doc/guix.texi:12476
21790 #, no-wrap
21791 msgid "{Scheme Variable} dhcp-client-service-type"
21792 msgstr ""
21793
21794 #. type: defvr
21795 #: doc/guix.texi:12480
21796 msgid "This is the type of services that run @var{dhcp}, a Dynamic Host Configuration Protocol (DHCP) client, on all the non-loopback network interfaces. Its value is the DHCP client package to use, @code{isc-dhcp} by default."
21797 msgstr ""
21798
21799 #. type: deffn
21800 #: doc/guix.texi:12482
21801 #, no-wrap
21802 msgid "{Scheme Procedure} dhcpd-service-type"
21803 msgstr ""
21804
21805 #. type: deffn
21806 #: doc/guix.texi:12486
21807 msgid "This type defines a service that runs a DHCP daemon. To create a service of this type, you must supply a @code{<dhcpd-configuration>}. For example:"
21808 msgstr ""
21809
21810 #. type: example
21811 #: doc/guix.texi:12492
21812 #, no-wrap
21813 msgid ""
21814 "(service dhcpd-service-type\n"
21815 " (dhcpd-configuration\n"
21816 " (config-file (local-file \"my-dhcpd.conf\"))\n"
21817 " (interfaces '(\"enp0s25\"))))\n"
21818 msgstr ""
21819
21820 #. type: deftp
21821 #: doc/guix.texi:12495
21822 #, no-wrap
21823 msgid "{Data Type} dhcpd-configuration"
21824 msgstr ""
21825
21826 #. type: item
21827 #: doc/guix.texi:12497
21828 #, no-wrap
21829 msgid "@code{package} (default: @code{isc-dhcp})"
21830 msgstr ""
21831
21832 #. type: table
21833 #: doc/guix.texi:12502
21834 msgid "The package that provides the DHCP daemon. This package is expected to provide the daemon at @file{sbin/dhcpd} relative to its output directory. The default package is the @uref{https://www.isc.org/products/DHCP, ISC's DHCP server}."
21835 msgstr ""
21836
21837 #. type: item
21838 #: doc/guix.texi:12502 doc/guix.texi:12691 doc/guix.texi:16678
21839 #, no-wrap
21840 msgid "@code{config-file} (default: @code{#f})"
21841 msgstr ""
21842
21843 #. type: table
21844 #: doc/guix.texi:12507
21845 msgid "The configuration file to use. This is required. It will be passed to @code{dhcpd} via its @code{-cf} option. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}). See @code{man dhcpd.conf} for details on the configuration file syntax."
21846 msgstr ""
21847
21848 #. type: item
21849 #: doc/guix.texi:12507
21850 #, no-wrap
21851 msgid "@code{version} (default: @code{\"4\"})"
21852 msgstr ""
21853
21854 #. type: table
21855 #: doc/guix.texi:12512
21856 msgid "The DHCP version to use. The ISC DHCP server supports the values ``4'', ``6'', and ``4o6''. These correspond to the @code{dhcpd} program options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for details."
21857 msgstr ""
21858
21859 #. type: item
21860 #: doc/guix.texi:12512
21861 #, no-wrap
21862 msgid "@code{run-directory} (default: @code{\"/run/dhcpd\"})"
21863 msgstr ""
21864
21865 #. type: table
21866 #: doc/guix.texi:12515
21867 msgid "The run directory to use. At service activation time, this directory will be created if it does not exist."
21868 msgstr ""
21869
21870 #. type: item
21871 #: doc/guix.texi:12515
21872 #, no-wrap
21873 msgid "@code{pid-file} (default: @code{\"/run/dhcpd/dhcpd.pid\"})"
21874 msgstr ""
21875
21876 #. type: table
21877 #: doc/guix.texi:12518
21878 msgid "The PID file to use. This corresponds to the @code{-pf} option of @code{dhcpd}. See @code{man dhcpd} for details."
21879 msgstr ""
21880
21881 #. type: item
21882 #: doc/guix.texi:12518
21883 #, no-wrap
21884 msgid "@code{interfaces} (default: @code{'()})"
21885 msgstr ""
21886
21887 #. type: table
21888 #: doc/guix.texi:12524
21889 msgid "The names of the network interfaces on which dhcpd should listen for broadcasts. If this list is not empty, then its elements (which must be strings) will be appended to the @code{dhcpd} invocation when starting the daemon. It may not be necessary to explicitly specify any interfaces here; see @code{man dhcpd} for details."
21890 msgstr ""
21891
21892 #. type: defvr
21893 #: doc/guix.texi:12527
21894 #, no-wrap
21895 msgid "{Scheme Variable} static-networking-service-type"
21896 msgstr ""
21897
21898 #. type: defvr
21899 #: doc/guix.texi:12530
21900 msgid "This is the type for statically-configured network interfaces."
21901 msgstr ""
21902
21903 #. type: deffn
21904 #: doc/guix.texi:12532
21905 #, no-wrap
21906 msgid "{Scheme Procedure} static-networking-service @var{interface} @var{ip} @"
21907 msgstr ""
21908
21909 #. type: deffn
21910 #: doc/guix.texi:12540
21911 msgid "[#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @ [#:requirement @code{'(udev)}] Return a service that starts @var{interface} with address @var{ip}. If @var{netmask} is true, use it as the network mask. If @var{gateway} is true, it must be a string specifying the default network gateway. @var{requirement} can be used to declare a dependency on another service before configuring the interface."
21912 msgstr ""
21913
21914 #. type: deffn
21915 #: doc/guix.texi:12545
21916 msgid "This procedure can be called several times, one for each network interface of interest. Behind the scenes what it does is extend @code{static-networking-service-type} with additional network interfaces to handle."
21917 msgstr ""
21918
21919 #. type: deffn
21920 #: doc/guix.texi:12547
21921 msgid "For example:"
21922 msgstr ""
21923
21924 #. type: example
21925 #: doc/guix.texi:12552
21926 #, no-wrap
21927 msgid ""
21928 "(static-networking-service \"eno1\" \"192.168.1.82\"\n"
21929 " #:gateway \"192.168.1.2\"\n"
21930 " #:name-servers '(\"192.168.1.2\"))\n"
21931 msgstr ""
21932
21933 #. type: cindex
21934 #: doc/guix.texi:12555
21935 #, no-wrap
21936 msgid "wicd"
21937 msgstr ""
21938
21939 #. type: cindex
21940 #: doc/guix.texi:12558
21941 #, no-wrap
21942 msgid "network management"
21943 msgstr ""
21944
21945 #. type: deffn
21946 #: doc/guix.texi:12559
21947 #, no-wrap
21948 msgid "{Scheme Procedure} wicd-service [#:wicd @var{wicd}]"
21949 msgstr ""
21950
21951 #. type: deffn
21952 #: doc/guix.texi:12562
21953 msgid "Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network management daemon that aims to simplify wired and wireless networking."
21954 msgstr ""
21955
21956 #. type: deffn
21957 #: doc/guix.texi:12567
21958 msgid "This service adds the @var{wicd} package to the global profile, providing several commands to interact with the daemon and configure networking: @command{wicd-client}, a graphical user interface, and the @command{wicd-cli} and @command{wicd-curses} user interfaces."
21959 msgstr ""
21960
21961 #. type: cindex
21962 #: doc/guix.texi:12569
21963 #, no-wrap
21964 msgid "ModemManager"
21965 msgstr ""
21966
21967 #. type: defvr
21968 #: doc/guix.texi:12571
21969 #, no-wrap
21970 msgid "{Scheme Variable} modem-manager-service-type"
21971 msgstr ""
21972
21973 #. type: defvr
21974 #: doc/guix.texi:12576
21975 msgid "This is the service type for the @uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager} service. The value for this service type is a @code{modem-manager-configuration} record."
21976 msgstr ""
21977
21978 #. type: defvr
21979 #: doc/guix.texi:12579 doc/guix.texi:12601
21980 msgid "This service is part of @code{%desktop-services} (@pxref{Desktop Services})."
21981 msgstr ""
21982
21983 #. type: deftp
21984 #: doc/guix.texi:12581
21985 #, no-wrap
21986 msgid "{Data Type} modem-manager-configuration"
21987 msgstr ""
21988
21989 #. type: deftp
21990 #: doc/guix.texi:12583
21991 msgid "Data type representing the configuration of ModemManager."
21992 msgstr ""
21993
21994 #. type: item
21995 #: doc/guix.texi:12585
21996 #, no-wrap
21997 msgid "@code{modem-manager} (default: @code{modem-manager})"
21998 msgstr ""
21999
22000 #. type: table
22001 #: doc/guix.texi:12587
22002 msgid "The ModemManager package to use."
22003 msgstr ""
22004
22005 #. type: cindex
22006 #: doc/guix.texi:12591
22007 #, no-wrap
22008 msgid "NetworkManager"
22009 msgstr ""
22010
22011 #. type: defvr
22012 #: doc/guix.texi:12593
22013 #, no-wrap
22014 msgid "{Scheme Variable} network-manager-service-type"
22015 msgstr ""
22016
22017 #. type: defvr
22018 #: doc/guix.texi:12598
22019 msgid "This is the service type for the @uref{https://wiki.gnome.org/Projects/NetworkManager, NetworkManager} service. The value for this service type is a @code{network-manager-configuration} record."
22020 msgstr ""
22021
22022 #. type: deftp
22023 #: doc/guix.texi:12603
22024 #, no-wrap
22025 msgid "{Data Type} network-manager-configuration"
22026 msgstr ""
22027
22028 #. type: deftp
22029 #: doc/guix.texi:12605
22030 msgid "Data type representing the configuration of NetworkManager."
22031 msgstr ""
22032
22033 #. type: item
22034 #: doc/guix.texi:12607
22035 #, no-wrap
22036 msgid "@code{network-manager} (default: @code{network-manager})"
22037 msgstr ""
22038
22039 #. type: table
22040 #: doc/guix.texi:12609
22041 msgid "The NetworkManager package to use."
22042 msgstr ""
22043
22044 #. type: item
22045 #: doc/guix.texi:12610
22046 #, no-wrap
22047 msgid "@code{dns} (default: @code{\"default\"})"
22048 msgstr ""
22049
22050 #. type: table
22051 #: doc/guix.texi:12613
22052 msgid "Processing mode for DNS, which affects how NetworkManager uses the @code{resolv.conf} configuration file."
22053 msgstr ""
22054
22055 #. type: item
22056 #: doc/guix.texi:12615
22057 #, no-wrap
22058 msgid "default"
22059 msgstr ""
22060
22061 #. type: table
22062 #: doc/guix.texi:12618
22063 msgid "NetworkManager will update @code{resolv.conf} to reflect the nameservers provided by currently active connections."
22064 msgstr ""
22065
22066 #. type: item
22067 #: doc/guix.texi:12619
22068 #, no-wrap
22069 msgid "dnsmasq"
22070 msgstr ""
22071
22072 #. type: table
22073 #: doc/guix.texi:12623
22074 msgid "NetworkManager will run @code{dnsmasq} as a local caching nameserver, using a \"split DNS\" configuration if you are connected to a VPN, and then update @code{resolv.conf} to point to the local nameserver."
22075 msgstr ""
22076
22077 #. type: item
22078 #: doc/guix.texi:12624 doc/guix.texi:13884
22079 #, no-wrap
22080 msgid "none"
22081 msgstr ""
22082
22083 #. type: table
22084 #: doc/guix.texi:12626
22085 msgid "NetworkManager will not modify @code{resolv.conf}."
22086 msgstr ""
22087
22088 #. type: item
22089 #: doc/guix.texi:12628
22090 #, no-wrap
22091 msgid "@code{vpn-plugins} (default: @code{'()})"
22092 msgstr ""
22093
22094 #. type: table
22095 #: doc/guix.texi:12632
22096 msgid "This is the list of available plugins for virtual private networks (VPNs). An example of this is the @code{network-manager-openvpn} package, which allows NetworkManager to manage VPNs @i{via} OpenVPN."
22097 msgstr ""
22098
22099 #. type: cindex
22100 #: doc/guix.texi:12636
22101 #, no-wrap
22102 msgid "Connman"
22103 msgstr ""
22104
22105 #. type: deffn
22106 #: doc/guix.texi:12637
22107 #, no-wrap
22108 msgid "{Scheme Variable} connman-service-type"
22109 msgstr ""
22110
22111 #. type: deffn
22112 #: doc/guix.texi:12640
22113 msgid "This is the service type to run @url{https://01.org/connman,Connman}, a network connection manager."
22114 msgstr ""
22115
22116 #. type: deffn
22117 #: doc/guix.texi:12643
22118 msgid "Its value must be an @code{connman-configuration} record as in this example:"
22119 msgstr ""
22120
22121 #. type: example
22122 #: doc/guix.texi:12648
22123 #, no-wrap
22124 msgid ""
22125 "(service connman-service-type\n"
22126 " (connman-configuration\n"
22127 " (disable-vpn? #t)))\n"
22128 msgstr ""
22129
22130 #. type: deffn
22131 #: doc/guix.texi:12651
22132 msgid "See below for details about @code{connman-configuration}."
22133 msgstr ""
22134
22135 #. type: deftp
22136 #: doc/guix.texi:12653
22137 #, no-wrap
22138 msgid "{Data Type} connman-configuration"
22139 msgstr ""
22140
22141 #. type: deftp
22142 #: doc/guix.texi:12655
22143 msgid "Data Type representing the configuration of connman."
22144 msgstr ""
22145
22146 #. type: item
22147 #: doc/guix.texi:12657
22148 #, no-wrap
22149 msgid "@code{connman} (default: @var{connman})"
22150 msgstr ""
22151
22152 #. type: table
22153 #: doc/guix.texi:12659
22154 msgid "The connman package to use."
22155 msgstr ""
22156
22157 #. type: item
22158 #: doc/guix.texi:12660
22159 #, no-wrap
22160 msgid "@code{disable-vpn?} (default: @code{#f})"
22161 msgstr ""
22162
22163 #. type: table
22164 #: doc/guix.texi:12662
22165 msgid "When true, disable connman's vpn plugin."
22166 msgstr ""
22167
22168 #. type: cindex
22169 #: doc/guix.texi:12665
22170 #, no-wrap
22171 msgid "WPA Supplicant"
22172 msgstr ""
22173
22174 #. type: defvr
22175 #: doc/guix.texi:12666
22176 #, no-wrap
22177 msgid "{Scheme Variable} wpa-supplicant-service-type"
22178 msgstr ""
22179
22180 #. type: defvr
22181 #: doc/guix.texi:12670
22182 msgid "This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA supplicant}, an authentication daemon required to authenticate against encrypted WiFi or ethernet networks."
22183 msgstr ""
22184
22185 #. type: deftp
22186 #: doc/guix.texi:12672
22187 #, no-wrap
22188 msgid "{Data Type} wpa-supplicant-configuration"
22189 msgstr ""
22190
22191 #. type: deftp
22192 #: doc/guix.texi:12674
22193 msgid "Data type representing the configuration of WPA Supplicant."
22194 msgstr ""
22195
22196 #. type: deftp
22197 #: doc/guix.texi:12676
22198 msgid "It takes the following parameters:"
22199 msgstr ""
22200
22201 #. type: item
22202 #: doc/guix.texi:12678
22203 #, no-wrap
22204 msgid "@code{wpa-supplicant} (default: @code{wpa-supplicant})"
22205 msgstr ""
22206
22207 #. type: table
22208 #: doc/guix.texi:12680
22209 msgid "The WPA Supplicant package to use."
22210 msgstr ""
22211
22212 #. type: item
22213 #: doc/guix.texi:12681
22214 #, no-wrap
22215 msgid "@code{dbus?} (default: @code{#t})"
22216 msgstr ""
22217
22218 #. type: table
22219 #: doc/guix.texi:12683
22220 msgid "Whether to listen for requests on D-Bus."
22221 msgstr ""
22222
22223 #. type: item
22224 #: doc/guix.texi:12684
22225 #, no-wrap
22226 msgid "@code{pid-file} (default: @code{\"/var/run/wpa_supplicant.pid\"})"
22227 msgstr ""
22228
22229 #. type: table
22230 #: doc/guix.texi:12686
22231 msgid "Where to store the PID file."
22232 msgstr ""
22233
22234 #. type: item
22235 #: doc/guix.texi:12687
22236 #, no-wrap
22237 msgid "@code{interface} (default: @code{#f})"
22238 msgstr ""
22239
22240 #. type: table
22241 #: doc/guix.texi:12690
22242 msgid "If this is set, it must specify the name of a network interface that WPA supplicant will control."
22243 msgstr ""
22244
22245 #. type: table
22246 #: doc/guix.texi:12693
22247 msgid "Optional configuration file to use."
22248 msgstr ""
22249
22250 #. type: table
22251 #: doc/guix.texi:12696
22252 msgid "List of additional command-line arguments to pass to the daemon."
22253 msgstr ""
22254
22255 #. type: cindex
22256 #: doc/guix.texi:12699
22257 #, no-wrap
22258 msgid "iptables"
22259 msgstr ""
22260
22261 #. type: defvr
22262 #: doc/guix.texi:12700
22263 #, no-wrap
22264 msgid "{Scheme Variable} iptables-service-type"
22265 msgstr ""
22266
22267 #. type: defvr
22268 #: doc/guix.texi:12706
22269 msgid "This is the service type to set up an iptables configuration. iptables is a packet filtering framework supported by the Linux kernel. This service supports configuring iptables for both IPv4 and IPv6. A simple example configuration rejecting all incoming connections except those to the ssh port 22 is shown below."
22270 msgstr ""
22271
22272 #. type: lisp
22273 #: doc/guix.texi:12726
22274 #, no-wrap
22275 msgid ""
22276 "(service iptables-service-type\n"
22277 " (iptables-configuration\n"
22278 " (ipv4-rules (plain-file \"iptables.rules\" \"*filter\n"
22279 ":INPUT ACCEPT\n"
22280 ":FORWARD ACCEPT\n"
22281 ":OUTPUT ACCEPT\n"
22282 "-A INPUT -p tcp --dport 22 -j ACCEPT\n"
22283 "-A INPUT -j REJECT --reject-with icmp-port-unreachable\n"
22284 "COMMIT\n"
22285 "\"))\n"
22286 " (ipv6-rules (plain-file \"ip6tables.rules\" \"*filter\n"
22287 ":INPUT ACCEPT\n"
22288 ":FORWARD ACCEPT\n"
22289 ":OUTPUT ACCEPT\n"
22290 "-A INPUT -p tcp --dport 22 -j ACCEPT\n"
22291 "-A INPUT -j REJECT --reject-with icmp6-port-unreachable\n"
22292 "COMMIT\n"
22293 "\"))))\n"
22294 msgstr ""
22295
22296 #. type: deftp
22297 #: doc/guix.texi:12729
22298 #, no-wrap
22299 msgid "{Data Type} iptables-configuration"
22300 msgstr ""
22301
22302 #. type: deftp
22303 #: doc/guix.texi:12731
22304 msgid "The data type representing the configuration of iptables."
22305 msgstr ""
22306
22307 #. type: item
22308 #: doc/guix.texi:12733
22309 #, no-wrap
22310 msgid "@code{iptables} (default: @code{iptables})"
22311 msgstr ""
22312
22313 #. type: table
22314 #: doc/guix.texi:12736
22315 msgid "The iptables package that provides @code{iptables-restore} and @code{ip6tables-restore}."
22316 msgstr ""
22317
22318 #. type: item
22319 #: doc/guix.texi:12736
22320 #, no-wrap
22321 msgid "@code{ipv4-rules} (default: @code{%iptables-accept-all-rules})"
22322 msgstr ""
22323
22324 #. type: table
22325 #: doc/guix.texi:12740
22326 msgid "The iptables rules to use. It will be passed to @code{iptables-restore}. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects})."
22327 msgstr ""
22328
22329 #. type: item
22330 #: doc/guix.texi:12740
22331 #, no-wrap
22332 msgid "@code{ipv6-rules} (default: @code{%iptables-accept-all-rules})"
22333 msgstr ""
22334
22335 #. type: table
22336 #: doc/guix.texi:12744
22337 msgid "The ip6tables rules to use. It will be passed to @code{ip6tables-restore}. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects})."
22338 msgstr ""
22339
22340 #. type: cindex
22341 #: doc/guix.texi:12747
22342 #, no-wrap
22343 msgid "NTP (Network Time Protocol), service"
22344 msgstr ""
22345
22346 #. type: cindex
22347 #: doc/guix.texi:12748
22348 #, no-wrap
22349 msgid "real time clock"
22350 msgstr ""
22351
22352 #. type: defvr
22353 #: doc/guix.texi:12749
22354 #, no-wrap
22355 msgid "{Scheme Variable} ntp-service-type"
22356 msgstr ""
22357
22358 #. type: defvr
22359 #: doc/guix.texi:12753
22360 msgid "This is the type of the service running the @uref{http://www.ntp.org, Network Time Protocol (NTP)} daemon, @command{ntpd}. The daemon will keep the system clock synchronized with that of the specified NTP servers."
22361 msgstr ""
22362
22363 #. type: defvr
22364 #: doc/guix.texi:12756
22365 msgid "The value of this service is an @code{ntpd-configuration} object, as described below."
22366 msgstr ""
22367
22368 #. type: deftp
22369 #: doc/guix.texi:12758
22370 #, no-wrap
22371 msgid "{Data Type} ntp-configuration"
22372 msgstr ""
22373
22374 #. type: deftp
22375 #: doc/guix.texi:12760
22376 msgid "This is the data type for the NTP service configuration."
22377 msgstr ""
22378
22379 #. type: item
22380 #: doc/guix.texi:12762
22381 #, no-wrap
22382 msgid "@code{servers} (default: @code{%ntp-servers})"
22383 msgstr ""
22384
22385 #. type: table
22386 #: doc/guix.texi:12765
22387 msgid "This is the list of servers (host names) with which @command{ntpd} will be synchronized."
22388 msgstr ""
22389
22390 #. type: item
22391 #: doc/guix.texi:12766 doc/guix.texi:12827
22392 #, no-wrap
22393 msgid "@code{allow-large-adjustment?} (default: @code{#f})"
22394 msgstr ""
22395
22396 #. type: table
22397 #: doc/guix.texi:12769
22398 msgid "This determines whether @command{ntpd} is allowed to make an initial adjustment of more than 1,000 seconds."
22399 msgstr ""
22400
22401 #. type: item
22402 #: doc/guix.texi:12770
22403 #, no-wrap
22404 msgid "@code{ntp} (default: @code{ntp})"
22405 msgstr ""
22406
22407 #. type: table
22408 #: doc/guix.texi:12772
22409 msgid "The NTP package to use."
22410 msgstr ""
22411
22412 #. type: defvr
22413 #: doc/guix.texi:12775
22414 #, no-wrap
22415 msgid "{Scheme Variable} %ntp-servers"
22416 msgstr ""
22417
22418 #. type: defvr
22419 #: doc/guix.texi:12778
22420 msgid "List of host names used as the default NTP servers. These are servers of the @uref{https://www.ntppool.org/en/, NTP Pool Project}."
22421 msgstr ""
22422
22423 #. type: cindex
22424 #: doc/guix.texi:12780
22425 #, no-wrap
22426 msgid "OpenNTPD"
22427 msgstr ""
22428
22429 #. type: deffn
22430 #: doc/guix.texi:12781
22431 #, no-wrap
22432 msgid "{Scheme Procedure} openntpd-service-type"
22433 msgstr ""
22434
22435 #. type: deffn
22436 #: doc/guix.texi:12785
22437 msgid "Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as implemented by @uref{http://www.openntpd.org, OpenNTPD}. The daemon will keep the system clock synchronized with that of the given servers."
22438 msgstr ""
22439
22440 #. type: example
22441 #: doc/guix.texi:12795
22442 #, no-wrap
22443 msgid ""
22444 "(service\n"
22445 " openntpd-service-type\n"
22446 " (openntpd-configuration\n"
22447 " (listen-on '(\"127.0.0.1\" \"::1\"))\n"
22448 " (sensor '(\"udcf0 correction 70000\"))\n"
22449 " (constraint-from '(\"www.gnu.org\"))\n"
22450 " (constraints-from '(\"https://www.google.com/\"))\n"
22451 " (allow-large-adjustment? #t)))\n"
22452 "\n"
22453 msgstr ""
22454
22455 #. type: deftp
22456 #: doc/guix.texi:12799
22457 #, no-wrap
22458 msgid "{Data Type} openntpd-configuration"
22459 msgstr ""
22460
22461 #. type: item
22462 #: doc/guix.texi:12801
22463 #, no-wrap
22464 msgid "@code{openntpd} (default: @code{(file-append openntpd \"/sbin/ntpd\")})"
22465 msgstr ""
22466
22467 #. type: table
22468 #: doc/guix.texi:12803
22469 msgid "The openntpd executable to use."
22470 msgstr ""
22471
22472 #. type: item
22473 #: doc/guix.texi:12803
22474 #, no-wrap
22475 msgid "@code{listen-on} (default: @code{'(\"127.0.0.1\" \"::1\")})"
22476 msgstr ""
22477
22478 #. type: table
22479 #: doc/guix.texi:12805
22480 msgid "A list of local IP addresses or hostnames the ntpd daemon should listen on."
22481 msgstr ""
22482
22483 #. type: item
22484 #: doc/guix.texi:12805
22485 #, no-wrap
22486 msgid "@code{query-from} (default: @code{'()})"
22487 msgstr ""
22488
22489 #. type: table
22490 #: doc/guix.texi:12807
22491 msgid "A list of local IP address the ntpd daemon should use for outgoing queries."
22492 msgstr ""
22493
22494 #. type: item
22495 #: doc/guix.texi:12807
22496 #, no-wrap
22497 msgid "@code{sensor} (default: @code{'()})"
22498 msgstr ""
22499
22500 #. type: table
22501 #: doc/guix.texi:12812
22502 msgid "Specify a list of timedelta sensor devices ntpd should use. @code{ntpd} will listen to each sensor that actually exists and ignore non-existent ones. See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} for more information."
22503 msgstr ""
22504
22505 #. type: item
22506 #: doc/guix.texi:12812
22507 #, no-wrap
22508 msgid "@code{server} (default: @var{%ntp-servers})"
22509 msgstr ""
22510
22511 #. type: table
22512 #: doc/guix.texi:12814
22513 msgid "Specify a list of IP addresses or hostnames of NTP servers to synchronize to."
22514 msgstr ""
22515
22516 #. type: item
22517 #: doc/guix.texi:12814 doc/guix.texi:20029
22518 #, no-wrap
22519 msgid "@code{servers} (default: @code{'()})"
22520 msgstr ""
22521
22522 #. type: table
22523 #: doc/guix.texi:12816
22524 msgid "Specify a list of IP addresses or hostnames of NTP pools to synchronize to."
22525 msgstr ""
22526
22527 #. type: item
22528 #: doc/guix.texi:12816
22529 #, no-wrap
22530 msgid "@code{constraint-from} (default: @code{'()})"
22531 msgstr ""
22532
22533 #. type: table
22534 #: doc/guix.texi:12823
22535 msgid "@code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS. This time information is not used for precision but acts as an authenticated constraint, thereby reducing the impact of unauthenticated NTP man-in-the-middle attacks. Specify a list of URLs, IP addresses or hostnames of HTTPS servers to provide a constraint."
22536 msgstr ""
22537
22538 #. type: item
22539 #: doc/guix.texi:12823
22540 #, no-wrap
22541 msgid "@code{constraints-from} (default: @code{'()})"
22542 msgstr ""
22543
22544 #. type: table
22545 #: doc/guix.texi:12827
22546 msgid "As with constraint from, specify a list of URLs, IP addresses or hostnames of HTTPS servers to provide a constraint. Should the hostname resolve to multiple IP addresses, @code{ntpd} will calculate a median constraint from all of them."
22547 msgstr ""
22548
22549 #. type: table
22550 #: doc/guix.texi:12830
22551 msgid "Determines if @code{ntpd} is allowed to make an initial adjustment of more than 180 seconds."
22552 msgstr ""
22553
22554 #. type: cindex
22555 #: doc/guix.texi:12833
22556 #, no-wrap
22557 msgid "inetd"
22558 msgstr ""
22559
22560 #. type: deffn
22561 #: doc/guix.texi:12834
22562 #, no-wrap
22563 msgid "{Scheme variable} inetd-service-type"
22564 msgstr ""
22565
22566 #. type: deffn
22567 #: doc/guix.texi:12839
22568 msgid "This service runs the @command{inetd} (@pxref{inetd invocation,,, inetutils, GNU Inetutils}) daemon. @command{inetd} listens for connections on internet sockets, and lazily starts the specified server program when a connection is made on one of these sockets."
22569 msgstr ""
22570
22571 #. type: deffn
22572 #: doc/guix.texi:12845
22573 msgid "The value of this service is an @code{inetd-configuration} object. The following example configures the @command{inetd} daemon to provide the built-in @command{echo} service, as well as an smtp service which forwards smtp traffic over ssh to a server @code{smtp-server} behind a gateway @code{hostname}:"
22574 msgstr ""
22575
22576 #. type: example
22577 #: doc/guix.texi:12868
22578 #, no-wrap
22579 msgid ""
22580 "(service\n"
22581 " inetd-service-type\n"
22582 " (inetd-configuration\n"
22583 " (entries (list\n"
22584 " (inetd-entry\n"
22585 " (name \"echo\")\n"
22586 " (socket-type 'stream)\n"
22587 " (protocol \"tcp\")\n"
22588 " (wait? #f)\n"
22589 " (user \"root\"))\n"
22590 " (inetd-entry\n"
22591 " (node \"127.0.0.1\")\n"
22592 " (name \"smtp\")\n"
22593 " (socket-type 'stream)\n"
22594 " (protocol \"tcp\")\n"
22595 " (wait? #f)\n"
22596 " (user \"root\")\n"
22597 " (program (file-append openssh \"/bin/ssh\"))\n"
22598 " (arguments\n"
22599 " '(\"ssh\" \"-qT\" \"-i\" \"/path/to/ssh_key\"\n"
22600 " \"-W\" \"smtp-server:25\" \"user@@hostname\")))))\n"
22601 msgstr ""
22602
22603 #. type: deffn
22604 #: doc/guix.texi:12871
22605 msgid "See below for more details about @code{inetd-configuration}."
22606 msgstr ""
22607
22608 #. type: deftp
22609 #: doc/guix.texi:12873
22610 #, no-wrap
22611 msgid "{Data Type} inetd-configuration"
22612 msgstr ""
22613
22614 #. type: deftp
22615 #: doc/guix.texi:12875
22616 msgid "Data type representing the configuration of @command{inetd}."
22617 msgstr ""
22618
22619 #. type: item
22620 #: doc/guix.texi:12877
22621 #, no-wrap
22622 msgid "@code{program} (default: @code{(file-append inetutils \"/libexec/inetd\")})"
22623 msgstr ""
22624
22625 #. type: table
22626 #: doc/guix.texi:12879
22627 msgid "The @command{inetd} executable to use."
22628 msgstr ""
22629
22630 #. type: item
22631 #: doc/guix.texi:12880 doc/guix.texi:19683
22632 #, no-wrap
22633 msgid "@code{entries} (default: @code{'()})"
22634 msgstr ""
22635
22636 #. type: table
22637 #: doc/guix.texi:12883
22638 msgid "A list of @command{inetd} service entries. Each entry should be created by the @code{inetd-entry} constructor."
22639 msgstr ""
22640
22641 #. type: deftp
22642 #: doc/guix.texi:12886
22643 #, no-wrap
22644 msgid "{Data Type} inetd-entry"
22645 msgstr ""
22646
22647 #. type: deftp
22648 #: doc/guix.texi:12890
22649 msgid "Data type representing an entry in the @command{inetd} configuration. Each entry corresponds to a socket where @command{inetd} will listen for requests."
22650 msgstr ""
22651
22652 #. type: item
22653 #: doc/guix.texi:12892
22654 #, no-wrap
22655 msgid "@code{node} (default: @code{#f})"
22656 msgstr ""
22657
22658 #. type: table
22659 #: doc/guix.texi:12897
22660 msgid "Optional string, a comma-separated list of local addresses @command{inetd} should use when listening for this service. @xref{Configuration file,,, inetutils, GNU Inetutils} for a complete description of all options."
22661 msgstr ""
22662
22663 #. type: table
22664 #: doc/guix.texi:12899
22665 msgid "A string, the name must correspond to an entry in @code{/etc/services}."
22666 msgstr ""
22667
22668 #. type: code{#1}
22669 #: doc/guix.texi:12899
22670 #, no-wrap
22671 msgid "socket-type"
22672 msgstr ""
22673
22674 #. type: table
22675 #: doc/guix.texi:12902
22676 msgid "One of @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} or @code{'seqpacket}."
22677 msgstr ""
22678
22679 #. type: code{#1}
22680 #: doc/guix.texi:12902
22681 #, no-wrap
22682 msgid "protocol"
22683 msgstr ""
22684
22685 #. type: table
22686 #: doc/guix.texi:12904
22687 msgid "A string, must correspond to an entry in @code{/etc/protocols}."
22688 msgstr ""
22689
22690 #. type: item
22691 #: doc/guix.texi:12904
22692 #, no-wrap
22693 msgid "@code{wait?} (default: @code{#t})"
22694 msgstr ""
22695
22696 #. type: table
22697 #: doc/guix.texi:12907
22698 msgid "Whether @command{inetd} should wait for the server to exit before listening to new service requests."
22699 msgstr ""
22700
22701 #. type: table
22702 #: doc/guix.texi:12912
22703 msgid "A string containing the user (and, optionally, group) name of the user as whom the server should run. The group name can be specified in a suffix, separated by a colon or period, i.e.@: @code{\"user\"}, @code{\"user:group\"} or @code{\"user.group\"}."
22704 msgstr ""
22705
22706 #. type: item
22707 #: doc/guix.texi:12912
22708 #, no-wrap
22709 msgid "@code{program} (default: @code{\"internal\"})"
22710 msgstr ""
22711
22712 #. type: table
22713 #: doc/guix.texi:12915
22714 msgid "The server program which will serve the requests, or @code{\"internal\"} if @command{inetd} should use a built-in service."
22715 msgstr ""
22716
22717 #. type: table
22718 #: doc/guix.texi:12920
22719 msgid "A list strings or file-like objects, which are the server program's arguments, starting with the zeroth argument, i.e.@: the name of the program itself. For @command{inetd}'s internal services, this entry must be @code{'()} or @code{'(\"internal\")}."
22720 msgstr ""
22721
22722 #. type: deftp
22723 #: doc/guix.texi:12924
22724 msgid "@xref{Configuration file,,, inetutils, GNU Inetutils} for a more detailed discussion of each configuration field."
22725 msgstr ""
22726
22727 #. type: cindex
22728 #: doc/guix.texi:12926
22729 #, no-wrap
22730 msgid "Tor"
22731 msgstr ""
22732
22733 #. type: defvr
22734 #: doc/guix.texi:12927
22735 #, no-wrap
22736 msgid "{Scheme Variable} tor-service-type"
22737 msgstr ""
22738
22739 #. type: defvr
22740 #: doc/guix.texi:12932
22741 msgid "This is the type for a service that runs the @uref{https://torproject.org, Tor} anonymous networking daemon. The service is configured using a @code{<tor-configuration>} record. By default, the Tor daemon runs as the @code{tor} unprivileged user, which is a member of the @code{tor} group."
22742 msgstr ""
22743
22744 #. type: deftp
22745 #: doc/guix.texi:12935
22746 #, no-wrap
22747 msgid "{Data Type} tor-configuration"
22748 msgstr ""
22749
22750 #. type: item
22751 #: doc/guix.texi:12937
22752 #, no-wrap
22753 msgid "@code{tor} (default: @code{tor})"
22754 msgstr ""
22755
22756 #. type: table
22757 #: doc/guix.texi:12942
22758 msgid "The package that provides the Tor daemon. This package is expected to provide the daemon at @file{bin/tor} relative to its output directory. The default package is the @uref{https://www.torproject.org, Tor Project's} implementation."
22759 msgstr ""
22760
22761 #. type: item
22762 #: doc/guix.texi:12943
22763 #, no-wrap
22764 msgid "@code{config-file} (default: @code{(plain-file \"empty\" \"\")})"
22765 msgstr ""
22766
22767 #. type: table
22768 #: doc/guix.texi:12949
22769 msgid "The configuration file to use. It will be appended to a default configuration file, and the final configuration file will be passed to @code{tor} via its @code{-f} option. This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}). See @code{man tor} for details on the configuration file syntax."
22770 msgstr ""
22771
22772 #. type: item
22773 #: doc/guix.texi:12950
22774 #, no-wrap
22775 msgid "@code{hidden-services} (default: @code{'()})"
22776 msgstr ""
22777
22778 #. type: table
22779 #: doc/guix.texi:12956
22780 msgid "The list of @code{<hidden-service>} records to use. For any hidden service you include in this list, appropriate configuration to enable the hidden service will be automatically added to the default configuration file. You may conveniently create @code{<hidden-service>} records using the @code{tor-hidden-service} procedure described below."
22781 msgstr ""
22782
22783 #. type: item
22784 #: doc/guix.texi:12957
22785 #, no-wrap
22786 msgid "@code{socks-socket-type} (default: @code{'tcp})"
22787 msgstr ""
22788
22789 #. type: table
22790 #: doc/guix.texi:12964
22791 msgid "The default socket type that Tor should use for its SOCKS socket. This must be either @code{'tcp} or @code{'unix}. If it is @code{'tcp}, then by default Tor will listen on TCP port 9050 on the loopback interface (i.e., localhost). If it is @code{'unix}, then Tor will listen on the UNIX domain socket @file{/var/run/tor/socks-sock}, which will be made writable by members of the @code{tor} group."
22792 msgstr ""
22793
22794 #. type: table
22795 #: doc/guix.texi:12969
22796 msgid "If you want to customize the SOCKS socket in more detail, leave @code{socks-socket-type} at its default value of @code{'tcp} and use @code{config-file} to override the default by providing your own @code{SocksPort} option."
22797 msgstr ""
22798
22799 #. type: cindex
22800 #: doc/guix.texi:12972
22801 #, no-wrap
22802 msgid "hidden service"
22803 msgstr ""
22804
22805 #. type: deffn
22806 #: doc/guix.texi:12973
22807 #, no-wrap
22808 msgid "{Scheme Procedure} tor-hidden-service @var{name} @var{mapping}"
22809 msgstr ""
22810
22811 #. type: deffn
22812 #: doc/guix.texi:12976
22813 msgid "Define a new Tor @dfn{hidden service} called @var{name} and implementing @var{mapping}. @var{mapping} is a list of port/host tuples, such as:"
22814 msgstr ""
22815
22816 #. type: example
22817 #: doc/guix.texi:12980
22818 #, no-wrap
22819 msgid ""
22820 " '((22 \"127.0.0.1:22\")\n"
22821 " (80 \"127.0.0.1:8080\"))\n"
22822 msgstr ""
22823
22824 #. type: deffn
22825 #: doc/guix.texi:12984
22826 msgid "In this example, port 22 of the hidden service is mapped to local port 22, and port 80 is mapped to local port 8080."
22827 msgstr ""
22828
22829 #. type: deffn
22830 #: doc/guix.texi:12988
22831 msgid "This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, where the @file{hostname} file contains the @code{.onion} host name for the hidden service."
22832 msgstr ""
22833
22834 #. type: deffn
22835 #: doc/guix.texi:12991
22836 msgid "See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor project's documentation} for more information."
22837 msgstr ""
22838
22839 #. type: Plain text
22840 #: doc/guix.texi:12994
22841 msgid "The @code{(gnu services rsync)} module provides the following services:"
22842 msgstr ""
22843
22844 #. type: Plain text
22845 #: doc/guix.texi:12998
22846 msgid "You might want an rsync daemon if you have files that you want available so anyone (or just yourself) can download existing files or upload new files."
22847 msgstr ""
22848
22849 #. type: deffn
22850 #: doc/guix.texi:12999
22851 #, no-wrap
22852 msgid "{Scheme Variable} rsync-service-type"
22853 msgstr ""
22854
22855 #. type: deffn
22856 #: doc/guix.texi:13003
22857 msgid "This is the service type for the @uref{https://rsync.samba.org, rsync} daemon, The value for this service type is a @command{rsync-configuration} record as in this example:"
22858 msgstr ""
22859
22860 #. type: example
22861 #: doc/guix.texi:13006
22862 #, no-wrap
22863 msgid "(service rsync-service-type)\n"
22864 msgstr ""
22865
22866 #. type: deffn
22867 #: doc/guix.texi:13009
22868 msgid "See below for details about @code{rsync-configuration}."
22869 msgstr ""
22870
22871 #. type: deftp
22872 #: doc/guix.texi:13011
22873 #, no-wrap
22874 msgid "{Data Type} rsync-configuration"
22875 msgstr ""
22876
22877 #. type: deftp
22878 #: doc/guix.texi:13013
22879 msgid "Data type representing the configuration for @code{rsync-service}."
22880 msgstr ""
22881
22882 #. type: item
22883 #: doc/guix.texi:13015
22884 #, no-wrap
22885 msgid "@code{package} (default: @var{rsync})"
22886 msgstr ""
22887
22888 #. type: table
22889 #: doc/guix.texi:13017
22890 msgid "@code{rsync} package to use."
22891 msgstr ""
22892
22893 #. type: item
22894 #: doc/guix.texi:13018
22895 #, no-wrap
22896 msgid "@code{port-number} (default: @code{873})"
22897 msgstr ""
22898
22899 #. type: table
22900 #: doc/guix.texi:13022
22901 msgid "TCP port on which @command{rsync} listens for incoming connections. If port is less than @code{1024} @command{rsync} needs to be started as the @code{root} user and group."
22902 msgstr ""
22903
22904 #. type: item
22905 #: doc/guix.texi:13023
22906 #, no-wrap
22907 msgid "@code{pid-file} (default: @code{\"/var/run/rsyncd/rsyncd.pid\"})"
22908 msgstr ""
22909
22910 #. type: table
22911 #: doc/guix.texi:13025
22912 msgid "Name of the file where @command{rsync} writes its PID."
22913 msgstr ""
22914
22915 #. type: item
22916 #: doc/guix.texi:13026
22917 #, no-wrap
22918 msgid "@code{lock-file} (default: @code{\"/var/run/rsyncd/rsyncd.lock\"})"
22919 msgstr ""
22920
22921 #. type: table
22922 #: doc/guix.texi:13028
22923 msgid "Name of the file where @command{rsync} writes its lock file."
22924 msgstr ""
22925
22926 #. type: item
22927 #: doc/guix.texi:13029
22928 #, no-wrap
22929 msgid "@code{log-file} (default: @code{\"/var/log/rsyncd.log\"})"
22930 msgstr ""
22931
22932 #. type: table
22933 #: doc/guix.texi:13031
22934 msgid "Name of the file where @command{rsync} writes its log file."
22935 msgstr ""
22936
22937 #. type: item
22938 #: doc/guix.texi:13032
22939 #, no-wrap
22940 msgid "@code{use-chroot?} (default: @var{#t})"
22941 msgstr ""
22942
22943 #. type: table
22944 #: doc/guix.texi:13034
22945 msgid "Whether to use chroot for @command{rsync} shared directory."
22946 msgstr ""
22947
22948 #. type: item
22949 #: doc/guix.texi:13035
22950 #, no-wrap
22951 msgid "@code{share-path} (default: @file{/srv/rsync})"
22952 msgstr ""
22953
22954 #. type: table
22955 #: doc/guix.texi:13037
22956 msgid "Location of the @command{rsync} shared directory."
22957 msgstr ""
22958
22959 #. type: item
22960 #: doc/guix.texi:13038
22961 #, no-wrap
22962 msgid "@code{share-comment} (default: @code{\"Rsync share\"})"
22963 msgstr ""
22964
22965 #. type: table
22966 #: doc/guix.texi:13040
22967 msgid "Comment of the @command{rsync} shared directory."
22968 msgstr ""
22969
22970 #. type: item
22971 #: doc/guix.texi:13041
22972 #, no-wrap
22973 msgid "@code{read-only?} (default: @var{#f})"
22974 msgstr ""
22975
22976 #. type: table
22977 #: doc/guix.texi:13043
22978 msgid "Read-write permissions to shared directory."
22979 msgstr ""
22980
22981 #. type: item
22982 #: doc/guix.texi:13044
22983 #, no-wrap
22984 msgid "@code{timeout} (default: @code{300})"
22985 msgstr ""
22986
22987 #. type: table
22988 #: doc/guix.texi:13046
22989 msgid "I/O timeout in seconds."
22990 msgstr ""
22991
22992 #. type: item
22993 #: doc/guix.texi:13047
22994 #, no-wrap
22995 msgid "@code{user} (default: @var{\"root\"})"
22996 msgstr ""
22997
22998 #. type: table
22999 #: doc/guix.texi:13049
23000 msgid "Owner of the @code{rsync} process."
23001 msgstr ""
23002
23003 #. type: item
23004 #: doc/guix.texi:13050
23005 #, no-wrap
23006 msgid "@code{group} (default: @var{\"root\"})"
23007 msgstr ""
23008
23009 #. type: table
23010 #: doc/guix.texi:13052
23011 msgid "Group of the @code{rsync} process."
23012 msgstr ""
23013
23014 #. type: item
23015 #: doc/guix.texi:13053
23016 #, no-wrap
23017 msgid "@code{uid} (default: @var{\"rsyncd\"})"
23018 msgstr ""
23019
23020 #. type: table
23021 #: doc/guix.texi:13056
23022 msgid "User name or user ID that file transfers to and from that module should take place as when the daemon was run as @code{root}."
23023 msgstr ""
23024
23025 #. type: item
23026 #: doc/guix.texi:13057
23027 #, no-wrap
23028 msgid "@code{gid} (default: @var{\"rsyncd\"})"
23029 msgstr ""
23030
23031 #. type: table
23032 #: doc/guix.texi:13059
23033 msgid "Group name or group ID that will be used when accessing the module."
23034 msgstr ""
23035
23036 #. type: Plain text
23037 #: doc/guix.texi:13064
23038 msgid "Furthermore, @code{(gnu services ssh)} provides the following services."
23039 msgstr ""
23040
23041 #. type: cindex
23042 #: doc/guix.texi:13064 doc/guix.texi:13103 doc/guix.texi:24768
23043 #, no-wrap
23044 msgid "SSH"
23045 msgstr ""
23046
23047 #. type: cindex
23048 #: doc/guix.texi:13065 doc/guix.texi:13104 doc/guix.texi:24769
23049 #, no-wrap
23050 msgid "SSH server"
23051 msgstr ""
23052
23053 #. type: deffn
23054 #: doc/guix.texi:13067
23055 #, no-wrap
23056 msgid "{Scheme Procedure} lsh-service [#:host-key \"/etc/lsh/host-key\"] @"
23057 msgstr ""
23058
23059 #. type: deffn
23060 #: doc/guix.texi:13076
23061 msgid "[#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ [#:allow-empty-passwords? #f] [#:root-login? #f] @ [#:syslog-output? #t] [#:x11-forwarding? #t] @ [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @ [#:public-key-authentication? #t] [#:initialize? #t] Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}. @var{host-key} must designate a file containing the host key, and readable only by root."
23062 msgstr ""
23063
23064 #. type: deffn
23065 #: doc/guix.texi:13082
23066 msgid "When @var{daemonic?} is true, @command{lshd} will detach from the controlling terminal and log its output to syslogd, unless one sets @var{syslog-output?} to false. Obviously, it also makes lsh-service depend on existence of syslogd service. When @var{pid-file?} is true, @command{lshd} writes its PID to the file called @var{pid-file}."
23067 msgstr ""
23068
23069 #. type: deffn
23070 #: doc/guix.texi:13086
23071 msgid "When @var{initialize?} is true, automatically create the seed and host key upon service activation if they do not exist yet. This may take long and require interaction."
23072 msgstr ""
23073
23074 #. type: deffn
23075 #: doc/guix.texi:13091
23076 msgid "When @var{initialize?} is false, it is up to the user to initialize the randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create a key pair with the private key stored in file @var{host-key} (@pxref{lshd basics,,, lsh, LSH Manual})."
23077 msgstr ""
23078
23079 #. type: deffn
23080 #: doc/guix.texi:13095
23081 msgid "When @var{interfaces} is empty, lshd listens for connections on all the network interfaces; otherwise, @var{interfaces} must be a list of host names or addresses."
23082 msgstr ""
23083
23084 #. type: deffn
23085 #: doc/guix.texi:13099
23086 msgid "@var{allow-empty-passwords?} specifies whether to accept log-ins with empty passwords, and @var{root-login?} specifies whether to accept log-ins as root."
23087 msgstr ""
23088
23089 #. type: deffn
23090 #: doc/guix.texi:13101
23091 msgid "The other options should be self-descriptive."
23092 msgstr ""
23093
23094 #. type: deffn
23095 #: doc/guix.texi:13105
23096 #, no-wrap
23097 msgid "{Scheme Variable} openssh-service-type"
23098 msgstr ""
23099
23100 #. type: deffn
23101 #: doc/guix.texi:13109
23102 msgid "This is the type for the @uref{http://www.openssh.org, OpenSSH} secure shell daemon, @command{sshd}. Its value must be an @code{openssh-configuration} record as in this example:"
23103 msgstr ""
23104
23105 #. type: example
23106 #: doc/guix.texi:13118
23107 #, no-wrap
23108 msgid ""
23109 "(service openssh-service-type\n"
23110 " (openssh-configuration\n"
23111 " (x11-forwarding? #t)\n"
23112 " (permit-root-login 'without-password)\n"
23113 " (authorized-keys\n"
23114 " `((\"alice\" ,(local-file \"alice.pub\"))\n"
23115 " (\"bob\" ,(local-file \"bob.pub\"))))))\n"
23116 msgstr ""
23117
23118 #. type: deffn
23119 #: doc/guix.texi:13121
23120 msgid "See below for details about @code{openssh-configuration}."
23121 msgstr ""
23122
23123 #. type: deffn
23124 #: doc/guix.texi:13124
23125 msgid "This service can be extended with extra authorized keys, as in this example:"
23126 msgstr ""
23127
23128 #. type: example
23129 #: doc/guix.texi:13129
23130 #, no-wrap
23131 msgid ""
23132 "(service-extension openssh-service-type\n"
23133 " (const `((\"charlie\"\n"
23134 " ,(local-file \"charlie.pub\")))))\n"
23135 msgstr ""
23136
23137 #. type: deftp
23138 #: doc/guix.texi:13132
23139 #, no-wrap
23140 msgid "{Data Type} openssh-configuration"
23141 msgstr ""
23142
23143 #. type: deftp
23144 #: doc/guix.texi:13134
23145 msgid "This is the configuration record for OpenSSH's @command{sshd}."
23146 msgstr ""
23147
23148 #. type: item
23149 #: doc/guix.texi:13136
23150 #, no-wrap
23151 msgid "@code{pid-file} (default: @code{\"/var/run/sshd.pid\"})"
23152 msgstr ""
23153
23154 #. type: table
23155 #: doc/guix.texi:13138
23156 msgid "Name of the file where @command{sshd} writes its PID."
23157 msgstr ""
23158
23159 #. type: item
23160 #: doc/guix.texi:13139
23161 #, no-wrap
23162 msgid "@code{port-number} (default: @code{22})"
23163 msgstr ""
23164
23165 #. type: table
23166 #: doc/guix.texi:13141
23167 msgid "TCP port on which @command{sshd} listens for incoming connections."
23168 msgstr ""
23169
23170 #. type: item
23171 #: doc/guix.texi:13142
23172 #, no-wrap
23173 msgid "@code{permit-root-login} (default: @code{#f})"
23174 msgstr ""
23175
23176 #. type: table
23177 #: doc/guix.texi:13147
23178 msgid "This field determines whether and when to allow logins as root. If @code{#f}, root logins are disallowed; if @code{#t}, they are allowed. If it's the symbol @code{'without-password}, then root logins are permitted but not with password-based authentication."
23179 msgstr ""
23180
23181 #. type: item
23182 #: doc/guix.texi:13148 doc/guix.texi:13309
23183 #, no-wrap
23184 msgid "@code{allow-empty-passwords?} (default: @code{#f})"
23185 msgstr ""
23186
23187 #. type: table
23188 #: doc/guix.texi:13151
23189 msgid "When true, users with empty passwords may log in. When false, they may not."
23190 msgstr ""
23191
23192 #. type: item
23193 #: doc/guix.texi:13152 doc/guix.texi:13312
23194 #, no-wrap
23195 msgid "@code{password-authentication?} (default: @code{#t})"
23196 msgstr ""
23197
23198 #. type: table
23199 #: doc/guix.texi:13155
23200 msgid "When true, users may log in with their password. When false, they have other authentication methods."
23201 msgstr ""
23202
23203 #. type: item
23204 #: doc/guix.texi:13156
23205 #, no-wrap
23206 msgid "@code{public-key-authentication?} (default: @code{#t})"
23207 msgstr ""
23208
23209 #. type: table
23210 #: doc/guix.texi:13159
23211 msgid "When true, users may log in using public key authentication. When false, users have to use other authentication method."
23212 msgstr ""
23213
23214 #. type: table
23215 #: doc/guix.texi:13162
23216 msgid "Authorized public keys are stored in @file{~/.ssh/authorized_keys}. This is used only by protocol version 2."
23217 msgstr ""
23218
23219 #. type: item
23220 #: doc/guix.texi:13163
23221 #, no-wrap
23222 msgid "@code{x11-forwarding?} (default: @code{#f})"
23223 msgstr ""
23224
23225 #. type: table
23226 #: doc/guix.texi:13167
23227 msgid "When true, forwarding of X11 graphical client connections is enabled---in other words, @command{ssh} options @option{-X} and @option{-Y} will work."
23228 msgstr ""
23229
23230 #. type: item
23231 #: doc/guix.texi:13168
23232 #, no-wrap
23233 msgid "@code{allow-agent-forwarding?} (default: @code{#t})"
23234 msgstr ""
23235
23236 #. type: table
23237 #: doc/guix.texi:13170
23238 msgid "Whether to allow agent forwarding."
23239 msgstr ""
23240
23241 #. type: item
23242 #: doc/guix.texi:13171
23243 #, no-wrap
23244 msgid "@code{allow-tcp-forwarding?} (default: @code{#t})"
23245 msgstr ""
23246
23247 #. type: table
23248 #: doc/guix.texi:13173
23249 msgid "Whether to allow TCP forwarding."
23250 msgstr ""
23251
23252 #. type: item
23253 #: doc/guix.texi:13174
23254 #, no-wrap
23255 msgid "@code{gateway-ports?} (default: @code{#f})"
23256 msgstr ""
23257
23258 #. type: table
23259 #: doc/guix.texi:13176
23260 msgid "Whether to allow gateway ports."
23261 msgstr ""
23262
23263 #. type: item
23264 #: doc/guix.texi:13177
23265 #, no-wrap
23266 msgid "@code{challenge-response-authentication?} (default: @code{#f})"
23267 msgstr ""
23268
23269 #. type: table
23270 #: doc/guix.texi:13180
23271 msgid "Specifies whether challenge response authentication is allowed (e.g.@: via PAM)."
23272 msgstr ""
23273
23274 #. type: item
23275 #: doc/guix.texi:13181
23276 #, no-wrap
23277 msgid "@code{use-pam?} (default: @code{#t})"
23278 msgstr ""
23279
23280 #. type: table
23281 #: doc/guix.texi:13187
23282 msgid "Enables the Pluggable Authentication Module interface. If set to @code{#t}, this will enable PAM authentication using @code{challenge-response-authentication?} and @code{password-authentication?}, in addition to PAM account and session module processing for all authentication types."
23283 msgstr ""
23284
23285 #. type: table
23286 #: doc/guix.texi:13192
23287 msgid "Because PAM challenge response authentication usually serves an equivalent role to password authentication, you should disable either @code{challenge-response-authentication?} or @code{password-authentication?}."
23288 msgstr ""
23289
23290 #. type: item
23291 #: doc/guix.texi:13193
23292 #, no-wrap
23293 msgid "@code{print-last-log?} (default: @code{#t})"
23294 msgstr ""
23295
23296 #. type: table
23297 #: doc/guix.texi:13196
23298 msgid "Specifies whether @command{sshd} should print the date and time of the last user login when a user logs in interactively."
23299 msgstr ""
23300
23301 #. type: item
23302 #: doc/guix.texi:13197
23303 #, no-wrap
23304 msgid "@code{subsystems} (default: @code{'((\"sftp\" \"internal-sftp\"))})"
23305 msgstr ""
23306
23307 #. type: table
23308 #: doc/guix.texi:13199
23309 msgid "Configures external subsystems (e.g.@: file transfer daemon)."
23310 msgstr ""
23311
23312 #. type: table
23313 #: doc/guix.texi:13203
23314 msgid "This is a list of two-element lists, each of which containing the subsystem name and a command (with optional arguments) to execute upon subsystem request."
23315 msgstr ""
23316
23317 #. type: table
23318 #: doc/guix.texi:13206
23319 msgid "The command @command{internal-sftp} implements an in-process SFTP server. Alternately, one can specify the @command{sftp-server} command:"
23320 msgstr ""
23321
23322 #. type: example
23323 #: doc/guix.texi:13211
23324 #, no-wrap
23325 msgid ""
23326 "(service openssh-service-type\n"
23327 " (openssh-configuration\n"
23328 " (subsystems\n"
23329 " `((\"sftp\" ,(file-append openssh \"/libexec/sftp-server\"))))))\n"
23330 msgstr ""
23331
23332 #. type: item
23333 #: doc/guix.texi:13213
23334 #, no-wrap
23335 msgid "@code{accepted-environment} (default: @code{'()})"
23336 msgstr ""
23337
23338 #. type: table
23339 #: doc/guix.texi:13215
23340 msgid "List of strings describing which environment variables may be exported."
23341 msgstr ""
23342
23343 #. type: table
23344 #: doc/guix.texi:13218
23345 msgid "Each string gets on its own line. See the @code{AcceptEnv} option in @code{man sshd_config}."
23346 msgstr ""
23347
23348 #. type: table
23349 #: doc/guix.texi:13223
23350 msgid "This example allows ssh-clients to export the @code{COLORTERM} variable. It is set by terminal emulators, which support colors. You can use it in your shell's ressource file to enable colors for the prompt and commands if this variable is set."
23351 msgstr ""
23352
23353 #. type: example
23354 #: doc/guix.texi:13228
23355 #, no-wrap
23356 msgid ""
23357 "(service openssh-service-type\n"
23358 " (openssh-configuration\n"
23359 " (accepted-environment '(\"COLORTERM\"))))\n"
23360 msgstr ""
23361
23362 #. type: item
23363 #: doc/guix.texi:13230
23364 #, no-wrap
23365 msgid "@code{authorized-keys} (default: @code{'()})"
23366 msgstr ""
23367
23368 #. type: cindex
23369 #: doc/guix.texi:13231
23370 #, no-wrap
23371 msgid "authorized keys, SSH"
23372 msgstr ""
23373
23374 #. type: cindex
23375 #: doc/guix.texi:13232
23376 #, no-wrap
23377 msgid "SSH authorized keys"
23378 msgstr ""
23379
23380 #. type: table
23381 #: doc/guix.texi:13236
23382 msgid "This is the list of authorized keys. Each element of the list is a user name followed by one or more file-like objects that represent SSH public keys. For example:"
23383 msgstr ""
23384
23385 #. type: example
23386 #: doc/guix.texi:13243
23387 #, no-wrap
23388 msgid ""
23389 "(openssh-configuration\n"
23390 " (authorized-keys\n"
23391 " `((\"rekado\" ,(local-file \"rekado.pub\"))\n"
23392 " (\"chris\" ,(local-file \"chris.pub\"))\n"
23393 " (\"root\" ,(local-file \"rekado.pub\") ,(local-file \"chris.pub\")))))\n"
23394 msgstr ""
23395
23396 #. type: table
23397 #: doc/guix.texi:13248
23398 msgid "registers the specified public keys for user accounts @code{rekado}, @code{chris}, and @code{root}."
23399 msgstr ""
23400
23401 #. type: table
23402 #: doc/guix.texi:13251
23403 msgid "Additional authorized keys can be specified @i{via} @code{service-extension}."
23404 msgstr ""
23405
23406 #. type: table
23407 #: doc/guix.texi:13254
23408 msgid "Note that this does @emph{not} interfere with the use of @file{~/.ssh/authorized_keys}."
23409 msgstr ""
23410
23411 #. type: item
23412 #: doc/guix.texi:13255
23413 #, no-wrap
23414 msgid "@code{log-level} (default: @code{'info})"
23415 msgstr ""
23416
23417 #. type: table
23418 #: doc/guix.texi:13259
23419 msgid "This is a symbol specifying the logging level: @code{quiet}, @code{fatal}, @code{error}, @code{info}, @code{verbose}, @code{debug}, etc. See the man page for @file{sshd_config} for the full list of level names."
23420 msgstr ""
23421
23422 #. type: item
23423 #: doc/guix.texi:13260 doc/guix.texi:18874
23424 #, no-wrap
23425 msgid "@code{extra-content} (default: @code{\"\"})"
23426 msgstr ""
23427
23428 #. type: table
23429 #: doc/guix.texi:13265
23430 msgid "This field can be used to append arbitrary text to the configuration file. It is especially useful for elaborate configurations that cannot be expressed otherwise. This configuration, for example, would generally disable root logins, but permit them from one specific IP address:"
23431 msgstr ""
23432
23433 #. type: example
23434 #: doc/guix.texi:13271
23435 #, no-wrap
23436 msgid ""
23437 "(openssh-configuration\n"
23438 " (extra-content \"\\\n"
23439 "Match Address 192.168.0.1\n"
23440 " PermitRootLogin yes\"))\n"
23441 msgstr ""
23442
23443 #. type: deffn
23444 #: doc/guix.texi:13276
23445 #, no-wrap
23446 msgid "{Scheme Procedure} dropbear-service [@var{config}]"
23447 msgstr ""
23448
23449 #. type: deffn
23450 #: doc/guix.texi:13280
23451 msgid "Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH daemon} with the given @var{config}, a @code{<dropbear-configuration>} object."
23452 msgstr ""
23453
23454 #. type: deffn
23455 #: doc/guix.texi:13283
23456 msgid "For example, to specify a Dropbear service listening on port 1234, add this call to the operating system's @code{services} field:"
23457 msgstr ""
23458
23459 #. type: example
23460 #: doc/guix.texi:13287
23461 #, no-wrap
23462 msgid ""
23463 "(dropbear-service (dropbear-configuration\n"
23464 " (port-number 1234)))\n"
23465 msgstr ""
23466
23467 #. type: deftp
23468 #: doc/guix.texi:13290
23469 #, no-wrap
23470 msgid "{Data Type} dropbear-configuration"
23471 msgstr ""
23472
23473 #. type: deftp
23474 #: doc/guix.texi:13292
23475 msgid "This data type represents the configuration of a Dropbear SSH daemon."
23476 msgstr ""
23477
23478 #. type: item
23479 #: doc/guix.texi:13294
23480 #, no-wrap
23481 msgid "@code{dropbear} (default: @var{dropbear})"
23482 msgstr ""
23483
23484 #. type: table
23485 #: doc/guix.texi:13296
23486 msgid "The Dropbear package to use."
23487 msgstr ""
23488
23489 #. type: item
23490 #: doc/guix.texi:13297
23491 #, no-wrap
23492 msgid "@code{port-number} (default: 22)"
23493 msgstr ""
23494
23495 #. type: table
23496 #: doc/guix.texi:13299
23497 msgid "The TCP port where the daemon waits for incoming connections."
23498 msgstr ""
23499
23500 #. type: item
23501 #: doc/guix.texi:13300
23502 #, no-wrap
23503 msgid "@code{syslog-output?} (default: @code{#t})"
23504 msgstr ""
23505
23506 #. type: table
23507 #: doc/guix.texi:13302
23508 msgid "Whether to enable syslog output."
23509 msgstr ""
23510
23511 #. type: item
23512 #: doc/guix.texi:13303
23513 #, no-wrap
23514 msgid "@code{pid-file} (default: @code{\"/var/run/dropbear.pid\"})"
23515 msgstr ""
23516
23517 #. type: table
23518 #: doc/guix.texi:13305
23519 msgid "File name of the daemon's PID file."
23520 msgstr ""
23521
23522 #. type: item
23523 #: doc/guix.texi:13306
23524 #, no-wrap
23525 msgid "@code{root-login?} (default: @code{#f})"
23526 msgstr ""
23527
23528 #. type: table
23529 #: doc/guix.texi:13308
23530 msgid "Whether to allow @code{root} logins."
23531 msgstr ""
23532
23533 #. type: table
23534 #: doc/guix.texi:13311
23535 msgid "Whether to allow empty passwords."
23536 msgstr ""
23537
23538 #. type: table
23539 #: doc/guix.texi:13314
23540 msgid "Whether to enable password-based authentication."
23541 msgstr ""
23542
23543 #. type: defvr
23544 #: doc/guix.texi:13317
23545 #, no-wrap
23546 msgid "{Scheme Variable} %facebook-host-aliases"
23547 msgstr ""
23548
23549 #. type: defvr
23550 #: doc/guix.texi:13323
23551 msgid "This variable contains a string for use in @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). Each line contains a entry that maps a known server name of the Facebook on-line service---e.g., @code{www.facebook.com}---to the local host---@code{127.0.0.1} or its IPv6 equivalent, @code{::1}."
23552 msgstr ""
23553
23554 #. type: defvr
23555 #: doc/guix.texi:13327
23556 msgid "This variable is typically used in the @code{hosts-file} field of an @code{operating-system} declaration (@pxref{operating-system Reference, @file{/etc/hosts}}):"
23557 msgstr ""
23558
23559 #. type: example
23560 #: doc/guix.texi:13340
23561 #, no-wrap
23562 msgid ""
23563 "(operating-system\n"
23564 " (host-name \"mymachine\")\n"
23565 " ;; ...\n"
23566 " (hosts-file\n"
23567 " ;; Create a /etc/hosts file with aliases for \"localhost\"\n"
23568 " ;; and \"mymachine\", as well as for Facebook servers.\n"
23569 " (plain-file \"hosts\"\n"
23570 " (string-append (local-host-aliases host-name)\n"
23571 " %facebook-host-aliases))))\n"
23572 msgstr ""
23573
23574 #. type: defvr
23575 #: doc/guix.texi:13344
23576 msgid "This mechanism can prevent programs running locally, such as Web browsers, from accessing Facebook."
23577 msgstr ""
23578
23579 #. type: Plain text
23580 #: doc/guix.texi:13347
23581 msgid "The @code{(gnu services avahi)} provides the following definition."
23582 msgstr ""
23583
23584 #. type: defvr
23585 #: doc/guix.texi:13348
23586 #, no-wrap
23587 msgid "{Scheme Variable} avahi-service-type"
23588 msgstr ""
23589
23590 #. type: defvr
23591 #: doc/guix.texi:13353
23592 msgid "This is the service that runs @command{avahi-daemon}, a system-wide mDNS/DNS-SD responder that allows for service discovery and ``zero-configuration'' host name lookups (see @uref{https://avahi.org/}). Its value must be a @code{zero-configuration} record---see below."
23593 msgstr ""
23594
23595 #. type: defvr
23596 #: doc/guix.texi:13358
23597 msgid "This service extends the name service cache daemon (nscd) so that it can resolve @code{.local} host names using @uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. @xref{Name Service Switch}, for information on host name resolution."
23598 msgstr ""
23599
23600 #. type: defvr
23601 #: doc/guix.texi:13361
23602 msgid "Additionally, add the @var{avahi} package to the system profile so that commands such as @command{avahi-browse} are directly usable."
23603 msgstr ""
23604
23605 #. type: deftp
23606 #: doc/guix.texi:13363
23607 #, no-wrap
23608 msgid "{Data Type} avahi-configuration"
23609 msgstr ""
23610
23611 #. type: deftp
23612 #: doc/guix.texi:13365
23613 msgid "Data type representation the configuration for Avahi."
23614 msgstr ""
23615
23616 #. type: item
23617 #: doc/guix.texi:13368
23618 #, no-wrap
23619 msgid "@code{host-name} (default: @code{#f})"
23620 msgstr ""
23621
23622 #. type: table
23623 #: doc/guix.texi:13371
23624 msgid "If different from @code{#f}, use that as the host name to publish for this machine; otherwise, use the machine's actual host name."
23625 msgstr ""
23626
23627 #. type: item
23628 #: doc/guix.texi:13372
23629 #, no-wrap
23630 msgid "@code{publish?} (default: @code{#t})"
23631 msgstr ""
23632
23633 #. type: table
23634 #: doc/guix.texi:13375
23635 msgid "When true, allow host names and services to be published (broadcast) over the network."
23636 msgstr ""
23637
23638 #. type: item
23639 #: doc/guix.texi:13376
23640 #, no-wrap
23641 msgid "@code{publish-workstation?} (default: @code{#t})"
23642 msgstr ""
23643
23644 #. type: table
23645 #: doc/guix.texi:13380
23646 msgid "When true, @command{avahi-daemon} publishes the machine's host name and IP address via mDNS on the local network. To view the host names published on your local network, you can run:"
23647 msgstr ""
23648
23649 #. type: example
23650 #: doc/guix.texi:13383
23651 #, no-wrap
23652 msgid "avahi-browse _workstation._tcp\n"
23653 msgstr ""
23654
23655 #. type: item
23656 #: doc/guix.texi:13385
23657 #, no-wrap
23658 msgid "@code{wide-area?} (default: @code{#f})"
23659 msgstr ""
23660
23661 #. type: table
23662 #: doc/guix.texi:13387
23663 msgid "When true, DNS-SD over unicast DNS is enabled."
23664 msgstr ""
23665
23666 #. type: item
23667 #: doc/guix.texi:13388
23668 #, no-wrap
23669 msgid "@code{ipv4?} (default: @code{#t})"
23670 msgstr ""
23671
23672 #. type: itemx
23673 #: doc/guix.texi:13389
23674 #, no-wrap
23675 msgid "@code{ipv6?} (default: @code{#t})"
23676 msgstr ""
23677
23678 #. type: table
23679 #: doc/guix.texi:13391
23680 msgid "These fields determine whether to use IPv4/IPv6 sockets."
23681 msgstr ""
23682
23683 #. type: item
23684 #: doc/guix.texi:13392
23685 #, no-wrap
23686 msgid "@code{domains-to-browse} (default: @code{'()})"
23687 msgstr ""
23688
23689 #. type: table
23690 #: doc/guix.texi:13394
23691 msgid "This is a list of domains to browse."
23692 msgstr ""
23693
23694 #. type: deffn
23695 #: doc/guix.texi:13397
23696 #, no-wrap
23697 msgid "{Scheme Variable} openvswitch-service-type"
23698 msgstr ""
23699
23700 #. type: deffn
23701 #: doc/guix.texi:13401
23702 msgid "This is the type of the @uref{https://www.openvswitch.org, Open vSwitch} service, whose value should be an @code{openvswitch-configuration} object."
23703 msgstr ""
23704
23705 #. type: deftp
23706 #: doc/guix.texi:13403
23707 #, no-wrap
23708 msgid "{Data Type} openvswitch-configuration"
23709 msgstr ""
23710
23711 #. type: deftp
23712 #: doc/guix.texi:13407
23713 msgid "Data type representing the configuration of Open vSwitch, a multilayer virtual switch which is designed to enable massive network automation through programmatic extension."
23714 msgstr ""
23715
23716 #. type: item
23717 #: doc/guix.texi:13409
23718 #, no-wrap
23719 msgid "@code{package} (default: @var{openvswitch})"
23720 msgstr ""
23721
23722 #. type: table
23723 #: doc/guix.texi:13411
23724 msgid "Package object of the Open vSwitch."
23725 msgstr ""
23726
23727 #. type: cindex
23728 #: doc/guix.texi:13418
23729 #, no-wrap
23730 msgid "X11"
23731 msgstr ""
23732
23733 #. type: cindex
23734 #: doc/guix.texi:13419
23735 #, no-wrap
23736 msgid "X Window System"
23737 msgstr ""
23738
23739 #. type: cindex
23740 #: doc/guix.texi:13420 doc/guix.texi:13669
23741 #, no-wrap
23742 msgid "login manager"
23743 msgstr ""
23744
23745 #. type: Plain text
23746 #: doc/guix.texi:13425
23747 msgid "Support for the X Window graphical display system---specifically Xorg---is provided by the @code{(gnu services xorg)} module. Note that there is no @code{xorg-service} procedure. Instead, the X server is started by the @dfn{login manager}, by default the GNOME Display Manager (GDM)."
23748 msgstr ""
23749
23750 #. type: cindex
23751 #: doc/guix.texi:13426
23752 #, no-wrap
23753 msgid "GDM"
23754 msgstr ""
23755
23756 #. type: cindex
23757 #: doc/guix.texi:13427
23758 #, no-wrap
23759 msgid "GNOME, login manager"
23760 msgstr ""
23761
23762 #. type: Plain text
23763 #: doc/guix.texi:13431
23764 msgid "GDM of course allows users to log in into window managers and desktop environments other than GNOME; for those using GNOME, GDM is required for features such as automatic screen locking."
23765 msgstr ""
23766
23767 #. type: cindex
23768 #: doc/guix.texi:13432
23769 #, no-wrap
23770 msgid "window manager"
23771 msgstr ""
23772
23773 #. type: Plain text
23774 #: doc/guix.texi:13437
23775 msgid "To use X11, you must install at least one @dfn{window manager}---for example the @code{windowmaker} or @code{openbox} packages---preferably by adding it to the @code{packages} field of your operating system definition (@pxref{operating-system Reference, system-wide packages})."
23776 msgstr ""
23777
23778 #. type: defvr
23779 #: doc/guix.texi:13438
23780 #, no-wrap
23781 msgid "{Scheme Variable} gdm-service-type"
23782 msgstr ""
23783
23784 #. type: defvr
23785 #: doc/guix.texi:13443
23786 msgid "This is the type for the @uref{https://wiki.gnome.org/Projects/GDM/, GNOME Desktop Manager} (GDM), a program that manages graphical display servers and handles graphical user logins. Its value must be a @code{gdm-configuration} (see below.)"
23787 msgstr ""
23788
23789 #. type: cindex
23790 #: doc/guix.texi:13444
23791 #, no-wrap
23792 msgid "session types (X11)"
23793 msgstr ""
23794
23795 #. type: cindex
23796 #: doc/guix.texi:13445
23797 #, no-wrap
23798 msgid "X11 session types"
23799 msgstr ""
23800
23801 #. type: defvr
23802 #: doc/guix.texi:13451
23803 msgid "GDM looks for @dfn{session types} described by the @file{.desktop} files in @file{/run/current-system/profile/share/xsessions} and allows users to choose a session from the log-in screen. Packages such as @code{gnome}, @code{xfce}, and @code{i3} provide @file{.desktop} files; adding them to the system-wide set of packages automatically makes them available at the log-in screen."
23804 msgstr ""
23805
23806 #. type: defvr
23807 #: doc/guix.texi:13455
23808 msgid "In addition, @file{~/.xsession} files are honored. When available, @file{~/.xsession} must be an executable that starts a window manager and/or other X clients."
23809 msgstr ""
23810
23811 #. type: deftp
23812 #: doc/guix.texi:13457
23813 #, no-wrap
23814 msgid "{Data Type} gdm-configuration"
23815 msgstr ""
23816
23817 #. type: item
23818 #: doc/guix.texi:13459 doc/guix.texi:13525
23819 #, no-wrap
23820 msgid "@code{auto-login?} (default: @code{#f})"
23821 msgstr ""
23822
23823 #. type: itemx
23824 #: doc/guix.texi:13460
23825 #, no-wrap
23826 msgid "@code{default-user} (default: @code{#f})"
23827 msgstr ""
23828
23829 #. type: table
23830 #: doc/guix.texi:13462
23831 msgid "When @code{auto-login?} is false, GDM presents a log-in screen."
23832 msgstr ""
23833
23834 #. type: table
23835 #: doc/guix.texi:13465
23836 msgid "When @code{auto-login?} is true, GDM logs in directly as @code{default-user}."
23837 msgstr ""
23838
23839 #. type: item
23840 #: doc/guix.texi:13466
23841 #, no-wrap
23842 msgid "@code{gnome-shell-assets} (default: ...)"
23843 msgstr ""
23844
23845 #. type: table
23846 #: doc/guix.texi:13468
23847 msgid "List of GNOME Shell assets needed by GDM: icon theme, fonts, etc."
23848 msgstr ""
23849
23850 #. type: item
23851 #: doc/guix.texi:13469
23852 #, no-wrap
23853 msgid "@code{xorg-configuration} (default: @code{(xorg-configuration)})"
23854 msgstr ""
23855
23856 #. type: table
23857 #: doc/guix.texi:13471 doc/guix.texi:13552 doc/guix.texi:13635
23858 msgid "Configuration of the Xorg graphical server."
23859 msgstr ""
23860
23861 #. type: item
23862 #: doc/guix.texi:13472
23863 #, no-wrap
23864 msgid "@code{xsession} (default: @code{(xinitrc)})"
23865 msgstr ""
23866
23867 #. type: table
23868 #: doc/guix.texi:13474 doc/guix.texi:13650
23869 msgid "Script to run before starting a X session."
23870 msgstr ""
23871
23872 #. type: item
23873 #: doc/guix.texi:13475
23874 #, no-wrap
23875 msgid "@code{dbus-daemon} (default: @code{dbus-daemon-wrapper})"
23876 msgstr ""
23877
23878 #. type: table
23879 #: doc/guix.texi:13477
23880 msgid "File name of the @code{dbus-daemon} executable."
23881 msgstr ""
23882
23883 #. type: item
23884 #: doc/guix.texi:13478
23885 #, no-wrap
23886 msgid "@code{gdm} (default: @code{gdm})"
23887 msgstr ""
23888
23889 #. type: table
23890 #: doc/guix.texi:13480
23891 msgid "The GDM package to use."
23892 msgstr ""
23893
23894 #. type: defvr
23895 #: doc/guix.texi:13483
23896 #, no-wrap
23897 msgid "{Scheme Variable} slim-service-type"
23898 msgstr ""
23899
23900 #. type: defvr
23901 #: doc/guix.texi:13485
23902 msgid "This is the type for the SLiM graphical login manager for X11."
23903 msgstr ""
23904
23905 #. type: defvr
23906 #: doc/guix.texi:13489
23907 msgid "Like GDM, SLiM looks for session types described by @file{.desktop} files and allows users to choose a session from the log-in screen using @kbd{F1}. It also honors @file{~/.xsession} files."
23908 msgstr ""
23909
23910 #. type: defvr
23911 #: doc/guix.texi:13496
23912 msgid "Unlike GDM, SLiM does not spawn the user session on a different VT after logging in, which means that you can only start one graphical session. If you want to be able to run multiple graphical sessions at the same time you have to add multiple SLiM services to your system services. The following example shows how to replace the default GDM service with two SLiM services on tty7 and tty8."
23913 msgstr ""
23914
23915 #. type: lisp
23916 #: doc/guix.texi:13502
23917 #, no-wrap
23918 msgid ""
23919 "(use-modules (gnu services)\n"
23920 " (gnu services desktop)\n"
23921 " (gnu services xorg)\n"
23922 " (srfi srfi-1)) ;for 'remove'\n"
23923 "\n"
23924 msgstr ""
23925
23926 #. type: lisp
23927 #: doc/guix.texi:13514
23928 #, no-wrap
23929 msgid ""
23930 "(operating-system\n"
23931 " ;; ...\n"
23932 " (services (cons* (service slim-service-type (slim-configuration\n"
23933 " (display \":0\")\n"
23934 " (vt \"vt7\")))\n"
23935 " (service slim-service-type (slim-configuration\n"
23936 " (display \":1\")\n"
23937 " (vt \"vt8\")))\n"
23938 " (remove (lambda (service)\n"
23939 " (eq? (service-kind service) gdm-service-type))\n"
23940 " %desktop-services))))\n"
23941 msgstr ""
23942
23943 #. type: deftp
23944 #: doc/guix.texi:13518
23945 #, no-wrap
23946 msgid "{Data Type} slim-configuration"
23947 msgstr ""
23948
23949 #. type: deftp
23950 #: doc/guix.texi:13520
23951 msgid "Data type representing the configuration of @code{slim-service-type}."
23952 msgstr ""
23953
23954 #. type: table
23955 #: doc/guix.texi:13524
23956 msgid "Whether to allow logins with empty passwords."
23957 msgstr ""
23958
23959 #. type: itemx
23960 #: doc/guix.texi:13526
23961 #, no-wrap
23962 msgid "@code{default-user} (default: @code{\"\"})"
23963 msgstr ""
23964
23965 #. type: table
23966 #: doc/guix.texi:13528
23967 msgid "When @code{auto-login?} is false, SLiM presents a log-in screen."
23968 msgstr ""
23969
23970 #. type: table
23971 #: doc/guix.texi:13531
23972 msgid "When @code{auto-login?} is true, SLiM logs in directly as @code{default-user}."
23973 msgstr ""
23974
23975 #. type: item
23976 #: doc/guix.texi:13532
23977 #, no-wrap
23978 msgid "@code{theme} (default: @code{%default-slim-theme})"
23979 msgstr ""
23980
23981 #. type: itemx
23982 #: doc/guix.texi:13533
23983 #, no-wrap
23984 msgid "@code{theme-name} (default: @code{%default-slim-theme-name})"
23985 msgstr ""
23986
23987 #. type: table
23988 #: doc/guix.texi:13535
23989 msgid "The graphical theme to use and its name."
23990 msgstr ""
23991
23992 #. type: item
23993 #: doc/guix.texi:13536
23994 #, no-wrap
23995 msgid "@code{auto-login-session} (default: @code{#f})"
23996 msgstr ""
23997
23998 #. type: table
23999 #: doc/guix.texi:13539
24000 msgid "If true, this must be the name of the executable to start as the default session---e.g., @code{(file-append windowmaker \"/bin/windowmaker\")}."
24001 msgstr ""
24002
24003 #. type: table
24004 #: doc/guix.texi:13543
24005 msgid "If false, a session described by one of the available @file{.desktop} files in @code{/run/current-system/profile} and @code{~/.guix-profile} will be used."
24006 msgstr ""
24007
24008 #. type: quotation
24009 #: doc/guix.texi:13548
24010 msgid "You must install at least one window manager in the system profile or in your user profile. Failing to do that, if @code{auto-login-session} is false, you will be unable to log in."
24011 msgstr ""
24012
24013 #. type: item
24014 #: doc/guix.texi:13550 doc/guix.texi:13633
24015 #, no-wrap
24016 msgid "@code{xorg-configuration} (default @code{(xorg-configuration)})"
24017 msgstr ""
24018
24019 #. type: item
24020 #: doc/guix.texi:13553
24021 #, no-wrap
24022 msgid "@code{display} (default @code{\":0\"})"
24023 msgstr "@code{display}(默认值:@code{\":0\"})"
24024
24025 #. type: table
24026 #: doc/guix.texi:13555
24027 msgid "The display on which to start the Xorg graphical server."
24028 msgstr ""
24029
24030 #. type: item
24031 #: doc/guix.texi:13556
24032 #, no-wrap
24033 msgid "@code{vt} (default @code{\"vt7\"})"
24034 msgstr "@code{vt}(默认值:@code{\"vt7\"})"
24035
24036 #. type: table
24037 #: doc/guix.texi:13558
24038 msgid "The VT on which to start the Xorg graphical server."
24039 msgstr ""
24040
24041 #. type: item
24042 #: doc/guix.texi:13559
24043 #, no-wrap
24044 msgid "@code{xauth} (default: @code{xauth})"
24045 msgstr ""
24046
24047 #. type: table
24048 #: doc/guix.texi:13561
24049 msgid "The XAuth package to use."
24050 msgstr ""
24051
24052 #. type: item
24053 #: doc/guix.texi:13562
24054 #, no-wrap
24055 msgid "@code{shepherd} (default: @code{shepherd})"
24056 msgstr ""
24057
24058 #. type: table
24059 #: doc/guix.texi:13565
24060 msgid "The Shepherd package used when invoking @command{halt} and @command{reboot}."
24061 msgstr ""
24062
24063 #. type: item
24064 #: doc/guix.texi:13566
24065 #, no-wrap
24066 msgid "@code{sessreg} (default: @code{sessreg})"
24067 msgstr ""
24068
24069 #. type: table
24070 #: doc/guix.texi:13568
24071 msgid "The sessreg package used in order to register the session."
24072 msgstr ""
24073
24074 #. type: item
24075 #: doc/guix.texi:13569
24076 #, no-wrap
24077 msgid "@code{slim} (default: @code{slim})"
24078 msgstr ""
24079
24080 #. type: table
24081 #: doc/guix.texi:13571
24082 msgid "The SLiM package to use."
24083 msgstr ""
24084
24085 #. type: defvr
24086 #: doc/guix.texi:13574 doc/guix.texi:24215
24087 #, no-wrap
24088 msgid "{Scheme Variable} %default-theme"
24089 msgstr ""
24090
24091 #. type: defvrx
24092 #: doc/guix.texi:13575
24093 #, no-wrap
24094 msgid "{Scheme Variable} %default-theme-name"
24095 msgstr ""
24096
24097 #. type: defvr
24098 #: doc/guix.texi:13577
24099 msgid "The default SLiM theme and its name."
24100 msgstr ""
24101
24102 #. type: deftp
24103 #: doc/guix.texi:13580
24104 #, no-wrap
24105 msgid "{Data Type} sddm-configuration"
24106 msgstr ""
24107
24108 #. type: deftp
24109 #: doc/guix.texi:13582
24110 msgid "This is the data type representing the sddm service configuration."
24111 msgstr ""
24112
24113 #. type: item
24114 #: doc/guix.texi:13584
24115 #, no-wrap
24116 msgid "@code{display-server} (default: \"x11\")"
24117 msgstr ""
24118
24119 #. type: table
24120 #: doc/guix.texi:13587
24121 msgid "Select display server to use for the greeter. Valid values are \"x11\" or \"wayland\"."
24122 msgstr ""
24123
24124 #. type: item
24125 #: doc/guix.texi:13588
24126 #, no-wrap
24127 msgid "@code{numlock} (default: \"on\")"
24128 msgstr ""
24129
24130 #. type: table
24131 #: doc/guix.texi:13590
24132 msgid "Valid values are \"on\", \"off\" or \"none\"."
24133 msgstr ""
24134
24135 #. type: item
24136 #: doc/guix.texi:13591
24137 #, no-wrap
24138 msgid "@code{halt-command} (default @code{#~(string-apppend #$shepherd \"/sbin/halt\")})"
24139 msgstr ""
24140
24141 #. type: table
24142 #: doc/guix.texi:13593
24143 msgid "Command to run when halting."
24144 msgstr ""
24145
24146 #. type: item
24147 #: doc/guix.texi:13594
24148 #, no-wrap
24149 msgid "@code{reboot-command} (default @code{#~(string-append #$shepherd \"/sbin/reboot\")})"
24150 msgstr ""
24151
24152 #. type: table
24153 #: doc/guix.texi:13596
24154 msgid "Command to run when rebooting."
24155 msgstr ""
24156
24157 #. type: item
24158 #: doc/guix.texi:13597
24159 #, no-wrap
24160 msgid "@code{theme} (default \"maldives\")"
24161 msgstr ""
24162
24163 #. type: table
24164 #: doc/guix.texi:13599
24165 msgid "Theme to use. Default themes provided by SDDM are \"elarun\" or \"maldives\"."
24166 msgstr ""
24167
24168 #. type: item
24169 #: doc/guix.texi:13600
24170 #, no-wrap
24171 msgid "@code{themes-directory} (default \"/run/current-system/profile/share/sddm/themes\")"
24172 msgstr ""
24173
24174 #. type: table
24175 #: doc/guix.texi:13602
24176 msgid "Directory to look for themes."
24177 msgstr ""
24178
24179 #. type: item
24180 #: doc/guix.texi:13603
24181 #, no-wrap
24182 msgid "@code{faces-directory} (default \"/run/current-system/profile/share/sddm/faces\")"
24183 msgstr ""
24184
24185 #. type: table
24186 #: doc/guix.texi:13605
24187 msgid "Directory to look for faces."
24188 msgstr ""
24189
24190 #. type: item
24191 #: doc/guix.texi:13606
24192 #, no-wrap
24193 msgid "@code{default-path} (default \"/run/current-system/profile/bin\")"
24194 msgstr ""
24195
24196 #. type: table
24197 #: doc/guix.texi:13608
24198 msgid "Default PATH to use."
24199 msgstr ""
24200
24201 #. type: item
24202 #: doc/guix.texi:13609
24203 #, no-wrap
24204 msgid "@code{minimum-uid} (default 1000)"
24205 msgstr ""
24206
24207 #. type: table
24208 #: doc/guix.texi:13611
24209 msgid "Minimum UID to display in SDDM."
24210 msgstr ""
24211
24212 #. type: item
24213 #: doc/guix.texi:13612
24214 #, no-wrap
24215 msgid "@code{maximum-uid} (default 2000)"
24216 msgstr ""
24217
24218 #. type: table
24219 #: doc/guix.texi:13614
24220 msgid "Maximum UID to display in SDDM"
24221 msgstr ""
24222
24223 #. type: item
24224 #: doc/guix.texi:13615
24225 #, no-wrap
24226 msgid "@code{remember-last-user?} (default #t)"
24227 msgstr ""
24228
24229 #. type: table
24230 #: doc/guix.texi:13617
24231 msgid "Remember last user."
24232 msgstr ""
24233
24234 #. type: item
24235 #: doc/guix.texi:13618
24236 #, no-wrap
24237 msgid "@code{remember-last-session?} (default #t)"
24238 msgstr ""
24239
24240 #. type: table
24241 #: doc/guix.texi:13620
24242 msgid "Remember last session."
24243 msgstr ""
24244
24245 #. type: item
24246 #: doc/guix.texi:13621
24247 #, no-wrap
24248 msgid "@code{hide-users} (default \"\")"
24249 msgstr ""
24250
24251 #. type: table
24252 #: doc/guix.texi:13623
24253 msgid "Usernames to hide from SDDM greeter."
24254 msgstr ""
24255
24256 #. type: item
24257 #: doc/guix.texi:13624
24258 #, no-wrap
24259 msgid "@code{hide-shells} (default @code{#~(string-append #$shadow \"/sbin/nologin\")})"
24260 msgstr ""
24261
24262 #. type: table
24263 #: doc/guix.texi:13626
24264 msgid "Users with shells listed will be hidden from the SDDM greeter."
24265 msgstr ""
24266
24267 #. type: item
24268 #: doc/guix.texi:13627
24269 #, no-wrap
24270 msgid "@code{session-command} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/wayland-session\")})"
24271 msgstr ""
24272
24273 #. type: table
24274 #: doc/guix.texi:13629
24275 msgid "Script to run before starting a wayland session."
24276 msgstr ""
24277
24278 #. type: item
24279 #: doc/guix.texi:13630
24280 #, no-wrap
24281 msgid "@code{sessions-directory} (default \"/run/current-system/profile/share/wayland-sessions\")"
24282 msgstr ""
24283
24284 #. type: table
24285 #: doc/guix.texi:13632
24286 msgid "Directory to look for desktop files starting wayland sessions."
24287 msgstr ""
24288
24289 #. type: item
24290 #: doc/guix.texi:13636
24291 #, no-wrap
24292 msgid "@code{xauth-path} (default @code{#~(string-append #$xauth \"/bin/xauth\")})"
24293 msgstr ""
24294
24295 #. type: table
24296 #: doc/guix.texi:13638
24297 msgid "Path to xauth."
24298 msgstr ""
24299
24300 #. type: item
24301 #: doc/guix.texi:13639
24302 #, no-wrap
24303 msgid "@code{xephyr-path} (default @code{#~(string-append #$xorg-server \"/bin/Xephyr\")})"
24304 msgstr ""
24305
24306 #. type: table
24307 #: doc/guix.texi:13641
24308 msgid "Path to Xephyr."
24309 msgstr ""
24310
24311 #. type: item
24312 #: doc/guix.texi:13642
24313 #, no-wrap
24314 msgid "@code{xdisplay-start} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/Xsetup\")})"
24315 msgstr ""
24316
24317 #. type: table
24318 #: doc/guix.texi:13644
24319 msgid "Script to run after starting xorg-server."
24320 msgstr ""
24321
24322 #. type: item
24323 #: doc/guix.texi:13645
24324 #, no-wrap
24325 msgid "@code{xdisplay-stop} (default @code{#~(string-append #$sddm \"/share/sddm/scripts/Xstop\")})"
24326 msgstr ""
24327
24328 #. type: table
24329 #: doc/guix.texi:13647
24330 msgid "Script to run before stopping xorg-server."
24331 msgstr ""
24332
24333 #. type: item
24334 #: doc/guix.texi:13648
24335 #, no-wrap
24336 msgid "@code{xsession-command} (default: @code{xinitrc})"
24337 msgstr ""
24338
24339 #. type: item
24340 #: doc/guix.texi:13651
24341 #, no-wrap
24342 msgid "@code{xsessions-directory} (default: \"/run/current-system/profile/share/xsessions\")"
24343 msgstr ""
24344
24345 #. type: table
24346 #: doc/guix.texi:13653
24347 msgid "Directory to look for desktop files starting X sessions."
24348 msgstr ""
24349
24350 #. type: item
24351 #: doc/guix.texi:13654
24352 #, no-wrap
24353 msgid "@code{minimum-vt} (default: 7)"
24354 msgstr ""
24355
24356 #. type: table
24357 #: doc/guix.texi:13656
24358 msgid "Minimum VT to use."
24359 msgstr ""
24360
24361 #. type: item
24362 #: doc/guix.texi:13657
24363 #, no-wrap
24364 msgid "@code{auto-login-user} (default \"\")"
24365 msgstr ""
24366
24367 #. type: table
24368 #: doc/guix.texi:13659
24369 msgid "User to use for auto-login."
24370 msgstr ""
24371
24372 #. type: item
24373 #: doc/guix.texi:13660
24374 #, no-wrap
24375 msgid "@code{auto-login-session} (default \"\")"
24376 msgstr ""
24377
24378 #. type: table
24379 #: doc/guix.texi:13662
24380 msgid "Desktop file to use for auto-login."
24381 msgstr ""
24382
24383 #. type: item
24384 #: doc/guix.texi:13663
24385 #, no-wrap
24386 msgid "@code{relogin?} (default #f)"
24387 msgstr ""
24388
24389 #. type: table
24390 #: doc/guix.texi:13665
24391 msgid "Relogin after logout."
24392 msgstr ""
24393
24394 #. type: cindex
24395 #: doc/guix.texi:13670
24396 #, no-wrap
24397 msgid "X11 login"
24398 msgstr ""
24399
24400 #. type: deffn
24401 #: doc/guix.texi:13671
24402 #, no-wrap
24403 msgid "{Scheme Procedure} sddm-service config"
24404 msgstr ""
24405
24406 #. type: deffn
24407 #: doc/guix.texi:13674
24408 msgid "Return a service that spawns the SDDM graphical login manager for config of type @code{<sddm-configuration>}."
24409 msgstr ""
24410
24411 #. type: example
24412 #: doc/guix.texi:13679
24413 #, no-wrap
24414 msgid ""
24415 " (sddm-service (sddm-configuration\n"
24416 " (auto-login-user \"Alice\")\n"
24417 " (auto-login-session \"xfce.desktop\")))\n"
24418 msgstr ""
24419
24420 #. type: cindex
24421 #: doc/guix.texi:13682
24422 #, no-wrap
24423 msgid "Xorg, configuration"
24424 msgstr ""
24425
24426 #. type: deftp
24427 #: doc/guix.texi:13683
24428 #, no-wrap
24429 msgid "{Data Type} xorg-configuration"
24430 msgstr ""
24431
24432 #. type: deftp
24433 #: doc/guix.texi:13688
24434 msgid "This data type represents the configuration of the Xorg graphical display server. Note that there is not Xorg service; instead, the X server is started by a ``display manager'' such as GDM, SDDM, and SLiM. Thus, the configuration of these display managers aggregates an @code{xorg-configuration} record."
24435 msgstr ""
24436
24437 #. type: item
24438 #: doc/guix.texi:13690
24439 #, no-wrap
24440 msgid "@code{modules} (default: @code{%default-xorg-modules})"
24441 msgstr ""
24442
24443 #. type: table
24444 #: doc/guix.texi:13693
24445 msgid "This is a list of @dfn{module packages} loaded by the Xorg server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on."
24446 msgstr ""
24447
24448 #. type: item
24449 #: doc/guix.texi:13694
24450 #, no-wrap
24451 msgid "@code{fonts} (default: @code{%default-xorg-fonts})"
24452 msgstr ""
24453
24454 #. type: table
24455 #: doc/guix.texi:13696
24456 msgid "This is a list of font directories to add to the server's @dfn{font path}."
24457 msgstr ""
24458
24459 #. type: item
24460 #: doc/guix.texi:13697
24461 #, no-wrap
24462 msgid "@code{drivers} (default: @code{'()})"
24463 msgstr ""
24464
24465 #. type: table
24466 #: doc/guix.texi:13701
24467 msgid "This must be either the empty list, in which case Xorg chooses a graphics driver automatically, or a list of driver names that will be tried in this order---e.g., @code{(\"modesetting\" \"vesa\")}."
24468 msgstr ""
24469
24470 #. type: item
24471 #: doc/guix.texi:13702
24472 #, no-wrap
24473 msgid "@code{resolutions} (default: @code{'()})"
24474 msgstr ""
24475
24476 #. type: table
24477 #: doc/guix.texi:13706
24478 msgid "When @code{resolutions} is the empty list, Xorg chooses an appropriate screen resolution. Otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}."
24479 msgstr ""
24480
24481 #. type: cindex
24482 #: doc/guix.texi:13707
24483 #, no-wrap
24484 msgid "keyboard layout, for Xorg"
24485 msgstr ""
24486
24487 #. type: cindex
24488 #: doc/guix.texi:13708
24489 #, no-wrap
24490 msgid "keymap, for Xorg"
24491 msgstr ""
24492
24493 #. type: table
24494 #: doc/guix.texi:13712
24495 msgid "If this is @code{#f}, Xorg uses the default keyboard layout---usually US English (``qwerty'') for a 105-key PC keyboard."
24496 msgstr ""
24497
24498 #. type: table
24499 #: doc/guix.texi:13716
24500 msgid "Otherwise this must be a @code{keyboard-layout} object specifying the keyboard layout in use when Xorg is running. @xref{Keyboard Layout}, for more information on how to specify the keyboard layout."
24501 msgstr ""
24502
24503 #. type: item
24504 #: doc/guix.texi:13717
24505 #, no-wrap
24506 msgid "@code{extra-config} (default: @code{'()})"
24507 msgstr ""
24508
24509 #. type: table
24510 #: doc/guix.texi:13720
24511 msgid "This is a list of strings or objects appended to the configuration file. It is used to pass extra text to be added verbatim to the configuration file."
24512 msgstr ""
24513
24514 #. type: item
24515 #: doc/guix.texi:13721
24516 #, no-wrap
24517 msgid "@code{server} (default: @code{xorg-server})"
24518 msgstr ""
24519
24520 #. type: table
24521 #: doc/guix.texi:13723
24522 msgid "This is the package providing the Xorg server."
24523 msgstr ""
24524
24525 #. type: item
24526 #: doc/guix.texi:13724
24527 #, no-wrap
24528 msgid "@code{server-arguments} (default: @code{%default-xorg-server-arguments})"
24529 msgstr ""
24530
24531 #. type: table
24532 #: doc/guix.texi:13727
24533 msgid "This is the list of command-line arguments to pass to the X server. The default is @code{-nolisten tcp}."
24534 msgstr ""
24535
24536 #. type: deffn
24537 #: doc/guix.texi:13730
24538 #, no-wrap
24539 msgid "{Scheme Procedure} set-xorg-configuration @var{config} @"
24540 msgstr ""
24541
24542 #. type: deffn
24543 #: doc/guix.texi:13734
24544 msgid "[@var{login-manager-service-type}] Tell the log-in manager (of type @var{login-manager-service-type}) to use @var{config}, an @code{<xorg-configuration>} record."
24545 msgstr ""
24546
24547 #. type: deffn
24548 #: doc/guix.texi:13738
24549 msgid "Since the Xorg configuration is embedded in the log-in manager's configuration---e.g., @code{gdm-configuration}---this procedure provides a shorthand to set the Xorg configuration."
24550 msgstr ""
24551
24552 #. type: deffn
24553 #: doc/guix.texi:13740
24554 #, no-wrap
24555 msgid "{Scheme Procedure} xorg-start-command [@var{config}]"
24556 msgstr ""
24557
24558 #. type: deffn
24559 #: doc/guix.texi:13744
24560 msgid "Return a @code{startx} script in which the modules, fonts, etc. specified in @var{config}, are available. The result should be used in place of @code{startx}."
24561 msgstr ""
24562
24563 #. type: deffn
24564 #: doc/guix.texi:13746
24565 msgid "Usually the X server is started by a login manager."
24566 msgstr ""
24567
24568 #. type: deffn
24569 #: doc/guix.texi:13749
24570 #, no-wrap
24571 msgid "{Scheme Procedure} screen-locker-service @var{package} [@var{program}]"
24572 msgstr ""
24573
24574 #. type: deffn
24575 #: doc/guix.texi:13753
24576 msgid "Add @var{package}, a package for a screen locker or screen saver whose command is @var{program}, to the set of setuid programs and add a PAM entry for it. For example:"
24577 msgstr ""
24578
24579 #. type: lisp
24580 #: doc/guix.texi:13756
24581 #, no-wrap
24582 msgid "(screen-locker-service xlockmore \"xlock\")\n"
24583 msgstr ""
24584
24585 #. type: deffn
24586 #: doc/guix.texi:13759
24587 msgid "makes the good ol' XlockMore usable."
24588 msgstr ""
24589
24590 #. type: cindex
24591 #: doc/guix.texi:13765
24592 #, no-wrap
24593 msgid "printer support with CUPS"
24594 msgstr ""
24595
24596 #. type: Plain text
24597 #: doc/guix.texi:13769
24598 msgid "The @code{(gnu services cups)} module provides a Guix service definition for the CUPS printing service. To add printer support to a Guix system, add a @code{cups-service} to the operating system definition:"
24599 msgstr ""
24600
24601 #. type: deffn
24602 #: doc/guix.texi:13770
24603 #, no-wrap
24604 msgid "{Scheme Variable} cups-service-type"
24605 msgstr ""
24606
24607 #. type: deffn
24608 #: doc/guix.texi:13774
24609 msgid "The service type for the CUPS print server. Its value should be a valid CUPS configuration (see below). To use the default settings, simply write:"
24610 msgstr ""
24611
24612 #. type: example
24613 #: doc/guix.texi:13776
24614 #, no-wrap
24615 msgid "(service cups-service-type)\n"
24616 msgstr ""
24617
24618 #. type: Plain text
24619 #: doc/guix.texi:13786
24620 msgid "The CUPS configuration controls the basic things about your CUPS installation: what interfaces it listens on, what to do if a print job fails, how much logging to do, and so on. To actually add a printer, you have to visit the @url{http://localhost:631} URL, or use a tool such as GNOME's printer configuration services. By default, configuring a CUPS service will generate a self-signed certificate if needed, for secure connections to the print server."
24621 msgstr ""
24622
24623 #. type: Plain text
24624 #: doc/guix.texi:13791
24625 msgid "Suppose you want to enable the Web interface of CUPS and also add support for Epson printers @i{via} the @code{escpr} package and for HP printers @i{via} the @code{hplip-minimal} package. You can do that directly, like this (you need to use the @code{(gnu packages cups)} module):"
24626 msgstr ""
24627
24628 #. type: example
24629 #: doc/guix.texi:13798
24630 #, no-wrap
24631 msgid ""
24632 "(service cups-service-type\n"
24633 " (cups-configuration\n"
24634 " (web-interface? #t)\n"
24635 " (extensions\n"
24636 " (list cups-filters escpr hplip-minimal))))\n"
24637 msgstr ""
24638
24639 #. type: Plain text
24640 #: doc/guix.texi:13803
24641 msgid "Note: If you wish to use the Qt5 based GUI which comes with the hplip package then it is suggested that you install the @code{hplip} package, either in your OS configuration file or as your user."
24642 msgstr ""
24643
24644 #. type: Plain text
24645 #: doc/guix.texi:13810
24646 msgid "The available configuration parameters follow. Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings. There is also a way to specify the configuration as a string, if you have an old @code{cupsd.conf} file that you want to port over from some other system; see the end for more details."
24647 msgstr ""
24648
24649 #. type: Plain text
24650 #: doc/guix.texi:13821
24651 msgid "Available @code{cups-configuration} fields are:"
24652 msgstr ""
24653
24654 #. type: deftypevr
24655 #: doc/guix.texi:13822
24656 #, no-wrap
24657 msgid "{@code{cups-configuration} parameter} package cups"
24658 msgstr ""
24659
24660 #. type: deftypevr
24661 #: doc/guix.texi:13824 doc/guix.texi:14581
24662 msgid "The CUPS package."
24663 msgstr ""
24664
24665 #. type: deftypevr
24666 #: doc/guix.texi:13826
24667 #, no-wrap
24668 msgid "{@code{cups-configuration} parameter} package-list extensions"
24669 msgstr ""
24670
24671 #. type: deftypevr
24672 #: doc/guix.texi:13828
24673 msgid "Drivers and other extensions to the CUPS package."
24674 msgstr ""
24675
24676 #. type: deftypevr
24677 #: doc/guix.texi:13830
24678 #, no-wrap
24679 msgid "{@code{cups-configuration} parameter} files-configuration files-configuration"
24680 msgstr ""
24681
24682 #. type: deftypevr
24683 #: doc/guix.texi:13833
24684 msgid "Configuration of where to write logs, what directories to use for print spools, and related privileged configuration parameters."
24685 msgstr ""
24686
24687 #. type: deftypevr
24688 #: doc/guix.texi:13835
24689 msgid "Available @code{files-configuration} fields are:"
24690 msgstr ""
24691
24692 #. type: deftypevr
24693 #: doc/guix.texi:13836
24694 #, no-wrap
24695 msgid "{@code{files-configuration} parameter} log-location access-log"
24696 msgstr ""
24697
24698 #. type: deftypevr
24699 #: doc/guix.texi:13844
24700 msgid "Defines the access log filename. Specifying a blank filename disables access log generation. The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background. The value @code{syslog} causes log entries to be sent to the system log daemon. The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-access_log}."
24701 msgstr ""
24702
24703 #. type: deftypevr
24704 #: doc/guix.texi:13846
24705 msgid "Defaults to @samp{\"/var/log/cups/access_log\"}."
24706 msgstr ""
24707
24708 #. type: deftypevr
24709 #: doc/guix.texi:13848
24710 #, no-wrap
24711 msgid "{@code{files-configuration} parameter} file-name cache-dir"
24712 msgstr ""
24713
24714 #. type: deftypevr
24715 #: doc/guix.texi:13850
24716 msgid "Where CUPS should cache data."
24717 msgstr ""
24718
24719 #. type: deftypevr
24720 #: doc/guix.texi:13852
24721 msgid "Defaults to @samp{\"/var/cache/cups\"}."
24722 msgstr ""
24723
24724 #. type: deftypevr
24725 #: doc/guix.texi:13854
24726 #, no-wrap
24727 msgid "{@code{files-configuration} parameter} string config-file-perm"
24728 msgstr ""
24729
24730 #. type: deftypevr
24731 #: doc/guix.texi:13857
24732 msgid "Specifies the permissions for all configuration files that the scheduler writes."
24733 msgstr ""
24734
24735 #. type: deftypevr
24736 #: doc/guix.texi:13863
24737 msgid "Note that the permissions for the printers.conf file are currently masked to only allow access from the scheduler user (typically root). This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system. There is no way to disable this security feature."
24738 msgstr ""
24739
24740 #. type: deftypevr
24741 #: doc/guix.texi:13865
24742 msgid "Defaults to @samp{\"0640\"}."
24743 msgstr ""
24744
24745 #. type: deftypevr
24746 #: doc/guix.texi:13867
24747 #, no-wrap
24748 msgid "{@code{files-configuration} parameter} log-location error-log"
24749 msgstr ""
24750
24751 #. type: deftypevr
24752 #: doc/guix.texi:13875
24753 msgid "Defines the error log filename. Specifying a blank filename disables error log generation. The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background. The value @code{syslog} causes log entries to be sent to the system log daemon. The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-error_log}."
24754 msgstr ""
24755
24756 #. type: deftypevr
24757 #: doc/guix.texi:13877
24758 msgid "Defaults to @samp{\"/var/log/cups/error_log\"}."
24759 msgstr ""
24760
24761 #. type: deftypevr
24762 #: doc/guix.texi:13879
24763 #, no-wrap
24764 msgid "{@code{files-configuration} parameter} string fatal-errors"
24765 msgstr ""
24766
24767 #. type: deftypevr
24768 #: doc/guix.texi:13882
24769 msgid "Specifies which errors are fatal, causing the scheduler to exit. The kind strings are:"
24770 msgstr ""
24771
24772 #. type: table
24773 #: doc/guix.texi:13886
24774 msgid "No errors are fatal."
24775 msgstr ""
24776
24777 #. type: table
24778 #: doc/guix.texi:13889
24779 msgid "All of the errors below are fatal."
24780 msgstr ""
24781
24782 #. type: item
24783 #: doc/guix.texi:13890
24784 #, no-wrap
24785 msgid "browse"
24786 msgstr ""
24787
24788 #. type: table
24789 #: doc/guix.texi:13893
24790 msgid "Browsing initialization errors are fatal, for example failed connections to the DNS-SD daemon."
24791 msgstr ""
24792
24793 #. type: item
24794 #: doc/guix.texi:13894
24795 #, no-wrap
24796 msgid "config"
24797 msgstr ""
24798
24799 #. type: table
24800 #: doc/guix.texi:13896
24801 msgid "Configuration file syntax errors are fatal."
24802 msgstr ""
24803
24804 #. type: item
24805 #: doc/guix.texi:13897
24806 #, no-wrap
24807 msgid "listen"
24808 msgstr ""
24809
24810 #. type: table
24811 #: doc/guix.texi:13900
24812 msgid "Listen or Port errors are fatal, except for IPv6 failures on the loopback or @code{any} addresses."
24813 msgstr ""
24814
24815 #. type: item
24816 #: doc/guix.texi:13901
24817 #, no-wrap
24818 msgid "log"
24819 msgstr ""
24820
24821 #. type: table
24822 #: doc/guix.texi:13903
24823 msgid "Log file creation or write errors are fatal."
24824 msgstr ""
24825
24826 #. type: item
24827 #: doc/guix.texi:13904
24828 #, no-wrap
24829 msgid "permissions"
24830 msgstr ""
24831
24832 #. type: table
24833 #: doc/guix.texi:13907
24834 msgid "Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions."
24835 msgstr ""
24836
24837 #. type: deftypevr
24838 #: doc/guix.texi:13910
24839 msgid "Defaults to @samp{\"all -browse\"}."
24840 msgstr ""
24841
24842 #. type: deftypevr
24843 #: doc/guix.texi:13912
24844 #, no-wrap
24845 msgid "{@code{files-configuration} parameter} boolean file-device?"
24846 msgstr ""
24847
24848 #. type: deftypevr
24849 #: doc/guix.texi:13915
24850 msgid "Specifies whether the file pseudo-device can be used for new printer queues. The URI @uref{file:///dev/null} is always allowed."
24851 msgstr ""
24852
24853 #. type: deftypevr
24854 #: doc/guix.texi:13917 doc/guix.texi:13987 doc/guix.texi:14023
24855 #: doc/guix.texi:14035 doc/guix.texi:14041 doc/guix.texi:14057
24856 #: doc/guix.texi:14145 doc/guix.texi:14239 doc/guix.texi:14555
24857 #: doc/guix.texi:14568 doc/guix.texi:20262 doc/guix.texi:20276
24858 #: doc/guix.texi:20398 doc/guix.texi:20419 doc/guix.texi:20440
24859 #: doc/guix.texi:20447 doc/guix.texi:20492 doc/guix.texi:20499
24860 #: doc/guix.texi:20926 doc/guix.texi:20940 doc/guix.texi:21112
24861 #: doc/guix.texi:21157 doc/guix.texi:21244 doc/guix.texi:21385
24862 #: doc/guix.texi:21418 doc/guix.texi:21558 doc/guix.texi:21569
24863 #: doc/guix.texi:21819 doc/guix.texi:22461 doc/guix.texi:22470
24864 #: doc/guix.texi:22478 doc/guix.texi:22486 doc/guix.texi:22502
24865 #: doc/guix.texi:22518 doc/guix.texi:22526 doc/guix.texi:22534
24866 #: doc/guix.texi:22543 doc/guix.texi:22552 doc/guix.texi:22568
24867 #: doc/guix.texi:22632 doc/guix.texi:22738 doc/guix.texi:22746
24868 #: doc/guix.texi:22754 doc/guix.texi:22779 doc/guix.texi:22833
24869 #: doc/guix.texi:22881 doc/guix.texi:23082 doc/guix.texi:23089
24870 msgid "Defaults to @samp{#f}."
24871 msgstr ""
24872
24873 #. type: deftypevr
24874 #: doc/guix.texi:13919
24875 #, no-wrap
24876 msgid "{@code{files-configuration} parameter} string group"
24877 msgstr ""
24878
24879 #. type: deftypevr
24880 #: doc/guix.texi:13922
24881 msgid "Specifies the group name or ID that will be used when executing external programs."
24882 msgstr ""
24883
24884 #. type: deftypevr
24885 #: doc/guix.texi:13924 doc/guix.texi:14004
24886 msgid "Defaults to @samp{\"lp\"}."
24887 msgstr ""
24888
24889 #. type: deftypevr
24890 #: doc/guix.texi:13926
24891 #, no-wrap
24892 msgid "{@code{files-configuration} parameter} string log-file-perm"
24893 msgstr ""
24894
24895 #. type: deftypevr
24896 #: doc/guix.texi:13928
24897 msgid "Specifies the permissions for all log files that the scheduler writes."
24898 msgstr ""
24899
24900 #. type: deftypevr
24901 #: doc/guix.texi:13930
24902 msgid "Defaults to @samp{\"0644\"}."
24903 msgstr ""
24904
24905 #. type: deftypevr
24906 #: doc/guix.texi:13932
24907 #, no-wrap
24908 msgid "{@code{files-configuration} parameter} log-location page-log"
24909 msgstr ""
24910
24911 #. type: deftypevr
24912 #: doc/guix.texi:13940
24913 msgid "Defines the page log filename. Specifying a blank filename disables page log generation. The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background. The value @code{syslog} causes log entries to be sent to the system log daemon. The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-page_log}."
24914 msgstr ""
24915
24916 #. type: deftypevr
24917 #: doc/guix.texi:13942
24918 msgid "Defaults to @samp{\"/var/log/cups/page_log\"}."
24919 msgstr ""
24920
24921 #. type: deftypevr
24922 #: doc/guix.texi:13944
24923 #, no-wrap
24924 msgid "{@code{files-configuration} parameter} string remote-root"
24925 msgstr ""
24926
24927 #. type: deftypevr
24928 #: doc/guix.texi:13947
24929 msgid "Specifies the username that is associated with unauthenticated accesses by clients claiming to be the root user. The default is @code{remroot}."
24930 msgstr ""
24931
24932 #. type: deftypevr
24933 #: doc/guix.texi:13949
24934 msgid "Defaults to @samp{\"remroot\"}."
24935 msgstr ""
24936
24937 #. type: deftypevr
24938 #: doc/guix.texi:13951
24939 #, no-wrap
24940 msgid "{@code{files-configuration} parameter} file-name request-root"
24941 msgstr ""
24942
24943 #. type: deftypevr
24944 #: doc/guix.texi:13954
24945 msgid "Specifies the directory that contains print jobs and other HTTP request data."
24946 msgstr ""
24947
24948 #. type: deftypevr
24949 #: doc/guix.texi:13956
24950 msgid "Defaults to @samp{\"/var/spool/cups\"}."
24951 msgstr ""
24952
24953 #. type: deftypevr
24954 #: doc/guix.texi:13958
24955 #, no-wrap
24956 msgid "{@code{files-configuration} parameter} sandboxing sandboxing"
24957 msgstr ""
24958
24959 #. type: deftypevr
24960 #: doc/guix.texi:13963
24961 msgid "Specifies the level of security sandboxing that is applied to print filters, backends, and other child processes of the scheduler; either @code{relaxed} or @code{strict}. This directive is currently only used/supported on macOS."
24962 msgstr ""
24963
24964 #. type: deftypevr
24965 #: doc/guix.texi:13965
24966 msgid "Defaults to @samp{strict}."
24967 msgstr ""
24968
24969 #. type: deftypevr
24970 #: doc/guix.texi:13967
24971 #, no-wrap
24972 msgid "{@code{files-configuration} parameter} file-name server-keychain"
24973 msgstr ""
24974
24975 #. type: deftypevr
24976 #: doc/guix.texi:13972
24977 msgid "Specifies the location of TLS certificates and private keys. CUPS will look for public and private keys in this directory: a @code{.crt} files for PEM-encoded certificates and corresponding @code{.key} files for PEM-encoded private keys."
24978 msgstr ""
24979
24980 #. type: deftypevr
24981 #: doc/guix.texi:13974
24982 msgid "Defaults to @samp{\"/etc/cups/ssl\"}."
24983 msgstr ""
24984
24985 #. type: deftypevr
24986 #: doc/guix.texi:13976
24987 #, no-wrap
24988 msgid "{@code{files-configuration} parameter} file-name server-root"
24989 msgstr ""
24990
24991 #. type: deftypevr
24992 #: doc/guix.texi:13978
24993 msgid "Specifies the directory containing the server configuration files."
24994 msgstr ""
24995
24996 #. type: deftypevr
24997 #: doc/guix.texi:13980
24998 msgid "Defaults to @samp{\"/etc/cups\"}."
24999 msgstr ""
25000
25001 #. type: deftypevr
25002 #: doc/guix.texi:13982
25003 #, no-wrap
25004 msgid "{@code{files-configuration} parameter} boolean sync-on-close?"
25005 msgstr ""
25006
25007 #. type: deftypevr
25008 #: doc/guix.texi:13985
25009 msgid "Specifies whether the scheduler calls fsync(2) after writing configuration or state files."
25010 msgstr ""
25011
25012 #. type: deftypevr
25013 #: doc/guix.texi:13989
25014 #, no-wrap
25015 msgid "{@code{files-configuration} parameter} space-separated-string-list system-group"
25016 msgstr ""
25017
25018 #. type: deftypevr
25019 #: doc/guix.texi:13991
25020 msgid "Specifies the group(s) to use for @code{@@SYSTEM} group authentication."
25021 msgstr ""
25022
25023 #. type: deftypevr
25024 #: doc/guix.texi:13993
25025 #, no-wrap
25026 msgid "{@code{files-configuration} parameter} file-name temp-dir"
25027 msgstr ""
25028
25029 #. type: deftypevr
25030 #: doc/guix.texi:13995
25031 msgid "Specifies the directory where temporary files are stored."
25032 msgstr ""
25033
25034 #. type: deftypevr
25035 #: doc/guix.texi:13997
25036 msgid "Defaults to @samp{\"/var/spool/cups/tmp\"}."
25037 msgstr ""
25038
25039 #. type: deftypevr
25040 #: doc/guix.texi:13999
25041 #, no-wrap
25042 msgid "{@code{files-configuration} parameter} string user"
25043 msgstr ""
25044
25045 #. type: deftypevr
25046 #: doc/guix.texi:14002
25047 msgid "Specifies the user name or ID that is used when running external programs."
25048 msgstr ""
25049
25050 #. type: deftypevr
25051 #: doc/guix.texi:14007
25052 #, no-wrap
25053 msgid "{@code{cups-configuration} parameter} access-log-level access-log-level"
25054 msgstr ""
25055
25056 #. type: deftypevr
25057 #: doc/guix.texi:14014
25058 msgid "Specifies the logging level for the AccessLog file. The @code{config} level logs when printers and classes are added, deleted, or modified and when configuration files are accessed or updated. The @code{actions} level logs when print jobs are submitted, held, released, modified, or canceled, and any of the conditions for @code{config}. The @code{all} level logs all requests."
25059 msgstr ""
25060
25061 #. type: deftypevr
25062 #: doc/guix.texi:14016
25063 msgid "Defaults to @samp{actions}."
25064 msgstr ""
25065
25066 #. type: deftypevr
25067 #: doc/guix.texi:14018
25068 #, no-wrap
25069 msgid "{@code{cups-configuration} parameter} boolean auto-purge-jobs?"
25070 msgstr ""
25071
25072 #. type: deftypevr
25073 #: doc/guix.texi:14021
25074 msgid "Specifies whether to purge job history data automatically when it is no longer required for quotas."
25075 msgstr ""
25076
25077 #. type: deftypevr
25078 #: doc/guix.texi:14025
25079 #, no-wrap
25080 msgid "{@code{cups-configuration} parameter} browse-local-protocols browse-local-protocols"
25081 msgstr ""
25082
25083 #. type: deftypevr
25084 #: doc/guix.texi:14027
25085 msgid "Specifies which protocols to use for local printer sharing."
25086 msgstr ""
25087
25088 #. type: deftypevr
25089 #: doc/guix.texi:14029
25090 msgid "Defaults to @samp{dnssd}."
25091 msgstr ""
25092
25093 #. type: deftypevr
25094 #: doc/guix.texi:14031
25095 #, no-wrap
25096 msgid "{@code{cups-configuration} parameter} boolean browse-web-if?"
25097 msgstr ""
25098
25099 #. type: deftypevr
25100 #: doc/guix.texi:14033
25101 msgid "Specifies whether the CUPS web interface is advertised."
25102 msgstr ""
25103
25104 #. type: deftypevr
25105 #: doc/guix.texi:14037
25106 #, no-wrap
25107 msgid "{@code{cups-configuration} parameter} boolean browsing?"
25108 msgstr ""
25109
25110 #. type: deftypevr
25111 #: doc/guix.texi:14039
25112 msgid "Specifies whether shared printers are advertised."
25113 msgstr ""
25114
25115 #. type: deftypevr
25116 #: doc/guix.texi:14043
25117 #, no-wrap
25118 msgid "{@code{cups-configuration} parameter} string classification"
25119 msgstr ""
25120
25121 #. type: deftypevr
25122 #: doc/guix.texi:14048
25123 msgid "Specifies the security classification of the server. Any valid banner name can be used, including \"classified\", \"confidential\", \"secret\", \"topsecret\", and \"unclassified\", or the banner can be omitted to disable secure printing functions."
25124 msgstr ""
25125
25126 #. type: deftypevr
25127 #: doc/guix.texi:14050 doc/guix.texi:14387 doc/guix.texi:15990
25128 #: doc/guix.texi:16002 doc/guix.texi:17704 doc/guix.texi:17730
25129 #: doc/guix.texi:17766 doc/guix.texi:17831 doc/guix.texi:17870
25130 #: doc/guix.texi:17929 doc/guix.texi:17938 doc/guix.texi:21524
25131 #: doc/guix.texi:21532 doc/guix.texi:21540 doc/guix.texi:21548
25132 #: doc/guix.texi:21826 doc/guix.texi:22304 doc/guix.texi:22312
25133 #: doc/guix.texi:22320 doc/guix.texi:22428 doc/guix.texi:22453
25134 #: doc/guix.texi:22584 doc/guix.texi:22592 doc/guix.texi:22600
25135 #: doc/guix.texi:22608 doc/guix.texi:22616 doc/guix.texi:22624
25136 #: doc/guix.texi:22647 doc/guix.texi:22655 doc/guix.texi:22707
25137 #: doc/guix.texi:22723 doc/guix.texi:22731 doc/guix.texi:22770
25138 #: doc/guix.texi:22793 doc/guix.texi:22815 doc/guix.texi:22822
25139 #: doc/guix.texi:22857 doc/guix.texi:22865 doc/guix.texi:22889
25140 #: doc/guix.texi:22921 doc/guix.texi:22950 doc/guix.texi:22957
25141 #: doc/guix.texi:22964 doc/guix.texi:22972 doc/guix.texi:22986
25142 #: doc/guix.texi:22995 doc/guix.texi:23005 doc/guix.texi:23012
25143 #: doc/guix.texi:23019 doc/guix.texi:23026 doc/guix.texi:23097
25144 #: doc/guix.texi:23104 doc/guix.texi:23111 doc/guix.texi:23120
25145 #: doc/guix.texi:23136 doc/guix.texi:23143 doc/guix.texi:23150
25146 #: doc/guix.texi:23157 doc/guix.texi:23165 doc/guix.texi:23173
25147 msgid "Defaults to @samp{\"\"}."
25148 msgstr ""
25149
25150 #. type: deftypevr
25151 #: doc/guix.texi:14052
25152 #, no-wrap
25153 msgid "{@code{cups-configuration} parameter} boolean classify-override?"
25154 msgstr ""
25155
25156 #. type: deftypevr
25157 #: doc/guix.texi:14055
25158 msgid "Specifies whether users may override the classification (cover page) of individual print jobs using the @code{job-sheets} option."
25159 msgstr ""
25160
25161 #. type: deftypevr
25162 #: doc/guix.texi:14059
25163 #, no-wrap
25164 msgid "{@code{cups-configuration} parameter} default-auth-type default-auth-type"
25165 msgstr ""
25166
25167 #. type: deftypevr
25168 #: doc/guix.texi:14061
25169 msgid "Specifies the default type of authentication to use."
25170 msgstr ""
25171
25172 #. type: deftypevr
25173 #: doc/guix.texi:14063
25174 msgid "Defaults to @samp{Basic}."
25175 msgstr ""
25176
25177 #. type: deftypevr
25178 #: doc/guix.texi:14065
25179 #, no-wrap
25180 msgid "{@code{cups-configuration} parameter} default-encryption default-encryption"
25181 msgstr ""
25182
25183 #. type: deftypevr
25184 #: doc/guix.texi:14067
25185 msgid "Specifies whether encryption will be used for authenticated requests."
25186 msgstr ""
25187
25188 #. type: deftypevr
25189 #: doc/guix.texi:14069
25190 msgid "Defaults to @samp{Required}."
25191 msgstr ""
25192
25193 #. type: deftypevr
25194 #: doc/guix.texi:14071
25195 #, no-wrap
25196 msgid "{@code{cups-configuration} parameter} string default-language"
25197 msgstr ""
25198
25199 #. type: deftypevr
25200 #: doc/guix.texi:14073
25201 msgid "Specifies the default language to use for text and web content."
25202 msgstr ""
25203
25204 #. type: deftypevr
25205 #: doc/guix.texi:14075
25206 msgid "Defaults to @samp{\"en\"}."
25207 msgstr ""
25208
25209 #. type: deftypevr
25210 #: doc/guix.texi:14077
25211 #, no-wrap
25212 msgid "{@code{cups-configuration} parameter} string default-paper-size"
25213 msgstr ""
25214
25215 #. type: deftypevr
25216 #: doc/guix.texi:14082
25217 msgid "Specifies the default paper size for new print queues. @samp{\"Auto\"} uses a locale-specific default, while @samp{\"None\"} specifies there is no default paper size. Specific size names are typically @samp{\"Letter\"} or @samp{\"A4\"}."
25218 msgstr ""
25219
25220 #. type: deftypevr
25221 #: doc/guix.texi:14084
25222 msgid "Defaults to @samp{\"Auto\"}."
25223 msgstr ""
25224
25225 #. type: deftypevr
25226 #: doc/guix.texi:14086
25227 #, no-wrap
25228 msgid "{@code{cups-configuration} parameter} string default-policy"
25229 msgstr ""
25230
25231 #. type: deftypevr
25232 #: doc/guix.texi:14088
25233 msgid "Specifies the default access policy to use."
25234 msgstr ""
25235
25236 #. type: deftypevr
25237 #: doc/guix.texi:14090
25238 msgid "Defaults to @samp{\"default\"}."
25239 msgstr ""
25240
25241 #. type: deftypevr
25242 #: doc/guix.texi:14092
25243 #, no-wrap
25244 msgid "{@code{cups-configuration} parameter} boolean default-shared?"
25245 msgstr ""
25246
25247 #. type: deftypevr
25248 #: doc/guix.texi:14094
25249 msgid "Specifies whether local printers are shared by default."
25250 msgstr ""
25251
25252 #. type: deftypevr
25253 #: doc/guix.texi:14096 doc/guix.texi:14176 doc/guix.texi:14472
25254 #: doc/guix.texi:20084 doc/guix.texi:20112 doc/guix.texi:20232
25255 #: doc/guix.texi:20239 doc/guix.texi:20247 doc/guix.texi:20269
25256 #: doc/guix.texi:20283 doc/guix.texi:20368 doc/guix.texi:20375
25257 #: doc/guix.texi:20383 doc/guix.texi:20793 doc/guix.texi:20933
25258 #: doc/guix.texi:21119 doc/guix.texi:21126 doc/guix.texi:21148
25259 #: doc/guix.texi:21187 doc/guix.texi:21207 doc/guix.texi:21221
25260 #: doc/guix.texi:21373 doc/guix.texi:22406 doc/guix.texi:22494
25261 #: doc/guix.texi:22510 doc/guix.texi:22560
25262 msgid "Defaults to @samp{#t}."
25263 msgstr ""
25264
25265 #. type: deftypevr
25266 #: doc/guix.texi:14098
25267 #, no-wrap
25268 msgid "{@code{cups-configuration} parameter} non-negative-integer dirty-clean-interval"
25269 msgstr ""
25270
25271 #. type: deftypevr
25272 #: doc/guix.texi:14102
25273 msgid "Specifies the delay for updating of configuration and state files, in seconds. A value of 0 causes the update to happen as soon as possible, typically within a few milliseconds."
25274 msgstr ""
25275
25276 #. type: deftypevr
25277 #: doc/guix.texi:14104 doc/guix.texi:14152 doc/guix.texi:14161
25278 #: doc/guix.texi:14182 doc/guix.texi:14479
25279 msgid "Defaults to @samp{30}."
25280 msgstr ""
25281
25282 #. type: deftypevr
25283 #: doc/guix.texi:14106
25284 #, no-wrap
25285 msgid "{@code{cups-configuration} parameter} error-policy error-policy"
25286 msgstr ""
25287
25288 #. type: deftypevr
25289 #: doc/guix.texi:14112
25290 msgid "Specifies what to do when an error occurs. Possible values are @code{abort-job}, which will discard the failed print job; @code{retry-job}, which will retry the job at a later time; @code{retry-this-job}, which retries the failed job immediately; and @code{stop-printer}, which stops the printer."
25291 msgstr ""
25292
25293 #. type: deftypevr
25294 #: doc/guix.texi:14114
25295 msgid "Defaults to @samp{stop-printer}."
25296 msgstr ""
25297
25298 #. type: deftypevr
25299 #: doc/guix.texi:14116
25300 #, no-wrap
25301 msgid "{@code{cups-configuration} parameter} non-negative-integer filter-limit"
25302 msgstr ""
25303
25304 #. type: deftypevr
25305 #: doc/guix.texi:14124
25306 msgid "Specifies the maximum cost of filters that are run concurrently, which can be used to minimize disk, memory, and CPU resource problems. A limit of 0 disables filter limiting. An average print to a non-PostScript printer needs a filter limit of about 200. A PostScript printer needs about half that (100). Setting the limit below these thresholds will effectively limit the scheduler to printing a single job at any time."
25307 msgstr ""
25308
25309 #. type: deftypevr
25310 #: doc/guix.texi:14126 doc/guix.texi:14134 doc/guix.texi:14189
25311 #: doc/guix.texi:14305 doc/guix.texi:14319 doc/guix.texi:14326
25312 #: doc/guix.texi:15432 doc/guix.texi:15448 doc/guix.texi:16094
25313 #: doc/guix.texi:16106 doc/guix.texi:20809 doc/guix.texi:21134
25314 #: doc/guix.texi:22399 doc/guix.texi:22699 doc/guix.texi:22873
25315 msgid "Defaults to @samp{0}."
25316 msgstr ""
25317
25318 #. type: deftypevr
25319 #: doc/guix.texi:14128
25320 #, no-wrap
25321 msgid "{@code{cups-configuration} parameter} non-negative-integer filter-nice"
25322 msgstr ""
25323
25324 #. type: deftypevr
25325 #: doc/guix.texi:14132
25326 msgid "Specifies the scheduling priority of filters that are run to print a job. The nice value ranges from 0, the highest priority, to 19, the lowest priority."
25327 msgstr ""
25328
25329 #. type: deftypevr
25330 #: doc/guix.texi:14136
25331 #, no-wrap
25332 msgid "{@code{cups-configuration} parameter} host-name-lookups host-name-lookups"
25333 msgstr ""
25334
25335 #. type: deftypevr
25336 #: doc/guix.texi:14143
25337 msgid "Specifies whether to do reverse lookups on connecting clients. The @code{double} setting causes @code{cupsd} to verify that the hostname resolved from the address matches one of the addresses returned for that hostname. Double lookups also prevent clients with unregistered addresses from connecting to your server. Only set this option to @code{#t} or @code{double} if absolutely required."
25338 msgstr ""
25339
25340 #. type: deftypevr
25341 #: doc/guix.texi:14147
25342 #, no-wrap
25343 msgid "{@code{cups-configuration} parameter} non-negative-integer job-kill-delay"
25344 msgstr ""
25345
25346 #. type: deftypevr
25347 #: doc/guix.texi:14150
25348 msgid "Specifies the number of seconds to wait before killing the filters and backend associated with a canceled or held job."
25349 msgstr ""
25350
25351 #. type: deftypevr
25352 #: doc/guix.texi:14154
25353 #, no-wrap
25354 msgid "{@code{cups-configuration} parameter} non-negative-integer job-retry-interval"
25355 msgstr ""
25356
25357 #. type: deftypevr
25358 #: doc/guix.texi:14159
25359 msgid "Specifies the interval between retries of jobs in seconds. This is typically used for fax queues but can also be used with normal print queues whose error policy is @code{retry-job} or @code{retry-current-job}."
25360 msgstr ""
25361
25362 #. type: deftypevr
25363 #: doc/guix.texi:14163
25364 #, no-wrap
25365 msgid "{@code{cups-configuration} parameter} non-negative-integer job-retry-limit"
25366 msgstr ""
25367
25368 #. type: deftypevr
25369 #: doc/guix.texi:14168
25370 msgid "Specifies the number of retries that are done for jobs. This is typically used for fax queues but can also be used with normal print queues whose error policy is @code{retry-job} or @code{retry-current-job}."
25371 msgstr ""
25372
25373 #. type: deftypevr
25374 #: doc/guix.texi:14170 doc/guix.texi:21625 doc/guix.texi:21645
25375 #: doc/guix.texi:21661 doc/guix.texi:21675 doc/guix.texi:21682
25376 #: doc/guix.texi:21689 doc/guix.texi:21696 doc/guix.texi:21855
25377 #: doc/guix.texi:21871 doc/guix.texi:21878 doc/guix.texi:21885
25378 #: doc/guix.texi:21896 doc/guix.texi:22351 doc/guix.texi:22359
25379 #: doc/guix.texi:22367 doc/guix.texi:22391
25380 msgid "Defaults to @samp{5}."
25381 msgstr ""
25382
25383 #. type: deftypevr
25384 #: doc/guix.texi:14172
25385 #, no-wrap
25386 msgid "{@code{cups-configuration} parameter} boolean keep-alive?"
25387 msgstr ""
25388
25389 #. type: deftypevr
25390 #: doc/guix.texi:14174
25391 msgid "Specifies whether to support HTTP keep-alive connections."
25392 msgstr ""
25393
25394 #. type: deftypevr
25395 #: doc/guix.texi:14178
25396 #, no-wrap
25397 msgid "{@code{cups-configuration} parameter} non-negative-integer keep-alive-timeout"
25398 msgstr ""
25399
25400 #. type: deftypevr
25401 #: doc/guix.texi:14180
25402 msgid "Specifies how long an idle client connection remains open, in seconds."
25403 msgstr ""
25404
25405 #. type: deftypevr
25406 #: doc/guix.texi:14184
25407 #, no-wrap
25408 msgid "{@code{cups-configuration} parameter} non-negative-integer limit-request-body"
25409 msgstr ""
25410
25411 #. type: deftypevr
25412 #: doc/guix.texi:14187
25413 msgid "Specifies the maximum size of print files, IPP requests, and HTML form data. A limit of 0 disables the limit check."
25414 msgstr ""
25415
25416 #. type: deftypevr
25417 #: doc/guix.texi:14191
25418 #, no-wrap
25419 msgid "{@code{cups-configuration} parameter} multiline-string-list listen"
25420 msgstr ""
25421
25422 #. type: deftypevr
25423 #: doc/guix.texi:14198
25424 msgid "Listens on the specified interfaces for connections. Valid values are of the form @var{address}:@var{port}, where @var{address} is either an IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate all addresses. Values can also be file names of local UNIX domain sockets. The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks."
25425 msgstr ""
25426
25427 #. type: deftypevr
25428 #: doc/guix.texi:14200
25429 #, no-wrap
25430 msgid "{@code{cups-configuration} parameter} non-negative-integer listen-back-log"
25431 msgstr ""
25432
25433 #. type: deftypevr
25434 #: doc/guix.texi:14207
25435 msgid "Specifies the number of pending connections that will be allowed. This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections. When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones."
25436 msgstr ""
25437
25438 #. type: deftypevr
25439 #: doc/guix.texi:14209
25440 msgid "Defaults to @samp{128}."
25441 msgstr ""
25442
25443 #. type: deftypevr
25444 #: doc/guix.texi:14211
25445 #, no-wrap
25446 msgid "{@code{cups-configuration} parameter} location-access-control-list location-access-controls"
25447 msgstr ""
25448
25449 #. type: deftypevr
25450 #: doc/guix.texi:14213
25451 msgid "Specifies a set of additional access controls."
25452 msgstr ""
25453
25454 #. type: deftypevr
25455 #: doc/guix.texi:14215
25456 msgid "Available @code{location-access-controls} fields are:"
25457 msgstr ""
25458
25459 #. type: deftypevr
25460 #: doc/guix.texi:14216
25461 #, no-wrap
25462 msgid "{@code{location-access-controls} parameter} file-name path"
25463 msgstr ""
25464
25465 #. type: deftypevr
25466 #: doc/guix.texi:14218
25467 msgid "Specifies the URI path to which the access control applies."
25468 msgstr ""
25469
25470 #. type: deftypevr
25471 #: doc/guix.texi:14220
25472 #, no-wrap
25473 msgid "{@code{location-access-controls} parameter} access-control-list access-controls"
25474 msgstr ""
25475
25476 #. type: deftypevr
25477 #: doc/guix.texi:14223
25478 msgid "Access controls for all access to this path, in the same format as the @code{access-controls} of @code{operation-access-control}."
25479 msgstr ""
25480
25481 #. type: deftypevr
25482 #: doc/guix.texi:14225 doc/guix.texi:14231 doc/guix.texi:14245
25483 #: doc/guix.texi:14252 doc/guix.texi:14394 doc/guix.texi:14453
25484 #: doc/guix.texi:14537 doc/guix.texi:14548 doc/guix.texi:16580
25485 #: doc/guix.texi:17774 doc/guix.texi:17878 doc/guix.texi:18303
25486 #: doc/guix.texi:18311 doc/guix.texi:18556 doc/guix.texi:20143
25487 #: doc/guix.texi:20290 doc/guix.texi:20478 doc/guix.texi:21516
25488 #: doc/guix.texi:21576 doc/guix.texi:21584 doc/guix.texi:22414
25489 #: doc/guix.texi:22421 doc/guix.texi:22763 doc/guix.texi:22841
25490 #: doc/guix.texi:22935 doc/guix.texi:22943 doc/guix.texi:22979
25491 #: doc/guix.texi:23129 doc/guix.texi:23180 doc/guix.texi:23189
25492 msgid "Defaults to @samp{()}."
25493 msgstr ""
25494
25495 #. type: deftypevr
25496 #: doc/guix.texi:14227
25497 #, no-wrap
25498 msgid "{@code{location-access-controls} parameter} method-access-control-list method-access-controls"
25499 msgstr ""
25500
25501 #. type: deftypevr
25502 #: doc/guix.texi:14229
25503 msgid "Access controls for method-specific access to this path."
25504 msgstr ""
25505
25506 #. type: deftypevr
25507 #: doc/guix.texi:14233
25508 msgid "Available @code{method-access-controls} fields are:"
25509 msgstr ""
25510
25511 #. type: deftypevr
25512 #: doc/guix.texi:14234
25513 #, no-wrap
25514 msgid "{@code{method-access-controls} parameter} boolean reverse?"
25515 msgstr ""
25516
25517 #. type: deftypevr
25518 #: doc/guix.texi:14237
25519 msgid "If @code{#t}, apply access controls to all methods except the listed methods. Otherwise apply to only the listed methods."
25520 msgstr ""
25521
25522 #. type: deftypevr
25523 #: doc/guix.texi:14241
25524 #, no-wrap
25525 msgid "{@code{method-access-controls} parameter} method-list methods"
25526 msgstr ""
25527
25528 #. type: deftypevr
25529 #: doc/guix.texi:14243
25530 msgid "Methods to which this access control applies."
25531 msgstr ""
25532
25533 #. type: deftypevr
25534 #: doc/guix.texi:14247
25535 #, no-wrap
25536 msgid "{@code{method-access-controls} parameter} access-control-list access-controls"
25537 msgstr ""
25538
25539 #. type: deftypevr
25540 #: doc/guix.texi:14250
25541 msgid "Access control directives, as a list of strings. Each string should be one directive, such as \"Order allow,deny\"."
25542 msgstr ""
25543
25544 #. type: deftypevr
25545 #: doc/guix.texi:14256
25546 #, no-wrap
25547 msgid "{@code{cups-configuration} parameter} non-negative-integer log-debug-history"
25548 msgstr ""
25549
25550 #. type: deftypevr
25551 #: doc/guix.texi:14260
25552 msgid "Specifies the number of debugging messages that are retained for logging if an error occurs in a print job. Debug messages are logged regardless of the LogLevel setting."
25553 msgstr ""
25554
25555 #. type: deftypevr
25556 #: doc/guix.texi:14262 doc/guix.texi:14283 doc/guix.texi:14290
25557 #: doc/guix.texi:16340 doc/guix.texi:20463
25558 msgid "Defaults to @samp{100}."
25559 msgstr ""
25560
25561 #. type: deftypevr
25562 #: doc/guix.texi:14264
25563 #, no-wrap
25564 msgid "{@code{cups-configuration} parameter} log-level log-level"
25565 msgstr ""
25566
25567 #. type: deftypevr
25568 #: doc/guix.texi:14267
25569 msgid "Specifies the level of logging for the ErrorLog file. The value @code{none} stops all logging while @code{debug2} logs everything."
25570 msgstr ""
25571
25572 #. type: deftypevr
25573 #: doc/guix.texi:14269
25574 msgid "Defaults to @samp{info}."
25575 msgstr ""
25576
25577 #. type: deftypevr
25578 #: doc/guix.texi:14271
25579 #, no-wrap
25580 msgid "{@code{cups-configuration} parameter} log-time-format log-time-format"
25581 msgstr ""
25582
25583 #. type: deftypevr
25584 #: doc/guix.texi:14274
25585 msgid "Specifies the format of the date and time in the log files. The value @code{standard} logs whole seconds while @code{usecs} logs microseconds."
25586 msgstr ""
25587
25588 #. type: deftypevr
25589 #: doc/guix.texi:14276
25590 msgid "Defaults to @samp{standard}."
25591 msgstr ""
25592
25593 #. type: deftypevr
25594 #: doc/guix.texi:14278
25595 #, no-wrap
25596 msgid "{@code{cups-configuration} parameter} non-negative-integer max-clients"
25597 msgstr ""
25598
25599 #. type: deftypevr
25600 #: doc/guix.texi:14281
25601 msgid "Specifies the maximum number of simultaneous clients that are allowed by the scheduler."
25602 msgstr ""
25603
25604 #. type: deftypevr
25605 #: doc/guix.texi:14285
25606 #, no-wrap
25607 msgid "{@code{cups-configuration} parameter} non-negative-integer max-clients-per-host"
25608 msgstr ""
25609
25610 #. type: deftypevr
25611 #: doc/guix.texi:14288
25612 msgid "Specifies the maximum number of simultaneous clients that are allowed from a single address."
25613 msgstr ""
25614
25615 #. type: deftypevr
25616 #: doc/guix.texi:14292
25617 #, no-wrap
25618 msgid "{@code{cups-configuration} parameter} non-negative-integer max-copies"
25619 msgstr ""
25620
25621 #. type: deftypevr
25622 #: doc/guix.texi:14295
25623 msgid "Specifies the maximum number of copies that a user can print of each job."
25624 msgstr ""
25625
25626 #. type: deftypevr
25627 #: doc/guix.texi:14297
25628 msgid "Defaults to @samp{9999}."
25629 msgstr ""
25630
25631 #. type: deftypevr
25632 #: doc/guix.texi:14299
25633 #, no-wrap
25634 msgid "{@code{cups-configuration} parameter} non-negative-integer max-hold-time"
25635 msgstr ""
25636
25637 #. type: deftypevr
25638 #: doc/guix.texi:14303
25639 msgid "Specifies the maximum time a job may remain in the @code{indefinite} hold state before it is canceled. A value of 0 disables cancellation of held jobs."
25640 msgstr ""
25641
25642 #. type: deftypevr
25643 #: doc/guix.texi:14307
25644 #, no-wrap
25645 msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs"
25646 msgstr ""
25647
25648 #. type: deftypevr
25649 #: doc/guix.texi:14310
25650 msgid "Specifies the maximum number of simultaneous jobs that are allowed. Set to 0 to allow an unlimited number of jobs."
25651 msgstr ""
25652
25653 #. type: deftypevr
25654 #: doc/guix.texi:14312
25655 msgid "Defaults to @samp{500}."
25656 msgstr ""
25657
25658 #. type: deftypevr
25659 #: doc/guix.texi:14314
25660 #, no-wrap
25661 msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs-per-printer"
25662 msgstr ""
25663
25664 #. type: deftypevr
25665 #: doc/guix.texi:14317
25666 msgid "Specifies the maximum number of simultaneous jobs that are allowed per printer. A value of 0 allows up to MaxJobs jobs per printer."
25667 msgstr ""
25668
25669 #. type: deftypevr
25670 #: doc/guix.texi:14321
25671 #, no-wrap
25672 msgid "{@code{cups-configuration} parameter} non-negative-integer max-jobs-per-user"
25673 msgstr ""
25674
25675 #. type: deftypevr
25676 #: doc/guix.texi:14324
25677 msgid "Specifies the maximum number of simultaneous jobs that are allowed per user. A value of 0 allows up to MaxJobs jobs per user."
25678 msgstr ""
25679
25680 #. type: deftypevr
25681 #: doc/guix.texi:14328
25682 #, no-wrap
25683 msgid "{@code{cups-configuration} parameter} non-negative-integer max-job-time"
25684 msgstr ""
25685
25686 #. type: deftypevr
25687 #: doc/guix.texi:14331
25688 msgid "Specifies the maximum time a job may take to print before it is canceled, in seconds. Set to 0 to disable cancellation of \"stuck\" jobs."
25689 msgstr ""
25690
25691 #. type: deftypevr
25692 #: doc/guix.texi:14333
25693 msgid "Defaults to @samp{10800}."
25694 msgstr ""
25695
25696 #. type: deftypevr
25697 #: doc/guix.texi:14335
25698 #, no-wrap
25699 msgid "{@code{cups-configuration} parameter} non-negative-integer max-log-size"
25700 msgstr ""
25701
25702 #. type: deftypevr
25703 #: doc/guix.texi:14338
25704 msgid "Specifies the maximum size of the log files before they are rotated, in bytes. The value 0 disables log rotation."
25705 msgstr ""
25706
25707 #. type: deftypevr
25708 #: doc/guix.texi:14340
25709 msgid "Defaults to @samp{1048576}."
25710 msgstr ""
25711
25712 #. type: deftypevr
25713 #: doc/guix.texi:14342
25714 #, no-wrap
25715 msgid "{@code{cups-configuration} parameter} non-negative-integer multiple-operation-timeout"
25716 msgstr ""
25717
25718 #. type: deftypevr
25719 #: doc/guix.texi:14345
25720 msgid "Specifies the maximum amount of time to allow between files in a multiple file print job, in seconds."
25721 msgstr ""
25722
25723 #. type: deftypevr
25724 #: doc/guix.texi:14347 doc/guix.texi:14561 doc/guix.texi:20077
25725 msgid "Defaults to @samp{300}."
25726 msgstr ""
25727
25728 #. type: deftypevr
25729 #: doc/guix.texi:14349
25730 #, no-wrap
25731 msgid "{@code{cups-configuration} parameter} string page-log-format"
25732 msgstr ""
25733
25734 #. type: deftypevr
25735 #: doc/guix.texi:14354
25736 msgid "Specifies the format of PageLog lines. Sequences beginning with percent (@samp{%}) characters are replaced with the corresponding information, while all other characters are copied literally. The following percent sequences are recognized:"
25737 msgstr ""
25738
25739 #. type: item
25740 #: doc/guix.texi:14356
25741 #, no-wrap
25742 msgid "%%"
25743 msgstr ""
25744
25745 #. type: table
25746 #: doc/guix.texi:14358
25747 msgid "insert a single percent character"
25748 msgstr ""
25749
25750 #. type: item
25751 #: doc/guix.texi:14359
25752 #, no-wrap
25753 msgid "%@{name@}"
25754 msgstr ""
25755
25756 #. type: table
25757 #: doc/guix.texi:14361
25758 msgid "insert the value of the specified IPP attribute"
25759 msgstr ""
25760
25761 #. type: item
25762 #: doc/guix.texi:14362
25763 #, no-wrap
25764 msgid "%C"
25765 msgstr ""
25766
25767 #. type: table
25768 #: doc/guix.texi:14364
25769 msgid "insert the number of copies for the current page"
25770 msgstr ""
25771
25772 #. type: item
25773 #: doc/guix.texi:14365
25774 #, no-wrap
25775 msgid "%P"
25776 msgstr ""
25777
25778 #. type: table
25779 #: doc/guix.texi:14367
25780 msgid "insert the current page number"
25781 msgstr ""
25782
25783 #. type: item
25784 #: doc/guix.texi:14368
25785 #, no-wrap
25786 msgid "%T"
25787 msgstr ""
25788
25789 #. type: table
25790 #: doc/guix.texi:14370
25791 msgid "insert the current date and time in common log format"
25792 msgstr ""
25793
25794 #. type: item
25795 #: doc/guix.texi:14371
25796 #, no-wrap
25797 msgid "%j"
25798 msgstr ""
25799
25800 #. type: table
25801 #: doc/guix.texi:14373
25802 msgid "insert the job ID"
25803 msgstr ""
25804
25805 #. type: item
25806 #: doc/guix.texi:14374 doc/guix.texi:15950
25807 #, no-wrap
25808 msgid "%p"
25809 msgstr ""
25810
25811 #. type: table
25812 #: doc/guix.texi:14376
25813 msgid "insert the printer name"
25814 msgstr ""
25815
25816 #. type: item
25817 #: doc/guix.texi:14377 doc/guix.texi:15973
25818 #, no-wrap
25819 msgid "%u"
25820 msgstr ""
25821
25822 #. type: table
25823 #: doc/guix.texi:14379
25824 msgid "insert the username"
25825 msgstr ""
25826
25827 #. type: deftypevr
25828 #: doc/guix.texi:14385
25829 msgid "A value of the empty string disables page logging. The string @code{%p %u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@} %@{job-name@} %@{media@} %@{sides@}} creates a page log with the standard items."
25830 msgstr ""
25831
25832 #. type: deftypevr
25833 #: doc/guix.texi:14389
25834 #, no-wrap
25835 msgid "{@code{cups-configuration} parameter} environment-variables environment-variables"
25836 msgstr ""
25837
25838 #. type: deftypevr
25839 #: doc/guix.texi:14392
25840 msgid "Passes the specified environment variable(s) to child processes; a list of strings."
25841 msgstr ""
25842
25843 #. type: deftypevr
25844 #: doc/guix.texi:14396
25845 #, no-wrap
25846 msgid "{@code{cups-configuration} parameter} policy-configuration-list policies"
25847 msgstr ""
25848
25849 #. type: deftypevr
25850 #: doc/guix.texi:14398
25851 msgid "Specifies named access control policies."
25852 msgstr ""
25853
25854 #. type: deftypevr
25855 #: doc/guix.texi:14400
25856 msgid "Available @code{policy-configuration} fields are:"
25857 msgstr ""
25858
25859 #. type: deftypevr
25860 #: doc/guix.texi:14401
25861 #, no-wrap
25862 msgid "{@code{policy-configuration} parameter} string name"
25863 msgstr ""
25864
25865 #. type: deftypevr
25866 #: doc/guix.texi:14403
25867 msgid "Name of the policy."
25868 msgstr ""
25869
25870 #. type: deftypevr
25871 #: doc/guix.texi:14405
25872 #, no-wrap
25873 msgid "{@code{policy-configuration} parameter} string job-private-access"
25874 msgstr ""
25875
25876 #. type: deftypevr
25877 #: doc/guix.texi:14415
25878 msgid "Specifies an access list for a job's private values. @code{@@ACL} maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values. @code{@@OWNER} maps to the job's owner. @code{@@SYSTEM} maps to the groups listed for the @code{system-group} field of the @code{files-config} configuration, which is reified into the @code{cups-files.conf(5)} file. Other possible elements of the access list include specific user names, and @code{@@@var{group}} to indicate members of a specific group. The access list may also be simply @code{all} or @code{default}."
25879 msgstr ""
25880
25881 #. type: deftypevr
25882 #: doc/guix.texi:14417 doc/guix.texi:14439
25883 msgid "Defaults to @samp{\"@@OWNER @@SYSTEM\"}."
25884 msgstr ""
25885
25886 #. type: deftypevr
25887 #: doc/guix.texi:14419
25888 #, no-wrap
25889 msgid "{@code{policy-configuration} parameter} string job-private-values"
25890 msgstr ""
25891
25892 #. type: deftypevr
25893 #: doc/guix.texi:14422 doc/guix.texi:14444
25894 msgid "Specifies the list of job values to make private, or @code{all}, @code{default}, or @code{none}."
25895 msgstr ""
25896
25897 #. type: deftypevr
25898 #: doc/guix.texi:14425
25899 msgid "Defaults to @samp{\"job-name job-originating-host-name job-originating-user-name phone\"}."
25900 msgstr ""
25901
25902 #. type: deftypevr
25903 #: doc/guix.texi:14427
25904 #, no-wrap
25905 msgid "{@code{policy-configuration} parameter} string subscription-private-access"
25906 msgstr ""
25907
25908 #. type: deftypevr
25909 #: doc/guix.texi:14437
25910 msgid "Specifies an access list for a subscription's private values. @code{@@ACL} maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values. @code{@@OWNER} maps to the job's owner. @code{@@SYSTEM} maps to the groups listed for the @code{system-group} field of the @code{files-config} configuration, which is reified into the @code{cups-files.conf(5)} file. Other possible elements of the access list include specific user names, and @code{@@@var{group}} to indicate members of a specific group. The access list may also be simply @code{all} or @code{default}."
25911 msgstr ""
25912
25913 #. type: deftypevr
25914 #: doc/guix.texi:14441
25915 #, no-wrap
25916 msgid "{@code{policy-configuration} parameter} string subscription-private-values"
25917 msgstr ""
25918
25919 #. type: deftypevr
25920 #: doc/guix.texi:14447
25921 msgid "Defaults to @samp{\"notify-events notify-pull-method notify-recipient-uri notify-subscriber-user-name notify-user-data\"}."
25922 msgstr ""
25923
25924 #. type: deftypevr
25925 #: doc/guix.texi:14449
25926 #, no-wrap
25927 msgid "{@code{policy-configuration} parameter} operation-access-control-list access-controls"
25928 msgstr ""
25929
25930 #. type: deftypevr
25931 #: doc/guix.texi:14451
25932 msgid "Access control by IPP operation."
25933 msgstr ""
25934
25935 #. type: deftypevr
25936 #: doc/guix.texi:14456
25937 #, no-wrap
25938 msgid "{@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-files"
25939 msgstr ""
25940
25941 #. type: deftypevr
25942 #: doc/guix.texi:14461
25943 msgid "Specifies whether job files (documents) are preserved after a job is printed. If a numeric value is specified, job files are preserved for the indicated number of seconds after printing. Otherwise a boolean value applies indefinitely."
25944 msgstr ""
25945
25946 #. type: deftypevr
25947 #: doc/guix.texi:14463
25948 msgid "Defaults to @samp{86400}."
25949 msgstr ""
25950
25951 #. type: deftypevr
25952 #: doc/guix.texi:14465
25953 #, no-wrap
25954 msgid "{@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-history"
25955 msgstr ""
25956
25957 #. type: deftypevr
25958 #: doc/guix.texi:14470
25959 msgid "Specifies whether the job history is preserved after a job is printed. If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing. If @code{#t}, the job history is preserved until the MaxJobs limit is reached."
25960 msgstr ""
25961
25962 #. type: deftypevr
25963 #: doc/guix.texi:14474
25964 #, no-wrap
25965 msgid "{@code{cups-configuration} parameter} non-negative-integer reload-timeout"
25966 msgstr ""
25967
25968 #. type: deftypevr
25969 #: doc/guix.texi:14477
25970 msgid "Specifies the amount of time to wait for job completion before restarting the scheduler."
25971 msgstr ""
25972
25973 #. type: deftypevr
25974 #: doc/guix.texi:14481
25975 #, no-wrap
25976 msgid "{@code{cups-configuration} parameter} string rip-cache"
25977 msgstr ""
25978
25979 #. type: deftypevr
25980 #: doc/guix.texi:14484
25981 msgid "Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer."
25982 msgstr ""
25983
25984 #. type: deftypevr
25985 #: doc/guix.texi:14486
25986 msgid "Defaults to @samp{\"128m\"}."
25987 msgstr ""
25988
25989 #. type: deftypevr
25990 #: doc/guix.texi:14488
25991 #, no-wrap
25992 msgid "{@code{cups-configuration} parameter} string server-admin"
25993 msgstr ""
25994
25995 #. type: deftypevr
25996 #: doc/guix.texi:14490
25997 msgid "Specifies the email address of the server administrator."
25998 msgstr ""
25999
26000 #. type: deftypevr
26001 #: doc/guix.texi:14492
26002 msgid "Defaults to @samp{\"root@@localhost.localdomain\"}."
26003 msgstr ""
26004
26005 #. type: deftypevr
26006 #: doc/guix.texi:14494
26007 #, no-wrap
26008 msgid "{@code{cups-configuration} parameter} host-name-list-or-* server-alias"
26009 msgstr ""
26010
26011 #. type: deftypevr
26012 #: doc/guix.texi:14502
26013 msgid "The ServerAlias directive is used for HTTP Host header validation when clients connect to the scheduler from external interfaces. Using the special name @code{*} can expose your system to known browser-based DNS rebinding attacks, even when accessing sites through a firewall. If the auto-discovery of alternate names does not work, we recommend listing each alternate name with a ServerAlias directive instead of using @code{*}."
26014 msgstr ""
26015
26016 #. type: deftypevr
26017 #: doc/guix.texi:14504
26018 msgid "Defaults to @samp{*}."
26019 msgstr ""
26020
26021 #. type: deftypevr
26022 #: doc/guix.texi:14506
26023 #, no-wrap
26024 msgid "{@code{cups-configuration} parameter} string server-name"
26025 msgstr ""
26026
26027 #. type: deftypevr
26028 #: doc/guix.texi:14508
26029 msgid "Specifies the fully-qualified host name of the server."
26030 msgstr ""
26031
26032 #. type: deftypevr
26033 #: doc/guix.texi:14510 doc/guix.texi:17901 doc/guix.texi:17945
26034 msgid "Defaults to @samp{\"localhost\"}."
26035 msgstr ""
26036
26037 #. type: deftypevr
26038 #: doc/guix.texi:14512
26039 #, no-wrap
26040 msgid "{@code{cups-configuration} parameter} server-tokens server-tokens"
26041 msgstr ""
26042
26043 #. type: deftypevr
26044 #: doc/guix.texi:14520
26045 msgid "Specifies what information is included in the Server header of HTTP responses. @code{None} disables the Server header. @code{ProductOnly} reports @code{CUPS}. @code{Major} reports @code{CUPS 2}. @code{Minor} reports @code{CUPS 2.0}. @code{Minimal} reports @code{CUPS 2.0.0}. @code{OS} reports @code{CUPS 2.0.0 (@var{uname})} where @var{uname} is the output of the @code{uname} command. @code{Full} reports @code{CUPS 2.0.0 (@var{uname}) IPP/2.0}."
26046 msgstr ""
26047
26048 #. type: deftypevr
26049 #: doc/guix.texi:14522
26050 msgid "Defaults to @samp{Minimal}."
26051 msgstr ""
26052
26053 #. type: deftypevr
26054 #: doc/guix.texi:14524
26055 #, no-wrap
26056 msgid "{@code{cups-configuration} parameter} string set-env"
26057 msgstr ""
26058
26059 #. type: deftypevr
26060 #: doc/guix.texi:14526
26061 msgid "Set the specified environment variable to be passed to child processes."
26062 msgstr ""
26063
26064 #. type: deftypevr
26065 #: doc/guix.texi:14528
26066 msgid "Defaults to @samp{\"variable value\"}."
26067 msgstr ""
26068
26069 #. type: deftypevr
26070 #: doc/guix.texi:14530
26071 #, no-wrap
26072 msgid "{@code{cups-configuration} parameter} multiline-string-list ssl-listen"
26073 msgstr ""
26074
26075 #. type: deftypevr
26076 #: doc/guix.texi:14535
26077 msgid "Listens on the specified interfaces for encrypted connections. Valid values are of the form @var{address}:@var{port}, where @var{address} is either an IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate all addresses."
26078 msgstr ""
26079
26080 #. type: deftypevr
26081 #: doc/guix.texi:14539
26082 #, no-wrap
26083 msgid "{@code{cups-configuration} parameter} ssl-options ssl-options"
26084 msgstr ""
26085
26086 #. type: deftypevr
26087 #: doc/guix.texi:14546
26088 msgid "Sets encryption options. By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites. The @code{AllowRC4} option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones. The @code{AllowSSL3} option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0."
26089 msgstr ""
26090
26091 #. type: deftypevr
26092 #: doc/guix.texi:14550
26093 #, no-wrap
26094 msgid "{@code{cups-configuration} parameter} boolean strict-conformance?"
26095 msgstr ""
26096
26097 #. type: deftypevr
26098 #: doc/guix.texi:14553
26099 msgid "Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications."
26100 msgstr ""
26101
26102 #. type: deftypevr
26103 #: doc/guix.texi:14557
26104 #, no-wrap
26105 msgid "{@code{cups-configuration} parameter} non-negative-integer timeout"
26106 msgstr ""
26107
26108 #. type: deftypevr
26109 #: doc/guix.texi:14559
26110 msgid "Specifies the HTTP request timeout, in seconds."
26111 msgstr ""
26112
26113 #. type: deftypevr
26114 #: doc/guix.texi:14564
26115 #, no-wrap
26116 msgid "{@code{cups-configuration} parameter} boolean web-interface?"
26117 msgstr ""
26118
26119 #. type: deftypevr
26120 #: doc/guix.texi:14566
26121 msgid "Specifies whether the web interface is enabled."
26122 msgstr ""
26123
26124 #. type: Plain text
26125 #: doc/guix.texi:14576
26126 msgid "At this point you're probably thinking ``oh dear, Guix manual, I like you but you can stop already with the configuration options''. Indeed. However, one more point: it could be that you have an existing @code{cupsd.conf} that you want to use. In that case, you can pass an @code{opaque-cups-configuration} as the configuration of a @code{cups-service-type}."
26127 msgstr ""
26128
26129 #. type: Plain text
26130 #: doc/guix.texi:14578
26131 msgid "Available @code{opaque-cups-configuration} fields are:"
26132 msgstr ""
26133
26134 #. type: deftypevr
26135 #: doc/guix.texi:14579
26136 #, no-wrap
26137 msgid "{@code{opaque-cups-configuration} parameter} package cups"
26138 msgstr ""
26139
26140 #. type: deftypevr
26141 #: doc/guix.texi:14583
26142 #, no-wrap
26143 msgid "{@code{opaque-cups-configuration} parameter} string cupsd.conf"
26144 msgstr ""
26145
26146 #. type: deftypevr
26147 #: doc/guix.texi:14585
26148 msgid "The contents of the @code{cupsd.conf}, as a string."
26149 msgstr ""
26150
26151 #. type: deftypevr
26152 #: doc/guix.texi:14587
26153 #, no-wrap
26154 msgid "{@code{opaque-cups-configuration} parameter} string cups-files.conf"
26155 msgstr ""
26156
26157 #. type: deftypevr
26158 #: doc/guix.texi:14589
26159 msgid "The contents of the @code{cups-files.conf} file, as a string."
26160 msgstr ""
26161
26162 #. type: Plain text
26163 #: doc/guix.texi:14594
26164 msgid "For example, if your @code{cupsd.conf} and @code{cups-files.conf} are in strings of the same name, you could instantiate a CUPS service like this:"
26165 msgstr ""
26166
26167 #. type: example
26168 #: doc/guix.texi:14600
26169 #, no-wrap
26170 msgid ""
26171 "(service cups-service-type\n"
26172 " (opaque-cups-configuration\n"
26173 " (cupsd.conf cupsd.conf)\n"
26174 " (cups-files.conf cups-files.conf)))\n"
26175 msgstr ""
26176
26177 #. type: Plain text
26178 #: doc/guix.texi:14611
26179 msgid "The @code{(gnu services desktop)} module provides services that are usually useful in the context of a ``desktop'' setup---that is, on a machine running a graphical display server, possibly with graphical user interfaces, etc. It also defines services that provide specific desktop environments like GNOME, Xfce or MATE."
26180 msgstr ""
26181
26182 #. type: Plain text
26183 #: doc/guix.texi:14615
26184 msgid "To simplify things, the module defines a variable containing the set of services that users typically expect on a machine with a graphical environment and networking:"
26185 msgstr ""
26186
26187 #. type: defvr
26188 #: doc/guix.texi:14616
26189 #, no-wrap
26190 msgid "{Scheme Variable} %desktop-services"
26191 msgstr ""
26192
26193 #. type: defvr
26194 #: doc/guix.texi:14619
26195 msgid "This is a list of services that builds upon @var{%base-services} and adds or adjusts services for a typical ``desktop'' setup."
26196 msgstr ""
26197
26198 #. type: defvr
26199 #: doc/guix.texi:14629
26200 msgid "In particular, it adds a graphical login manager (@pxref{X Window, @code{gdm-service-type}}), screen lockers, a network management tool (@pxref{Networking Services, @code{network-manager-service-type}}), energy and color management services, the @code{elogind} login and seat manager, the Polkit privilege service, the GeoClue location service, the AccountsService daemon that allows authorized users change system passwords, an NTP client (@pxref{Networking Services}), the Avahi daemon, and has the name service switch service configured to be able to use @code{nss-mdns} (@pxref{Name Service Switch, mDNS})."
26201 msgstr ""
26202
26203 #. type: Plain text
26204 #: doc/guix.texi:14634
26205 msgid "The @var{%desktop-services} variable can be used as the @code{services} field of an @code{operating-system} declaration (@pxref{operating-system Reference, @code{services}})."
26206 msgstr ""
26207
26208 #. type: Plain text
26209 #: doc/guix.texi:14657
26210 msgid "Additionally, the @code{gnome-desktop-service-type}, @code{xfce-desktop-service}, @code{mate-desktop-service-type} and @code{enlightenment-desktop-service-type} procedures can add GNOME, Xfce, MATE and/or Enlightenment to a system. To ``add GNOME'' means that system-level services like the backlight adjustment helpers and the power management utilities are added to the system, extending @code{polkit} and @code{dbus} appropriately, allowing GNOME to operate with elevated privileges on a limited number of special-purpose system interfaces. Additionally, adding a service made by @code{gnome-desktop-service-type} adds the GNOME metapackage to the system profile. Likewise, adding the Xfce service not only adds the @code{xfce} metapackage to the system profile, but it also gives the Thunar file manager the ability to open a ``root-mode'' file management window, if the user authenticates using the administrator's password via the standard polkit graphical interface. To ``add MATE'' means that @code{polkit} and @code{dbus} are extended appropriately, allowing MATE to operate with elevated privileges on a limited number of special-purpose system interfaces. Additionally, adding a service of type @code{mate-desktop-service-type} adds the MATE metapackage to the system profile. ``Adding Enlightenment'' means that @code{dbus} is extended appropriately, and several of Enlightenment's binaries are set as setuid, allowing Enlightenment's screen locker and other functionality to work as expetected."
26211 msgstr ""
26212
26213 #. type: Plain text
26214 #: doc/guix.texi:14666
26215 msgid "The desktop environments in Guix use the Xorg display server by default. If you'd like to use the newer display server protocol called Wayland, you need to use the @code{sddm-service} instead of GDM as the graphical login manager. You should then select the ``GNOME (Wayland)'' session in SDDM. Alternatively you can also try starting GNOME on Wayland manually from a TTY with the command ``XDG_SESSION_TYPE=wayland exec dbus-run-session gnome-session``. Currently only GNOME has support for Wayland."
26216 msgstr ""
26217
26218 #. type: defvr
26219 #: doc/guix.texi:14667
26220 #, no-wrap
26221 msgid "{Scheme Variable} gnome-desktop-service-type"
26222 msgstr ""
26223
26224 #. type: defvr
26225 #: doc/guix.texi:14671
26226 msgid "This is the type of the service that adds the @uref{https://www.gnome.org, GNOME} desktop environment. Its value is a @code{gnome-desktop-configuration} object (see below.)"
26227 msgstr ""
26228
26229 #. type: defvr
26230 #: doc/guix.texi:14674
26231 msgid "This service adds the @code{gnome} package to the system profile, and extends polkit with the actions from @code{gnome-settings-daemon}."
26232 msgstr ""
26233
26234 #. type: deftp
26235 #: doc/guix.texi:14676
26236 #, no-wrap
26237 msgid "{Data Type} gnome-desktop-configuration"
26238 msgstr ""
26239
26240 #. type: deftp
26241 #: doc/guix.texi:14678
26242 msgid "Configuration record for the GNOME desktop environment."
26243 msgstr ""
26244
26245 #. type: item
26246 #: doc/guix.texi:14680
26247 #, no-wrap
26248 msgid "@code{gnome} (default: @code{gnome})"
26249 msgstr "@code{gnome}(默认值:@code{gnome})"
26250
26251 #. type: table
26252 #: doc/guix.texi:14682
26253 msgid "The GNOME package to use."
26254 msgstr ""
26255
26256 #. type: defvr
26257 #: doc/guix.texi:14685
26258 #, no-wrap
26259 msgid "{Scheme Variable} xfce-desktop-service-type"
26260 msgstr ""
26261
26262 #. type: defvr
26263 #: doc/guix.texi:14689
26264 msgid "This is the type of a service to run the @uref{Xfce, https://xfce.org/} desktop environment. Its value is an @code{xfce-desktop-configuration} object (see below.)"
26265 msgstr ""
26266
26267 #. type: defvr
26268 #: doc/guix.texi:14694
26269 msgid "This service adds the @code{xfce} package to the system profile, and extends polkit with the ability for @code{thunar} to manipulate the file system as root from within a user session, after the user has authenticated with the administrator's password."
26270 msgstr ""
26271
26272 #. type: deftp
26273 #: doc/guix.texi:14696
26274 #, no-wrap
26275 msgid "{Data Type} xfce-desktop-configuration"
26276 msgstr ""
26277
26278 #. type: deftp
26279 #: doc/guix.texi:14698
26280 msgid "Configuration record for the Xfce desktop environment."
26281 msgstr ""
26282
26283 #. type: item
26284 #: doc/guix.texi:14700
26285 #, no-wrap
26286 msgid "@code{xfce} (default: @code{xfce})"
26287 msgstr "@code{xfce}(默认值:@code{xfce})"
26288
26289 #. type: table
26290 #: doc/guix.texi:14702
26291 msgid "The Xfce package to use."
26292 msgstr ""
26293
26294 #. type: deffn
26295 #: doc/guix.texi:14705
26296 #, no-wrap
26297 msgid "{Scheme Variable} mate-desktop-service-type"
26298 msgstr ""
26299
26300 #. type: deffn
26301 #: doc/guix.texi:14709
26302 msgid "This is the type of the service that runs the @uref{https://mate-desktop.org/, MATE desktop environment}. Its value is a @code{mate-desktop-configuration} object (see below.)"
26303 msgstr ""
26304
26305 #. type: deffn
26306 #: doc/guix.texi:14713
26307 msgid "This service adds the @code{mate} package to the system profile, and extends polkit with the actions from @code{mate-settings-daemon}."
26308 msgstr ""
26309
26310 #. type: deftp
26311 #: doc/guix.texi:14715
26312 #, no-wrap
26313 msgid "{Data Type} mate-desktop-configuration"
26314 msgstr ""
26315
26316 #. type: deftp
26317 #: doc/guix.texi:14717
26318 msgid "Configuration record for the MATE desktop environment."
26319 msgstr ""
26320
26321 #. type: item
26322 #: doc/guix.texi:14719
26323 #, no-wrap
26324 msgid "@code{mate} (default: @code{mate})"
26325 msgstr "@code{mate}(默认值:@code{mate})"
26326
26327 #. type: table
26328 #: doc/guix.texi:14721
26329 msgid "The MATE package to use."
26330 msgstr ""
26331
26332 #. type: deffn
26333 #: doc/guix.texi:14724
26334 #, no-wrap
26335 msgid "{Scheme Variable} enlightenment-desktop-service-type"
26336 msgstr ""
26337
26338 #. type: deffn
26339 #: doc/guix.texi:14727
26340 msgid "Return a service that adds the @code{enlightenment} package to the system profile, and extends dbus with actions from @code{efl}."
26341 msgstr ""
26342
26343 #. type: deftp
26344 #: doc/guix.texi:14729
26345 #, no-wrap
26346 msgid "{Data Type} enlightenment-desktop-service-configuration"
26347 msgstr ""
26348
26349 #. type: item
26350 #: doc/guix.texi:14731
26351 #, no-wrap
26352 msgid "@code{enlightenment} (default: @code{enlightenment})"
26353 msgstr "@code{enlightenment}(默认值:@code{enlightenment})"
26354
26355 #. type: table
26356 #: doc/guix.texi:14733
26357 msgid "The enlightenment package to use."
26358 msgstr ""
26359
26360 #. type: Plain text
26361 #: doc/guix.texi:14741
26362 msgid "Because the GNOME, Xfce and MATE desktop services pull in so many packages, the default @code{%desktop-services} variable doesn't include any of them by default. To add GNOME, Xfce or MATE, just @code{cons} them onto @code{%desktop-services} in the @code{services} field of your @code{operating-system}:"
26363 msgstr ""
26364
26365 #. type: example
26366 #: doc/guix.texi:14752
26367 #, no-wrap
26368 msgid ""
26369 "(use-modules (gnu))\n"
26370 "(use-service-modules desktop)\n"
26371 "(operating-system\n"
26372 " ...\n"
26373 " ;; cons* adds items to the list given as its last argument.\n"
26374 " (services (cons* (service gnome-desktop-service-type)\n"
26375 " (service xfce-desktop-service)\n"
26376 " %desktop-services))\n"
26377 " ...)\n"
26378 msgstr ""
26379
26380 #. type: Plain text
26381 #: doc/guix.texi:14756
26382 msgid "These desktop environments will then be available as options in the graphical login window."
26383 msgstr ""
26384
26385 #. type: Plain text
26386 #: doc/guix.texi:14760
26387 msgid "The actual service definitions included in @code{%desktop-services} and provided by @code{(gnu services dbus)} and @code{(gnu services desktop)} are described below."
26388 msgstr ""
26389
26390 #. type: deffn
26391 #: doc/guix.texi:14761
26392 #, no-wrap
26393 msgid "{Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()]"
26394 msgstr ""
26395
26396 #. type: deffn
26397 #: doc/guix.texi:14764
26398 msgid "Return a service that runs the ``system bus'', using @var{dbus}, with support for @var{services}."
26399 msgstr ""
26400
26401 #. type: deffn
26402 #: doc/guix.texi:14768
26403 msgid "@uref{https://dbus.freedesktop.org/, D-Bus} is an inter-process communication facility. Its system bus is used to allow system services to communicate and to be notified of system-wide events."
26404 msgstr ""
26405
26406 #. type: deffn
26407 #: doc/guix.texi:14773
26408 msgid "@var{services} must be a list of packages that provide an @file{etc/dbus-1/system.d} directory containing additional D-Bus configuration and policy files. For example, to allow avahi-daemon to use the system bus, @var{services} must be equal to @code{(list avahi)}."
26409 msgstr ""
26410
26411 #. type: deffn
26412 #: doc/guix.texi:14775
26413 #, no-wrap
26414 msgid "{Scheme Procedure} elogind-service [#:config @var{config}]"
26415 msgstr ""
26416
26417 #. type: deffn
26418 #: doc/guix.texi:14781
26419 msgid "Return a service that runs the @code{elogind} login and seat management daemon. @uref{https://github.com/elogind/elogind, Elogind} exposes a D-Bus interface that can be used to know which users are logged in, know what kind of sessions they have open, suspend the system, inhibit system suspend, reboot the system, and other tasks."
26420 msgstr ""
26421
26422 #. type: deffn
26423 #: doc/guix.texi:14785
26424 msgid "Elogind handles most system-level power events for a computer, for example suspending the system when a lid is closed, or shutting it down when the power button is pressed."
26425 msgstr ""
26426
26427 #. type: deffn
26428 #: doc/guix.texi:14790
26429 msgid "The @var{config} keyword argument specifies the configuration for elogind, and should be the result of an @code{(elogind-configuration (@var{parameter} @var{value})...)} invocation. Available parameters and their default values are:"
26430 msgstr ""
26431
26432 #. type: item
26433 #: doc/guix.texi:14792
26434 #, no-wrap
26435 msgid "kill-user-processes?"
26436 msgstr ""
26437
26438 #. type: code{#1}
26439 #: doc/guix.texi:14794 doc/guix.texi:14812 doc/guix.texi:14814
26440 #: doc/guix.texi:14816 doc/guix.texi:14828
26441 msgid "#f"
26442 msgstr ""
26443
26444 #. type: item
26445 #: doc/guix.texi:14794
26446 #, no-wrap
26447 msgid "kill-only-users"
26448 msgstr ""
26449
26450 #. type: code{#1}
26451 #: doc/guix.texi:14796 doc/guix.texi:14834
26452 msgid "()"
26453 msgstr ""
26454
26455 #. type: item
26456 #: doc/guix.texi:14796
26457 #, no-wrap
26458 msgid "kill-exclude-users"
26459 msgstr ""
26460
26461 #. type: code{#1}
26462 #: doc/guix.texi:14798
26463 msgid "(\"root\")"
26464 msgstr ""
26465
26466 #. type: item
26467 #: doc/guix.texi:14798
26468 #, no-wrap
26469 msgid "inhibit-delay-max-seconds"
26470 msgstr ""
26471
26472 #. type: code{#1}
26473 #: doc/guix.texi:14800
26474 msgid "5"
26475 msgstr ""
26476
26477 #. type: item
26478 #: doc/guix.texi:14800
26479 #, no-wrap
26480 msgid "handle-power-key"
26481 msgstr ""
26482
26483 #. type: code{#1}
26484 #: doc/guix.texi:14802
26485 msgid "poweroff"
26486 msgstr ""
26487
26488 #. type: item
26489 #: doc/guix.texi:14802
26490 #, no-wrap
26491 msgid "handle-suspend-key"
26492 msgstr ""
26493
26494 #. type: code{#1}
26495 #: doc/guix.texi:14804 doc/guix.texi:14808
26496 msgid "suspend"
26497 msgstr ""
26498
26499 #. type: item
26500 #: doc/guix.texi:14804
26501 #, no-wrap
26502 msgid "handle-hibernate-key"
26503 msgstr ""
26504
26505 #. type: code{#1}
26506 #: doc/guix.texi:14806
26507 msgid "hibernate"
26508 msgstr ""
26509
26510 #. type: item
26511 #: doc/guix.texi:14806
26512 #, no-wrap
26513 msgid "handle-lid-switch"
26514 msgstr ""
26515
26516 #. type: item
26517 #: doc/guix.texi:14808
26518 #, no-wrap
26519 msgid "handle-lid-switch-docked"
26520 msgstr ""
26521
26522 #. type: code{#1}
26523 #: doc/guix.texi:14810 doc/guix.texi:14822
26524 msgid "ignore"
26525 msgstr ""
26526
26527 #. type: item
26528 #: doc/guix.texi:14810
26529 #, no-wrap
26530 msgid "power-key-ignore-inhibited?"
26531 msgstr ""
26532
26533 #. type: item
26534 #: doc/guix.texi:14812
26535 #, no-wrap
26536 msgid "suspend-key-ignore-inhibited?"
26537 msgstr ""
26538
26539 #. type: item
26540 #: doc/guix.texi:14814
26541 #, no-wrap
26542 msgid "hibernate-key-ignore-inhibited?"
26543 msgstr ""
26544
26545 #. type: item
26546 #: doc/guix.texi:14816
26547 #, no-wrap
26548 msgid "lid-switch-ignore-inhibited?"
26549 msgstr ""
26550
26551 #. type: code{#1}
26552 #: doc/guix.texi:14818 doc/guix.texi:14830
26553 msgid "#t"
26554 msgstr ""
26555
26556 #. type: item
26557 #: doc/guix.texi:14818
26558 #, no-wrap
26559 msgid "holdoff-timeout-seconds"
26560 msgstr ""
26561
26562 #. type: code{#1}
26563 #: doc/guix.texi:14820
26564 msgid "30"
26565 msgstr ""
26566
26567 #. type: item
26568 #: doc/guix.texi:14820
26569 #, no-wrap
26570 msgid "idle-action"
26571 msgstr ""
26572
26573 #. type: item
26574 #: doc/guix.texi:14822
26575 #, no-wrap
26576 msgid "idle-action-seconds"
26577 msgstr ""
26578
26579 #. type: code{#1}
26580 #: doc/guix.texi:14824
26581 msgid "(* 30 60)"
26582 msgstr ""
26583
26584 #. type: item
26585 #: doc/guix.texi:14824
26586 #, no-wrap
26587 msgid "runtime-directory-size-percent"
26588 msgstr ""
26589
26590 #. type: code{#1}
26591 #: doc/guix.texi:14826
26592 msgid "10"
26593 msgstr ""
26594
26595 #. type: item
26596 #: doc/guix.texi:14826
26597 #, no-wrap
26598 msgid "runtime-directory-size"
26599 msgstr ""
26600
26601 #. type: item
26602 #: doc/guix.texi:14828
26603 #, no-wrap
26604 msgid "remove-ipc?"
26605 msgstr ""
26606
26607 #. type: item
26608 #: doc/guix.texi:14830
26609 #, no-wrap
26610 msgid "suspend-state"
26611 msgstr ""
26612
26613 #. type: code{#1}
26614 #: doc/guix.texi:14832
26615 msgid "(\"mem\" \"standby\" \"freeze\")"
26616 msgstr ""
26617
26618 #. type: item
26619 #: doc/guix.texi:14832
26620 #, no-wrap
26621 msgid "suspend-mode"
26622 msgstr ""
26623
26624 #. type: item
26625 #: doc/guix.texi:14834
26626 #, no-wrap
26627 msgid "hibernate-state"
26628 msgstr ""
26629
26630 #. type: code{#1}
26631 #: doc/guix.texi:14836 doc/guix.texi:14840
26632 msgid "(\"disk\")"
26633 msgstr ""
26634
26635 #. type: item
26636 #: doc/guix.texi:14836
26637 #, no-wrap
26638 msgid "hibernate-mode"
26639 msgstr ""
26640
26641 #. type: code{#1}
26642 #: doc/guix.texi:14838
26643 msgid "(\"platform\" \"shutdown\")"
26644 msgstr ""
26645
26646 #. type: item
26647 #: doc/guix.texi:14838
26648 #, no-wrap
26649 msgid "hybrid-sleep-state"
26650 msgstr ""
26651
26652 #. type: item
26653 #: doc/guix.texi:14840
26654 #, no-wrap
26655 msgid "hybrid-sleep-mode"
26656 msgstr ""
26657
26658 #. type: code{#1}
26659 #: doc/guix.texi:14842
26660 msgid "(\"suspend\" \"platform\" \"shutdown\")"
26661 msgstr ""
26662
26663 #. type: deffn
26664 #: doc/guix.texi:14845
26665 #, no-wrap
26666 msgid "{Scheme Procedure} accountsservice-service @"
26667 msgstr ""
26668
26669 #. type: deffn
26670 #: doc/guix.texi:14853
26671 msgid "[#:accountsservice @var{accountsservice}] Return a service that runs AccountsService, a system service that can list available accounts, change their passwords, and so on. AccountsService integrates with PolicyKit to enable unprivileged users to acquire the capability to modify their system configuration. @uref{https://www.freedesktop.org/wiki/Software/AccountsService/, the accountsservice web site} for more information."
26672 msgstr ""
26673
26674 #. type: deffn
26675 #: doc/guix.texi:14856
26676 msgid "The @var{accountsservice} keyword argument is the @code{accountsservice} package to expose as a service."
26677 msgstr ""
26678
26679 #. type: deffn
26680 #: doc/guix.texi:14858
26681 #, no-wrap
26682 msgid "{Scheme Procedure} polkit-service @"
26683 msgstr ""
26684
26685 #. type: deffn
26686 #: doc/guix.texi:14867
26687 msgid "[#:polkit @var{polkit}] Return a service that runs the @uref{https://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege management service}, which allows system administrators to grant access to privileged operations in a structured way. By querying the Polkit service, a privileged system component can know when it should grant additional capabilities to ordinary users. For example, an ordinary user can be granted the capability to suspend the system if the user is logged in locally."
26688 msgstr ""
26689
26690 #. type: defvr
26691 #: doc/guix.texi:14869
26692 #, no-wrap
26693 msgid "{Scheme Variable} upower-service-type"
26694 msgstr ""
26695
26696 #. type: defvr
26697 #: doc/guix.texi:14873
26698 msgid "Service that runs @uref{https://upower.freedesktop.org/, @command{upowerd}}, a system-wide monitor for power consumption and battery levels, with the given configuration settings."
26699 msgstr ""
26700
26701 #. type: defvr
26702 #: doc/guix.texi:14876
26703 msgid "It implements the @code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME."
26704 msgstr ""
26705
26706 #. type: deftp
26707 #: doc/guix.texi:14878
26708 #, no-wrap
26709 msgid "{Data Type} upower-configuration"
26710 msgstr ""
26711
26712 #. type: deftp
26713 #: doc/guix.texi:14880
26714 msgid "Data type representation the configuration for UPower."
26715 msgstr ""
26716
26717 #. type: item
26718 #: doc/guix.texi:14883
26719 #, no-wrap
26720 msgid "@code{upower} (default: @var{upower})"
26721 msgstr ""
26722
26723 #. type: table
26724 #: doc/guix.texi:14885
26725 msgid "Package to use for @code{upower}."
26726 msgstr ""
26727
26728 #. type: item
26729 #: doc/guix.texi:14886
26730 #, no-wrap
26731 msgid "@code{watts-up-pro?} (default: @code{#f})"
26732 msgstr ""
26733
26734 #. type: table
26735 #: doc/guix.texi:14888
26736 msgid "Enable the Watts Up Pro device."
26737 msgstr ""
26738
26739 #. type: item
26740 #: doc/guix.texi:14889
26741 #, no-wrap
26742 msgid "@code{poll-batteries?} (default: @code{#t})"
26743 msgstr ""
26744
26745 #. type: table
26746 #: doc/guix.texi:14891
26747 msgid "Enable polling the kernel for battery level changes."
26748 msgstr ""
26749
26750 #. type: item
26751 #: doc/guix.texi:14892
26752 #, no-wrap
26753 msgid "@code{ignore-lid?} (default: @code{#f})"
26754 msgstr ""
26755
26756 #. type: table
26757 #: doc/guix.texi:14894
26758 msgid "Ignore the lid state, this can be useful if it's incorrect on a device."
26759 msgstr ""
26760
26761 #. type: item
26762 #: doc/guix.texi:14895
26763 #, no-wrap
26764 msgid "@code{use-percentage-for-policy?} (default: @code{#f})"
26765 msgstr ""
26766
26767 #. type: table
26768 #: doc/guix.texi:14898
26769 msgid "Whether battery percentage based policy should be used. The default is to use the time left, change to @code{#t} to use the percentage."
26770 msgstr ""
26771
26772 #. type: item
26773 #: doc/guix.texi:14899
26774 #, no-wrap
26775 msgid "@code{percentage-low} (default: @code{10})"
26776 msgstr ""
26777
26778 #. type: table
26779 #: doc/guix.texi:14902
26780 msgid "When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered low."
26781 msgstr ""
26782
26783 #. type: item
26784 #: doc/guix.texi:14903
26785 #, no-wrap
26786 msgid "@code{percentage-critical} (default: @code{3})"
26787 msgstr ""
26788
26789 #. type: table
26790 #: doc/guix.texi:14906
26791 msgid "When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered critical."
26792 msgstr ""
26793
26794 #. type: item
26795 #: doc/guix.texi:14907
26796 #, no-wrap
26797 msgid "@code{percentage-action} (default: @code{2})"
26798 msgstr ""
26799
26800 #. type: table
26801 #: doc/guix.texi:14910
26802 msgid "When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which action will be taken."
26803 msgstr ""
26804
26805 #. type: item
26806 #: doc/guix.texi:14911
26807 #, no-wrap
26808 msgid "@code{time-low} (default: @code{1200})"
26809 msgstr ""
26810
26811 #. type: table
26812 #: doc/guix.texi:14914
26813 msgid "When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered low."
26814 msgstr ""
26815
26816 #. type: item
26817 #: doc/guix.texi:14915
26818 #, no-wrap
26819 msgid "@code{time-critical} (default: @code{300})"
26820 msgstr ""
26821
26822 #. type: table
26823 #: doc/guix.texi:14918
26824 msgid "When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered critical."
26825 msgstr ""
26826
26827 #. type: item
26828 #: doc/guix.texi:14919
26829 #, no-wrap
26830 msgid "@code{time-action} (default: @code{120})"
26831 msgstr ""
26832
26833 #. type: table
26834 #: doc/guix.texi:14922
26835 msgid "When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which action will be taken."
26836 msgstr ""
26837
26838 #. type: item
26839 #: doc/guix.texi:14923
26840 #, no-wrap
26841 msgid "@code{critical-power-action} (default: @code{'hybrid-sleep})"
26842 msgstr ""
26843
26844 #. type: table
26845 #: doc/guix.texi:14926
26846 msgid "The action taken when @code{percentage-action} or @code{time-action} is reached (depending on the configuration of @code{use-percentage-for-policy?})."
26847 msgstr ""
26848
26849 #. type: table
26850 #: doc/guix.texi:14928
26851 msgid "Possible values are:"
26852 msgstr ""
26853
26854 #. type: code{#1}
26855 #: doc/guix.texi:14932
26856 msgid "'power-off"
26857 msgstr ""
26858
26859 #. type: code{#1}
26860 #: doc/guix.texi:14935
26861 msgid "'hibernate"
26862 msgstr ""
26863
26864 #. type: itemize
26865 #: doc/guix.texi:14938
26866 msgid "@code{'hybrid-sleep}."
26867 msgstr ""
26868
26869 #. type: deffn
26870 #: doc/guix.texi:14943
26871 #, no-wrap
26872 msgid "{Scheme Procedure} udisks-service [#:udisks @var{udisks}]"
26873 msgstr ""
26874
26875 #. type: deffn
26876 #: doc/guix.texi:14948
26877 msgid "Return a service for @uref{https://udisks.freedesktop.org/docs/latest/, UDisks}, a @dfn{disk management} daemon that provides user interfaces with notifications and ways to mount/unmount disks. Programs that talk to UDisks include the @command{udisksctl} command, part of UDisks, and GNOME Disks."
26878 msgstr ""
26879
26880 #. type: deffn
26881 #: doc/guix.texi:14950
26882 #, no-wrap
26883 msgid "{Scheme Procedure} colord-service [#:colord @var{colord}]"
26884 msgstr ""
26885
26886 #. type: deffn
26887 #: doc/guix.texi:14956
26888 msgid "Return a service that runs @command{colord}, a system service with a D-Bus interface to manage the color profiles of input and output devices such as screens and scanners. It is notably used by the GNOME Color Manager graphical tool. See @uref{https://www.freedesktop.org/software/colord/, the colord web site} for more information."
26889 msgstr ""
26890
26891 #. type: deffn
26892 #: doc/guix.texi:14958
26893 #, no-wrap
26894 msgid "{Scheme Procedure} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()]"
26895 msgstr ""
26896
26897 #. type: deffn
26898 #: doc/guix.texi:14967
26899 msgid "Return a configuration allowing an application to access GeoClue location data. @var{name} is the Desktop ID of the application, without the @code{.desktop} part. If @var{allowed?} is true, the application will have access to location information by default. The boolean @var{system?} value indicates whether an application is a system component or not. Finally @var{users} is a list of UIDs of all users for which this application is allowed location info access. An empty users list means that all users are allowed."
26900 msgstr ""
26901
26902 #. type: defvr
26903 #: doc/guix.texi:14969
26904 #, no-wrap
26905 msgid "{Scheme Variable} %standard-geoclue-applications"
26906 msgstr ""
26907
26908 #. type: defvr
26909 #: doc/guix.texi:14976
26910 msgid "The standard list of well-known GeoClue application configurations, granting authority to the GNOME date-and-time utility to ask for the current location in order to set the time zone, and allowing the IceCat and Epiphany web browsers to request location information. IceCat and Epiphany both query the user before allowing a web page to know the user's location."
26911 msgstr ""
26912
26913 #. type: deffn
26914 #: doc/guix.texi:14978
26915 #, no-wrap
26916 msgid "{Scheme Procedure} geoclue-service [#:colord @var{colord}] @"
26917 msgstr ""
26918
26919 #. type: deffn
26920 #: doc/guix.texi:14991
26921 msgid "[#:whitelist '()] @ [#:wifi-geolocation-url \"https://location.services.mozilla.com/v1/geolocate?key=geoclue\"] @ [#:submit-data? #f] [#:wifi-submission-url \"https://location.services.mozilla.com/v1/submit?key=geoclue\"] @ [#:submission-nick \"geoclue\"] @ [#:applications %standard-geoclue-applications] Return a service that runs the GeoClue location service. This service provides a D-Bus interface to allow applications to request access to a user's physical location, and optionally to add information to online location databases. See @uref{https://wiki.freedesktop.org/www/Software/GeoClue/, the GeoClue web site} for more information."
26922 msgstr ""
26923
26924 #. type: deffn
26925 #: doc/guix.texi:14993
26926 #, no-wrap
26927 msgid "{Scheme Procedure} bluetooth-service [#:bluez @var{bluez}] @"
26928 msgstr ""
26929
26930 #. type: deffn
26931 #: doc/guix.texi:15000
26932 msgid "[@w{#:auto-enable? #f}] Return a service that runs the @command{bluetoothd} daemon, which manages all the Bluetooth devices and provides a number of D-Bus interfaces. When AUTO-ENABLE? is true, the bluetooth controller is powered automatically at boot, which can be useful when using a bluetooth keyboard or mouse."
26933 msgstr ""
26934
26935 #. type: deffn
26936 #: doc/guix.texi:15002
26937 msgid "Users need to be in the @code{lp} group to access the D-Bus service."
26938 msgstr ""
26939
26940 #. type: cindex
26941 #: doc/guix.texi:15007
26942 #, no-wrap
26943 msgid "sound support"
26944 msgstr ""
26945
26946 #. type: cindex
26947 #: doc/guix.texi:15008
26948 #, no-wrap
26949 msgid "ALSA"
26950 msgstr ""
26951
26952 #. type: cindex
26953 #: doc/guix.texi:15009
26954 #, no-wrap
26955 msgid "PulseAudio, sound support"
26956 msgstr ""
26957
26958 #. type: Plain text
26959 #: doc/guix.texi:15014
26960 msgid "The @code{(gnu services sound)} module provides a service to configure the Advanced Linux Sound Architecture (ALSA) system, which makes PulseAudio the preferred ALSA output driver."
26961 msgstr ""
26962
26963 #. type: deffn
26964 #: doc/guix.texi:15015
26965 #, no-wrap
26966 msgid "{Scheme Variable} alsa-service-type"
26967 msgstr ""
26968
26969 #. type: deffn
26970 #: doc/guix.texi:15020
26971 msgid "This is the type for the @uref{https://alsa-project.org/, Advanced Linux Sound Architecture} (ALSA) system, which generates the @file{/etc/asound.conf} configuration file. The value for this type is a @command{alsa-configuration} record as in this example:"
26972 msgstr ""
26973
26974 #. type: example
26975 #: doc/guix.texi:15023
26976 #, no-wrap
26977 msgid "(service alsa-service-type)\n"
26978 msgstr ""
26979
26980 #. type: deffn
26981 #: doc/guix.texi:15026
26982 msgid "See below for details about @code{alsa-configuration}."
26983 msgstr ""
26984
26985 #. type: deftp
26986 #: doc/guix.texi:15028
26987 #, no-wrap
26988 msgid "{Data Type} alsa-configuration"
26989 msgstr ""
26990
26991 #. type: deftp
26992 #: doc/guix.texi:15030
26993 msgid "Data type representing the configuration for @code{alsa-service}."
26994 msgstr ""
26995
26996 #. type: item
26997 #: doc/guix.texi:15032
26998 #, no-wrap
26999 msgid "@code{alsa-plugins} (default: @var{alsa-plugins})"
27000 msgstr ""
27001
27002 #. type: table
27003 #: doc/guix.texi:15034
27004 msgid "@code{alsa-plugins} package to use."
27005 msgstr ""
27006
27007 #. type: item
27008 #: doc/guix.texi:15035
27009 #, no-wrap
27010 msgid "@code{pulseaudio?} (default: @var{#t})"
27011 msgstr ""
27012
27013 #. type: table
27014 #: doc/guix.texi:15038
27015 msgid "Whether ALSA applications should transparently be made to use the @uref{http://www.pulseaudio.org/, PulseAudio} sound server."
27016 msgstr ""
27017
27018 #. type: table
27019 #: doc/guix.texi:15042
27020 msgid "Using PulseAudio allows you to run several sound-producing applications at the same time and to individual control them @i{via} @command{pavucontrol}, among other things."
27021 msgstr ""
27022
27023 #. type: item
27024 #: doc/guix.texi:15043
27025 #, no-wrap
27026 msgid "@code{extra-options} (default: @var{\"\"})"
27027 msgstr ""
27028
27029 #. type: table
27030 #: doc/guix.texi:15045
27031 msgid "String to append to the @file{/etc/asound.conf} file."
27032 msgstr ""
27033
27034 #. type: Plain text
27035 #: doc/guix.texi:15051
27036 msgid "Individual users who want to override the system configuration of ALSA can do it with the @file{~/.asoundrc} file:"
27037 msgstr ""
27038
27039 #. type: example
27040 #: doc/guix.texi:15057
27041 #, no-wrap
27042 msgid ""
27043 "# In guix, we have to specify the absolute path for plugins.\n"
27044 "pcm_type.jack @{\n"
27045 " lib \"/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so\"\n"
27046 "@}\n"
27047 "\n"
27048 msgstr ""
27049
27050 #. type: example
27051 #: doc/guix.texi:15066
27052 #, no-wrap
27053 msgid ""
27054 "# Routing ALSA to jack:\n"
27055 "# <http://jackaudio.org/faq/routing_alsa.html>.\n"
27056 "pcm.rawjack @{\n"
27057 " type jack\n"
27058 " playback_ports @{\n"
27059 " 0 system:playback_1\n"
27060 " 1 system:playback_2\n"
27061 " @}\n"
27062 "\n"
27063 msgstr ""
27064
27065 #. type: example
27066 #: doc/guix.texi:15072
27067 #, no-wrap
27068 msgid ""
27069 " capture_ports @{\n"
27070 " 0 system:capture_1\n"
27071 " 1 system:capture_2\n"
27072 " @}\n"
27073 "@}\n"
27074 "\n"
27075 msgstr ""
27076
27077 #. type: example
27078 #: doc/guix.texi:15079
27079 #, no-wrap
27080 msgid ""
27081 "pcm.!default @{\n"
27082 " type plug\n"
27083 " slave @{\n"
27084 " pcm \"rawjack\"\n"
27085 " @}\n"
27086 "@}\n"
27087 msgstr ""
27088
27089 #. type: Plain text
27090 #: doc/guix.texi:15083
27091 msgid "See @uref{https://www.alsa-project.org/main/index.php/Asoundrc} for the details."
27092 msgstr ""
27093
27094 #. type: cindex
27095 #: doc/guix.texi:15089
27096 #, no-wrap
27097 msgid "SQL"
27098 msgstr ""
27099
27100 #. type: Plain text
27101 #: doc/guix.texi:15091
27102 msgid "The @code{(gnu services databases)} module provides the following services."
27103 msgstr ""
27104
27105 #. type: deffn
27106 #: doc/guix.texi:15092
27107 #, no-wrap
27108 msgid "{Scheme Procedure} postgresql-service [#:postgresql postgresql] @"
27109 msgstr ""
27110
27111 #. type: deffn
27112 #: doc/guix.texi:15097
27113 msgid "[#:config-file] [#:data-directory ``/var/lib/postgresql/data''] @ [#:port 5432] [#:locale ``en_US.utf8''] [#:extension-packages '()] Return a service that runs @var{postgresql}, the PostgreSQL database server."
27114 msgstr ""
27115
27116 #. type: deffn
27117 #: doc/guix.texi:15101
27118 msgid "The PostgreSQL daemon loads its runtime configuration from @var{config-file}, creates a database cluster with @var{locale} as the default locale, stored in @var{data-directory}. It then listens on @var{port}."
27119 msgstr ""
27120
27121 #. type: cindex
27122 #: doc/guix.texi:15102
27123 #, no-wrap
27124 msgid "postgresql extension-packages"
27125 msgstr ""
27126
27127 #. type: deffn
27128 #: doc/guix.texi:15107
27129 msgid "Additional extensions are loaded from packages listed in @var{extension-packages}. Extensions are available at runtime. For instance, to create a geographic database using the @code{postgis} extension, a user can configure the postgresql-service as in this example:"
27130 msgstr ""
27131
27132 #. type: cindex
27133 #: doc/guix.texi:15108
27134 #, no-wrap
27135 msgid "postgis"
27136 msgstr ""
27137
27138 #. type: example
27139 #: doc/guix.texi:15111
27140 #, no-wrap
27141 msgid ""
27142 "(use-package-modules databases geo)\n"
27143 "\n"
27144 msgstr ""
27145
27146 #. type: example
27147 #: doc/guix.texi:15121
27148 #, no-wrap
27149 msgid ""
27150 "(operating-system\n"
27151 " ...\n"
27152 " ;; postgresql is required to run `psql' but postgis is not required for\n"
27153 " ;; proper operation.\n"
27154 " (packages (cons* postgresql %base-packages))\n"
27155 " (services\n"
27156 " (cons*\n"
27157 " (postgresql-service #:extension-packages (list postgis))\n"
27158 " %base-services)))\n"
27159 msgstr ""
27160
27161 #. type: deffn
27162 #: doc/guix.texi:15125
27163 msgid "Then the extension becomes visible and you can initialise an empty geographic database in this way:"
27164 msgstr ""
27165
27166 #. type: example
27167 #: doc/guix.texi:15132
27168 #, no-wrap
27169 msgid ""
27170 "psql -U postgres\n"
27171 "> create database postgistest;\n"
27172 "> \\connect postgistest;\n"
27173 "> create extension postgis;\n"
27174 "> create extension postgis_topology;\n"
27175 msgstr ""
27176
27177 #. type: deffn
27178 #: doc/guix.texi:15137
27179 msgid "There is no need to add this field for contrib extensions such as hstore or dblink as they are already loadable by postgresql. This field is only required to add extensions provided by other packages."
27180 msgstr ""
27181
27182 #. type: deffn
27183 #: doc/guix.texi:15139
27184 #, no-wrap
27185 msgid "{Scheme Procedure} mysql-service [#:config (mysql-configuration)]"
27186 msgstr ""
27187
27188 #. type: deffn
27189 #: doc/guix.texi:15142
27190 msgid "Return a service that runs @command{mysqld}, the MySQL or MariaDB database server."
27191 msgstr ""
27192
27193 #. type: deffn
27194 #: doc/guix.texi:15145
27195 msgid "The optional @var{config} argument specifies the configuration for @command{mysqld}, which should be a @code{<mysql-configuration>} object."
27196 msgstr ""
27197
27198 #. type: deftp
27199 #: doc/guix.texi:15147
27200 #, no-wrap
27201 msgid "{Data Type} mysql-configuration"
27202 msgstr ""
27203
27204 #. type: deftp
27205 #: doc/guix.texi:15149
27206 msgid "Data type representing the configuration of @var{mysql-service}."
27207 msgstr ""
27208
27209 #. type: item
27210 #: doc/guix.texi:15151
27211 #, no-wrap
27212 msgid "@code{mysql} (default: @var{mariadb})"
27213 msgstr ""
27214
27215 #. type: table
27216 #: doc/guix.texi:15154
27217 msgid "Package object of the MySQL database server, can be either @var{mariadb} or @var{mysql}."
27218 msgstr ""
27219
27220 #. type: table
27221 #: doc/guix.texi:15157
27222 msgid "For MySQL, a temporary root password will be displayed at activation time. For MariaDB, the root password is empty."
27223 msgstr ""
27224
27225 #. type: item
27226 #: doc/guix.texi:15158
27227 #, no-wrap
27228 msgid "@code{port} (default: @code{3306})"
27229 msgstr ""
27230
27231 #. type: table
27232 #: doc/guix.texi:15160
27233 msgid "TCP port on which the database server listens for incoming connections."
27234 msgstr ""
27235
27236 #. type: defvr
27237 #: doc/guix.texi:15163
27238 #, no-wrap
27239 msgid "{Scheme Variable} memcached-service-type"
27240 msgstr ""
27241
27242 #. type: defvr
27243 #: doc/guix.texi:15167
27244 msgid "This is the service type for the @uref{https://memcached.org/, Memcached} service, which provides a distributed in memory cache. The value for the service type is a @code{memcached-configuration} object."
27245 msgstr ""
27246
27247 #. type: example
27248 #: doc/guix.texi:15171
27249 #, no-wrap
27250 msgid "(service memcached-service-type)\n"
27251 msgstr ""
27252
27253 #. type: deftp
27254 #: doc/guix.texi:15173
27255 #, no-wrap
27256 msgid "{Data Type} memcached-configuration"
27257 msgstr ""
27258
27259 #. type: deftp
27260 #: doc/guix.texi:15175
27261 msgid "Data type representing the configuration of memcached."
27262 msgstr ""
27263
27264 #. type: item
27265 #: doc/guix.texi:15177
27266 #, no-wrap
27267 msgid "@code{memcached} (default: @code{memcached})"
27268 msgstr ""
27269
27270 #. type: table
27271 #: doc/guix.texi:15179
27272 msgid "The Memcached package to use."
27273 msgstr ""
27274
27275 #. type: item
27276 #: doc/guix.texi:15180
27277 #, no-wrap
27278 msgid "@code{interfaces} (default: @code{'(\"0.0.0.0\")})"
27279 msgstr ""
27280
27281 #. type: table
27282 #: doc/guix.texi:15182
27283 msgid "Network interfaces on which to listen."
27284 msgstr ""
27285
27286 #. type: item
27287 #: doc/guix.texi:15183
27288 #, no-wrap
27289 msgid "@code{tcp-port} (default: @code{11211})"
27290 msgstr ""
27291
27292 #. type: table
27293 #: doc/guix.texi:15185
27294 msgid "Port on which to accept connections on,"
27295 msgstr ""
27296
27297 #. type: item
27298 #: doc/guix.texi:15186
27299 #, no-wrap
27300 msgid "@code{udp-port} (default: @code{11211})"
27301 msgstr ""
27302
27303 #. type: table
27304 #: doc/guix.texi:15189
27305 msgid "Port on which to accept UDP connections on, a value of 0 will disable listening on a UDP socket."
27306 msgstr ""
27307
27308 #. type: item
27309 #: doc/guix.texi:15190
27310 #, no-wrap
27311 msgid "@code{additional-options} (default: @code{'()})"
27312 msgstr ""
27313
27314 #. type: table
27315 #: doc/guix.texi:15192
27316 msgid "Additional command line options to pass to @code{memcached}."
27317 msgstr ""
27318
27319 #. type: defvr
27320 #: doc/guix.texi:15195
27321 #, no-wrap
27322 msgid "{Scheme Variable} mongodb-service-type"
27323 msgstr ""
27324
27325 #. type: defvr
27326 #: doc/guix.texi:15198
27327 msgid "This is the service type for @uref{https://www.mongodb.com/, MongoDB}. The value for the service type is a @code{mongodb-configuration} object."
27328 msgstr ""
27329
27330 #. type: example
27331 #: doc/guix.texi:15202
27332 #, no-wrap
27333 msgid "(service mongodb-service-type)\n"
27334 msgstr ""
27335
27336 #. type: deftp
27337 #: doc/guix.texi:15204
27338 #, no-wrap
27339 msgid "{Data Type} mongodb-configuration"
27340 msgstr ""
27341
27342 #. type: deftp
27343 #: doc/guix.texi:15206
27344 msgid "Data type representing the configuration of mongodb."
27345 msgstr ""
27346
27347 #. type: item
27348 #: doc/guix.texi:15208
27349 #, no-wrap
27350 msgid "@code{mongodb} (default: @code{mongodb})"
27351 msgstr ""
27352
27353 #. type: table
27354 #: doc/guix.texi:15210
27355 msgid "The MongoDB package to use."
27356 msgstr ""
27357
27358 #. type: item
27359 #: doc/guix.texi:15211
27360 #, no-wrap
27361 msgid "@code{config-file} (default: @code{%default-mongodb-configuration-file})"
27362 msgstr ""
27363
27364 #. type: table
27365 #: doc/guix.texi:15213
27366 msgid "The configuration file for MongoDB."
27367 msgstr ""
27368
27369 #. type: item
27370 #: doc/guix.texi:15214
27371 #, no-wrap
27372 msgid "@code{data-directory} (default: @code{\"/var/lib/mongodb\"})"
27373 msgstr ""
27374
27375 #. type: table
27376 #: doc/guix.texi:15218
27377 msgid "This value is used to create the directory, so that it exists and is owned by the mongodb user. It should match the data-directory which MongoDB is configured to use through the configuration file."
27378 msgstr ""
27379
27380 #. type: defvr
27381 #: doc/guix.texi:15221
27382 #, no-wrap
27383 msgid "{Scheme Variable} redis-service-type"
27384 msgstr ""
27385
27386 #. type: defvr
27387 #: doc/guix.texi:15224
27388 msgid "This is the service type for the @uref{https://redis.io/, Redis} key/value store, whose value is a @code{redis-configuration} object."
27389 msgstr ""
27390
27391 #. type: deftp
27392 #: doc/guix.texi:15226
27393 #, no-wrap
27394 msgid "{Data Type} redis-configuration"
27395 msgstr ""
27396
27397 #. type: deftp
27398 #: doc/guix.texi:15228
27399 msgid "Data type representing the configuration of redis."
27400 msgstr ""
27401
27402 #. type: item
27403 #: doc/guix.texi:15230
27404 #, no-wrap
27405 msgid "@code{redis} (default: @code{redis})"
27406 msgstr ""
27407
27408 #. type: table
27409 #: doc/guix.texi:15232
27410 msgid "The Redis package to use."
27411 msgstr ""
27412
27413 #. type: item
27414 #: doc/guix.texi:15233
27415 #, no-wrap
27416 msgid "@code{bind} (default: @code{\"127.0.0.1\"})"
27417 msgstr ""
27418
27419 #. type: table
27420 #: doc/guix.texi:15235
27421 msgid "Network interface on which to listen."
27422 msgstr ""
27423
27424 #. type: item
27425 #: doc/guix.texi:15236
27426 #, no-wrap
27427 msgid "@code{port} (default: @code{6379})"
27428 msgstr ""
27429
27430 #. type: table
27431 #: doc/guix.texi:15239
27432 msgid "Port on which to accept connections on, a value of 0 will disable listening on a TCP socket."
27433 msgstr ""
27434
27435 #. type: item
27436 #: doc/guix.texi:15240
27437 #, no-wrap
27438 msgid "@code{working-directory} (default: @code{\"/var/lib/redis\"})"
27439 msgstr ""
27440
27441 #. type: table
27442 #: doc/guix.texi:15242
27443 msgid "Directory in which to store the database and related files."
27444 msgstr ""
27445
27446 #. type: cindex
27447 #: doc/guix.texi:15248
27448 #, no-wrap
27449 msgid "mail"
27450 msgstr ""
27451
27452 #. type: code{#1}
27453 #: doc/guix.texi:15249 doc/guix.texi:19449
27454 #, no-wrap
27455 msgid "email"
27456 msgstr ""
27457
27458 #. type: Plain text
27459 #: doc/guix.texi:15254
27460 msgid "The @code{(gnu services mail)} module provides Guix service definitions for email services: IMAP, POP3, and LMTP servers, as well as mail transport agents (MTAs). Lots of acronyms! These services are detailed in the subsections below."
27461 msgstr ""
27462
27463 #. type: subsubheading
27464 #: doc/guix.texi:15255
27465 #, no-wrap
27466 msgid "Dovecot Service"
27467 msgstr ""
27468
27469 #. type: deffn
27470 #: doc/guix.texi:15257
27471 #, no-wrap
27472 msgid "{Scheme Procedure} dovecot-service [#:config (dovecot-configuration)]"
27473 msgstr ""
27474
27475 #. type: deffn
27476 #: doc/guix.texi:15259
27477 msgid "Return a service that runs the Dovecot IMAP/POP3/LMTP mail server."
27478 msgstr ""
27479
27480 #. type: Plain text
27481 #: doc/guix.texi:15269
27482 msgid "By default, Dovecot does not need much configuration; the default configuration object created by @code{(dovecot-configuration)} will suffice if your mail is delivered to @code{~/Maildir}. A self-signed certificate will be generated for TLS-protected connections, though Dovecot will also listen on cleartext ports by default. There are a number of options, though, which mail administrators might need to change, and as is the case with other services, Guix allows the system administrator to specify these parameters via a uniform Scheme interface."
27483 msgstr ""
27484
27485 #. type: Plain text
27486 #: doc/guix.texi:15272
27487 msgid "For example, to specify that mail is located at @code{maildir~/.mail}, one would instantiate the Dovecot service like this:"
27488 msgstr ""
27489
27490 #. type: example
27491 #: doc/guix.texi:15277
27492 #, no-wrap
27493 msgid ""
27494 "(dovecot-service #:config\n"
27495 " (dovecot-configuration\n"
27496 " (mail-location \"maildir:~/.mail\")))\n"
27497 msgstr ""
27498
27499 #. type: Plain text
27500 #: doc/guix.texi:15285
27501 msgid "The available configuration parameters follow. Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings. There is also a way to specify the configuration as a string, if you have an old @code{dovecot.conf} file that you want to port over from some other system; see the end for more details."
27502 msgstr ""
27503
27504 #. type: Plain text
27505 #: doc/guix.texi:15295
27506 msgid "Available @code{dovecot-configuration} fields are:"
27507 msgstr ""
27508
27509 #. type: deftypevr
27510 #: doc/guix.texi:15296
27511 #, no-wrap
27512 msgid "{@code{dovecot-configuration} parameter} package dovecot"
27513 msgstr ""
27514
27515 #. type: deftypevr
27516 #: doc/guix.texi:15298 doc/guix.texi:16604
27517 msgid "The dovecot package."
27518 msgstr ""
27519
27520 #. type: deftypevr
27521 #: doc/guix.texi:15300
27522 #, no-wrap
27523 msgid "{@code{dovecot-configuration} parameter} comma-separated-string-list listen"
27524 msgstr ""
27525
27526 #. type: deftypevr
27527 #: doc/guix.texi:15306
27528 msgid "A list of IPs or hosts where to listen for connections. @samp{*} listens on all IPv4 interfaces, @samp{::} listens on all IPv6 interfaces. If you want to specify non-default ports or anything more complex, customize the address and port fields of the @samp{inet-listener} of the specific services you are interested in."
27529 msgstr ""
27530
27531 #. type: deftypevr
27532 #: doc/guix.texi:15308
27533 #, no-wrap
27534 msgid "{@code{dovecot-configuration} parameter} protocol-configuration-list protocols"
27535 msgstr ""
27536
27537 #. type: deftypevr
27538 #: doc/guix.texi:15311
27539 msgid "List of protocols we want to serve. Available protocols include @samp{imap}, @samp{pop3}, and @samp{lmtp}."
27540 msgstr ""
27541
27542 #. type: deftypevr
27543 #: doc/guix.texi:15313
27544 msgid "Available @code{protocol-configuration} fields are:"
27545 msgstr ""
27546
27547 #. type: deftypevr
27548 #: doc/guix.texi:15314
27549 #, no-wrap
27550 msgid "{@code{protocol-configuration} parameter} string name"
27551 msgstr ""
27552
27553 #. type: deftypevr
27554 #: doc/guix.texi:15316
27555 msgid "The name of the protocol."
27556 msgstr ""
27557
27558 #. type: deftypevr
27559 #: doc/guix.texi:15318
27560 #, no-wrap
27561 msgid "{@code{protocol-configuration} parameter} string auth-socket-path"
27562 msgstr ""
27563
27564 #. type: deftypevr
27565 #: doc/guix.texi:15322
27566 msgid "UNIX socket path to the master authentication server to find users. This is used by imap (for shared users) and lda. It defaults to @samp{\"/var/run/dovecot/auth-userdb\"}."
27567 msgstr ""
27568
27569 #. type: deftypevr
27570 #: doc/guix.texi:15324
27571 #, no-wrap
27572 msgid "{@code{protocol-configuration} parameter} space-separated-string-list mail-plugins"
27573 msgstr ""
27574
27575 #. type: deftypevr
27576 #: doc/guix.texi:15326
27577 msgid "Space separated list of plugins to load."
27578 msgstr ""
27579
27580 #. type: deftypevr
27581 #: doc/guix.texi:15328
27582 #, no-wrap
27583 msgid "{@code{protocol-configuration} parameter} non-negative-integer mail-max-userip-connections"
27584 msgstr ""
27585
27586 #. type: deftypevr
27587 #: doc/guix.texi:15332
27588 msgid "Maximum number of IMAP connections allowed for a user from each IP address. NOTE: The username is compared case-sensitively. Defaults to @samp{10}."
27589 msgstr ""
27590
27591 #. type: deftypevr
27592 #: doc/guix.texi:15336
27593 #, no-wrap
27594 msgid "{@code{dovecot-configuration} parameter} service-configuration-list services"
27595 msgstr ""
27596
27597 #. type: deftypevr
27598 #: doc/guix.texi:15340
27599 msgid "List of services to enable. Available services include @samp{imap}, @samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and @samp{lmtp}."
27600 msgstr ""
27601
27602 #. type: deftypevr
27603 #: doc/guix.texi:15342
27604 msgid "Available @code{service-configuration} fields are:"
27605 msgstr ""
27606
27607 #. type: deftypevr
27608 #: doc/guix.texi:15343
27609 #, no-wrap
27610 msgid "{@code{service-configuration} parameter} string kind"
27611 msgstr ""
27612
27613 #. type: deftypevr
27614 #: doc/guix.texi:15348
27615 msgid "The service kind. Valid values include @code{director}, @code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, @code{pop3}, @code{auth}, @code{auth-worker}, @code{dict}, @code{tcpwrap}, @code{quota-warning}, or anything else."
27616 msgstr ""
27617
27618 #. type: deftypevr
27619 #: doc/guix.texi:15350
27620 #, no-wrap
27621 msgid "{@code{service-configuration} parameter} listener-configuration-list listeners"
27622 msgstr ""
27623
27624 #. type: deftypevr
27625 #: doc/guix.texi:15355
27626 msgid "Listeners for the service. A listener is either a @code{unix-listener-configuration}, a @code{fifo-listener-configuration}, or an @code{inet-listener-configuration}. Defaults to @samp{()}."
27627 msgstr ""
27628
27629 #. type: deftypevr
27630 #: doc/guix.texi:15357
27631 msgid "Available @code{unix-listener-configuration} fields are:"
27632 msgstr ""
27633
27634 #. type: deftypevr
27635 #: doc/guix.texi:15358
27636 #, no-wrap
27637 msgid "{@code{unix-listener-configuration} parameter} string path"
27638 msgstr ""
27639
27640 #. type: deftypevr
27641 #: doc/guix.texi:15361 doc/guix.texi:15384
27642 msgid "Path to the file, relative to @code{base-dir} field. This is also used as the section name."
27643 msgstr ""
27644
27645 #. type: deftypevr
27646 #: doc/guix.texi:15363
27647 #, no-wrap
27648 msgid "{@code{unix-listener-configuration} parameter} string mode"
27649 msgstr ""
27650
27651 #. type: deftypevr
27652 #: doc/guix.texi:15366 doc/guix.texi:15389
27653 msgid "The access mode for the socket. Defaults to @samp{\"0600\"}."
27654 msgstr ""
27655
27656 #. type: deftypevr
27657 #: doc/guix.texi:15368
27658 #, no-wrap
27659 msgid "{@code{unix-listener-configuration} parameter} string user"
27660 msgstr ""
27661
27662 #. type: deftypevr
27663 #: doc/guix.texi:15371 doc/guix.texi:15394
27664 msgid "The user to own the socket. Defaults to @samp{\"\"}."
27665 msgstr ""
27666
27667 #. type: deftypevr
27668 #: doc/guix.texi:15373
27669 #, no-wrap
27670 msgid "{@code{unix-listener-configuration} parameter} string group"
27671 msgstr ""
27672
27673 #. type: deftypevr
27674 #: doc/guix.texi:15376 doc/guix.texi:15399
27675 msgid "The group to own the socket. Defaults to @samp{\"\"}."
27676 msgstr ""
27677
27678 #. type: deftypevr
27679 #: doc/guix.texi:15380
27680 msgid "Available @code{fifo-listener-configuration} fields are:"
27681 msgstr ""
27682
27683 #. type: deftypevr
27684 #: doc/guix.texi:15381
27685 #, no-wrap
27686 msgid "{@code{fifo-listener-configuration} parameter} string path"
27687 msgstr ""
27688
27689 #. type: deftypevr
27690 #: doc/guix.texi:15386
27691 #, no-wrap
27692 msgid "{@code{fifo-listener-configuration} parameter} string mode"
27693 msgstr ""
27694
27695 #. type: deftypevr
27696 #: doc/guix.texi:15391
27697 #, no-wrap
27698 msgid "{@code{fifo-listener-configuration} parameter} string user"
27699 msgstr ""
27700
27701 #. type: deftypevr
27702 #: doc/guix.texi:15396
27703 #, no-wrap
27704 msgid "{@code{fifo-listener-configuration} parameter} string group"
27705 msgstr ""
27706
27707 #. type: deftypevr
27708 #: doc/guix.texi:15403
27709 msgid "Available @code{inet-listener-configuration} fields are:"
27710 msgstr ""
27711
27712 #. type: deftypevr
27713 #: doc/guix.texi:15404
27714 #, no-wrap
27715 msgid "{@code{inet-listener-configuration} parameter} string protocol"
27716 msgstr ""
27717
27718 #. type: deftypevr
27719 #: doc/guix.texi:15406
27720 msgid "The protocol to listen for."
27721 msgstr ""
27722
27723 #. type: deftypevr
27724 #: doc/guix.texi:15408
27725 #, no-wrap
27726 msgid "{@code{inet-listener-configuration} parameter} string address"
27727 msgstr ""
27728
27729 #. type: deftypevr
27730 #: doc/guix.texi:15411
27731 msgid "The address on which to listen, or empty for all addresses. Defaults to @samp{\"\"}."
27732 msgstr ""
27733
27734 #. type: deftypevr
27735 #: doc/guix.texi:15413
27736 #, no-wrap
27737 msgid "{@code{inet-listener-configuration} parameter} non-negative-integer port"
27738 msgstr ""
27739
27740 #. type: deftypevr
27741 #: doc/guix.texi:15415
27742 msgid "The port on which to listen."
27743 msgstr ""
27744
27745 #. type: deftypevr
27746 #: doc/guix.texi:15417
27747 #, no-wrap
27748 msgid "{@code{inet-listener-configuration} parameter} boolean ssl?"
27749 msgstr ""
27750
27751 #. type: deftypevr
27752 #: doc/guix.texi:15421
27753 msgid "Whether to use SSL for this service; @samp{yes}, @samp{no}, or @samp{required}. Defaults to @samp{#t}."
27754 msgstr ""
27755
27756 #. type: deftypevr
27757 #: doc/guix.texi:15425
27758 #, no-wrap
27759 msgid "{@code{service-configuration} parameter} non-negative-integer client-limit"
27760 msgstr ""
27761
27762 #. type: deftypevr
27763 #: doc/guix.texi:15430
27764 msgid "Maximum number of simultaneous client connections per process. Once this number of connections is received, the next incoming connection will prompt Dovecot to spawn another process. If set to 0, @code{default-client-limit} is used instead."
27765 msgstr ""
27766
27767 #. type: deftypevr
27768 #: doc/guix.texi:15435
27769 #, no-wrap
27770 msgid "{@code{service-configuration} parameter} non-negative-integer service-count"
27771 msgstr ""
27772
27773 #. type: deftypevr
27774 #: doc/guix.texi:15440
27775 msgid "Number of connections to handle before starting a new process. Typically the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0 is faster. <doc/wiki/LoginProcess.txt>. Defaults to @samp{1}."
27776 msgstr ""
27777
27778 #. type: deftypevr
27779 #: doc/guix.texi:15443
27780 #, no-wrap
27781 msgid "{@code{service-configuration} parameter} non-negative-integer process-limit"
27782 msgstr ""
27783
27784 #. type: deftypevr
27785 #: doc/guix.texi:15446
27786 msgid "Maximum number of processes that can exist for this service. If set to 0, @code{default-process-limit} is used instead."
27787 msgstr ""
27788
27789 #. type: deftypevr
27790 #: doc/guix.texi:15451
27791 #, no-wrap
27792 msgid "{@code{service-configuration} parameter} non-negative-integer process-min-avail"
27793 msgstr ""
27794
27795 #. type: deftypevr
27796 #: doc/guix.texi:15454
27797 msgid "Number of processes to always keep waiting for more connections. Defaults to @samp{0}."
27798 msgstr ""
27799
27800 #. type: deftypevr
27801 #: doc/guix.texi:15456
27802 #, no-wrap
27803 msgid "{@code{service-configuration} parameter} non-negative-integer vsz-limit"
27804 msgstr ""
27805
27806 #. type: deftypevr
27807 #: doc/guix.texi:15460
27808 msgid "If you set @samp{service-count 0}, you probably need to grow this. Defaults to @samp{256000000}."
27809 msgstr ""
27810
27811 #. type: deftypevr
27812 #: doc/guix.texi:15464
27813 #, no-wrap
27814 msgid "{@code{dovecot-configuration} parameter} dict-configuration dict"
27815 msgstr ""
27816
27817 #. type: deftypevr
27818 #: doc/guix.texi:15467
27819 msgid "Dict configuration, as created by the @code{dict-configuration} constructor."
27820 msgstr ""
27821
27822 #. type: deftypevr
27823 #: doc/guix.texi:15469
27824 msgid "Available @code{dict-configuration} fields are:"
27825 msgstr ""
27826
27827 #. type: deftypevr
27828 #: doc/guix.texi:15470
27829 #, no-wrap
27830 msgid "{@code{dict-configuration} parameter} free-form-fields entries"
27831 msgstr ""
27832
27833 #. type: deftypevr
27834 #: doc/guix.texi:15473
27835 msgid "A list of key-value pairs that this dict should hold. Defaults to @samp{()}."
27836 msgstr ""
27837
27838 #. type: deftypevr
27839 #: doc/guix.texi:15477
27840 #, no-wrap
27841 msgid "{@code{dovecot-configuration} parameter} passdb-configuration-list passdbs"
27842 msgstr ""
27843
27844 #. type: deftypevr
27845 #: doc/guix.texi:15480
27846 msgid "A list of passdb configurations, each one created by the @code{passdb-configuration} constructor."
27847 msgstr ""
27848
27849 #. type: deftypevr
27850 #: doc/guix.texi:15482
27851 msgid "Available @code{passdb-configuration} fields are:"
27852 msgstr ""
27853
27854 #. type: deftypevr
27855 #: doc/guix.texi:15483
27856 #, no-wrap
27857 msgid "{@code{passdb-configuration} parameter} string driver"
27858 msgstr ""
27859
27860 #. type: deftypevr
27861 #: doc/guix.texi:15488
27862 msgid "The driver that the passdb should use. Valid values include @samp{pam}, @samp{passwd}, @samp{shadow}, @samp{bsdauth}, and @samp{static}. Defaults to @samp{\"pam\"}."
27863 msgstr ""
27864
27865 #. type: deftypevr
27866 #: doc/guix.texi:15490
27867 #, no-wrap
27868 msgid "{@code{passdb-configuration} parameter} space-separated-string-list args"
27869 msgstr ""
27870
27871 #. type: deftypevr
27872 #: doc/guix.texi:15493
27873 msgid "Space separated list of arguments to the passdb driver. Defaults to @samp{\"\"}."
27874 msgstr ""
27875
27876 #. type: deftypevr
27877 #: doc/guix.texi:15497
27878 #, no-wrap
27879 msgid "{@code{dovecot-configuration} parameter} userdb-configuration-list userdbs"
27880 msgstr ""
27881
27882 #. type: deftypevr
27883 #: doc/guix.texi:15500
27884 msgid "List of userdb configurations, each one created by the @code{userdb-configuration} constructor."
27885 msgstr ""
27886
27887 #. type: deftypevr
27888 #: doc/guix.texi:15502
27889 msgid "Available @code{userdb-configuration} fields are:"
27890 msgstr ""
27891
27892 #. type: deftypevr
27893 #: doc/guix.texi:15503
27894 #, no-wrap
27895 msgid "{@code{userdb-configuration} parameter} string driver"
27896 msgstr ""
27897
27898 #. type: deftypevr
27899 #: doc/guix.texi:15507
27900 msgid "The driver that the userdb should use. Valid values include @samp{passwd} and @samp{static}. Defaults to @samp{\"passwd\"}."
27901 msgstr ""
27902
27903 #. type: deftypevr
27904 #: doc/guix.texi:15509
27905 #, no-wrap
27906 msgid "{@code{userdb-configuration} parameter} space-separated-string-list args"
27907 msgstr ""
27908
27909 #. type: deftypevr
27910 #: doc/guix.texi:15512
27911 msgid "Space separated list of arguments to the userdb driver. Defaults to @samp{\"\"}."
27912 msgstr ""
27913
27914 #. type: deftypevr
27915 #: doc/guix.texi:15514
27916 #, no-wrap
27917 msgid "{@code{userdb-configuration} parameter} free-form-args override-fields"
27918 msgstr ""
27919
27920 #. type: deftypevr
27921 #: doc/guix.texi:15517
27922 msgid "Override fields from passwd. Defaults to @samp{()}."
27923 msgstr ""
27924
27925 #. type: deftypevr
27926 #: doc/guix.texi:15521
27927 #, no-wrap
27928 msgid "{@code{dovecot-configuration} parameter} plugin-configuration plugin-configuration"
27929 msgstr ""
27930
27931 #. type: deftypevr
27932 #: doc/guix.texi:15524
27933 msgid "Plug-in configuration, created by the @code{plugin-configuration} constructor."
27934 msgstr ""
27935
27936 #. type: deftypevr
27937 #: doc/guix.texi:15526
27938 #, no-wrap
27939 msgid "{@code{dovecot-configuration} parameter} list-of-namespace-configuration namespaces"
27940 msgstr ""
27941
27942 #. type: deftypevr
27943 #: doc/guix.texi:15529
27944 msgid "List of namespaces. Each item in the list is created by the @code{namespace-configuration} constructor."
27945 msgstr ""
27946
27947 #. type: deftypevr
27948 #: doc/guix.texi:15531
27949 msgid "Available @code{namespace-configuration} fields are:"
27950 msgstr ""
27951
27952 #. type: deftypevr
27953 #: doc/guix.texi:15532
27954 #, no-wrap
27955 msgid "{@code{namespace-configuration} parameter} string name"
27956 msgstr ""
27957
27958 #. type: deftypevr
27959 #: doc/guix.texi:15534
27960 msgid "Name for this namespace."
27961 msgstr ""
27962
27963 #. type: deftypevr
27964 #: doc/guix.texi:15536
27965 #, no-wrap
27966 msgid "{@code{namespace-configuration} parameter} string type"
27967 msgstr ""
27968
27969 #. type: deftypevr
27970 #: doc/guix.texi:15539
27971 msgid "Namespace type: @samp{private}, @samp{shared} or @samp{public}. Defaults to @samp{\"private\"}."
27972 msgstr ""
27973
27974 #. type: deftypevr
27975 #: doc/guix.texi:15541
27976 #, no-wrap
27977 msgid "{@code{namespace-configuration} parameter} string separator"
27978 msgstr ""
27979
27980 #. type: deftypevr
27981 #: doc/guix.texi:15547
27982 msgid "Hierarchy separator to use. You should use the same separator for all namespaces or some clients get confused. @samp{/} is usually a good one. The default however depends on the underlying mail storage format. Defaults to @samp{\"\"}."
27983 msgstr ""
27984
27985 #. type: deftypevr
27986 #: doc/guix.texi:15549
27987 #, no-wrap
27988 msgid "{@code{namespace-configuration} parameter} string prefix"
27989 msgstr ""
27990
27991 #. type: deftypevr
27992 #: doc/guix.texi:15553
27993 msgid "Prefix required to access this namespace. This needs to be different for all namespaces. For example @samp{Public/}. Defaults to @samp{\"\"}."
27994 msgstr ""
27995
27996 #. type: deftypevr
27997 #: doc/guix.texi:15555
27998 #, no-wrap
27999 msgid "{@code{namespace-configuration} parameter} string location"
28000 msgstr ""
28001
28002 #. type: deftypevr
28003 #: doc/guix.texi:15559
28004 msgid "Physical location of the mailbox. This is in the same format as mail_location, which is also the default for it. Defaults to @samp{\"\"}."
28005 msgstr ""
28006
28007 #. type: deftypevr
28008 #: doc/guix.texi:15561
28009 #, no-wrap
28010 msgid "{@code{namespace-configuration} parameter} boolean inbox?"
28011 msgstr ""
28012
28013 #. type: deftypevr
28014 #: doc/guix.texi:15565
28015 msgid "There can be only one INBOX, and this setting defines which namespace has it. Defaults to @samp{#f}."
28016 msgstr ""
28017
28018 #. type: deftypevr
28019 #: doc/guix.texi:15567
28020 #, no-wrap
28021 msgid "{@code{namespace-configuration} parameter} boolean hidden?"
28022 msgstr ""
28023
28024 #. type: deftypevr
28025 #: doc/guix.texi:15575
28026 msgid "If namespace is hidden, it's not advertised to clients via NAMESPACE extension. You'll most likely also want to set @samp{list? #f}. This is mostly useful when converting from another server with different namespaces which you want to deprecate but still keep working. For example you can create hidden namespaces with prefixes @samp{~/mail/}, @samp{~%u/mail/} and @samp{mail/}. Defaults to @samp{#f}."
28027 msgstr ""
28028
28029 #. type: deftypevr
28030 #: doc/guix.texi:15577
28031 #, no-wrap
28032 msgid "{@code{namespace-configuration} parameter} boolean list?"
28033 msgstr ""
28034
28035 #. type: deftypevr
28036 #: doc/guix.texi:15583
28037 msgid "Show the mailboxes under this namespace with the LIST command. This makes the namespace visible for clients that do not support the NAMESPACE extension. The special @code{children} value lists child mailboxes, but hides the namespace prefix. Defaults to @samp{#t}."
28038 msgstr ""
28039
28040 #. type: deftypevr
28041 #: doc/guix.texi:15585
28042 #, no-wrap
28043 msgid "{@code{namespace-configuration} parameter} boolean subscriptions?"
28044 msgstr ""
28045
28046 #. type: deftypevr
28047 #: doc/guix.texi:15590
28048 msgid "Namespace handles its own subscriptions. If set to @code{#f}, the parent namespace handles them. The empty prefix should always have this as @code{#t}). Defaults to @samp{#t}."
28049 msgstr ""
28050
28051 #. type: deftypevr
28052 #: doc/guix.texi:15592
28053 #, no-wrap
28054 msgid "{@code{namespace-configuration} parameter} mailbox-configuration-list mailboxes"
28055 msgstr ""
28056
28057 #. type: deftypevr
28058 #: doc/guix.texi:15595
28059 msgid "List of predefined mailboxes in this namespace. Defaults to @samp{()}."
28060 msgstr ""
28061
28062 #. type: deftypevr
28063 #: doc/guix.texi:15597
28064 msgid "Available @code{mailbox-configuration} fields are:"
28065 msgstr ""
28066
28067 #. type: deftypevr
28068 #: doc/guix.texi:15598
28069 #, no-wrap
28070 msgid "{@code{mailbox-configuration} parameter} string name"
28071 msgstr ""
28072
28073 #. type: deftypevr
28074 #: doc/guix.texi:15600
28075 msgid "Name for this mailbox."
28076 msgstr ""
28077
28078 #. type: deftypevr
28079 #: doc/guix.texi:15602
28080 #, no-wrap
28081 msgid "{@code{mailbox-configuration} parameter} string auto"
28082 msgstr ""
28083
28084 #. type: deftypevr
28085 #: doc/guix.texi:15606
28086 msgid "@samp{create} will automatically create this mailbox. @samp{subscribe} will both create and subscribe to the mailbox. Defaults to @samp{\"no\"}."
28087 msgstr ""
28088
28089 #. type: deftypevr
28090 #: doc/guix.texi:15608
28091 #, no-wrap
28092 msgid "{@code{mailbox-configuration} parameter} space-separated-string-list special-use"
28093 msgstr ""
28094
28095 #. type: deftypevr
28096 #: doc/guix.texi:15613
28097 msgid "List of IMAP @code{SPECIAL-USE} attributes as specified by RFC 6154. Valid values are @code{\\All}, @code{\\Archive}, @code{\\Drafts}, @code{\\Flagged}, @code{\\Junk}, @code{\\Sent}, and @code{\\Trash}. Defaults to @samp{()}."
28098 msgstr ""
28099
28100 #. type: deftypevr
28101 #: doc/guix.texi:15619
28102 #, no-wrap
28103 msgid "{@code{dovecot-configuration} parameter} file-name base-dir"
28104 msgstr ""
28105
28106 #. type: deftypevr
28107 #: doc/guix.texi:15622
28108 msgid "Base directory where to store runtime data. Defaults to @samp{\"/var/run/dovecot/\"}."
28109 msgstr ""
28110
28111 #. type: deftypevr
28112 #: doc/guix.texi:15624
28113 #, no-wrap
28114 msgid "{@code{dovecot-configuration} parameter} string login-greeting"
28115 msgstr ""
28116
28117 #. type: deftypevr
28118 #: doc/guix.texi:15627
28119 msgid "Greeting message for clients. Defaults to @samp{\"Dovecot ready.\"}."
28120 msgstr ""
28121
28122 #. type: deftypevr
28123 #: doc/guix.texi:15629
28124 #, no-wrap
28125 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-trusted-networks"
28126 msgstr ""
28127
28128 #. type: deftypevr
28129 #: doc/guix.texi:15636
28130 msgid "List of trusted network ranges. Connections from these IPs are allowed to override their IP addresses and ports (for logging and for authentication checks). @samp{disable-plaintext-auth} is also ignored for these networks. Typically you would specify your IMAP proxy servers here. Defaults to @samp{()}."
28131 msgstr ""
28132
28133 #. type: deftypevr
28134 #: doc/guix.texi:15638
28135 #, no-wrap
28136 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-access-sockets"
28137 msgstr ""
28138
28139 #. type: deftypevr
28140 #: doc/guix.texi:15641
28141 msgid "List of login access check sockets (e.g.@: tcpwrap). Defaults to @samp{()}."
28142 msgstr ""
28143
28144 #. type: deftypevr
28145 #: doc/guix.texi:15643
28146 #, no-wrap
28147 msgid "{@code{dovecot-configuration} parameter} boolean verbose-proctitle?"
28148 msgstr ""
28149
28150 #. type: deftypevr
28151 #: doc/guix.texi:15649
28152 msgid "Show more verbose process titles (in ps). Currently shows user name and IP address. Useful for seeing who is actually using the IMAP processes (e.g.@: shared mailboxes or if the same uid is used for multiple accounts). Defaults to @samp{#f}."
28153 msgstr ""
28154
28155 #. type: deftypevr
28156 #: doc/guix.texi:15651
28157 #, no-wrap
28158 msgid "{@code{dovecot-configuration} parameter} boolean shutdown-clients?"
28159 msgstr ""
28160
28161 #. type: deftypevr
28162 #: doc/guix.texi:15657
28163 msgid "Should all processes be killed when Dovecot master process shuts down. Setting this to @code{#f} means that Dovecot can be upgraded without forcing existing client connections to close (although that could also be a problem if the upgrade is e.g.@: due to a security fix). Defaults to @samp{#t}."
28164 msgstr ""
28165
28166 #. type: deftypevr
28167 #: doc/guix.texi:15659
28168 #, no-wrap
28169 msgid "{@code{dovecot-configuration} parameter} non-negative-integer doveadm-worker-count"
28170 msgstr ""
28171
28172 #. type: deftypevr
28173 #: doc/guix.texi:15663
28174 msgid "If non-zero, run mail commands via this many connections to doveadm server, instead of running them directly in the same process. Defaults to @samp{0}."
28175 msgstr ""
28176
28177 #. type: deftypevr
28178 #: doc/guix.texi:15665
28179 #, no-wrap
28180 msgid "{@code{dovecot-configuration} parameter} string doveadm-socket-path"
28181 msgstr ""
28182
28183 #. type: deftypevr
28184 #: doc/guix.texi:15668
28185 msgid "UNIX socket or host:port used for connecting to doveadm server. Defaults to @samp{\"doveadm-server\"}."
28186 msgstr ""
28187
28188 #. type: deftypevr
28189 #: doc/guix.texi:15670
28190 #, no-wrap
28191 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list import-environment"
28192 msgstr ""
28193
28194 #. type: deftypevr
28195 #: doc/guix.texi:15674
28196 msgid "List of environment variables that are preserved on Dovecot startup and passed down to all of its child processes. You can also give key=value pairs to always set specific settings."
28197 msgstr ""
28198
28199 #. type: deftypevr
28200 #: doc/guix.texi:15676
28201 #, no-wrap
28202 msgid "{@code{dovecot-configuration} parameter} boolean disable-plaintext-auth?"
28203 msgstr ""
28204
28205 #. type: deftypevr
28206 #: doc/guix.texi:15683
28207 msgid "Disable LOGIN command and all other plaintext authentications unless SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP matches the local IP (i.e.@: you're connecting from the same computer), the connection is considered secure and plaintext authentication is allowed. See also ssl=required setting. Defaults to @samp{#t}."
28208 msgstr ""
28209
28210 #. type: deftypevr
28211 #: doc/guix.texi:15685
28212 #, no-wrap
28213 msgid "{@code{dovecot-configuration} parameter} non-negative-integer auth-cache-size"
28214 msgstr ""
28215
28216 #. type: deftypevr
28217 #: doc/guix.texi:15690
28218 msgid "Authentication cache size (e.g.@: @samp{#e10e6}). 0 means it's disabled. Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set for caching to be used. Defaults to @samp{0}."
28219 msgstr ""
28220
28221 #. type: deftypevr
28222 #: doc/guix.texi:15692
28223 #, no-wrap
28224 msgid "{@code{dovecot-configuration} parameter} string auth-cache-ttl"
28225 msgstr ""
28226
28227 #. type: deftypevr
28228 #: doc/guix.texi:15700
28229 msgid "Time to live for cached data. After TTL expires the cached record is no longer used, *except* if the main database lookup returns internal failure. We also try to handle password changes automatically: If user's previous authentication was successful, but this one wasn't, the cache isn't used. For now this works only with plaintext authentication. Defaults to @samp{\"1 hour\"}."
28230 msgstr ""
28231
28232 #. type: deftypevr
28233 #: doc/guix.texi:15702
28234 #, no-wrap
28235 msgid "{@code{dovecot-configuration} parameter} string auth-cache-negative-ttl"
28236 msgstr ""
28237
28238 #. type: deftypevr
28239 #: doc/guix.texi:15706
28240 msgid "TTL for negative hits (user not found, password mismatch). 0 disables caching them completely. Defaults to @samp{\"1 hour\"}."
28241 msgstr ""
28242
28243 #. type: deftypevr
28244 #: doc/guix.texi:15708
28245 #, no-wrap
28246 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list auth-realms"
28247 msgstr ""
28248
28249 #. type: deftypevr
28250 #: doc/guix.texi:15714
28251 msgid "List of realms for SASL authentication mechanisms that need them. You can leave it empty if you don't want to support multiple realms. Many clients simply use the first one listed here, so keep the default realm first. Defaults to @samp{()}."
28252 msgstr ""
28253
28254 #. type: deftypevr
28255 #: doc/guix.texi:15716
28256 #, no-wrap
28257 msgid "{@code{dovecot-configuration} parameter} string auth-default-realm"
28258 msgstr ""
28259
28260 #. type: deftypevr
28261 #: doc/guix.texi:15721
28262 msgid "Default realm/domain to use if none was specified. This is used for both SASL realms and appending @@domain to username in plaintext logins. Defaults to @samp{\"\"}."
28263 msgstr ""
28264
28265 #. type: deftypevr
28266 #: doc/guix.texi:15723
28267 #, no-wrap
28268 msgid "{@code{dovecot-configuration} parameter} string auth-username-chars"
28269 msgstr ""
28270
28271 #. type: deftypevr
28272 #: doc/guix.texi:15730
28273 msgid "List of allowed characters in username. If the user-given username contains a character not listed in here, the login automatically fails. This is just an extra check to make sure user can't exploit any potential quote escaping vulnerabilities with SQL/LDAP databases. If you want to allow all characters, set this value to empty. Defaults to @samp{\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@@\"}."
28274 msgstr ""
28275
28276 #. type: deftypevr
28277 #: doc/guix.texi:15732
28278 #, no-wrap
28279 msgid "{@code{dovecot-configuration} parameter} string auth-username-translation"
28280 msgstr ""
28281
28282 #. type: deftypevr
28283 #: doc/guix.texi:15738
28284 msgid "Username character translations before it's looked up from databases. The value contains series of from -> to characters. For example @samp{#@@/@@} means that @samp{#} and @samp{/} characters are translated to @samp{@@}. Defaults to @samp{\"\"}."
28285 msgstr ""
28286
28287 #. type: deftypevr
28288 #: doc/guix.texi:15740
28289 #, no-wrap
28290 msgid "{@code{dovecot-configuration} parameter} string auth-username-format"
28291 msgstr ""
28292
28293 #. type: deftypevr
28294 #: doc/guix.texi:15747
28295 msgid "Username formatting before it's looked up from databases. You can use the standard variables here, e.g.@: %Lu would lowercase the username, %n would drop away the domain if it was given, or @samp{%n-AT-%d} would change the @samp{@@} into @samp{-AT-}. This translation is done after @samp{auth-username-translation} changes. Defaults to @samp{\"%Lu\"}."
28296 msgstr ""
28297
28298 #. type: deftypevr
28299 #: doc/guix.texi:15749
28300 #, no-wrap
28301 msgid "{@code{dovecot-configuration} parameter} string auth-master-user-separator"
28302 msgstr ""
28303
28304 #. type: deftypevr
28305 #: doc/guix.texi:15757
28306 msgid "If you want to allow master users to log in by specifying the master username within the normal username string (i.e.@: not using SASL mechanism's support for it), you can specify the separator character here. The format is then <username><separator><master username>. UW-IMAP uses @samp{*} as the separator, so that could be a good choice. Defaults to @samp{\"\"}."
28307 msgstr ""
28308
28309 #. type: deftypevr
28310 #: doc/guix.texi:15759
28311 #, no-wrap
28312 msgid "{@code{dovecot-configuration} parameter} string auth-anonymous-username"
28313 msgstr ""
28314
28315 #. type: deftypevr
28316 #: doc/guix.texi:15763
28317 msgid "Username to use for users logging in with ANONYMOUS SASL mechanism. Defaults to @samp{\"anonymous\"}."
28318 msgstr ""
28319
28320 #. type: deftypevr
28321 #: doc/guix.texi:15765
28322 #, no-wrap
28323 msgid "{@code{dovecot-configuration} parameter} non-negative-integer auth-worker-max-count"
28324 msgstr ""
28325
28326 #. type: deftypevr
28327 #: doc/guix.texi:15770
28328 msgid "Maximum number of dovecot-auth worker processes. They're used to execute blocking passdb and userdb queries (e.g.@: MySQL and PAM). They're automatically created and destroyed as needed. Defaults to @samp{30}."
28329 msgstr ""
28330
28331 #. type: deftypevr
28332 #: doc/guix.texi:15772
28333 #, no-wrap
28334 msgid "{@code{dovecot-configuration} parameter} string auth-gssapi-hostname"
28335 msgstr ""
28336
28337 #. type: deftypevr
28338 #: doc/guix.texi:15777
28339 msgid "Host name to use in GSSAPI principal names. The default is to use the name returned by gethostname(). Use @samp{$ALL} (with quotes) to allow all keytab entries. Defaults to @samp{\"\"}."
28340 msgstr ""
28341
28342 #. type: deftypevr
28343 #: doc/guix.texi:15779
28344 #, no-wrap
28345 msgid "{@code{dovecot-configuration} parameter} string auth-krb5-keytab"
28346 msgstr ""
28347
28348 #. type: deftypevr
28349 #: doc/guix.texi:15785
28350 msgid "Kerberos keytab to use for the GSSAPI mechanism. Will use the system default (usually @file{/etc/krb5.keytab}) if not specified. You may need to change the auth service to run as root to be able to read this file. Defaults to @samp{\"\"}."
28351 msgstr ""
28352
28353 #. type: deftypevr
28354 #: doc/guix.texi:15787
28355 #, no-wrap
28356 msgid "{@code{dovecot-configuration} parameter} boolean auth-use-winbind?"
28357 msgstr ""
28358
28359 #. type: deftypevr
28360 #: doc/guix.texi:15792
28361 msgid "Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and @samp{ntlm-auth} helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt>. Defaults to @samp{#f}."
28362 msgstr ""
28363
28364 #. type: deftypevr
28365 #: doc/guix.texi:15794
28366 #, no-wrap
28367 msgid "{@code{dovecot-configuration} parameter} file-name auth-winbind-helper-path"
28368 msgstr ""
28369
28370 #. type: deftypevr
28371 #: doc/guix.texi:15797
28372 msgid "Path for Samba's @samp{ntlm-auth} helper binary. Defaults to @samp{\"/usr/bin/ntlm_auth\"}."
28373 msgstr ""
28374
28375 #. type: deftypevr
28376 #: doc/guix.texi:15799
28377 #, no-wrap
28378 msgid "{@code{dovecot-configuration} parameter} string auth-failure-delay"
28379 msgstr ""
28380
28381 #. type: deftypevr
28382 #: doc/guix.texi:15802
28383 msgid "Time to delay before replying to failed authentications. Defaults to @samp{\"2 secs\"}."
28384 msgstr ""
28385
28386 #. type: deftypevr
28387 #: doc/guix.texi:15804
28388 #, no-wrap
28389 msgid "{@code{dovecot-configuration} parameter} boolean auth-ssl-require-client-cert?"
28390 msgstr ""
28391
28392 #. type: deftypevr
28393 #: doc/guix.texi:15808
28394 msgid "Require a valid SSL client certificate or the authentication fails. Defaults to @samp{#f}."
28395 msgstr ""
28396
28397 #. type: deftypevr
28398 #: doc/guix.texi:15810
28399 #, no-wrap
28400 msgid "{@code{dovecot-configuration} parameter} boolean auth-ssl-username-from-cert?"
28401 msgstr ""
28402
28403 #. type: deftypevr
28404 #: doc/guix.texi:15815
28405 msgid "Take the username from client's SSL certificate, using @code{X509_NAME_get_text_by_NID()} which returns the subject's DN's CommonName. Defaults to @samp{#f}."
28406 msgstr ""
28407
28408 #. type: deftypevr
28409 #: doc/guix.texi:15817
28410 #, no-wrap
28411 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list auth-mechanisms"
28412 msgstr ""
28413
28414 #. type: deftypevr
28415 #: doc/guix.texi:15823
28416 msgid "List of wanted authentication mechanisms. Supported mechanisms are: @samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, @samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, @samp{otp}, @samp{skey}, and @samp{gss-spnego}. NOTE: See also @samp{disable-plaintext-auth} setting."
28417 msgstr ""
28418
28419 #. type: deftypevr
28420 #: doc/guix.texi:15825
28421 #, no-wrap
28422 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list director-servers"
28423 msgstr ""
28424
28425 #. type: deftypevr
28426 #: doc/guix.texi:15830
28427 msgid "List of IPs or hostnames to all director servers, including ourself. Ports can be specified as ip:port. The default port is the same as what director service's @samp{inet-listener} is using. Defaults to @samp{()}."
28428 msgstr ""
28429
28430 #. type: deftypevr
28431 #: doc/guix.texi:15832
28432 #, no-wrap
28433 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list director-mail-servers"
28434 msgstr ""
28435
28436 #. type: deftypevr
28437 #: doc/guix.texi:15836
28438 msgid "List of IPs or hostnames to all backend mail servers. Ranges are allowed too, like 10.0.0.10-10.0.0.30. Defaults to @samp{()}."
28439 msgstr ""
28440
28441 #. type: deftypevr
28442 #: doc/guix.texi:15838
28443 #, no-wrap
28444 msgid "{@code{dovecot-configuration} parameter} string director-user-expire"
28445 msgstr ""
28446
28447 #. type: deftypevr
28448 #: doc/guix.texi:15842
28449 msgid "How long to redirect users to a specific server after it no longer has any connections. Defaults to @samp{\"15 min\"}."
28450 msgstr ""
28451
28452 #. type: deftypevr
28453 #: doc/guix.texi:15844
28454 #, no-wrap
28455 msgid "{@code{dovecot-configuration} parameter} string director-username-hash"
28456 msgstr ""
28457
28458 #. type: deftypevr
28459 #: doc/guix.texi:15849
28460 msgid "How the username is translated before being hashed. Useful values include %Ln if user can log in with or without @@domain, %Ld if mailboxes are shared within domain. Defaults to @samp{\"%Lu\"}."
28461 msgstr ""
28462
28463 #. type: deftypevr
28464 #: doc/guix.texi:15851
28465 #, no-wrap
28466 msgid "{@code{dovecot-configuration} parameter} string log-path"
28467 msgstr ""
28468
28469 #. type: deftypevr
28470 #: doc/guix.texi:15855
28471 msgid "Log file to use for error messages. @samp{syslog} logs to syslog, @samp{/dev/stderr} logs to stderr. Defaults to @samp{\"syslog\"}."
28472 msgstr ""
28473
28474 #. type: deftypevr
28475 #: doc/guix.texi:15857
28476 #, no-wrap
28477 msgid "{@code{dovecot-configuration} parameter} string info-log-path"
28478 msgstr ""
28479
28480 #. type: deftypevr
28481 #: doc/guix.texi:15861
28482 msgid "Log file to use for informational messages. Defaults to @samp{log-path}. Defaults to @samp{\"\"}."
28483 msgstr ""
28484
28485 #. type: deftypevr
28486 #: doc/guix.texi:15863
28487 #, no-wrap
28488 msgid "{@code{dovecot-configuration} parameter} string debug-log-path"
28489 msgstr ""
28490
28491 #. type: deftypevr
28492 #: doc/guix.texi:15867
28493 msgid "Log file to use for debug messages. Defaults to @samp{info-log-path}. Defaults to @samp{\"\"}."
28494 msgstr ""
28495
28496 #. type: deftypevr
28497 #: doc/guix.texi:15869
28498 #, no-wrap
28499 msgid "{@code{dovecot-configuration} parameter} string syslog-facility"
28500 msgstr ""
28501
28502 #. type: deftypevr
28503 #: doc/guix.texi:15874
28504 msgid "Syslog facility to use if you're logging to syslog. Usually if you don't want to use @samp{mail}, you'll use local0..local7. Also other standard facilities are supported. Defaults to @samp{\"mail\"}."
28505 msgstr ""
28506
28507 #. type: deftypevr
28508 #: doc/guix.texi:15876
28509 #, no-wrap
28510 msgid "{@code{dovecot-configuration} parameter} boolean auth-verbose?"
28511 msgstr ""
28512
28513 #. type: deftypevr
28514 #: doc/guix.texi:15880
28515 msgid "Log unsuccessful authentication attempts and the reasons why they failed. Defaults to @samp{#f}."
28516 msgstr ""
28517
28518 #. type: deftypevr
28519 #: doc/guix.texi:15882
28520 #, no-wrap
28521 msgid "{@code{dovecot-configuration} parameter} string auth-verbose-passwords"
28522 msgstr ""
28523
28524 #. type: deftypevr
28525 #: doc/guix.texi:15889
28526 msgid "In case of password mismatches, log the attempted password. Valid values are no, plain and sha1. sha1 can be useful for detecting brute force password attempts vs. user simply trying the same password over and over again. You can also truncate the value to n chars by appending \":n\" (e.g.@: sha1:6). Defaults to @samp{\"no\"}."
28527 msgstr ""
28528
28529 #. type: deftypevr
28530 #: doc/guix.texi:15891
28531 #, no-wrap
28532 msgid "{@code{dovecot-configuration} parameter} boolean auth-debug?"
28533 msgstr ""
28534
28535 #. type: deftypevr
28536 #: doc/guix.texi:15895
28537 msgid "Even more verbose logging for debugging purposes. Shows for example SQL queries. Defaults to @samp{#f}."
28538 msgstr ""
28539
28540 #. type: deftypevr
28541 #: doc/guix.texi:15897
28542 #, no-wrap
28543 msgid "{@code{dovecot-configuration} parameter} boolean auth-debug-passwords?"
28544 msgstr ""
28545
28546 #. type: deftypevr
28547 #: doc/guix.texi:15902
28548 msgid "In case of password mismatches, log the passwords and used scheme so the problem can be debugged. Enabling this also enables @samp{auth-debug}. Defaults to @samp{#f}."
28549 msgstr ""
28550
28551 #. type: deftypevr
28552 #: doc/guix.texi:15904
28553 #, no-wrap
28554 msgid "{@code{dovecot-configuration} parameter} boolean mail-debug?"
28555 msgstr ""
28556
28557 #. type: deftypevr
28558 #: doc/guix.texi:15908
28559 msgid "Enable mail process debugging. This can help you figure out why Dovecot isn't finding your mails. Defaults to @samp{#f}."
28560 msgstr ""
28561
28562 #. type: deftypevr
28563 #: doc/guix.texi:15910
28564 #, no-wrap
28565 msgid "{@code{dovecot-configuration} parameter} boolean verbose-ssl?"
28566 msgstr ""
28567
28568 #. type: deftypevr
28569 #: doc/guix.texi:15913
28570 msgid "Show protocol level SSL errors. Defaults to @samp{#f}."
28571 msgstr ""
28572
28573 #. type: deftypevr
28574 #: doc/guix.texi:15915
28575 #, no-wrap
28576 msgid "{@code{dovecot-configuration} parameter} string log-timestamp"
28577 msgstr ""
28578
28579 #. type: deftypevr
28580 #: doc/guix.texi:15919
28581 msgid "Prefix for each line written to log file. % codes are in strftime(3) format. Defaults to @samp{\"\\\"%b %d %H:%M:%S \\\"\"}."
28582 msgstr ""
28583
28584 #. type: deftypevr
28585 #: doc/guix.texi:15921
28586 #, no-wrap
28587 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list login-log-format-elements"
28588 msgstr ""
28589
28590 #. type: deftypevr
28591 #: doc/guix.texi:15925
28592 msgid "List of elements we want to log. The elements which have a non-empty variable value are joined together to form a comma-separated string."
28593 msgstr ""
28594
28595 #. type: deftypevr
28596 #: doc/guix.texi:15927
28597 #, no-wrap
28598 msgid "{@code{dovecot-configuration} parameter} string login-log-format"
28599 msgstr ""
28600
28601 #. type: deftypevr
28602 #: doc/guix.texi:15931
28603 msgid "Login log format. %s contains @samp{login-log-format-elements} string, %$ contains the data we want to log. Defaults to @samp{\"%$: %s\"}."
28604 msgstr ""
28605
28606 #. type: deftypevr
28607 #: doc/guix.texi:15933
28608 #, no-wrap
28609 msgid "{@code{dovecot-configuration} parameter} string mail-log-prefix"
28610 msgstr ""
28611
28612 #. type: deftypevr
28613 #: doc/guix.texi:15937
28614 msgid "Log prefix for mail processes. See doc/wiki/Variables.txt for list of possible variables you can use. Defaults to @samp{\"\\\"%s(%u)<%@{pid@}><%@{session@}>: \\\"\"}."
28615 msgstr ""
28616
28617 #. type: deftypevr
28618 #: doc/guix.texi:15939
28619 #, no-wrap
28620 msgid "{@code{dovecot-configuration} parameter} string deliver-log-format"
28621 msgstr ""
28622
28623 #. type: deftypevr
28624 #: doc/guix.texi:15941
28625 msgid "Format to use for logging mail deliveries. You can use variables:"
28626 msgstr ""
28627
28628 #. type: item
28629 #: doc/guix.texi:15942
28630 #, no-wrap
28631 msgid "%$"
28632 msgstr ""
28633
28634 #. type: table
28635 #: doc/guix.texi:15944
28636 msgid "Delivery status message (e.g.@: @samp{saved to INBOX})"
28637 msgstr ""
28638
28639 #. type: item
28640 #: doc/guix.texi:15944
28641 #, no-wrap
28642 msgid "%m"
28643 msgstr ""
28644
28645 #. type: table
28646 #: doc/guix.texi:15946
28647 msgid "Message-ID"
28648 msgstr ""
28649
28650 #. type: item
28651 #: doc/guix.texi:15946 doc/guix.texi:16478
28652 #, no-wrap
28653 msgid "%s"
28654 msgstr ""
28655
28656 #. type: table
28657 #: doc/guix.texi:15948
28658 msgid "Subject"
28659 msgstr ""
28660
28661 #. type: item
28662 #: doc/guix.texi:15948
28663 #, no-wrap
28664 msgid "%f"
28665 msgstr ""
28666
28667 #. type: table
28668 #: doc/guix.texi:15950
28669 msgid "From address"
28670 msgstr ""
28671
28672 #. type: table
28673 #: doc/guix.texi:15952
28674 msgid "Physical size"
28675 msgstr ""
28676
28677 #. type: item
28678 #: doc/guix.texi:15952
28679 #, no-wrap
28680 msgid "%w"
28681 msgstr ""
28682
28683 #. type: table
28684 #: doc/guix.texi:15954
28685 msgid "Virtual size."
28686 msgstr ""
28687
28688 #. type: deftypevr
28689 #: doc/guix.texi:15956
28690 msgid "Defaults to @samp{\"msgid=%m: %$\"}."
28691 msgstr ""
28692
28693 #. type: deftypevr
28694 #: doc/guix.texi:15958
28695 #, no-wrap
28696 msgid "{@code{dovecot-configuration} parameter} string mail-location"
28697 msgstr ""
28698
28699 #. type: deftypevr
28700 #: doc/guix.texi:15963
28701 msgid "Location for users' mailboxes. The default is empty, which means that Dovecot tries to find the mailboxes automatically. This won't work if the user doesn't yet have any mail, so you should explicitly tell Dovecot the full location."
28702 msgstr ""
28703
28704 #. type: deftypevr
28705 #: doc/guix.texi:15969
28706 msgid "If you're using mbox, giving a path to the INBOX file (e.g.@: /var/mail/%u) isn't enough. You'll also need to tell Dovecot where the other mailboxes are kept. This is called the \"root mail directory\", and it must be the first path given in the @samp{mail-location} setting."
28707 msgstr ""
28708
28709 #. type: deftypevr
28710 #: doc/guix.texi:15971
28711 msgid "There are a few special variables you can use, eg.:"
28712 msgstr ""
28713
28714 #. type: table
28715 #: doc/guix.texi:15975
28716 msgid "username"
28717 msgstr ""
28718
28719 #. type: item
28720 #: doc/guix.texi:15975 doc/guix.texi:16474
28721 #, no-wrap
28722 msgid "%n"
28723 msgstr ""
28724
28725 #. type: table
28726 #: doc/guix.texi:15977
28727 msgid "user part in user@@domain, same as %u if there's no domain"
28728 msgstr ""
28729
28730 #. type: item
28731 #: doc/guix.texi:15977
28732 #, no-wrap
28733 msgid "%d"
28734 msgstr ""
28735
28736 #. type: table
28737 #: doc/guix.texi:15979
28738 msgid "domain part in user@@domain, empty if there's no domain"
28739 msgstr ""
28740
28741 #. type: item
28742 #: doc/guix.texi:15979
28743 #, no-wrap
28744 msgid "%h"
28745 msgstr ""
28746
28747 #. type: table
28748 #: doc/guix.texi:15981
28749 msgid "home director"
28750 msgstr ""
28751
28752 #. type: deftypevr
28753 #: doc/guix.texi:15984
28754 msgid "See doc/wiki/Variables.txt for full list. Some examples:"
28755 msgstr ""
28756
28757 #. type: item
28758 #: doc/guix.texi:15985
28759 #, no-wrap
28760 msgid "maildir:~/Maildir"
28761 msgstr ""
28762
28763 #. type: item
28764 #: doc/guix.texi:15986
28765 #, no-wrap
28766 msgid "mbox:~/mail:INBOX=/var/mail/%u"
28767 msgstr ""
28768
28769 #. type: item
28770 #: doc/guix.texi:15987
28771 #, no-wrap
28772 msgid "mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%"
28773 msgstr ""
28774
28775 #. type: deftypevr
28776 #: doc/guix.texi:15992
28777 #, no-wrap
28778 msgid "{@code{dovecot-configuration} parameter} string mail-uid"
28779 msgstr ""
28780
28781 #. type: deftypevr
28782 #: doc/guix.texi:15997
28783 msgid "System user and group used to access mails. If you use multiple, userdb can override these by returning uid or gid fields. You can use either numbers or names. <doc/wiki/UserIds.txt>. Defaults to @samp{\"\"}."
28784 msgstr ""
28785
28786 #. type: deftypevr
28787 #: doc/guix.texi:15999
28788 #, no-wrap
28789 msgid "{@code{dovecot-configuration} parameter} string mail-gid"
28790 msgstr ""
28791
28792 #. type: deftypevr
28793 #: doc/guix.texi:16004
28794 #, no-wrap
28795 msgid "{@code{dovecot-configuration} parameter} string mail-privileged-group"
28796 msgstr ""
28797
28798 #. type: deftypevr
28799 #: doc/guix.texi:16010
28800 msgid "Group to enable temporarily for privileged operations. Currently this is used only with INBOX when either its initial creation or dotlocking fails. Typically this is set to \"mail\" to give access to /var/mail. Defaults to @samp{\"\"}."
28801 msgstr ""
28802
28803 #. type: deftypevr
28804 #: doc/guix.texi:16012
28805 #, no-wrap
28806 msgid "{@code{dovecot-configuration} parameter} string mail-access-groups"
28807 msgstr ""
28808
28809 #. type: deftypevr
28810 #: doc/guix.texi:16020
28811 msgid "Grant access to these supplementary groups for mail processes. Typically these are used to set up access to shared mailboxes. Note that it may be dangerous to set these if users can create symlinks (e.g.@: if \"mail\" group is set here, ln -s /var/mail ~/mail/var could allow a user to delete others' mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading it). Defaults to @samp{\"\"}."
28812 msgstr ""
28813
28814 #. type: deftypevr
28815 #: doc/guix.texi:16022
28816 #, no-wrap
28817 msgid "{@code{dovecot-configuration} parameter} boolean mail-full-filesystem-access?"
28818 msgstr ""
28819
28820 #. type: deftypevr
28821 #: doc/guix.texi:16028
28822 msgid "Allow full file system access to clients. There's no access checks other than what the operating system does for the active UID/GID. It works with both maildir and mboxes, allowing you to prefix mailboxes names with e.g.@: /path/ or ~user/. Defaults to @samp{#f}."
28823 msgstr ""
28824
28825 #. type: deftypevr
28826 #: doc/guix.texi:16030
28827 #, no-wrap
28828 msgid "{@code{dovecot-configuration} parameter} boolean mmap-disable?"
28829 msgstr ""
28830
28831 #. type: deftypevr
28832 #: doc/guix.texi:16034
28833 msgid "Don't use mmap() at all. This is required if you store indexes to shared file systems (NFS or clustered file system). Defaults to @samp{#f}."
28834 msgstr ""
28835
28836 #. type: deftypevr
28837 #: doc/guix.texi:16036
28838 #, no-wrap
28839 msgid "{@code{dovecot-configuration} parameter} boolean dotlock-use-excl?"
28840 msgstr ""
28841
28842 #. type: deftypevr
28843 #: doc/guix.texi:16041
28844 msgid "Rely on @samp{O_EXCL} to work when creating dotlock files. NFS supports @samp{O_EXCL} since version 3, so this should be safe to use nowadays by default. Defaults to @samp{#t}."
28845 msgstr ""
28846
28847 #. type: deftypevr
28848 #: doc/guix.texi:16043
28849 #, no-wrap
28850 msgid "{@code{dovecot-configuration} parameter} string mail-fsync"
28851 msgstr ""
28852
28853 #. type: deftypevr
28854 #: doc/guix.texi:16045
28855 msgid "When to use fsync() or fdatasync() calls:"
28856 msgstr ""
28857
28858 #. type: item
28859 #: doc/guix.texi:16046
28860 #, no-wrap
28861 msgid "optimized"
28862 msgstr ""
28863
28864 #. type: table
28865 #: doc/guix.texi:16048
28866 msgid "Whenever necessary to avoid losing important data"
28867 msgstr ""
28868
28869 #. type: table
28870 #: doc/guix.texi:16050
28871 msgid "Useful with e.g.@: NFS when write()s are delayed"
28872 msgstr ""
28873
28874 #. type: table
28875 #: doc/guix.texi:16052
28876 msgid "Never use it (best performance, but crashes can lose data)."
28877 msgstr ""
28878
28879 #. type: deftypevr
28880 #: doc/guix.texi:16054
28881 msgid "Defaults to @samp{\"optimized\"}."
28882 msgstr ""
28883
28884 #. type: deftypevr
28885 #: doc/guix.texi:16056
28886 #, no-wrap
28887 msgid "{@code{dovecot-configuration} parameter} boolean mail-nfs-storage?"
28888 msgstr ""
28889
28890 #. type: deftypevr
28891 #: doc/guix.texi:16061
28892 msgid "Mail storage exists in NFS. Set this to yes to make Dovecot flush NFS caches whenever needed. If you're using only a single mail server this isn't needed. Defaults to @samp{#f}."
28893 msgstr ""
28894
28895 #. type: deftypevr
28896 #: doc/guix.texi:16063
28897 #, no-wrap
28898 msgid "{@code{dovecot-configuration} parameter} boolean mail-nfs-index?"
28899 msgstr ""
28900
28901 #. type: deftypevr
28902 #: doc/guix.texi:16067
28903 msgid "Mail index files also exist in NFS. Setting this to yes requires @samp{mmap-disable? #t} and @samp{fsync-disable? #f}. Defaults to @samp{#f}."
28904 msgstr ""
28905
28906 #. type: deftypevr
28907 #: doc/guix.texi:16069
28908 #, no-wrap
28909 msgid "{@code{dovecot-configuration} parameter} string lock-method"
28910 msgstr ""
28911
28912 #. type: deftypevr
28913 #: doc/guix.texi:16075
28914 msgid "Locking method for index files. Alternatives are fcntl, flock and dotlock. Dotlocking uses some tricks which may create more disk I/O than other locking methods. NFS users: flock doesn't work, remember to change @samp{mmap-disable}. Defaults to @samp{\"fcntl\"}."
28915 msgstr ""
28916
28917 #. type: deftypevr
28918 #: doc/guix.texi:16077
28919 #, no-wrap
28920 msgid "{@code{dovecot-configuration} parameter} file-name mail-temp-dir"
28921 msgstr ""
28922
28923 #. type: deftypevr
28924 #: doc/guix.texi:16081
28925 msgid "Directory in which LDA/LMTP temporarily stores incoming mails >128 kB. Defaults to @samp{\"/tmp\"}."
28926 msgstr ""
28927
28928 #. type: deftypevr
28929 #: doc/guix.texi:16083
28930 #, no-wrap
28931 msgid "{@code{dovecot-configuration} parameter} non-negative-integer first-valid-uid"
28932 msgstr ""
28933
28934 #. type: deftypevr
28935 #: doc/guix.texi:16089
28936 msgid "Valid UID range for users. This is mostly to make sure that users can't log in as daemons or other system users. Note that denying root logins is hardcoded to dovecot binary and can't be done even if @samp{first-valid-uid} is set to 0. Defaults to @samp{500}."
28937 msgstr ""
28938
28939 #. type: deftypevr
28940 #: doc/guix.texi:16091
28941 #, no-wrap
28942 msgid "{@code{dovecot-configuration} parameter} non-negative-integer last-valid-uid"
28943 msgstr ""
28944
28945 #. type: deftypevr
28946 #: doc/guix.texi:16096
28947 #, no-wrap
28948 msgid "{@code{dovecot-configuration} parameter} non-negative-integer first-valid-gid"
28949 msgstr ""
28950
28951 #. type: deftypevr
28952 #: doc/guix.texi:16101
28953 msgid "Valid GID range for users. Users having non-valid GID as primary group ID aren't allowed to log in. If user belongs to supplementary groups with non-valid GIDs, those groups are not set. Defaults to @samp{1}."
28954 msgstr ""
28955
28956 #. type: deftypevr
28957 #: doc/guix.texi:16103
28958 #, no-wrap
28959 msgid "{@code{dovecot-configuration} parameter} non-negative-integer last-valid-gid"
28960 msgstr ""
28961
28962 #. type: deftypevr
28963 #: doc/guix.texi:16108
28964 #, no-wrap
28965 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-max-keyword-length"
28966 msgstr ""
28967
28968 #. type: deftypevr
28969 #: doc/guix.texi:16112
28970 msgid "Maximum allowed length for mail keyword name. It's only forced when trying to create new keywords. Defaults to @samp{50}."
28971 msgstr ""
28972
28973 #. type: deftypevr
28974 #: doc/guix.texi:16114
28975 #, no-wrap
28976 msgid "{@code{dovecot-configuration} parameter} colon-separated-file-name-list valid-chroot-dirs"
28977 msgstr ""
28978
28979 #. type: deftypevr
28980 #: doc/guix.texi:16124
28981 msgid "List of directories under which chrooting is allowed for mail processes (i.e.@: /var/mail will allow chrooting to /var/mail/foo/bar too). This setting doesn't affect @samp{login-chroot} @samp{mail-chroot} or auth chroot settings. If this setting is empty, \"/./\" in home dirs are ignored. WARNING: Never add directories here which local users can modify, that may lead to root exploit. Usually this should be done only if you don't allow shell access for users. <doc/wiki/Chrooting.txt>. Defaults to @samp{()}."
28982 msgstr ""
28983
28984 #. type: deftypevr
28985 #: doc/guix.texi:16126
28986 #, no-wrap
28987 msgid "{@code{dovecot-configuration} parameter} string mail-chroot"
28988 msgstr ""
28989
28990 #. type: deftypevr
28991 #: doc/guix.texi:16135
28992 msgid "Default chroot directory for mail processes. This can be overridden for specific users in user database by giving /./ in user's home directory (e.g.@: /home/./user chroots into /home). Note that usually there is no real need to do chrooting, Dovecot doesn't allow users to access files outside their mail directory anyway. If your home directories are prefixed with the chroot directory, append \"/.\"@: to @samp{mail-chroot}. <doc/wiki/Chrooting.txt>. Defaults to @samp{\"\"}."
28993 msgstr ""
28994
28995 #. type: deftypevr
28996 #: doc/guix.texi:16137
28997 #, no-wrap
28998 msgid "{@code{dovecot-configuration} parameter} file-name auth-socket-path"
28999 msgstr ""
29000
29001 #. type: deftypevr
29002 #: doc/guix.texi:16141
29003 msgid "UNIX socket path to master authentication server to find users. This is used by imap (for shared users) and lda. Defaults to @samp{\"/var/run/dovecot/auth-userdb\"}."
29004 msgstr ""
29005
29006 #. type: deftypevr
29007 #: doc/guix.texi:16143
29008 #, no-wrap
29009 msgid "{@code{dovecot-configuration} parameter} file-name mail-plugin-dir"
29010 msgstr ""
29011
29012 #. type: deftypevr
29013 #: doc/guix.texi:16146
29014 msgid "Directory where to look up mail plugins. Defaults to @samp{\"/usr/lib/dovecot\"}."
29015 msgstr ""
29016
29017 #. type: deftypevr
29018 #: doc/guix.texi:16148
29019 #, no-wrap
29020 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins"
29021 msgstr ""
29022
29023 #. type: deftypevr
29024 #: doc/guix.texi:16152
29025 msgid "List of plugins to load for all services. Plugins specific to IMAP, LDA, etc.@: are added to this list in their own .conf files. Defaults to @samp{()}."
29026 msgstr ""
29027
29028 #. type: deftypevr
29029 #: doc/guix.texi:16154
29030 #, no-wrap
29031 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-cache-min-mail-count"
29032 msgstr ""
29033
29034 #. type: deftypevr
29035 #: doc/guix.texi:16159
29036 msgid "The minimum number of mails in a mailbox before updates are done to cache file. This allows optimizing Dovecot's behavior to do less disk writes at the cost of more disk reads. Defaults to @samp{0}."
29037 msgstr ""
29038
29039 #. type: deftypevr
29040 #: doc/guix.texi:16161
29041 #, no-wrap
29042 msgid "{@code{dovecot-configuration} parameter} string mailbox-idle-check-interval"
29043 msgstr ""
29044
29045 #. type: deftypevr
29046 #: doc/guix.texi:16168
29047 msgid "When IDLE command is running, mailbox is checked once in a while to see if there are any new mails or other changes. This setting defines the minimum time to wait between those checks. Dovecot can also use dnotify, inotify and kqueue to find out immediately when changes occur. Defaults to @samp{\"30 secs\"}."
29048 msgstr ""
29049
29050 #. type: deftypevr
29051 #: doc/guix.texi:16170
29052 #, no-wrap
29053 msgid "{@code{dovecot-configuration} parameter} boolean mail-save-crlf?"
29054 msgstr ""
29055
29056 #. type: deftypevr
29057 #: doc/guix.texi:16177
29058 msgid "Save mails with CR+LF instead of plain LF. This makes sending those mails take less CPU, especially with sendfile() syscall with Linux and FreeBSD. But it also creates a bit more disk I/O which may just make it slower. Also note that if other software reads the mboxes/maildirs, they may handle the extra CRs wrong and cause problems. Defaults to @samp{#f}."
29059 msgstr ""
29060
29061 #. type: deftypevr
29062 #: doc/guix.texi:16179
29063 #, no-wrap
29064 msgid "{@code{dovecot-configuration} parameter} boolean maildir-stat-dirs?"
29065 msgstr ""
29066
29067 #. type: deftypevr
29068 #: doc/guix.texi:16187
29069 msgid "By default LIST command returns all entries in maildir beginning with a dot. Enabling this option makes Dovecot return only entries which are directories. This is done by stat()ing each entry, so it causes more disk I/O. (For systems setting struct @samp{dirent->d_type} this check is free and it's done always regardless of this setting). Defaults to @samp{#f}."
29070 msgstr ""
29071
29072 #. type: deftypevr
29073 #: doc/guix.texi:16189
29074 #, no-wrap
29075 msgid "{@code{dovecot-configuration} parameter} boolean maildir-copy-with-hardlinks?"
29076 msgstr ""
29077
29078 #. type: deftypevr
29079 #: doc/guix.texi:16194
29080 msgid "When copying a message, do it with hard links whenever possible. This makes the performance much better, and it's unlikely to have any side effects. Defaults to @samp{#t}."
29081 msgstr ""
29082
29083 #. type: deftypevr
29084 #: doc/guix.texi:16196
29085 #, no-wrap
29086 msgid "{@code{dovecot-configuration} parameter} boolean maildir-very-dirty-syncs?"
29087 msgstr ""
29088
29089 #. type: deftypevr
29090 #: doc/guix.texi:16201
29091 msgid "Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only when its mtime changes unexpectedly or when we can't find the mail otherwise. Defaults to @samp{#f}."
29092 msgstr ""
29093
29094 #. type: deftypevr
29095 #: doc/guix.texi:16203
29096 #, no-wrap
29097 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mbox-read-locks"
29098 msgstr ""
29099
29100 #. type: deftypevr
29101 #: doc/guix.texi:16206
29102 msgid "Which locking methods to use for locking mbox. There are four available:"
29103 msgstr ""
29104
29105 #. type: item
29106 #: doc/guix.texi:16208
29107 #, no-wrap
29108 msgid "dotlock"
29109 msgstr ""
29110
29111 #. type: table
29112 #: doc/guix.texi:16212
29113 msgid "Create <mailbox>.lock file. This is the oldest and most NFS-safe solution. If you want to use /var/mail/ like directory, the users will need write access to that directory."
29114 msgstr ""
29115
29116 #. type: item
29117 #: doc/guix.texi:16212
29118 #, no-wrap
29119 msgid "dotlock-try"
29120 msgstr ""
29121
29122 #. type: table
29123 #: doc/guix.texi:16215
29124 msgid "Same as dotlock, but if it fails because of permissions or because there isn't enough disk space, just skip it."
29125 msgstr ""
29126
29127 #. type: item
29128 #: doc/guix.texi:16215
29129 #, no-wrap
29130 msgid "fcntl"
29131 msgstr ""
29132
29133 #. type: table
29134 #: doc/guix.texi:16217
29135 msgid "Use this if possible. Works with NFS too if lockd is used."
29136 msgstr ""
29137
29138 #. type: item
29139 #: doc/guix.texi:16217
29140 #, no-wrap
29141 msgid "flock"
29142 msgstr ""
29143
29144 #. type: table
29145 #: doc/guix.texi:16219 doc/guix.texi:16221
29146 msgid "May not exist in all systems. Doesn't work with NFS."
29147 msgstr ""
29148
29149 #. type: item
29150 #: doc/guix.texi:16219
29151 #, no-wrap
29152 msgid "lockf"
29153 msgstr ""
29154
29155 #. type: deftypevr
29156 #: doc/guix.texi:16227
29157 msgid "You can use multiple locking methods; if you do the order they're declared in is important to avoid deadlocks if other MTAs/MUAs are using multiple locking methods as well. Some operating systems don't allow using some of them simultaneously."
29158 msgstr ""
29159
29160 #. type: deftypevr
29161 #: doc/guix.texi:16229
29162 #, no-wrap
29163 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list mbox-write-locks"
29164 msgstr ""
29165
29166 #. type: deftypevr
29167 #: doc/guix.texi:16233
29168 #, no-wrap
29169 msgid "{@code{dovecot-configuration} parameter} string mbox-lock-timeout"
29170 msgstr ""
29171
29172 #. type: deftypevr
29173 #: doc/guix.texi:16236
29174 msgid "Maximum time to wait for lock (all of them) before aborting. Defaults to @samp{\"5 mins\"}."
29175 msgstr ""
29176
29177 #. type: deftypevr
29178 #: doc/guix.texi:16238
29179 #, no-wrap
29180 msgid "{@code{dovecot-configuration} parameter} string mbox-dotlock-change-timeout"
29181 msgstr ""
29182
29183 #. type: deftypevr
29184 #: doc/guix.texi:16242
29185 msgid "If dotlock exists but the mailbox isn't modified in any way, override the lock file after this much time. Defaults to @samp{\"2 mins\"}."
29186 msgstr ""
29187
29188 #. type: deftypevr
29189 #: doc/guix.texi:16244
29190 #, no-wrap
29191 msgid "{@code{dovecot-configuration} parameter} boolean mbox-dirty-syncs?"
29192 msgstr ""
29193
29194 #. type: deftypevr
29195 #: doc/guix.texi:16255
29196 msgid "When mbox changes unexpectedly we have to fully read it to find out what changed. If the mbox is large this can take a long time. Since the change is usually just a newly appended mail, it'd be faster to simply read the new mails. If this setting is enabled, Dovecot does this but still safely fallbacks to re-reading the whole mbox file whenever something in mbox isn't how it's expected to be. The only real downside to this setting is that if some other MUA changes message flags, Dovecot doesn't notice it immediately. Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK commands. Defaults to @samp{#t}."
29197 msgstr ""
29198
29199 #. type: deftypevr
29200 #: doc/guix.texi:16257
29201 #, no-wrap
29202 msgid "{@code{dovecot-configuration} parameter} boolean mbox-very-dirty-syncs?"
29203 msgstr ""
29204
29205 #. type: deftypevr
29206 #: doc/guix.texi:16262
29207 msgid "Like @samp{mbox-dirty-syncs}, but don't do full syncs even with SELECT, EXAMINE, EXPUNGE or CHECK commands. If this is set, @samp{mbox-dirty-syncs} is ignored. Defaults to @samp{#f}."
29208 msgstr ""
29209
29210 #. type: deftypevr
29211 #: doc/guix.texi:16264
29212 #, no-wrap
29213 msgid "{@code{dovecot-configuration} parameter} boolean mbox-lazy-writes?"
29214 msgstr ""
29215
29216 #. type: deftypevr
29217 #: doc/guix.texi:16270
29218 msgid "Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK commands and when closing the mailbox). This is especially useful for POP3 where clients often delete all mails. The downside is that our changes aren't immediately visible to other MUAs. Defaults to @samp{#t}."
29219 msgstr ""
29220
29221 #. type: deftypevr
29222 #: doc/guix.texi:16272
29223 #, no-wrap
29224 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mbox-min-index-size"
29225 msgstr ""
29226
29227 #. type: deftypevr
29228 #: doc/guix.texi:16277
29229 msgid "If mbox size is smaller than this (e.g.@: 100k), don't write index files. If an index file already exists it's still read, just not updated. Defaults to @samp{0}."
29230 msgstr ""
29231
29232 #. type: deftypevr
29233 #: doc/guix.texi:16279
29234 #, no-wrap
29235 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mdbox-rotate-size"
29236 msgstr ""
29237
29238 #. type: deftypevr
29239 #: doc/guix.texi:16282
29240 msgid "Maximum dbox file size until it's rotated. Defaults to @samp{10000000}."
29241 msgstr ""
29242
29243 #. type: deftypevr
29244 #: doc/guix.texi:16284
29245 #, no-wrap
29246 msgid "{@code{dovecot-configuration} parameter} string mdbox-rotate-interval"
29247 msgstr ""
29248
29249 #. type: deftypevr
29250 #: doc/guix.texi:16289
29251 msgid "Maximum dbox file age until it's rotated. Typically in days. Day begins from midnight, so 1d = today, 2d = yesterday, etc. 0 = check disabled. Defaults to @samp{\"1d\"}."
29252 msgstr ""
29253
29254 #. type: deftypevr
29255 #: doc/guix.texi:16291
29256 #, no-wrap
29257 msgid "{@code{dovecot-configuration} parameter} boolean mdbox-preallocate-space?"
29258 msgstr ""
29259
29260 #. type: deftypevr
29261 #: doc/guix.texi:16296
29262 msgid "When creating new mdbox files, immediately preallocate their size to @samp{mdbox-rotate-size}. This setting currently works only in Linux with some file systems (ext4, xfs). Defaults to @samp{#f}."
29263 msgstr ""
29264
29265 #. type: deftypevr
29266 #: doc/guix.texi:16298
29267 #, no-wrap
29268 msgid "{@code{dovecot-configuration} parameter} string mail-attachment-dir"
29269 msgstr ""
29270
29271 #. type: deftypevr
29272 #: doc/guix.texi:16302
29273 msgid "sdbox and mdbox support saving mail attachments to external files, which also allows single instance storage for them. Other backends don't support this for now."
29274 msgstr ""
29275
29276 #. type: deftypevr
29277 #: doc/guix.texi:16304
29278 msgid "WARNING: This feature hasn't been tested much yet. Use at your own risk."
29279 msgstr ""
29280
29281 #. type: deftypevr
29282 #: doc/guix.texi:16307
29283 msgid "Directory root where to store mail attachments. Disabled, if empty. Defaults to @samp{\"\"}."
29284 msgstr ""
29285
29286 #. type: deftypevr
29287 #: doc/guix.texi:16309
29288 #, no-wrap
29289 msgid "{@code{dovecot-configuration} parameter} non-negative-integer mail-attachment-min-size"
29290 msgstr ""
29291
29292 #. type: deftypevr
29293 #: doc/guix.texi:16314
29294 msgid "Attachments smaller than this aren't saved externally. It's also possible to write a plugin to disable saving specific attachments externally. Defaults to @samp{128000}."
29295 msgstr ""
29296
29297 #. type: deftypevr
29298 #: doc/guix.texi:16316
29299 #, no-wrap
29300 msgid "{@code{dovecot-configuration} parameter} string mail-attachment-fs"
29301 msgstr ""
29302
29303 #. type: deftypevr
29304 #: doc/guix.texi:16318
29305 msgid "File system backend to use for saving attachments:"
29306 msgstr ""
29307
29308 #. type: item
29309 #: doc/guix.texi:16319
29310 #, no-wrap
29311 msgid "posix"
29312 msgstr ""
29313
29314 #. type: table
29315 #: doc/guix.texi:16321
29316 msgid "No SiS done by Dovecot (but this might help FS's own deduplication)"
29317 msgstr ""
29318
29319 #. type: item
29320 #: doc/guix.texi:16321
29321 #, no-wrap
29322 msgid "sis posix"
29323 msgstr ""
29324
29325 #. type: table
29326 #: doc/guix.texi:16323
29327 msgid "SiS with immediate byte-by-byte comparison during saving"
29328 msgstr ""
29329
29330 #. type: item
29331 #: doc/guix.texi:16323
29332 #, no-wrap
29333 msgid "sis-queue posix"
29334 msgstr ""
29335
29336 #. type: table
29337 #: doc/guix.texi:16325
29338 msgid "SiS with delayed comparison and deduplication."
29339 msgstr ""
29340
29341 #. type: deftypevr
29342 #: doc/guix.texi:16327
29343 msgid "Defaults to @samp{\"sis posix\"}."
29344 msgstr ""
29345
29346 #. type: deftypevr
29347 #: doc/guix.texi:16329
29348 #, no-wrap
29349 msgid "{@code{dovecot-configuration} parameter} string mail-attachment-hash"
29350 msgstr ""
29351
29352 #. type: deftypevr
29353 #: doc/guix.texi:16335
29354 msgid "Hash format to use in attachment filenames. You can add any text and variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, @code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}. Variables can be truncated, e.g.@: @code{%@{sha256:80@}} returns only first 80 bits. Defaults to @samp{\"%@{sha1@}\"}."
29355 msgstr ""
29356
29357 #. type: deftypevr
29358 #: doc/guix.texi:16337
29359 #, no-wrap
29360 msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-process-limit"
29361 msgstr ""
29362
29363 #. type: deftypevr
29364 #: doc/guix.texi:16342
29365 #, no-wrap
29366 msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-client-limit"
29367 msgstr ""
29368
29369 #. type: deftypevr
29370 #: doc/guix.texi:16345 doc/guix.texi:21610
29371 msgid "Defaults to @samp{1000}."
29372 msgstr ""
29373
29374 #. type: deftypevr
29375 #: doc/guix.texi:16347
29376 #, no-wrap
29377 msgid "{@code{dovecot-configuration} parameter} non-negative-integer default-vsz-limit"
29378 msgstr ""
29379
29380 #. type: deftypevr
29381 #: doc/guix.texi:16352
29382 msgid "Default VSZ (virtual memory size) limit for service processes. This is mainly intended to catch and kill processes that leak memory before they eat up everything. Defaults to @samp{256000000}."
29383 msgstr ""
29384
29385 #. type: deftypevr
29386 #: doc/guix.texi:16354
29387 #, no-wrap
29388 msgid "{@code{dovecot-configuration} parameter} string default-login-user"
29389 msgstr ""
29390
29391 #. type: deftypevr
29392 #: doc/guix.texi:16359
29393 msgid "Login user is internally used by login processes. This is the most untrusted user in Dovecot system. It shouldn't have access to anything at all. Defaults to @samp{\"dovenull\"}."
29394 msgstr ""
29395
29396 #. type: deftypevr
29397 #: doc/guix.texi:16361
29398 #, no-wrap
29399 msgid "{@code{dovecot-configuration} parameter} string default-internal-user"
29400 msgstr ""
29401
29402 #. type: deftypevr
29403 #: doc/guix.texi:16366
29404 msgid "Internal user is used by unprivileged processes. It should be separate from login user, so that login processes can't disturb other processes. Defaults to @samp{\"dovecot\"}."
29405 msgstr ""
29406
29407 #. type: deftypevr
29408 #: doc/guix.texi:16368
29409 #, no-wrap
29410 msgid "{@code{dovecot-configuration} parameter} string ssl?"
29411 msgstr ""
29412
29413 #. type: deftypevr
29414 #: doc/guix.texi:16371
29415 msgid "SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>. Defaults to @samp{\"required\"}."
29416 msgstr ""
29417
29418 #. type: deftypevr
29419 #: doc/guix.texi:16373
29420 #, no-wrap
29421 msgid "{@code{dovecot-configuration} parameter} string ssl-cert"
29422 msgstr ""
29423
29424 #. type: deftypevr
29425 #: doc/guix.texi:16376
29426 msgid "PEM encoded X.509 SSL/TLS certificate (public key). Defaults to @samp{\"</etc/dovecot/default.pem\"}."
29427 msgstr ""
29428
29429 #. type: deftypevr
29430 #: doc/guix.texi:16378
29431 #, no-wrap
29432 msgid "{@code{dovecot-configuration} parameter} string ssl-key"
29433 msgstr ""
29434
29435 #. type: deftypevr
29436 #: doc/guix.texi:16383
29437 msgid "PEM encoded SSL/TLS private key. The key is opened before dropping root privileges, so keep the key file unreadable by anyone but root. Defaults to @samp{\"</etc/dovecot/private/default.pem\"}."
29438 msgstr ""
29439
29440 #. type: deftypevr
29441 #: doc/guix.texi:16385
29442 #, no-wrap
29443 msgid "{@code{dovecot-configuration} parameter} string ssl-key-password"
29444 msgstr ""
29445
29446 #. type: deftypevr
29447 #: doc/guix.texi:16391
29448 msgid "If key file is password protected, give the password here. Alternatively give it when starting dovecot with -p parameter. Since this file is often world-readable, you may want to place this setting instead to a different. Defaults to @samp{\"\"}."
29449 msgstr ""
29450
29451 #. type: deftypevr
29452 #: doc/guix.texi:16393
29453 #, no-wrap
29454 msgid "{@code{dovecot-configuration} parameter} string ssl-ca"
29455 msgstr ""
29456
29457 #. type: deftypevr
29458 #: doc/guix.texi:16399
29459 msgid "PEM encoded trusted certificate authority. Set this only if you intend to use @samp{ssl-verify-client-cert? #t}. The file should contain the CA certificate(s) followed by the matching CRL(s). (e.g.@: @samp{ssl-ca </etc/ssl/certs/ca.pem}). Defaults to @samp{\"\"}."
29460 msgstr ""
29461
29462 #. type: deftypevr
29463 #: doc/guix.texi:16401
29464 #, no-wrap
29465 msgid "{@code{dovecot-configuration} parameter} boolean ssl-require-crl?"
29466 msgstr ""
29467
29468 #. type: deftypevr
29469 #: doc/guix.texi:16404
29470 msgid "Require that CRL check succeeds for client certificates. Defaults to @samp{#t}."
29471 msgstr ""
29472
29473 #. type: deftypevr
29474 #: doc/guix.texi:16406
29475 #, no-wrap
29476 msgid "{@code{dovecot-configuration} parameter} boolean ssl-verify-client-cert?"
29477 msgstr ""
29478
29479 #. type: deftypevr
29480 #: doc/guix.texi:16410
29481 msgid "Request client to send a certificate. If you also want to require it, set @samp{auth-ssl-require-client-cert? #t} in auth section. Defaults to @samp{#f}."
29482 msgstr ""
29483
29484 #. type: deftypevr
29485 #: doc/guix.texi:16412
29486 #, no-wrap
29487 msgid "{@code{dovecot-configuration} parameter} string ssl-cert-username-field"
29488 msgstr ""
29489
29490 #. type: deftypevr
29491 #: doc/guix.texi:16417
29492 msgid "Which field from certificate to use for username. commonName and x500UniqueIdentifier are the usual choices. You'll also need to set @samp{auth-ssl-username-from-cert? #t}. Defaults to @samp{\"commonName\"}."
29493 msgstr ""
29494
29495 #. type: deftypevr
29496 #: doc/guix.texi:16419
29497 #, no-wrap
29498 msgid "{@code{dovecot-configuration} parameter} string ssl-min-protocol"
29499 msgstr ""
29500
29501 #. type: deftypevr
29502 #: doc/guix.texi:16422
29503 msgid "Minimum SSL protocol version to accept. Defaults to @samp{\"TLSv1\"}."
29504 msgstr ""
29505
29506 #. type: deftypevr
29507 #: doc/guix.texi:16424
29508 #, no-wrap
29509 msgid "{@code{dovecot-configuration} parameter} string ssl-cipher-list"
29510 msgstr ""
29511
29512 #. type: deftypevr
29513 #: doc/guix.texi:16427
29514 msgid "SSL ciphers to use. Defaults to @samp{\"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@@STRENGTH\"}."
29515 msgstr ""
29516
29517 #. type: deftypevr
29518 #: doc/guix.texi:16429
29519 #, no-wrap
29520 msgid "{@code{dovecot-configuration} parameter} string ssl-crypto-device"
29521 msgstr ""
29522
29523 #. type: deftypevr
29524 #: doc/guix.texi:16432
29525 msgid "SSL crypto device to use, for valid values run \"openssl engine\". Defaults to @samp{\"\"}."
29526 msgstr ""
29527
29528 #. type: deftypevr
29529 #: doc/guix.texi:16434
29530 #, no-wrap
29531 msgid "{@code{dovecot-configuration} parameter} string postmaster-address"
29532 msgstr ""
29533
29534 #. type: deftypevr
29535 #: doc/guix.texi:16438
29536 msgid "Address to use when sending rejection mails. %d expands to recipient domain. Defaults to @samp{\"postmaster@@%d\"}."
29537 msgstr ""
29538
29539 #. type: deftypevr
29540 #: doc/guix.texi:16440
29541 #, no-wrap
29542 msgid "{@code{dovecot-configuration} parameter} string hostname"
29543 msgstr ""
29544
29545 #. type: deftypevr
29546 #: doc/guix.texi:16444
29547 msgid "Hostname to use in various parts of sent mails (e.g.@: in Message-Id) and in LMTP replies. Default is the system's real hostname@@domain. Defaults to @samp{\"\"}."
29548 msgstr ""
29549
29550 #. type: deftypevr
29551 #: doc/guix.texi:16446
29552 #, no-wrap
29553 msgid "{@code{dovecot-configuration} parameter} boolean quota-full-tempfail?"
29554 msgstr ""
29555
29556 #. type: deftypevr
29557 #: doc/guix.texi:16450
29558 msgid "If user is over quota, return with temporary failure instead of bouncing the mail. Defaults to @samp{#f}."
29559 msgstr ""
29560
29561 #. type: deftypevr
29562 #: doc/guix.texi:16452
29563 #, no-wrap
29564 msgid "{@code{dovecot-configuration} parameter} file-name sendmail-path"
29565 msgstr ""
29566
29567 #. type: deftypevr
29568 #: doc/guix.texi:16455
29569 msgid "Binary to use for sending mails. Defaults to @samp{\"/usr/sbin/sendmail\"}."
29570 msgstr ""
29571
29572 #. type: deftypevr
29573 #: doc/guix.texi:16457
29574 #, no-wrap
29575 msgid "{@code{dovecot-configuration} parameter} string submission-host"
29576 msgstr ""
29577
29578 #. type: deftypevr
29579 #: doc/guix.texi:16461
29580 msgid "If non-empty, send mails via this SMTP host[:port] instead of sendmail. Defaults to @samp{\"\"}."
29581 msgstr ""
29582
29583 #. type: deftypevr
29584 #: doc/guix.texi:16463
29585 #, no-wrap
29586 msgid "{@code{dovecot-configuration} parameter} string rejection-subject"
29587 msgstr ""
29588
29589 #. type: deftypevr
29590 #: doc/guix.texi:16467
29591 msgid "Subject: header to use for rejection mails. You can use the same variables as for @samp{rejection-reason} below. Defaults to @samp{\"Rejected: %s\"}."
29592 msgstr ""
29593
29594 #. type: deftypevr
29595 #: doc/guix.texi:16469
29596 #, no-wrap
29597 msgid "{@code{dovecot-configuration} parameter} string rejection-reason"
29598 msgstr ""
29599
29600 #. type: deftypevr
29601 #: doc/guix.texi:16472
29602 msgid "Human readable error message for rejection mails. You can use variables:"
29603 msgstr ""
29604
29605 #. type: table
29606 #: doc/guix.texi:16476
29607 msgid "CRLF"
29608 msgstr ""
29609
29610 #. type: item
29611 #: doc/guix.texi:16476
29612 #, no-wrap
29613 msgid "%r"
29614 msgstr ""
29615
29616 #. type: table
29617 #: doc/guix.texi:16478
29618 msgid "reason"
29619 msgstr ""
29620
29621 #. type: table
29622 #: doc/guix.texi:16480
29623 msgid "original subject"
29624 msgstr ""
29625
29626 #. type: item
29627 #: doc/guix.texi:16480
29628 #, no-wrap
29629 msgid "%t"
29630 msgstr ""
29631
29632 #. type: table
29633 #: doc/guix.texi:16482
29634 msgid "recipient"
29635 msgstr ""
29636
29637 #. type: deftypevr
29638 #: doc/guix.texi:16484
29639 msgid "Defaults to @samp{\"Your message to <%t> was automatically rejected:%n%r\"}."
29640 msgstr ""
29641
29642 #. type: deftypevr
29643 #: doc/guix.texi:16486
29644 #, no-wrap
29645 msgid "{@code{dovecot-configuration} parameter} string recipient-delimiter"
29646 msgstr ""
29647
29648 #. type: deftypevr
29649 #: doc/guix.texi:16490
29650 msgid "Delimiter character between local-part and detail in email address. Defaults to @samp{\"+\"}."
29651 msgstr ""
29652
29653 #. type: deftypevr
29654 #: doc/guix.texi:16492
29655 #, no-wrap
29656 msgid "{@code{dovecot-configuration} parameter} string lda-original-recipient-header"
29657 msgstr ""
29658
29659 #. type: deftypevr
29660 #: doc/guix.texi:16498
29661 msgid "Header where the original recipient address (SMTP's RCPT TO: address) is taken from if not available elsewhere. With dovecot-lda -a parameter overrides this. A commonly used header for this is X-Original-To. Defaults to @samp{\"\"}."
29662 msgstr ""
29663
29664 #. type: deftypevr
29665 #: doc/guix.texi:16500
29666 #, no-wrap
29667 msgid "{@code{dovecot-configuration} parameter} boolean lda-mailbox-autocreate?"
29668 msgstr ""
29669
29670 #. type: deftypevr
29671 #: doc/guix.texi:16504
29672 msgid "Should saving a mail to a nonexistent mailbox automatically create it?. Defaults to @samp{#f}."
29673 msgstr ""
29674
29675 #. type: deftypevr
29676 #: doc/guix.texi:16506
29677 #, no-wrap
29678 msgid "{@code{dovecot-configuration} parameter} boolean lda-mailbox-autosubscribe?"
29679 msgstr ""
29680
29681 #. type: deftypevr
29682 #: doc/guix.texi:16510
29683 msgid "Should automatically created mailboxes be also automatically subscribed?. Defaults to @samp{#f}."
29684 msgstr ""
29685
29686 #. type: deftypevr
29687 #: doc/guix.texi:16512
29688 #, no-wrap
29689 msgid "{@code{dovecot-configuration} parameter} non-negative-integer imap-max-line-length"
29690 msgstr ""
29691
29692 #. type: deftypevr
29693 #: doc/guix.texi:16518
29694 msgid "Maximum IMAP command line length. Some clients generate very long command lines with huge mailboxes, so you may need to raise this if you get \"Too long argument\" or \"IMAP command line too large\" errors often. Defaults to @samp{64000}."
29695 msgstr ""
29696
29697 #. type: deftypevr
29698 #: doc/guix.texi:16520
29699 #, no-wrap
29700 msgid "{@code{dovecot-configuration} parameter} string imap-logout-format"
29701 msgstr ""
29702
29703 #. type: deftypevr
29704 #: doc/guix.texi:16522
29705 msgid "IMAP logout format string:"
29706 msgstr ""
29707
29708 #. type: item
29709 #: doc/guix.texi:16523
29710 #, no-wrap
29711 msgid "%i"
29712 msgstr ""
29713
29714 #. type: table
29715 #: doc/guix.texi:16525
29716 msgid "total number of bytes read from client"
29717 msgstr ""
29718
29719 #. type: item
29720 #: doc/guix.texi:16525
29721 #, no-wrap
29722 msgid "%o"
29723 msgstr ""
29724
29725 #. type: table
29726 #: doc/guix.texi:16527
29727 msgid "total number of bytes sent to client."
29728 msgstr ""
29729
29730 #. type: deftypevr
29731 #: doc/guix.texi:16530
29732 msgid "See @file{doc/wiki/Variables.txt} for a list of all the variables you can use. Defaults to @samp{\"in=%i out=%o deleted=%@{deleted@} expunged=%@{expunged@} trashed=%@{trashed@} hdr_count=%@{fetch_hdr_count@} hdr_bytes=%@{fetch_hdr_bytes@} body_count=%@{fetch_body_count@} body_bytes=%@{fetch_body_bytes@}\"}."
29733 msgstr ""
29734
29735 #. type: deftypevr
29736 #: doc/guix.texi:16532
29737 #, no-wrap
29738 msgid "{@code{dovecot-configuration} parameter} string imap-capability"
29739 msgstr ""
29740
29741 #. type: deftypevr
29742 #: doc/guix.texi:16536
29743 msgid "Override the IMAP CAPABILITY response. If the value begins with '+', add the given capabilities on top of the defaults (e.g.@: +XFOO XBAR). Defaults to @samp{\"\"}."
29744 msgstr ""
29745
29746 #. type: deftypevr
29747 #: doc/guix.texi:16538
29748 #, no-wrap
29749 msgid "{@code{dovecot-configuration} parameter} string imap-idle-notify-interval"
29750 msgstr ""
29751
29752 #. type: deftypevr
29753 #: doc/guix.texi:16542
29754 msgid "How long to wait between \"OK Still here\" notifications when client is IDLEing. Defaults to @samp{\"2 mins\"}."
29755 msgstr ""
29756
29757 #. type: deftypevr
29758 #: doc/guix.texi:16544
29759 #, no-wrap
29760 msgid "{@code{dovecot-configuration} parameter} string imap-id-send"
29761 msgstr ""
29762
29763 #. type: deftypevr
29764 #: doc/guix.texi:16550
29765 msgid "ID field names and values to send to clients. Using * as the value makes Dovecot use the default value. The following fields have default values currently: name, version, os, os-version, support-url, support-email. Defaults to @samp{\"\"}."
29766 msgstr ""
29767
29768 #. type: deftypevr
29769 #: doc/guix.texi:16552
29770 #, no-wrap
29771 msgid "{@code{dovecot-configuration} parameter} string imap-id-log"
29772 msgstr ""
29773
29774 #. type: deftypevr
29775 #: doc/guix.texi:16555
29776 msgid "ID fields sent by client to log. * means everything. Defaults to @samp{\"\"}."
29777 msgstr ""
29778
29779 #. type: deftypevr
29780 #: doc/guix.texi:16557
29781 #, no-wrap
29782 msgid "{@code{dovecot-configuration} parameter} space-separated-string-list imap-client-workarounds"
29783 msgstr ""
29784
29785 #. type: deftypevr
29786 #: doc/guix.texi:16559
29787 msgid "Workarounds for various client bugs:"
29788 msgstr ""
29789
29790 #. type: item
29791 #: doc/guix.texi:16561
29792 #, no-wrap
29793 msgid "delay-newmail"
29794 msgstr ""
29795
29796 #. type: table
29797 #: doc/guix.texi:16568
29798 msgid "Send EXISTS/RECENT new mail notifications only when replying to NOOP and CHECK commands. Some clients ignore them otherwise, for example OSX Mail (<v2.1). Outlook Express breaks more badly though, without this it may show user \"Message no longer in server\" errors. Note that OE6 still breaks even with this workaround if synchronization is set to \"Headers Only\"."
29799 msgstr ""
29800
29801 #. type: item
29802 #: doc/guix.texi:16569
29803 #, no-wrap
29804 msgid "tb-extra-mailbox-sep"
29805 msgstr ""
29806
29807 #. type: table
29808 #: doc/guix.texi:16573
29809 msgid "Thunderbird gets somehow confused with LAYOUT=fs (mbox and dbox) and adds extra @samp{/} suffixes to mailbox names. This option causes Dovecot to ignore the extra @samp{/} instead of treating it as invalid mailbox name."
29810 msgstr ""
29811
29812 #. type: item
29813 #: doc/guix.texi:16574
29814 #, no-wrap
29815 msgid "tb-lsub-flags"
29816 msgstr ""
29817
29818 #. type: table
29819 #: doc/guix.texi:16578
29820 msgid "Show \\Noselect flags for LSUB replies with LAYOUT=fs (e.g.@: mbox). This makes Thunderbird realize they aren't selectable and show them greyed out, instead of only later giving \"not selectable\" popup error."
29821 msgstr ""
29822
29823 #. type: deftypevr
29824 #: doc/guix.texi:16582
29825 #, no-wrap
29826 msgid "{@code{dovecot-configuration} parameter} string imap-urlauth-host"
29827 msgstr ""
29828
29829 #. type: deftypevr
29830 #: doc/guix.texi:16585
29831 msgid "Host allowed in URLAUTH URLs sent by client. \"*\" allows all. Defaults to @samp{\"\"}."
29832 msgstr ""
29833
29834 #. type: Plain text
29835 #: doc/guix.texi:16593
29836 msgid "Whew! Lots of configuration options. The nice thing about it though is that Guix has a complete interface to Dovecot's configuration language. This allows not only a nice way to declare configurations, but also offers reflective capabilities as well: users can write code to inspect and transform configurations from within Scheme."
29837 msgstr ""
29838
29839 #. type: Plain text
29840 #: doc/guix.texi:16599
29841 msgid "However, it could be that you just want to get a @code{dovecot.conf} up and running. In that case, you can pass an @code{opaque-dovecot-configuration} as the @code{#:config} parameter to @code{dovecot-service}. As its name indicates, an opaque configuration does not have easy reflective capabilities."
29842 msgstr ""
29843
29844 #. type: Plain text
29845 #: doc/guix.texi:16601
29846 msgid "Available @code{opaque-dovecot-configuration} fields are:"
29847 msgstr ""
29848
29849 #. type: deftypevr
29850 #: doc/guix.texi:16602
29851 #, no-wrap
29852 msgid "{@code{opaque-dovecot-configuration} parameter} package dovecot"
29853 msgstr ""
29854
29855 #. type: deftypevr
29856 #: doc/guix.texi:16606
29857 #, no-wrap
29858 msgid "{@code{opaque-dovecot-configuration} parameter} string string"
29859 msgstr ""
29860
29861 #. type: deftypevr
29862 #: doc/guix.texi:16608
29863 msgid "The contents of the @code{dovecot.conf}, as a string."
29864 msgstr ""
29865
29866 #. type: Plain text
29867 #: doc/guix.texi:16612
29868 msgid "For example, if your @code{dovecot.conf} is just the empty string, you could instantiate a dovecot service like this:"
29869 msgstr ""
29870
29871 #. type: example
29872 #: doc/guix.texi:16617
29873 #, no-wrap
29874 msgid ""
29875 "(dovecot-service #:config\n"
29876 " (opaque-dovecot-configuration\n"
29877 " (string \"\")))\n"
29878 msgstr ""
29879
29880 #. type: subsubheading
29881 #: doc/guix.texi:16619
29882 #, no-wrap
29883 msgid "OpenSMTPD Service"
29884 msgstr ""
29885
29886 #. type: deffn
29887 #: doc/guix.texi:16621
29888 #, no-wrap
29889 msgid "{Scheme Variable} opensmtpd-service-type"
29890 msgstr ""
29891
29892 #. type: deffn
29893 #: doc/guix.texi:16625
29894 msgid "This is the type of the @uref{https://www.opensmtpd.org, OpenSMTPD} service, whose value should be an @code{opensmtpd-configuration} object as in this example:"
29895 msgstr ""
29896
29897 #. type: example
29898 #: doc/guix.texi:16630
29899 #, no-wrap
29900 msgid ""
29901 "(service opensmtpd-service-type\n"
29902 " (opensmtpd-configuration\n"
29903 " (config-file (local-file \"./my-smtpd.conf\"))))\n"
29904 msgstr ""
29905
29906 #. type: deftp
29907 #: doc/guix.texi:16633
29908 #, no-wrap
29909 msgid "{Data Type} opensmtpd-configuration"
29910 msgstr ""
29911
29912 #. type: deftp
29913 #: doc/guix.texi:16635
29914 msgid "Data type representing the configuration of opensmtpd."
29915 msgstr ""
29916
29917 #. type: item
29918 #: doc/guix.texi:16637
29919 #, no-wrap
29920 msgid "@code{package} (default: @var{opensmtpd})"
29921 msgstr ""
29922
29923 #. type: table
29924 #: doc/guix.texi:16639
29925 msgid "Package object of the OpenSMTPD SMTP server."
29926 msgstr ""
29927
29928 #. type: item
29929 #: doc/guix.texi:16640
29930 #, no-wrap
29931 msgid "@code{config-file} (default: @var{%default-opensmtpd-file})"
29932 msgstr ""
29933
29934 #. type: table
29935 #: doc/guix.texi:16645
29936 msgid "File-like object of the OpenSMTPD configuration file to use. By default it listens on the loopback network interface, and allows for mail from users and daemons on the local machine, as well as permitting email to remote servers. Run @command{man smtpd.conf} for more information."
29937 msgstr ""
29938
29939 #. type: subsubheading
29940 #: doc/guix.texi:16649
29941 #, no-wrap
29942 msgid "Exim Service"
29943 msgstr ""
29944
29945 #. type: cindex
29946 #: doc/guix.texi:16651
29947 #, no-wrap
29948 msgid "mail transfer agent (MTA)"
29949 msgstr ""
29950
29951 #. type: cindex
29952 #: doc/guix.texi:16652
29953 #, no-wrap
29954 msgid "MTA (mail transfer agent)"
29955 msgstr ""
29956
29957 #. type: cindex
29958 #: doc/guix.texi:16653
29959 #, no-wrap
29960 msgid "SMTP"
29961 msgstr ""
29962
29963 #. type: deffn
29964 #: doc/guix.texi:16655
29965 #, no-wrap
29966 msgid "{Scheme Variable} exim-service-type"
29967 msgstr ""
29968
29969 #. type: deffn
29970 #: doc/guix.texi:16659
29971 msgid "This is the type of the @uref{https://exim.org, Exim} mail transfer agent (MTA), whose value should be an @code{exim-configuration} object as in this example:"
29972 msgstr ""
29973
29974 #. type: example
29975 #: doc/guix.texi:16664
29976 #, no-wrap
29977 msgid ""
29978 "(service exim-service-type\n"
29979 " (exim-configuration\n"
29980 " (config-file (local-file \"./my-exim.conf\"))))\n"
29981 msgstr ""
29982
29983 #. type: Plain text
29984 #: doc/guix.texi:16670
29985 msgid "In order to use an @code{exim-service-type} service you must also have a @code{mail-aliases-service-type} service present in your @code{operating-system} (even if it has no aliases)."
29986 msgstr ""
29987
29988 #. type: deftp
29989 #: doc/guix.texi:16671
29990 #, no-wrap
29991 msgid "{Data Type} exim-configuration"
29992 msgstr ""
29993
29994 #. type: deftp
29995 #: doc/guix.texi:16673
29996 msgid "Data type representing the configuration of exim."
29997 msgstr ""
29998
29999 #. type: item
30000 #: doc/guix.texi:16675
30001 #, no-wrap
30002 msgid "@code{package} (default: @var{exim})"
30003 msgstr ""
30004
30005 #. type: table
30006 #: doc/guix.texi:16677
30007 msgid "Package object of the Exim server."
30008 msgstr ""
30009
30010 #. type: table
30011 #: doc/guix.texi:16684
30012 msgid "File-like object of the Exim configuration file to use. If its value is @code{#f} then use the default configuration file from the package provided in @code{package}. The resulting configuration file is loaded after setting the @code{exim_user} and @code{exim_group} configuration variables."
30013 msgstr ""
30014
30015 #. type: subsubheading
30016 #: doc/guix.texi:16688
30017 #, no-wrap
30018 msgid "Mail Aliases Service"
30019 msgstr ""
30020
30021 #. type: cindex
30022 #: doc/guix.texi:16690
30023 #, no-wrap
30024 msgid "email aliases"
30025 msgstr ""
30026
30027 #. type: cindex
30028 #: doc/guix.texi:16691
30029 #, no-wrap
30030 msgid "aliases, for email addresses"
30031 msgstr ""
30032
30033 #. type: deffn
30034 #: doc/guix.texi:16693
30035 #, no-wrap
30036 msgid "{Scheme Variable} mail-aliases-service-type"
30037 msgstr ""
30038
30039 #. type: deffn
30040 #: doc/guix.texi:16696
30041 msgid "This is the type of the service which provides @code{/etc/aliases}, specifying how to deliver mail to users on this system."
30042 msgstr ""
30043
30044 #. type: example
30045 #: doc/guix.texi:16701
30046 #, no-wrap
30047 msgid ""
30048 "(service mail-aliases-service-type\n"
30049 " '((\"postmaster\" \"bob\")\n"
30050 " (\"bob\" \"bob@@example.com\" \"bob@@example2.com\")))\n"
30051 msgstr ""
30052
30053 #. type: Plain text
30054 #: doc/guix.texi:16709
30055 msgid "The configuration for a @code{mail-aliases-service-type} service is an association list denoting how to deliver mail that comes to this system. Each entry is of the form @code{(alias addresses ...)}, with @code{alias} specifying the local alias and @code{addresses} specifying where to deliver this user's mail."
30056 msgstr ""
30057
30058 #. type: Plain text
30059 #: doc/guix.texi:16715
30060 msgid "The aliases aren't required to exist as users on the local system. In the above example, there doesn't need to be a @code{postmaster} entry in the @code{operating-system}'s @code{user-accounts} in order to deliver the @code{postmaster} mail to @code{bob} (which subsequently would deliver mail to @code{bob@@example.com} and @code{bob@@example2.com})."
30061 msgstr ""
30062
30063 #. type: cindex
30064 #: doc/guix.texi:16716 doc/guix.texi:16717
30065 #, no-wrap
30066 msgid "GNU Mailutils IMAP4 Daemon"
30067 msgstr ""
30068
30069 #. type: deffn
30070 #: doc/guix.texi:16719
30071 #, no-wrap
30072 msgid "{Scheme Variable} imap4d-service-type"
30073 msgstr ""
30074
30075 #. type: deffn
30076 #: doc/guix.texi:16723
30077 msgid "This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{imap4d,,, mailutils, GNU Mailutils Manual}), whose value should be an @code{imap4d-configuration} object as in this example:"
30078 msgstr ""
30079
30080 #. type: example
30081 #: doc/guix.texi:16728
30082 #, no-wrap
30083 msgid ""
30084 "(service imap4d-service-type\n"
30085 " (imap4d-configuration\n"
30086 " (config-file (local-file \"imap4d.conf\"))))\n"
30087 msgstr ""
30088
30089 #. type: deftp
30090 #: doc/guix.texi:16731
30091 #, no-wrap
30092 msgid "{Data Type} imap4d-configuration"
30093 msgstr ""
30094
30095 #. type: deftp
30096 #: doc/guix.texi:16733
30097 msgid "Data type representing the configuration of @command{imap4d}."
30098 msgstr ""
30099
30100 #. type: item
30101 #: doc/guix.texi:16735
30102 #, no-wrap
30103 msgid "@code{package} (default: @code{mailutils})"
30104 msgstr ""
30105
30106 #. type: table
30107 #: doc/guix.texi:16737
30108 msgid "The package that provides @command{imap4d}."
30109 msgstr ""
30110
30111 #. type: item
30112 #: doc/guix.texi:16738
30113 #, no-wrap
30114 msgid "@code{config-file} (default: @code{%default-imap4d-config-file})"
30115 msgstr ""
30116
30117 #. type: table
30118 #: doc/guix.texi:16742
30119 msgid "File-like object of the configuration file to use, by default it will listen on TCP port 143 of @code{localhost}. @xref{Conf-imap4d,,, mailutils, GNU Mailutils Manual}, for details."
30120 msgstr ""
30121
30122 #. type: cindex
30123 #: doc/guix.texi:16749
30124 #, no-wrap
30125 msgid "messaging"
30126 msgstr ""
30127
30128 #. type: cindex
30129 #: doc/guix.texi:16750
30130 #, no-wrap
30131 msgid "jabber"
30132 msgstr ""
30133
30134 #. type: cindex
30135 #: doc/guix.texi:16751
30136 #, no-wrap
30137 msgid "XMPP"
30138 msgstr ""
30139
30140 #. type: Plain text
30141 #: doc/guix.texi:16754
30142 msgid "The @code{(gnu services messaging)} module provides Guix service definitions for messaging services: currently only Prosody is supported."
30143 msgstr ""
30144
30145 #. type: subsubheading
30146 #: doc/guix.texi:16755
30147 #, no-wrap
30148 msgid "Prosody Service"
30149 msgstr ""
30150
30151 #. type: deffn
30152 #: doc/guix.texi:16757
30153 #, no-wrap
30154 msgid "{Scheme Variable} prosody-service-type"
30155 msgstr ""
30156
30157 #. type: deffn
30158 #: doc/guix.texi:16761
30159 msgid "This is the type for the @uref{https://prosody.im, Prosody XMPP communication server}. Its value must be a @code{prosody-configuration} record as in this example:"
30160 msgstr ""
30161
30162 #. type: example
30163 #: doc/guix.texi:16776
30164 #, no-wrap
30165 msgid ""
30166 "(service prosody-service-type\n"
30167 " (prosody-configuration\n"
30168 " (modules-enabled (cons \"groups\" \"mam\" %default-modules-enabled))\n"
30169 " (int-components\n"
30170 " (list\n"
30171 " (int-component-configuration\n"
30172 " (hostname \"conference.example.net\")\n"
30173 " (plugin \"muc\")\n"
30174 " (mod-muc (mod-muc-configuration)))))\n"
30175 " (virtualhosts\n"
30176 " (list\n"
30177 " (virtualhost-configuration\n"
30178 " (domain \"example.net\"))))))\n"
30179 msgstr ""
30180
30181 #. type: deffn
30182 #: doc/guix.texi:16779
30183 msgid "See below for details about @code{prosody-configuration}."
30184 msgstr ""
30185
30186 #. type: Plain text
30187 #: doc/guix.texi:16785
30188 msgid "By default, Prosody does not need much configuration. Only one @code{virtualhosts} field is needed: it specifies the domain you wish Prosody to serve."
30189 msgstr ""
30190
30191 #. type: Plain text
30192 #: doc/guix.texi:16788
30193 msgid "You can perform various sanity checks on the generated configuration with the @code{prosodyctl check} command."
30194 msgstr ""
30195
30196 #. type: Plain text
30197 #: doc/guix.texi:16792
30198 msgid "Prosodyctl will also help you to import certificates from the @code{letsencrypt} directory so that the @code{prosody} user can access them. See @url{https://prosody.im/doc/letsencrypt}."
30199 msgstr ""
30200
30201 #. type: example
30202 #: doc/guix.texi:16795
30203 #, no-wrap
30204 msgid "prosodyctl --root cert import /etc/letsencrypt/live\n"
30205 msgstr ""
30206
30207 #. type: Plain text
30208 #: doc/guix.texi:16802
30209 msgid "The available configuration parameters follow. Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings. Types starting with @code{maybe-} denote parameters that won't show up in @code{prosody.cfg.lua} when their value is @code{'disabled}."
30210 msgstr ""
30211
30212 #. type: Plain text
30213 #: doc/guix.texi:16806
30214 msgid "There is also a way to specify the configuration as a string, if you have an old @code{prosody.cfg.lua} file that you want to port over from some other system; see the end for more details."
30215 msgstr ""
30216
30217 #. type: Plain text
30218 #: doc/guix.texi:16809
30219 msgid "The @code{file-object} type designates either a file-like object (@pxref{G-Expressions, file-like objects}) or a file name."
30220 msgstr ""
30221
30222 #. type: Plain text
30223 #: doc/guix.texi:16819
30224 msgid "Available @code{prosody-configuration} fields are:"
30225 msgstr ""
30226
30227 #. type: deftypevr
30228 #: doc/guix.texi:16820
30229 #, no-wrap
30230 msgid "{@code{prosody-configuration} parameter} package prosody"
30231 msgstr ""
30232
30233 #. type: deftypevr
30234 #: doc/guix.texi:16822
30235 msgid "The Prosody package."
30236 msgstr ""
30237
30238 #. type: deftypevr
30239 #: doc/guix.texi:16824
30240 #, no-wrap
30241 msgid "{@code{prosody-configuration} parameter} file-name data-path"
30242 msgstr ""
30243
30244 #. type: deftypevr
30245 #: doc/guix.texi:16828
30246 msgid "Location of the Prosody data storage directory. See @url{https://prosody.im/doc/configure}. Defaults to @samp{\"/var/lib/prosody\"}."
30247 msgstr ""
30248
30249 #. type: deftypevr
30250 #: doc/guix.texi:16830
30251 #, no-wrap
30252 msgid "{@code{prosody-configuration} parameter} file-object-list plugin-paths"
30253 msgstr ""
30254
30255 #. type: deftypevr
30256 #: doc/guix.texi:16834
30257 msgid "Additional plugin directories. They are searched in all the specified paths in order. See @url{https://prosody.im/doc/plugins_directory}. Defaults to @samp{()}."
30258 msgstr ""
30259
30260 #. type: deftypevr
30261 #: doc/guix.texi:16836
30262 #, no-wrap
30263 msgid "{@code{prosody-configuration} parameter} file-name certificates"
30264 msgstr ""
30265
30266 #. type: deftypevr
30267 #: doc/guix.texi:16841
30268 msgid "Every virtual host and component needs a certificate so that clients and servers can securely verify its identity. Prosody will automatically load certificates/keys from the directory specified here. Defaults to @samp{\"/etc/prosody/certs\"}."
30269 msgstr ""
30270
30271 #. type: deftypevr
30272 #: doc/guix.texi:16843
30273 #, no-wrap
30274 msgid "{@code{prosody-configuration} parameter} string-list admins"
30275 msgstr ""
30276
30277 #. type: deftypevr
30278 #: doc/guix.texi:16849
30279 msgid "This is a list of accounts that are admins for the server. Note that you must create the accounts separately. See @url{https://prosody.im/doc/admins} and @url{https://prosody.im/doc/creating_accounts}. Example: @code{(admins '(\"user1@@example.com\" \"user2@@example.net\"))} Defaults to @samp{()}."
30280 msgstr ""
30281
30282 #. type: deftypevr
30283 #: doc/guix.texi:16851
30284 #, no-wrap
30285 msgid "{@code{prosody-configuration} parameter} boolean use-libevent?"
30286 msgstr ""
30287
30288 #. type: deftypevr
30289 #: doc/guix.texi:16855
30290 msgid "Enable use of libevent for better performance under high load. See @url{https://prosody.im/doc/libevent}. Defaults to @samp{#f}."
30291 msgstr ""
30292
30293 #. type: deftypevr
30294 #: doc/guix.texi:16857
30295 #, no-wrap
30296 msgid "{@code{prosody-configuration} parameter} module-list modules-enabled"
30297 msgstr ""
30298
30299 #. type: deftypevr
30300 #: doc/guix.texi:16863
30301 msgid "This is the list of modules Prosody will load on startup. It looks for @code{mod_modulename.lua} in the plugins folder, so make sure that exists too. Documentation on modules can be found at: @url{https://prosody.im/doc/modules}. Defaults to @samp{(\"roster\" \"saslauth\" \"tls\" \"dialback\" \"disco\" \"carbons\" \"private\" \"blocklist\" \"vcard\" \"version\" \"uptime\" \"time\" \"ping\" \"pep\" \"register\" \"admin_adhoc\")}."
30302 msgstr ""
30303
30304 #. type: deftypevr
30305 #: doc/guix.texi:16865
30306 #, no-wrap
30307 msgid "{@code{prosody-configuration} parameter} string-list modules-disabled"
30308 msgstr ""
30309
30310 #. type: deftypevr
30311 #: doc/guix.texi:16869
30312 msgid "@samp{\"offline\"}, @samp{\"c2s\"} and @samp{\"s2s\"} are auto-loaded, but should you want to disable them then add them to this list. Defaults to @samp{()}."
30313 msgstr ""
30314
30315 #. type: deftypevr
30316 #: doc/guix.texi:16871
30317 #, no-wrap
30318 msgid "{@code{prosody-configuration} parameter} file-object groups-file"
30319 msgstr ""
30320
30321 #. type: deftypevr
30322 #: doc/guix.texi:16876
30323 msgid "Path to a text file where the shared groups are defined. If this path is empty then @samp{mod_groups} does nothing. See @url{https://prosody.im/doc/modules/mod_groups}. Defaults to @samp{\"/var/lib/prosody/sharedgroups.txt\"}."
30324 msgstr ""
30325
30326 #. type: deftypevr
30327 #: doc/guix.texi:16878
30328 #, no-wrap
30329 msgid "{@code{prosody-configuration} parameter} boolean allow-registration?"
30330 msgstr ""
30331
30332 #. type: deftypevr
30333 #: doc/guix.texi:16882
30334 msgid "Disable account creation by default, for security. See @url{https://prosody.im/doc/creating_accounts}. Defaults to @samp{#f}."
30335 msgstr ""
30336
30337 #. type: deftypevr
30338 #: doc/guix.texi:16884
30339 #, no-wrap
30340 msgid "{@code{prosody-configuration} parameter} maybe-ssl-configuration ssl"
30341 msgstr ""
30342
30343 #. type: deftypevr
30344 #: doc/guix.texi:16889
30345 msgid "These are the SSL/TLS-related settings. Most of them are disabled so to use Prosody's defaults. If you do not completely understand these options, do not add them to your config, it is easy to lower the security of your server using them. See @url{https://prosody.im/doc/advanced_ssl_config}."
30346 msgstr ""
30347
30348 #. type: deftypevr
30349 #: doc/guix.texi:16891
30350 msgid "Available @code{ssl-configuration} fields are:"
30351 msgstr ""
30352
30353 #. type: deftypevr
30354 #: doc/guix.texi:16892
30355 #, no-wrap
30356 msgid "{@code{ssl-configuration} parameter} maybe-string protocol"
30357 msgstr ""
30358
30359 #. type: deftypevr
30360 #: doc/guix.texi:16894
30361 msgid "This determines what handshake to use."
30362 msgstr ""
30363
30364 #. type: deftypevr
30365 #: doc/guix.texi:16896
30366 #, no-wrap
30367 msgid "{@code{ssl-configuration} parameter} maybe-file-name key"
30368 msgstr ""
30369
30370 #. type: deftypevr
30371 #: doc/guix.texi:16898
30372 msgid "Path to your private key file."
30373 msgstr ""
30374
30375 #. type: deftypevr
30376 #: doc/guix.texi:16900
30377 #, no-wrap
30378 msgid "{@code{ssl-configuration} parameter} maybe-file-name certificate"
30379 msgstr ""
30380
30381 #. type: deftypevr
30382 #: doc/guix.texi:16902
30383 msgid "Path to your certificate file."
30384 msgstr ""
30385
30386 #. type: deftypevr
30387 #: doc/guix.texi:16904
30388 #, no-wrap
30389 msgid "{@code{ssl-configuration} parameter} file-object capath"
30390 msgstr ""
30391
30392 #. type: deftypevr
30393 #: doc/guix.texi:16908
30394 msgid "Path to directory containing root certificates that you wish Prosody to trust when verifying the certificates of remote servers. Defaults to @samp{\"/etc/ssl/certs\"}."
30395 msgstr ""
30396
30397 #. type: deftypevr
30398 #: doc/guix.texi:16910
30399 #, no-wrap
30400 msgid "{@code{ssl-configuration} parameter} maybe-file-object cafile"
30401 msgstr ""
30402
30403 #. type: deftypevr
30404 #: doc/guix.texi:16913
30405 msgid "Path to a file containing root certificates that you wish Prosody to trust. Similar to @code{capath} but with all certificates concatenated together."
30406 msgstr ""
30407
30408 #. type: deftypevr
30409 #: doc/guix.texi:16915
30410 #, no-wrap
30411 msgid "{@code{ssl-configuration} parameter} maybe-string-list verify"
30412 msgstr ""
30413
30414 #. type: deftypevr
30415 #: doc/guix.texi:16918
30416 msgid "A list of verification options (these mostly map to OpenSSL's @code{set_verify()} flags)."
30417 msgstr ""
30418
30419 #. type: deftypevr
30420 #: doc/guix.texi:16920
30421 #, no-wrap
30422 msgid "{@code{ssl-configuration} parameter} maybe-string-list options"
30423 msgstr ""
30424
30425 #. type: deftypevr
30426 #: doc/guix.texi:16924
30427 msgid "A list of general options relating to SSL/TLS. These map to OpenSSL's @code{set_options()}. For a full list of options available in LuaSec, see the LuaSec source."
30428 msgstr ""
30429
30430 #. type: deftypevr
30431 #: doc/guix.texi:16926
30432 #, no-wrap
30433 msgid "{@code{ssl-configuration} parameter} maybe-non-negative-integer depth"
30434 msgstr ""
30435
30436 #. type: deftypevr
30437 #: doc/guix.texi:16929
30438 msgid "How long a chain of certificate authorities to check when looking for a trusted root certificate."
30439 msgstr ""
30440
30441 #. type: deftypevr
30442 #: doc/guix.texi:16931
30443 #, no-wrap
30444 msgid "{@code{ssl-configuration} parameter} maybe-string ciphers"
30445 msgstr ""
30446
30447 #. type: deftypevr
30448 #: doc/guix.texi:16934
30449 msgid "An OpenSSL cipher string. This selects what ciphers Prosody will offer to clients, and in what order."
30450 msgstr ""
30451
30452 #. type: deftypevr
30453 #: doc/guix.texi:16936
30454 #, no-wrap
30455 msgid "{@code{ssl-configuration} parameter} maybe-file-name dhparam"
30456 msgstr ""
30457
30458 #. type: deftypevr
30459 #: doc/guix.texi:16940
30460 msgid "A path to a file containing parameters for Diffie-Hellman key exchange. You can create such a file with: @code{openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048}"
30461 msgstr ""
30462
30463 #. type: deftypevr
30464 #: doc/guix.texi:16942
30465 #, no-wrap
30466 msgid "{@code{ssl-configuration} parameter} maybe-string curve"
30467 msgstr ""
30468
30469 #. type: deftypevr
30470 #: doc/guix.texi:16945
30471 msgid "Curve for Elliptic curve Diffie-Hellman. Prosody's default is @samp{\"secp384r1\"}."
30472 msgstr ""
30473
30474 #. type: deftypevr
30475 #: doc/guix.texi:16947
30476 #, no-wrap
30477 msgid "{@code{ssl-configuration} parameter} maybe-string-list verifyext"
30478 msgstr ""
30479
30480 #. type: deftypevr
30481 #: doc/guix.texi:16949
30482 msgid "A list of \"extra\" verification options."
30483 msgstr ""
30484
30485 #. type: deftypevr
30486 #: doc/guix.texi:16951
30487 #, no-wrap
30488 msgid "{@code{ssl-configuration} parameter} maybe-string password"
30489 msgstr ""
30490
30491 #. type: deftypevr
30492 #: doc/guix.texi:16953
30493 msgid "Password for encrypted private keys."
30494 msgstr ""
30495
30496 #. type: deftypevr
30497 #: doc/guix.texi:16957
30498 #, no-wrap
30499 msgid "{@code{prosody-configuration} parameter} boolean c2s-require-encryption?"
30500 msgstr ""
30501
30502 #. type: deftypevr
30503 #: doc/guix.texi:16961
30504 msgid "Whether to force all client-to-server connections to be encrypted or not. See @url{https://prosody.im/doc/modules/mod_tls}. Defaults to @samp{#f}."
30505 msgstr ""
30506
30507 #. type: deftypevr
30508 #: doc/guix.texi:16963
30509 #, no-wrap
30510 msgid "{@code{prosody-configuration} parameter} string-list disable-sasl-mechanisms"
30511 msgstr ""
30512
30513 #. type: deftypevr
30514 #: doc/guix.texi:16967
30515 msgid "Set of mechanisms that will never be offered. See @url{https://prosody.im/doc/modules/mod_saslauth}. Defaults to @samp{(\"DIGEST-MD5\")}."
30516 msgstr ""
30517
30518 #. type: deftypevr
30519 #: doc/guix.texi:16969
30520 #, no-wrap
30521 msgid "{@code{prosody-configuration} parameter} boolean s2s-require-encryption?"
30522 msgstr ""
30523
30524 #. type: deftypevr
30525 #: doc/guix.texi:16973
30526 msgid "Whether to force all server-to-server connections to be encrypted or not. See @url{https://prosody.im/doc/modules/mod_tls}. Defaults to @samp{#f}."
30527 msgstr ""
30528
30529 #. type: deftypevr
30530 #: doc/guix.texi:16975
30531 #, no-wrap
30532 msgid "{@code{prosody-configuration} parameter} boolean s2s-secure-auth?"
30533 msgstr ""
30534
30535 #. type: deftypevr
30536 #: doc/guix.texi:16981
30537 msgid "Whether to require encryption and certificate authentication. This provides ideal security, but requires servers you communicate with to support encryption AND present valid, trusted certificates. See @url{https://prosody.im/doc/s2s#security}. Defaults to @samp{#f}."
30538 msgstr ""
30539
30540 #. type: deftypevr
30541 #: doc/guix.texi:16983
30542 #, no-wrap
30543 msgid "{@code{prosody-configuration} parameter} string-list s2s-insecure-domains"
30544 msgstr ""
30545
30546 #. type: deftypevr
30547 #: doc/guix.texi:16989
30548 msgid "Many servers don't support encryption or have invalid or self-signed certificates. You can list domains here that will not be required to authenticate using certificates. They will be authenticated using DNS. See @url{https://prosody.im/doc/s2s#security}. Defaults to @samp{()}."
30549 msgstr ""
30550
30551 #. type: deftypevr
30552 #: doc/guix.texi:16991
30553 #, no-wrap
30554 msgid "{@code{prosody-configuration} parameter} string-list s2s-secure-domains"
30555 msgstr ""
30556
30557 #. type: deftypevr
30558 #: doc/guix.texi:16996
30559 msgid "Even if you leave @code{s2s-secure-auth?} disabled, you can still require valid certificates for some domains by specifying a list here. See @url{https://prosody.im/doc/s2s#security}. Defaults to @samp{()}."
30560 msgstr ""
30561
30562 #. type: deftypevr
30563 #: doc/guix.texi:16998
30564 #, no-wrap
30565 msgid "{@code{prosody-configuration} parameter} string authentication"
30566 msgstr ""
30567
30568 #. type: deftypevr
30569 #: doc/guix.texi:17006
30570 msgid "Select the authentication backend to use. The default provider stores passwords in plaintext and uses Prosody's configured data storage to store the authentication data. If you do not trust your server please see @url{https://prosody.im/doc/modules/mod_auth_internal_hashed} for information about using the hashed backend. See also @url{https://prosody.im/doc/authentication} Defaults to @samp{\"internal_plain\"}."
30571 msgstr ""
30572
30573 #. type: deftypevr
30574 #: doc/guix.texi:17008
30575 #, no-wrap
30576 msgid "{@code{prosody-configuration} parameter} maybe-string log"
30577 msgstr ""
30578
30579 #. type: deftypevr
30580 #: doc/guix.texi:17012
30581 msgid "Set logging options. Advanced logging configuration is not yet supported by the Prosody service. See @url{https://prosody.im/doc/logging}. Defaults to @samp{\"*syslog\"}."
30582 msgstr ""
30583
30584 #. type: deftypevr
30585 #: doc/guix.texi:17014
30586 #, no-wrap
30587 msgid "{@code{prosody-configuration} parameter} file-name pidfile"
30588 msgstr ""
30589
30590 #. type: deftypevr
30591 #: doc/guix.texi:17017
30592 msgid "File to write pid in. See @url{https://prosody.im/doc/modules/mod_posix}. Defaults to @samp{\"/var/run/prosody/prosody.pid\"}."
30593 msgstr ""
30594
30595 #. type: deftypevr
30596 #: doc/guix.texi:17019
30597 #, no-wrap
30598 msgid "{@code{prosody-configuration} parameter} maybe-non-negative-integer http-max-content-size"
30599 msgstr ""
30600
30601 #. type: deftypevr
30602 #: doc/guix.texi:17021
30603 msgid "Maximum allowed size of the HTTP body (in bytes)."
30604 msgstr ""
30605
30606 #. type: deftypevr
30607 #: doc/guix.texi:17023
30608 #, no-wrap
30609 msgid "{@code{prosody-configuration} parameter} maybe-string http-external-url"
30610 msgstr ""
30611
30612 #. type: deftypevr
30613 #: doc/guix.texi:17028
30614 msgid "Some modules expose their own URL in various ways. This URL is built from the protocol, host and port used. If Prosody sits behind a proxy, the public URL will be @code{http-external-url} instead. See @url{https://prosody.im/doc/http#external_url}."
30615 msgstr ""
30616
30617 #. type: deftypevr
30618 #: doc/guix.texi:17030
30619 #, no-wrap
30620 msgid "{@code{prosody-configuration} parameter} virtualhost-configuration-list virtualhosts"
30621 msgstr ""
30622
30623 #. type: deftypevr
30624 #: doc/guix.texi:17035
30625 msgid "A host in Prosody is a domain on which user accounts can be created. For example if you want your users to have addresses like @samp{\"john.smith@@example.com\"} then you need to add a host @samp{\"example.com\"}. All options in this list will apply only to this host."
30626 msgstr ""
30627
30628 #. type: deftypevr
30629 #: doc/guix.texi:17041
30630 msgid "Note: the name \"virtual\" host is used in configuration to avoid confusion with the actual physical host that Prosody is installed on. A single Prosody instance can serve many domains, each one defined as a VirtualHost entry in Prosody's configuration. Conversely a server that hosts a single domain would have just one VirtualHost entry."
30631 msgstr ""
30632
30633 #. type: deftypevr
30634 #: doc/guix.texi:17043
30635 msgid "See @url{https://prosody.im/doc/configure#virtual_host_settings}."
30636 msgstr ""
30637
30638 #. type: deftypevr
30639 #: doc/guix.texi:17045
30640 msgid "Available @code{virtualhost-configuration} fields are:"
30641 msgstr ""
30642
30643 #. type: deftypevr
30644 #: doc/guix.texi:17047 doc/guix.texi:17069 doc/guix.texi:17122
30645 msgid "all these @code{prosody-configuration} fields: @code{admins}, @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, @code{groups-file}, @code{allow-registration?}, @code{ssl}, @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, @code{s2s-insecure-domains}, @code{s2s-secure-domains}, @code{authentication}, @code{log}, @code{http-max-content-size}, @code{http-external-url}, @code{raw-content}, plus:"
30646 msgstr ""
30647
30648 #. type: deftypevr
30649 #: doc/guix.texi:17047
30650 #, no-wrap
30651 msgid "{@code{virtualhost-configuration} parameter} string domain"
30652 msgstr ""
30653
30654 #. type: deftypevr
30655 #: doc/guix.texi:17049
30656 msgid "Domain you wish Prosody to serve."
30657 msgstr ""
30658
30659 #. type: deftypevr
30660 #: doc/guix.texi:17053
30661 #, no-wrap
30662 msgid "{@code{prosody-configuration} parameter} int-component-configuration-list int-components"
30663 msgstr ""
30664
30665 #. type: deftypevr
30666 #: doc/guix.texi:17058
30667 msgid "Components are extra services on a server which are available to clients, usually on a subdomain of the main server (such as @samp{\"mycomponent.example.com\"}). Example components might be chatroom servers, user directories, or gateways to other protocols."
30668 msgstr ""
30669
30670 #. type: deftypevr
30671 #: doc/guix.texi:17062
30672 msgid "Internal components are implemented with Prosody-specific plugins. To add an internal component, you simply fill the hostname field, and the plugin you wish to use for the component."
30673 msgstr ""
30674
30675 #. type: deftypevr
30676 #: doc/guix.texi:17065
30677 msgid "See @url{https://prosody.im/doc/components}. Defaults to @samp{()}."
30678 msgstr ""
30679
30680 #. type: deftypevr
30681 #: doc/guix.texi:17067
30682 msgid "Available @code{int-component-configuration} fields are:"
30683 msgstr ""
30684
30685 #. type: deftypevr
30686 #: doc/guix.texi:17069
30687 #, no-wrap
30688 msgid "{@code{int-component-configuration} parameter} string hostname"
30689 msgstr ""
30690
30691 #. type: deftypevr
30692 #: doc/guix.texi:17071 doc/guix.texi:17128
30693 msgid "Hostname of the component."
30694 msgstr ""
30695
30696 #. type: deftypevr
30697 #: doc/guix.texi:17073
30698 #, no-wrap
30699 msgid "{@code{int-component-configuration} parameter} string plugin"
30700 msgstr ""
30701
30702 #. type: deftypevr
30703 #: doc/guix.texi:17075
30704 msgid "Plugin you wish to use for the component."
30705 msgstr ""
30706
30707 #. type: deftypevr
30708 #: doc/guix.texi:17077
30709 #, no-wrap
30710 msgid "{@code{int-component-configuration} parameter} maybe-mod-muc-configuration mod-muc"
30711 msgstr ""
30712
30713 #. type: deftypevr
30714 #: doc/guix.texi:17080
30715 msgid "Multi-user chat (MUC) is Prosody's module for allowing you to create hosted chatrooms/conferences for XMPP users."
30716 msgstr ""
30717
30718 #. type: deftypevr
30719 #: doc/guix.texi:17084
30720 msgid "General information on setting up and using multi-user chatrooms can be found in the \"Chatrooms\" documentation (@url{https://prosody.im/doc/chatrooms}), which you should read if you are new to XMPP chatrooms."
30721 msgstr ""
30722
30723 #. type: deftypevr
30724 #: doc/guix.texi:17086
30725 msgid "See also @url{https://prosody.im/doc/modules/mod_muc}."
30726 msgstr ""
30727
30728 #. type: deftypevr
30729 #: doc/guix.texi:17088
30730 msgid "Available @code{mod-muc-configuration} fields are:"
30731 msgstr ""
30732
30733 #. type: deftypevr
30734 #: doc/guix.texi:17089
30735 #, no-wrap
30736 msgid "{@code{mod-muc-configuration} parameter} string name"
30737 msgstr ""
30738
30739 #. type: deftypevr
30740 #: doc/guix.texi:17092
30741 msgid "The name to return in service discovery responses. Defaults to @samp{\"Prosody Chatrooms\"}."
30742 msgstr ""
30743
30744 #. type: deftypevr
30745 #: doc/guix.texi:17094
30746 #, no-wrap
30747 msgid "{@code{mod-muc-configuration} parameter} string-or-boolean restrict-room-creation"
30748 msgstr ""
30749
30750 #. type: deftypevr
30751 #: doc/guix.texi:17101
30752 msgid "If @samp{#t}, this will only allow admins to create new chatrooms. Otherwise anyone can create a room. The value @samp{\"local\"} restricts room creation to users on the service's parent domain. E.g.@: @samp{user@@example.com} can create rooms on @samp{rooms.example.com}. The value @samp{\"admin\"} restricts to service administrators only. Defaults to @samp{#f}."
30753 msgstr ""
30754
30755 #. type: deftypevr
30756 #: doc/guix.texi:17103
30757 #, no-wrap
30758 msgid "{@code{mod-muc-configuration} parameter} non-negative-integer max-history-messages"
30759 msgstr ""
30760
30761 #. type: deftypevr
30762 #: doc/guix.texi:17107
30763 msgid "Maximum number of history messages that will be sent to the member that has just joined the room. Defaults to @samp{20}."
30764 msgstr ""
30765
30766 #. type: deftypevr
30767 #: doc/guix.texi:17113
30768 #, no-wrap
30769 msgid "{@code{prosody-configuration} parameter} ext-component-configuration-list ext-components"
30770 msgstr ""
30771
30772 #. type: deftypevr
30773 #: doc/guix.texi:17118
30774 msgid "External components use XEP-0114, which most standalone components support. To add an external component, you simply fill the hostname field. See @url{https://prosody.im/doc/components}. Defaults to @samp{()}."
30775 msgstr ""
30776
30777 #. type: deftypevr
30778 #: doc/guix.texi:17120
30779 msgid "Available @code{ext-component-configuration} fields are:"
30780 msgstr ""
30781
30782 #. type: deftypevr
30783 #: doc/guix.texi:17122
30784 #, no-wrap
30785 msgid "{@code{ext-component-configuration} parameter} string component-secret"
30786 msgstr ""
30787
30788 #. type: deftypevr
30789 #: doc/guix.texi:17124
30790 msgid "Password which the component will use to log in."
30791 msgstr ""
30792
30793 #. type: deftypevr
30794 #: doc/guix.texi:17126
30795 #, no-wrap
30796 msgid "{@code{ext-component-configuration} parameter} string hostname"
30797 msgstr ""
30798
30799 #. type: deftypevr
30800 #: doc/guix.texi:17132
30801 #, no-wrap
30802 msgid "{@code{prosody-configuration} parameter} non-negative-integer-list component-ports"
30803 msgstr ""
30804
30805 #. type: deftypevr
30806 #: doc/guix.texi:17135
30807 msgid "Port(s) Prosody listens on for component connections. Defaults to @samp{(5347)}."
30808 msgstr ""
30809
30810 #. type: deftypevr
30811 #: doc/guix.texi:17137
30812 #, no-wrap
30813 msgid "{@code{prosody-configuration} parameter} string component-interface"
30814 msgstr ""
30815
30816 #. type: deftypevr
30817 #: doc/guix.texi:17140
30818 msgid "Interface Prosody listens on for component connections. Defaults to @samp{\"127.0.0.1\"}."
30819 msgstr ""
30820
30821 #. type: deftypevr
30822 #: doc/guix.texi:17142
30823 #, no-wrap
30824 msgid "{@code{prosody-configuration} parameter} maybe-raw-content raw-content"
30825 msgstr ""
30826
30827 #. type: deftypevr
30828 #: doc/guix.texi:17144
30829 msgid "Raw content that will be added to the configuration file."
30830 msgstr ""
30831
30832 #. type: Plain text
30833 #: doc/guix.texi:17152
30834 msgid "It could be that you just want to get a @code{prosody.cfg.lua} up and running. In that case, you can pass an @code{opaque-prosody-configuration} record as the value of @code{prosody-service-type}. As its name indicates, an opaque configuration does not have easy reflective capabilities. Available @code{opaque-prosody-configuration} fields are:"
30835 msgstr ""
30836
30837 #. type: deftypevr
30838 #: doc/guix.texi:17153
30839 #, no-wrap
30840 msgid "{@code{opaque-prosody-configuration} parameter} package prosody"
30841 msgstr ""
30842
30843 #. type: deftypevr
30844 #: doc/guix.texi:17155
30845 msgid "The prosody package."
30846 msgstr ""
30847
30848 #. type: deftypevr
30849 #: doc/guix.texi:17157
30850 #, no-wrap
30851 msgid "{@code{opaque-prosody-configuration} parameter} string prosody.cfg.lua"
30852 msgstr ""
30853
30854 #. type: deftypevr
30855 #: doc/guix.texi:17159
30856 msgid "The contents of the @code{prosody.cfg.lua} to use."
30857 msgstr ""
30858
30859 #. type: Plain text
30860 #: doc/guix.texi:17163
30861 msgid "For example, if your @code{prosody.cfg.lua} is just the empty string, you could instantiate a prosody service like this:"
30862 msgstr ""
30863
30864 #. type: example
30865 #: doc/guix.texi:17168
30866 #, no-wrap
30867 msgid ""
30868 "(service prosody-service-type\n"
30869 " (opaque-prosody-configuration\n"
30870 " (prosody.cfg.lua \"\")))\n"
30871 msgstr ""
30872
30873 #. type: subsubheading
30874 #: doc/guix.texi:17172
30875 #, no-wrap
30876 msgid "BitlBee Service"
30877 msgstr ""
30878
30879 #. type: cindex
30880 #: doc/guix.texi:17174 doc/guix.texi:17218
30881 #, no-wrap
30882 msgid "IRC (Internet Relay Chat)"
30883 msgstr ""
30884
30885 #. type: cindex
30886 #: doc/guix.texi:17175
30887 #, no-wrap
30888 msgid "IRC gateway"
30889 msgstr ""
30890
30891 #. type: Plain text
30892 #: doc/guix.texi:17178
30893 msgid "@url{https://bitlbee.org,BitlBee} is a gateway that provides an IRC interface to a variety of messaging protocols such as XMPP."
30894 msgstr ""
30895
30896 #. type: defvr
30897 #: doc/guix.texi:17179
30898 #, no-wrap
30899 msgid "{Scheme Variable} bitlbee-service-type"
30900 msgstr ""
30901
30902 #. type: defvr
30903 #: doc/guix.texi:17183
30904 msgid "This is the service type for the @url{https://bitlbee.org,BitlBee} IRC gateway daemon. Its value is a @code{bitlbee-configuration} (see below)."
30905 msgstr ""
30906
30907 #. type: defvr
30908 #: doc/guix.texi:17186
30909 msgid "To have BitlBee listen on port 6667 on localhost, add this line to your services:"
30910 msgstr ""
30911
30912 #. type: example
30913 #: doc/guix.texi:17189
30914 #, no-wrap
30915 msgid "(service bitlbee-service-type)\n"
30916 msgstr ""
30917
30918 #. type: deftp
30919 #: doc/guix.texi:17192
30920 #, no-wrap
30921 msgid "{Data Type} bitlbee-configuration"
30922 msgstr ""
30923
30924 #. type: deftp
30925 #: doc/guix.texi:17194
30926 msgid "This is the configuration for BitlBee, with the following fields:"
30927 msgstr ""
30928
30929 #. type: item
30930 #: doc/guix.texi:17196
30931 #, no-wrap
30932 msgid "@code{interface} (default: @code{\"127.0.0.1\"})"
30933 msgstr ""
30934
30935 #. type: itemx
30936 #: doc/guix.texi:17197
30937 #, no-wrap
30938 msgid "@code{port} (default: @code{6667})"
30939 msgstr ""
30940
30941 #. type: table
30942 #: doc/guix.texi:17200
30943 msgid "Listen on the network interface corresponding to the IP address specified in @var{interface}, on @var{port}."
30944 msgstr ""
30945
30946 #. type: table
30947 #: doc/guix.texi:17204
30948 msgid "When @var{interface} is @code{127.0.0.1}, only local clients can connect; when it is @code{0.0.0.0}, connections can come from any networking interface."
30949 msgstr ""
30950
30951 #. type: item
30952 #: doc/guix.texi:17205
30953 #, no-wrap
30954 msgid "@code{package} (default: @code{bitlbee})"
30955 msgstr ""
30956
30957 #. type: table
30958 #: doc/guix.texi:17207
30959 msgid "The BitlBee package to use."
30960 msgstr ""
30961
30962 #. type: item
30963 #: doc/guix.texi:17208
30964 #, no-wrap
30965 msgid "@code{plugins} (default: @code{'()})"
30966 msgstr ""
30967
30968 #. type: table
30969 #: doc/guix.texi:17210
30970 msgid "List of plugin packages to use---e.g., @code{bitlbee-discord}."
30971 msgstr ""
30972
30973 #. type: item
30974 #: doc/guix.texi:17211
30975 #, no-wrap
30976 msgid "@code{extra-settings} (default: @code{\"\"})"
30977 msgstr ""
30978
30979 #. type: table
30980 #: doc/guix.texi:17213
30981 msgid "Configuration snippet added as-is to the BitlBee configuration file."
30982 msgstr ""
30983
30984 #. type: subsubheading
30985 #: doc/guix.texi:17216
30986 #, no-wrap
30987 msgid "Quassel Service"
30988 msgstr ""
30989
30990 #. type: Plain text
30991 #: doc/guix.texi:17222
30992 msgid "@url{https://quassel-irc.org/,Quassel} is a distributed IRC client, meaning that one or more clients can attach to and detach from the central core."
30993 msgstr ""
30994
30995 #. type: defvr
30996 #: doc/guix.texi:17223
30997 #, no-wrap
30998 msgid "{Scheme Variable} quassel-service-type"
30999 msgstr ""
31000
31001 #. type: defvr
31002 #: doc/guix.texi:17227
31003 msgid "This is the service type for the @url{https://quassel-irc.org/,Quassel} IRC backend daemon. Its value is a @code{quassel-configuration} (see below)."
31004 msgstr ""
31005
31006 #. type: deftp
31007 #: doc/guix.texi:17229
31008 #, no-wrap
31009 msgid "{Data Type} quassel-configuration"
31010 msgstr ""
31011
31012 #. type: deftp
31013 #: doc/guix.texi:17231
31014 msgid "This is the configuration for Quassel, with the following fields:"
31015 msgstr ""
31016
31017 #. type: item
31018 #: doc/guix.texi:17233
31019 #, no-wrap
31020 msgid "@code{quassel} (default: @code{quassel})"
31021 msgstr ""
31022
31023 #. type: table
31024 #: doc/guix.texi:17235
31025 msgid "The Quassel package to use."
31026 msgstr ""
31027
31028 #. type: item
31029 #: doc/guix.texi:17236
31030 #, no-wrap
31031 msgid "@code{interface} (default: @code{\"::,0.0.0.0\"})"
31032 msgstr ""
31033
31034 #. type: item
31035 #: doc/guix.texi:17237
31036 #, no-wrap
31037 msgid "@code{port} (default: @code{4242})"
31038 msgstr ""
31039
31040 #. type: table
31041 #: doc/guix.texi:17241
31042 msgid "Listen on the network interface(s) corresponding to the IPv4 or IPv6 interfaces specified in the comma delimited @var{interface}, on @var{port}."
31043 msgstr ""
31044
31045 #. type: item
31046 #: doc/guix.texi:17242
31047 #, no-wrap
31048 msgid "@code{loglevel} (default: @code{\"Info\"})"
31049 msgstr ""
31050
31051 #. type: table
31052 #: doc/guix.texi:17245
31053 msgid "The level of logging desired. Accepted values are Debug, Info, Warning and Error."
31054 msgstr ""
31055
31056 #. type: cindex
31057 #: doc/guix.texi:17251
31058 #, no-wrap
31059 msgid "Murmur (VoIP server)"
31060 msgstr ""
31061
31062 #. type: cindex
31063 #: doc/guix.texi:17252
31064 #, no-wrap
31065 msgid "VoIP server"
31066 msgstr ""
31067
31068 #. type: Plain text
31069 #: doc/guix.texi:17256
31070 msgid "This section describes how to set up and run a Murmur server. Murmur is the server of the @uref{https://mumble.info, Mumble} voice-over-IP (VoIP) suite."
31071 msgstr ""
31072
31073 #. type: deftp
31074 #: doc/guix.texi:17257
31075 #, no-wrap
31076 msgid "{Data Type} murmur-configuration"
31077 msgstr ""
31078
31079 #. type: deftp
31080 #: doc/guix.texi:17260
31081 msgid "The service type for the Murmur server. An example configuration can look like this:"
31082 msgstr ""
31083
31084 #. type: example
31085 #: doc/guix.texi:17269
31086 #, no-wrap
31087 msgid ""
31088 "(service murmur-service-type\n"
31089 " (murmur-configuration\n"
31090 " (welcome-text\n"
31091 " \"Welcome to this Mumble server running on Guix!\")\n"
31092 " (cert-required? #t) ;disallow text password logins\n"
31093 " (ssl-cert \"/etc/letsencrypt/live/mumble.example.com/fullchain.pem\")\n"
31094 " (ssl-key \"/etc/letsencrypt/live/mumble.example.com/privkey.pem\")))\n"
31095 msgstr ""
31096
31097 #. type: deftp
31098 #: doc/guix.texi:17273
31099 msgid "After reconfiguring your system, you can manually set the murmur @code{SuperUser} password with the command that is printed during the activation phase."
31100 msgstr ""
31101
31102 #. type: deftp
31103 #: doc/guix.texi:17282
31104 msgid "It is recommended to register a normal Mumble user account and grant it admin or moderator rights. You can use the @code{mumble} client to login as new normal user, register yourself, and log out. For the next step login with the name @code{SuperUser} use the @code{SuperUser} password that you set previously, and grant your newly registered mumble user administrator or moderator rights and create some channels."
31105 msgstr ""
31106
31107 #. type: deftp
31108 #: doc/guix.texi:17284
31109 msgid "Available @code{murmur-configuration} fields are:"
31110 msgstr ""
31111
31112 #. type: item
31113 #: doc/guix.texi:17286
31114 #, no-wrap
31115 msgid "@code{package} (default: @code{mumble})"
31116 msgstr ""
31117
31118 #. type: table
31119 #: doc/guix.texi:17288
31120 msgid "Package that contains @code{bin/murmurd}."
31121 msgstr ""
31122
31123 #. type: item
31124 #: doc/guix.texi:17289
31125 #, no-wrap
31126 msgid "@code{user} (default: @code{\"murmur\"})"
31127 msgstr ""
31128
31129 #. type: table
31130 #: doc/guix.texi:17291
31131 msgid "User who will run the Murmur server."
31132 msgstr ""
31133
31134 #. type: item
31135 #: doc/guix.texi:17292
31136 #, no-wrap
31137 msgid "@code{group} (default: @code{\"murmur\"})"
31138 msgstr ""
31139
31140 #. type: table
31141 #: doc/guix.texi:17294
31142 msgid "Group of the user who will run the murmur server."
31143 msgstr ""
31144
31145 #. type: item
31146 #: doc/guix.texi:17295
31147 #, no-wrap
31148 msgid "@code{port} (default: @code{64738})"
31149 msgstr ""
31150
31151 #. type: table
31152 #: doc/guix.texi:17297
31153 msgid "Port on which the server will listen."
31154 msgstr ""
31155
31156 #. type: item
31157 #: doc/guix.texi:17298
31158 #, no-wrap
31159 msgid "@code{welcome-text} (default: @code{\"\"})"
31160 msgstr ""
31161
31162 #. type: table
31163 #: doc/guix.texi:17300
31164 msgid "Welcome text sent to clients when they connect."
31165 msgstr ""
31166
31167 #. type: item
31168 #: doc/guix.texi:17301
31169 #, no-wrap
31170 msgid "@code{server-password} (default: @code{\"\"})"
31171 msgstr ""
31172
31173 #. type: table
31174 #: doc/guix.texi:17303
31175 msgid "Password the clients have to enter in order to connect."
31176 msgstr ""
31177
31178 #. type: item
31179 #: doc/guix.texi:17304
31180 #, no-wrap
31181 msgid "@code{max-users} (default: @code{100})"
31182 msgstr ""
31183
31184 #. type: table
31185 #: doc/guix.texi:17306
31186 msgid "Maximum of users that can be connected to the server at once."
31187 msgstr ""
31188
31189 #. type: item
31190 #: doc/guix.texi:17307
31191 #, no-wrap
31192 msgid "@code{max-user-bandwidth} (default: @code{#f})"
31193 msgstr ""
31194
31195 #. type: table
31196 #: doc/guix.texi:17309
31197 msgid "Maximum voice traffic a user can send per second."
31198 msgstr ""
31199
31200 #. type: item
31201 #: doc/guix.texi:17310
31202 #, no-wrap
31203 msgid "@code{database-file} (default: @code{\"/var/lib/murmur/db.sqlite\"})"
31204 msgstr ""
31205
31206 #. type: table
31207 #: doc/guix.texi:17313
31208 msgid "File name of the sqlite database. The service's user will become the owner of the directory."
31209 msgstr ""
31210
31211 #. type: item
31212 #: doc/guix.texi:17314
31213 #, no-wrap
31214 msgid "@code{log-file} (default: @code{\"/var/log/murmur/murmur.log\"})"
31215 msgstr ""
31216
31217 #. type: table
31218 #: doc/guix.texi:17317
31219 msgid "File name of the log file. The service's user will become the owner of the directory."
31220 msgstr ""
31221
31222 #. type: item
31223 #: doc/guix.texi:17318
31224 #, no-wrap
31225 msgid "@code{autoban-attempts} (default: @code{10})"
31226 msgstr ""
31227
31228 #. type: table
31229 #: doc/guix.texi:17321
31230 msgid "Maximum number of logins a user can make in @code{autoban-timeframe} without getting auto banned for @code{autoban-time}."
31231 msgstr ""
31232
31233 #. type: item
31234 #: doc/guix.texi:17322
31235 #, no-wrap
31236 msgid "@code{autoban-timeframe} (default: @code{120})"
31237 msgstr ""
31238
31239 #. type: table
31240 #: doc/guix.texi:17324
31241 msgid "Timeframe for autoban in seconds."
31242 msgstr ""
31243
31244 #. type: item
31245 #: doc/guix.texi:17325
31246 #, no-wrap
31247 msgid "@code{autoban-time} (default: @code{300})"
31248 msgstr ""
31249
31250 #. type: table
31251 #: doc/guix.texi:17328
31252 msgid "Amount of time in seconds for which a client gets banned when violating the autoban limits."
31253 msgstr ""
31254
31255 #. type: item
31256 #: doc/guix.texi:17329
31257 #, no-wrap
31258 msgid "@code{opus-threshold} (default: @code{100})"
31259 msgstr ""
31260
31261 #. type: table
31262 #: doc/guix.texi:17332
31263 msgid "Percentage of clients that need to support opus before switching over to opus audio codec."
31264 msgstr ""
31265
31266 #. type: item
31267 #: doc/guix.texi:17333
31268 #, no-wrap
31269 msgid "@code{channel-nesting-limit} (default: @code{10})"
31270 msgstr ""
31271
31272 #. type: table
31273 #: doc/guix.texi:17335
31274 msgid "How deep channels can be nested at maximum."
31275 msgstr ""
31276
31277 #. type: item
31278 #: doc/guix.texi:17336
31279 #, no-wrap
31280 msgid "@code{channelname-regex} (default: @code{#f})"
31281 msgstr ""
31282
31283 #. type: table
31284 #: doc/guix.texi:17338
31285 msgid "A string in form of a Qt regular expression that channel names must conform to."
31286 msgstr ""
31287
31288 #. type: item
31289 #: doc/guix.texi:17339
31290 #, no-wrap
31291 msgid "@code{username-regex} (default: @code{#f})"
31292 msgstr ""
31293
31294 #. type: table
31295 #: doc/guix.texi:17341
31296 msgid "A string in form of a Qt regular expression that user names must conform to."
31297 msgstr ""
31298
31299 #. type: item
31300 #: doc/guix.texi:17342
31301 #, no-wrap
31302 msgid "@code{text-message-length} (default: @code{5000})"
31303 msgstr ""
31304
31305 #. type: table
31306 #: doc/guix.texi:17344
31307 msgid "Maximum size in bytes that a user can send in one text chat message."
31308 msgstr ""
31309
31310 #. type: item
31311 #: doc/guix.texi:17345
31312 #, no-wrap
31313 msgid "@code{image-message-length} (default: @code{(* 128 1024)})"
31314 msgstr ""
31315
31316 #. type: table
31317 #: doc/guix.texi:17347
31318 msgid "Maximum size in bytes that a user can send in one image message."
31319 msgstr ""
31320
31321 #. type: item
31322 #: doc/guix.texi:17348
31323 #, no-wrap
31324 msgid "@code{cert-required?} (default: @code{#f})"
31325 msgstr ""
31326
31327 #. type: table
31328 #: doc/guix.texi:17351
31329 msgid "If it is set to @code{#t} clients that use weak password authentification will not be accepted. Users must have completed the certificate wizard to join."
31330 msgstr ""
31331
31332 #. type: item
31333 #: doc/guix.texi:17352
31334 #, no-wrap
31335 msgid "@code{remember-channel?} (default: @code{#f})"
31336 msgstr ""
31337
31338 #. type: table
31339 #: doc/guix.texi:17355
31340 msgid "Should murmur remember the last channel each user was in when they disconnected and put them into the remembered channel when they rejoin."
31341 msgstr ""
31342
31343 #. type: item
31344 #: doc/guix.texi:17356
31345 #, no-wrap
31346 msgid "@code{allow-html?} (default: @code{#f})"
31347 msgstr ""
31348
31349 #. type: table
31350 #: doc/guix.texi:17358
31351 msgid "Should html be allowed in text messages, user comments, and channel descriptions."
31352 msgstr ""
31353
31354 #. type: item
31355 #: doc/guix.texi:17359
31356 #, no-wrap
31357 msgid "@code{allow-ping?} (default: @code{#f})"
31358 msgstr ""
31359
31360 #. type: table
31361 #: doc/guix.texi:17363
31362 msgid "Setting to true exposes the current user count, the maximum user count, and the server's maximum bandwidth per client to unauthenticated users. In the Mumble client, this information is shown in the Connect dialog."
31363 msgstr ""
31364
31365 #. type: table
31366 #: doc/guix.texi:17365
31367 msgid "Disabling this setting will prevent public listing of the server."
31368 msgstr ""
31369
31370 #. type: item
31371 #: doc/guix.texi:17366
31372 #, no-wrap
31373 msgid "@code{bonjour?} (default: @code{#f})"
31374 msgstr ""
31375
31376 #. type: table
31377 #: doc/guix.texi:17368
31378 msgid "Should the server advertise itself in the local network through the bonjour protocol."
31379 msgstr ""
31380
31381 #. type: item
31382 #: doc/guix.texi:17369
31383 #, no-wrap
31384 msgid "@code{send-version?} (default: @code{#f})"
31385 msgstr ""
31386
31387 #. type: table
31388 #: doc/guix.texi:17371
31389 msgid "Should the murmur server version be exposed in ping requests."
31390 msgstr ""
31391
31392 #. type: item
31393 #: doc/guix.texi:17372
31394 #, no-wrap
31395 msgid "@code{log-days} (default: @code{31})"
31396 msgstr ""
31397
31398 #. type: table
31399 #: doc/guix.texi:17376
31400 msgid "Murmur also stores logs in the database, which are accessible via RPC. The default is 31 days of months, but you can set this setting to 0 to keep logs forever, or -1 to disable logging to the database."
31401 msgstr ""
31402
31403 #. type: item
31404 #: doc/guix.texi:17377
31405 #, no-wrap
31406 msgid "@code{obfuscate-ips?} (default: @code{#t})"
31407 msgstr ""
31408
31409 #. type: table
31410 #: doc/guix.texi:17379
31411 msgid "Should logged ips be obfuscated to protect the privacy of users."
31412 msgstr ""
31413
31414 #. type: item
31415 #: doc/guix.texi:17380
31416 #, no-wrap
31417 msgid "@code{ssl-cert} (default: @code{#f})"
31418 msgstr ""
31419
31420 #. type: table
31421 #: doc/guix.texi:17382
31422 msgid "File name of the SSL/TLS certificate used for encrypted connections."
31423 msgstr ""
31424
31425 #. type: example
31426 #: doc/guix.texi:17385
31427 #, no-wrap
31428 msgid "(ssl-cert \"/etc/letsencrypt/live/example.com/fullchain.pem\")\n"
31429 msgstr ""
31430
31431 #. type: item
31432 #: doc/guix.texi:17386
31433 #, no-wrap
31434 msgid "@code{ssl-key} (default: @code{#f})"
31435 msgstr ""
31436
31437 #. type: table
31438 #: doc/guix.texi:17388
31439 msgid "Filepath to the ssl private key used for encrypted connections."
31440 msgstr ""
31441
31442 #. type: example
31443 #: doc/guix.texi:17390
31444 #, no-wrap
31445 msgid "(ssl-key \"/etc/letsencrypt/live/example.com/privkey.pem\")\n"
31446 msgstr ""
31447
31448 #. type: item
31449 #: doc/guix.texi:17392
31450 #, no-wrap
31451 msgid "@code{ssl-dh-params} (default: @code{#f})"
31452 msgstr ""
31453
31454 #. type: table
31455 #: doc/guix.texi:17397
31456 msgid "File name of a PEM-encoded file with Diffie-Hellman parameters for the SSL/TLS encryption. Alternatively you set it to @code{\"@@ffdhe2048\"}, @code{\"@@ffdhe3072\"}, @code{\"@@ffdhe4096\"}, @code{\"@@ffdhe6144\"} or @code{\"@@ffdhe8192\"} to use bundled parameters from RFC 7919."
31457 msgstr ""
31458
31459 #. type: item
31460 #: doc/guix.texi:17398
31461 #, no-wrap
31462 msgid "@code{ssl-ciphers} (default: @code{#f})"
31463 msgstr ""
31464
31465 #. type: table
31466 #: doc/guix.texi:17401
31467 msgid "The @code{ssl-ciphers} option chooses the cipher suites to make available for use in SSL/TLS."
31468 msgstr ""
31469
31470 #. type: table
31471 #: doc/guix.texi:17405
31472 msgid "This option is specified using @uref{https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT, OpenSSL cipher list notation}."
31473 msgstr ""
31474
31475 #. type: table
31476 #: doc/guix.texi:17410
31477 msgid "It is recommended that you try your cipher string using 'openssl ciphers <string>' before setting it here, to get a feel for which cipher suites you will get. After setting this option, it is recommend that you inspect your Murmur log to ensure that Murmur is using the cipher suites that you expected it to."
31478 msgstr ""
31479
31480 #. type: table
31481 #: doc/guix.texi:17414
31482 msgid "Note: Changing this option may impact the backwards compatibility of your Murmur server, and can remove the ability for older Mumble clients to be able to connect to it."
31483 msgstr ""
31484
31485 #. type: item
31486 #: doc/guix.texi:17415
31487 #, no-wrap
31488 msgid "@code{public-registration} (default: @code{#f})"
31489 msgstr ""
31490
31491 #. type: table
31492 #: doc/guix.texi:17417
31493 msgid "Must be a @code{<murmur-public-registration-configuration>} record or @code{#f}."
31494 msgstr ""
31495
31496 #. type: table
31497 #: doc/guix.texi:17422
31498 msgid "You can optionally register your server in the public server list that the @code{mumble} client shows on startup. You cannot register your server if you have set a @code{server-password}, or set @code{allow-ping} to @code{#f}."
31499 msgstr ""
31500
31501 #. type: table
31502 #: doc/guix.texi:17424
31503 msgid "It might take a few hours until it shows up in the public list."
31504 msgstr ""
31505
31506 #. type: item
31507 #: doc/guix.texi:17425 doc/guix.texi:18856
31508 #, no-wrap
31509 msgid "@code{file} (default: @code{#f})"
31510 msgstr ""
31511
31512 #. type: table
31513 #: doc/guix.texi:17427
31514 msgid "Optional alternative override for this configuration."
31515 msgstr ""
31516
31517 #. type: deftp
31518 #: doc/guix.texi:17430
31519 #, no-wrap
31520 msgid "{Data Type} murmur-public-registration-configuration"
31521 msgstr ""
31522
31523 #. type: deftp
31524 #: doc/guix.texi:17432
31525 msgid "Configuration for public registration of a murmur service."
31526 msgstr ""
31527
31528 #. type: table
31529 #: doc/guix.texi:17436
31530 msgid "This is a display name for your server. Not to be confused with the hostname."
31531 msgstr ""
31532
31533 #. type: itemx
31534 #: doc/guix.texi:17437 doc/guix.texi:23817
31535 #, no-wrap
31536 msgid "password"
31537 msgstr ""
31538
31539 #. type: table
31540 #: doc/guix.texi:17440
31541 msgid "A password to identify your registration. Subsequent updates will need the same password. Don't lose your password."
31542 msgstr ""
31543
31544 #. type: code{#1}
31545 #: doc/guix.texi:17441
31546 #, no-wrap
31547 msgid "url"
31548 msgstr ""
31549
31550 #. type: table
31551 #: doc/guix.texi:17444
31552 msgid "This should be a @code{http://} or @code{https://} link to your web site."
31553 msgstr ""
31554
31555 #. type: item
31556 #: doc/guix.texi:17445
31557 #, no-wrap
31558 msgid "@code{hostname} (default: @code{#f})"
31559 msgstr ""
31560
31561 #. type: table
31562 #: doc/guix.texi:17448
31563 msgid "By default your server will be listed by its IP address. If it is set your server will be linked by this host name instead."
31564 msgstr ""
31565
31566 #. type: subsubheading
31567 #: doc/guix.texi:17456
31568 #, no-wrap
31569 msgid "Tailon Service"
31570 msgstr ""
31571
31572 #. type: Plain text
31573 #: doc/guix.texi:17460
31574 msgid "@uref{https://tailon.readthedocs.io/, Tailon} is a web application for viewing and searching log files."
31575 msgstr ""
31576
31577 #. type: Plain text
31578 #: doc/guix.texi:17463
31579 msgid "The following example will configure the service with default values. By default, Tailon can be accessed on port 8080 (@code{http://localhost:8080})."
31580 msgstr ""
31581
31582 #. type: example
31583 #: doc/guix.texi:17466
31584 #, no-wrap
31585 msgid "(service tailon-service-type)\n"
31586 msgstr ""
31587
31588 #. type: Plain text
31589 #: doc/guix.texi:17470
31590 msgid "The following example customises more of the Tailon configuration, adding @command{sed} to the list of allowed commands."
31591 msgstr ""
31592
31593 #. type: example
31594 #: doc/guix.texi:17477
31595 #, no-wrap
31596 msgid ""
31597 "(service tailon-service-type\n"
31598 " (tailon-configuration\n"
31599 " (config-file\n"
31600 " (tailon-configuration-file\n"
31601 " (allowed-commands '(\"tail\" \"grep\" \"awk\" \"sed\"))))))\n"
31602 msgstr ""
31603
31604 #. type: deftp
31605 #: doc/guix.texi:17480
31606 #, no-wrap
31607 msgid "{Data Type} tailon-configuration"
31608 msgstr ""
31609
31610 #. type: deftp
31611 #: doc/guix.texi:17483
31612 msgid "Data type representing the configuration of Tailon. This type has the following parameters:"
31613 msgstr ""
31614
31615 #. type: item
31616 #: doc/guix.texi:17485
31617 #, no-wrap
31618 msgid "@code{config-file} (default: @code{(tailon-configuration-file)})"
31619 msgstr ""
31620
31621 #. type: table
31622 #: doc/guix.texi:17489
31623 msgid "The configuration file to use for Tailon. This can be set to a @dfn{tailon-configuration-file} record value, or any gexp (@pxref{G-Expressions})."
31624 msgstr ""
31625
31626 #. type: table
31627 #: doc/guix.texi:17492
31628 msgid "For example, to instead use a local file, the @code{local-file} function can be used:"
31629 msgstr ""
31630
31631 #. type: example
31632 #: doc/guix.texi:17497
31633 #, no-wrap
31634 msgid ""
31635 "(service tailon-service-type\n"
31636 " (tailon-configuration\n"
31637 " (config-file (local-file \"./my-tailon.conf\"))))\n"
31638 msgstr ""
31639
31640 #. type: item
31641 #: doc/guix.texi:17499
31642 #, no-wrap
31643 msgid "@code{package} (default: @code{tailon})"
31644 msgstr ""
31645
31646 #. type: table
31647 #: doc/guix.texi:17501
31648 msgid "The tailon package to use."
31649 msgstr ""
31650
31651 #. type: deftp
31652 #: doc/guix.texi:17505
31653 #, no-wrap
31654 msgid "{Data Type} tailon-configuration-file"
31655 msgstr ""
31656
31657 #. type: deftp
31658 #: doc/guix.texi:17508
31659 msgid "Data type representing the configuration options for Tailon. This type has the following parameters:"
31660 msgstr ""
31661
31662 #. type: item
31663 #: doc/guix.texi:17510
31664 #, no-wrap
31665 msgid "@code{files} (default: @code{(list \"/var/log\")})"
31666 msgstr ""
31667
31668 #. type: table
31669 #: doc/guix.texi:17515
31670 msgid "List of files to display. The list can include strings for a single file or directory, or a list, where the first item is the name of a subsection, and the remaining items are the files or directories in that subsection."
31671 msgstr ""
31672
31673 #. type: item
31674 #: doc/guix.texi:17516
31675 #, no-wrap
31676 msgid "@code{bind} (default: @code{\"localhost:8080\"})"
31677 msgstr ""
31678
31679 #. type: table
31680 #: doc/guix.texi:17518
31681 msgid "Address and port to which Tailon should bind on."
31682 msgstr ""
31683
31684 #. type: item
31685 #: doc/guix.texi:17519
31686 #, no-wrap
31687 msgid "@code{relative-root} (default: @code{#f})"
31688 msgstr ""
31689
31690 #. type: table
31691 #: doc/guix.texi:17521
31692 msgid "URL path to use for Tailon, set to @code{#f} to not use a path."
31693 msgstr ""
31694
31695 #. type: item
31696 #: doc/guix.texi:17522
31697 #, no-wrap
31698 msgid "@code{allow-transfers?} (default: @code{#t})"
31699 msgstr ""
31700
31701 #. type: table
31702 #: doc/guix.texi:17524
31703 msgid "Allow downloading the log files in the web interface."
31704 msgstr ""
31705
31706 #. type: item
31707 #: doc/guix.texi:17525
31708 #, no-wrap
31709 msgid "@code{follow-names?} (default: @code{#t})"
31710 msgstr ""
31711
31712 #. type: table
31713 #: doc/guix.texi:17527
31714 msgid "Allow tailing of not-yet existent files."
31715 msgstr ""
31716
31717 #. type: item
31718 #: doc/guix.texi:17528
31719 #, no-wrap
31720 msgid "@code{tail-lines} (default: @code{200})"
31721 msgstr ""
31722
31723 #. type: table
31724 #: doc/guix.texi:17530
31725 msgid "Number of lines to read initially from each file."
31726 msgstr ""
31727
31728 #. type: item
31729 #: doc/guix.texi:17531
31730 #, no-wrap
31731 msgid "@code{allowed-commands} (default: @code{(list \"tail\" \"grep\" \"awk\")})"
31732 msgstr ""
31733
31734 #. type: table
31735 #: doc/guix.texi:17533
31736 msgid "Commands to allow running. By default, @code{sed} is disabled."
31737 msgstr ""
31738
31739 #. type: item
31740 #: doc/guix.texi:17534
31741 #, no-wrap
31742 msgid "@code{debug?} (default: @code{#f})"
31743 msgstr ""
31744
31745 #. type: table
31746 #: doc/guix.texi:17536
31747 msgid "Set @code{debug?} to @code{#t} to show debug messages."
31748 msgstr ""
31749
31750 #. type: item
31751 #: doc/guix.texi:17537
31752 #, no-wrap
31753 msgid "@code{wrap-lines} (default: @code{#t})"
31754 msgstr ""
31755
31756 #. type: table
31757 #: doc/guix.texi:17541
31758 msgid "Initial line wrapping state in the web interface. Set to @code{#t} to initially wrap lines (the default), or to @code{#f} to initially not wrap lines."
31759 msgstr ""
31760
31761 #. type: item
31762 #: doc/guix.texi:17542
31763 #, no-wrap
31764 msgid "@code{http-auth} (default: @code{#f})"
31765 msgstr ""
31766
31767 #. type: table
31768 #: doc/guix.texi:17546
31769 msgid "HTTP authentication type to use. Set to @code{#f} to disable authentication (the default). Supported values are @code{\"digest\"} or @code{\"basic\"}."
31770 msgstr ""
31771
31772 #. type: item
31773 #: doc/guix.texi:17547
31774 #, no-wrap
31775 msgid "@code{users} (default: @code{#f})"
31776 msgstr ""
31777
31778 #. type: table
31779 #: doc/guix.texi:17552
31780 msgid "If HTTP authentication is enabled (see @code{http-auth}), access will be restricted to the credentials provided here. To configure users, use a list of pairs, where the first element of the pair is the username, and the 2nd element of the pair is the password."
31781 msgstr ""
31782
31783 #. type: example
31784 #: doc/guix.texi:17558
31785 #, no-wrap
31786 msgid ""
31787 "(tailon-configuration-file\n"
31788 " (http-auth \"basic\")\n"
31789 " (users '((\"user1\" . \"password1\")\n"
31790 " (\"user2\" . \"password2\"))))\n"
31791 msgstr ""
31792
31793 #. type: subsubheading
31794 #: doc/guix.texi:17564
31795 #, no-wrap
31796 msgid "Darkstat Service"
31797 msgstr ""
31798
31799 #. type: cindex
31800 #: doc/guix.texi:17565
31801 #, no-wrap
31802 msgid "darkstat"
31803 msgstr ""
31804
31805 #. type: Plain text
31806 #: doc/guix.texi:17568
31807 msgid "Darkstat is a packet sniffer that captures network traffic, calculates statistics about usage, and serves reports over HTTP."
31808 msgstr ""
31809
31810 #. type: defvar
31811 #: doc/guix.texi:17569
31812 #, no-wrap
31813 msgid "{Scheme Variable} darkstat-service-type"
31814 msgstr ""
31815
31816 #. type: defvar
31817 #: doc/guix.texi:17574
31818 msgid "This is the service type for the @uref{https://unix4lyfe.org/darkstat/, darkstat} service, its value must be a @code{darkstat-configuration} record as in this example:"
31819 msgstr ""
31820
31821 #. type: example
31822 #: doc/guix.texi:17579
31823 #, no-wrap
31824 msgid ""
31825 "(service darkstat-service-type\n"
31826 " (darkstat-configuration\n"
31827 " (interface \"eno1\")))\n"
31828 msgstr ""
31829
31830 #. type: deftp
31831 #: doc/guix.texi:17582
31832 #, no-wrap
31833 msgid "{Data Type} darkstat-configuration"
31834 msgstr ""
31835
31836 #. type: deftp
31837 #: doc/guix.texi:17584
31838 msgid "Data type representing the configuration of @command{darkstat}."
31839 msgstr ""
31840
31841 #. type: item
31842 #: doc/guix.texi:17586
31843 #, no-wrap
31844 msgid "@code{package} (default: @code{darkstat})"
31845 msgstr ""
31846
31847 #. type: table
31848 #: doc/guix.texi:17588
31849 msgid "The darkstat package to use."
31850 msgstr ""
31851
31852 #. type: code{#1}
31853 #: doc/guix.texi:17589
31854 #, no-wrap
31855 msgid "interface"
31856 msgstr ""
31857
31858 #. type: table
31859 #: doc/guix.texi:17591
31860 msgid "Capture traffic on the specified network interface."
31861 msgstr ""
31862
31863 #. type: item
31864 #: doc/guix.texi:17592
31865 #, no-wrap
31866 msgid "@code{port} (default: @code{\"667\"})"
31867 msgstr ""
31868
31869 #. type: table
31870 #: doc/guix.texi:17594
31871 msgid "Bind the web interface to the specified port."
31872 msgstr ""
31873
31874 #. type: item
31875 #: doc/guix.texi:17595
31876 #, no-wrap
31877 msgid "@code{bind-address} (default: @code{\"127.0.0.1\"})"
31878 msgstr ""
31879
31880 #. type: table
31881 #: doc/guix.texi:17597 doc/guix.texi:17635
31882 msgid "Bind the web interface to the specified address."
31883 msgstr ""
31884
31885 #. type: item
31886 #: doc/guix.texi:17598
31887 #, no-wrap
31888 msgid "@code{base} (default: @code{\"/\"})"
31889 msgstr ""
31890
31891 #. type: table
31892 #: doc/guix.texi:17601
31893 msgid "Specify the path of the base URL. This can be useful if @command{darkstat} is accessed via a reverse proxy."
31894 msgstr ""
31895
31896 #. type: subsubheading
31897 #: doc/guix.texi:17605
31898 #, no-wrap
31899 msgid "Prometheus Node Exporter Service"
31900 msgstr ""
31901
31902 #. type: cindex
31903 #: doc/guix.texi:17607
31904 #, no-wrap
31905 msgid "prometheus-node-exporter"
31906 msgstr ""
31907
31908 #. type: Plain text
31909 #: doc/guix.texi:17612
31910 msgid "The Prometheus ``node exporter'' makes hardware and operating system statistics provided by the Linux kernel available for the Prometheus monitoring system. This service should be deployed on all physical nodes and virtual machines, where monitoring these statistics is desirable."
31911 msgstr ""
31912
31913 #. type: defvar
31914 #: doc/guix.texi:17613
31915 #, no-wrap
31916 msgid "{Scheme variable} prometheus-node-exporter-service-type"
31917 msgstr ""
31918
31919 #. type: defvar
31920 #: doc/guix.texi:17618
31921 msgid "This is the service type for the @uref{https://github.com/prometheus/node_exporter/, prometheus-node-exporter} service, its value must be a @code{prometheus-node-exporter-configuration} record as in this example:"
31922 msgstr ""
31923
31924 #. type: example
31925 #: doc/guix.texi:17623
31926 #, no-wrap
31927 msgid ""
31928 "(service prometheus-node-exporter-service-type\n"
31929 " (prometheus-node-exporter-configuration\n"
31930 " (web-listen-address \":9100\")))\n"
31931 msgstr ""
31932
31933 #. type: deftp
31934 #: doc/guix.texi:17626
31935 #, no-wrap
31936 msgid "{Data Type} prometheus-node-exporter-configuration"
31937 msgstr ""
31938
31939 #. type: deftp
31940 #: doc/guix.texi:17628
31941 msgid "Data type representing the configuration of @command{node_exporter}."
31942 msgstr ""
31943
31944 #. type: item
31945 #: doc/guix.texi:17630
31946 #, no-wrap
31947 msgid "@code{package} (default: @code{go-github-com-prometheus-node-exporter})"
31948 msgstr ""
31949
31950 #. type: table
31951 #: doc/guix.texi:17632
31952 msgid "The prometheus-node-exporter package to use."
31953 msgstr ""
31954
31955 #. type: item
31956 #: doc/guix.texi:17633
31957 #, no-wrap
31958 msgid "@code{web-listen-address} (default: @code{\":9100\"})"
31959 msgstr ""
31960
31961 #. type: subsubheading
31962 #: doc/guix.texi:17639
31963 #, no-wrap
31964 msgid "Zabbix server"
31965 msgstr ""
31966
31967 #. type: cindex
31968 #: doc/guix.texi:17640
31969 #, no-wrap
31970 msgid "zabbix zabbix-server"
31971 msgstr ""
31972
31973 #. type: Plain text
31974 #: doc/guix.texi:17643
31975 msgid "Zabbix provides monitoring metrics, among others network utilization, CPU load and disk space consumption:"
31976 msgstr ""
31977
31978 #. type: item
31979 #: doc/guix.texi:17645
31980 #, no-wrap
31981 msgid "High performance, high capacity (able to monitor hundreds of thousands of devices)."
31982 msgstr ""
31983
31984 #. type: item
31985 #: doc/guix.texi:17646
31986 #, no-wrap
31987 msgid "Auto-discovery of servers and network devices and interfaces."
31988 msgstr ""
31989
31990 #. type: item
31991 #: doc/guix.texi:17647
31992 #, no-wrap
31993 msgid "Low-level discovery, allows to automatically start monitoring new items, file systems or network interfaces among others."
31994 msgstr ""
31995
31996 #. type: item
31997 #: doc/guix.texi:17648
31998 #, no-wrap
31999 msgid "Distributed monitoring with centralized web administration."
32000 msgstr ""
32001
32002 #. type: item
32003 #: doc/guix.texi:17649
32004 #, no-wrap
32005 msgid "Native high performance agents."
32006 msgstr ""
32007
32008 #. type: item
32009 #: doc/guix.texi:17650
32010 #, no-wrap
32011 msgid "SLA, and ITIL KPI metrics on reporting."
32012 msgstr ""
32013
32014 #. type: item
32015 #: doc/guix.texi:17651
32016 #, no-wrap
32017 msgid "High-level (business) view of monitored resources through user-defined visual console screens and dashboards."
32018 msgstr ""
32019
32020 #. type: item
32021 #: doc/guix.texi:17652
32022 #, no-wrap
32023 msgid "Remote command execution through Zabbix proxies."
32024 msgstr ""
32025
32026 #. type: Plain text
32027 #: doc/guix.texi:17658
32028 msgid "Available @code{zabbix-server-configuration} fields are:"
32029 msgstr ""
32030
32031 #. type: deftypevr
32032 #: doc/guix.texi:17659
32033 #, no-wrap
32034 msgid "{@code{zabbix-server-configuration} parameter} package zabbix-server"
32035 msgstr ""
32036
32037 #. type: deftypevr
32038 #: doc/guix.texi:17661
32039 msgid "The zabbix-server package."
32040 msgstr ""
32041
32042 #. type: deftypevr
32043 #: doc/guix.texi:17664
32044 #, no-wrap
32045 msgid "{@code{zabbix-server-configuration} parameter} string user"
32046 msgstr ""
32047
32048 #. type: deftypevr
32049 #: doc/guix.texi:17666
32050 msgid "User who will run the Zabbix server."
32051 msgstr ""
32052
32053 #. type: deftypevr
32054 #: doc/guix.texi:17668 doc/guix.texi:17675 doc/guix.texi:17689
32055 #: doc/guix.texi:17696 doc/guix.texi:17797 doc/guix.texi:17804
32056 #: doc/guix.texi:17915 doc/guix.texi:17922
32057 msgid "Defaults to @samp{\"zabbix\"}."
32058 msgstr ""
32059
32060 #. type: deftypevr
32061 #: doc/guix.texi:17671
32062 #, no-wrap
32063 msgid "{@code{zabbix-server-configuration} parameter} group group"
32064 msgstr ""
32065
32066 #. type: deftypevr
32067 #: doc/guix.texi:17673
32068 msgid "Group who will run the Zabbix server."
32069 msgstr ""
32070
32071 #. type: deftypevr
32072 #: doc/guix.texi:17678
32073 #, no-wrap
32074 msgid "{@code{zabbix-server-configuration} parameter} string db-host"
32075 msgstr ""
32076
32077 #. type: deftypevr
32078 #: doc/guix.texi:17680 doc/guix.texi:17899
32079 msgid "Database host name."
32080 msgstr ""
32081
32082 #. type: deftypevr
32083 #: doc/guix.texi:17682
32084 msgid "Defaults to @samp{\"127.0.0.1\"}."
32085 msgstr ""
32086
32087 #. type: deftypevr
32088 #: doc/guix.texi:17685
32089 #, no-wrap
32090 msgid "{@code{zabbix-server-configuration} parameter} string db-name"
32091 msgstr ""
32092
32093 #. type: deftypevr
32094 #: doc/guix.texi:17687 doc/guix.texi:17913
32095 msgid "Database name."
32096 msgstr ""
32097
32098 #. type: deftypevr
32099 #: doc/guix.texi:17692
32100 #, no-wrap
32101 msgid "{@code{zabbix-server-configuration} parameter} string db-user"
32102 msgstr ""
32103
32104 #. type: deftypevr
32105 #: doc/guix.texi:17694 doc/guix.texi:17920
32106 msgid "Database user."
32107 msgstr ""
32108
32109 #. type: deftypevr
32110 #: doc/guix.texi:17699
32111 #, no-wrap
32112 msgid "{@code{zabbix-server-configuration} parameter} string db-password"
32113 msgstr ""
32114
32115 #. type: deftypevr
32116 #: doc/guix.texi:17702
32117 msgid "Database password. Please, use @code{include-files} with @code{DBPassword=SECRET} inside a specified file instead."
32118 msgstr ""
32119
32120 #. type: deftypevr
32121 #: doc/guix.texi:17707
32122 #, no-wrap
32123 msgid "{@code{zabbix-server-configuration} parameter} number db-port"
32124 msgstr ""
32125
32126 #. type: deftypevr
32127 #: doc/guix.texi:17709 doc/guix.texi:17906
32128 msgid "Database port."
32129 msgstr ""
32130
32131 #. type: deftypevr
32132 #: doc/guix.texi:17711 doc/guix.texi:17908
32133 msgid "Defaults to @samp{5432}."
32134 msgstr ""
32135
32136 #. type: deftypevr
32137 #: doc/guix.texi:17714
32138 #, no-wrap
32139 msgid "{@code{zabbix-server-configuration} parameter} string log-type"
32140 msgstr ""
32141
32142 #. type: deftypevr
32143 #: doc/guix.texi:17716 doc/guix.texi:17817
32144 msgid "Specifies where log messages are written to:"
32145 msgstr ""
32146
32147 #. type: itemize
32148 #: doc/guix.texi:17720 doc/guix.texi:17821
32149 msgid "@code{system} - syslog."
32150 msgstr ""
32151
32152 #. type: itemize
32153 #: doc/guix.texi:17723 doc/guix.texi:17824
32154 msgid "@code{file} - file specified with @code{log-file} parameter."
32155 msgstr ""
32156
32157 #. type: itemize
32158 #: doc/guix.texi:17726 doc/guix.texi:17827
32159 msgid "@code{console} - standard output."
32160 msgstr ""
32161
32162 #. type: deftypevr
32163 #: doc/guix.texi:17733
32164 #, no-wrap
32165 msgid "{@code{zabbix-server-configuration} parameter} string log-file"
32166 msgstr ""
32167
32168 #. type: deftypevr
32169 #: doc/guix.texi:17735 doc/guix.texi:17836
32170 msgid "Log file name for @code{log-type} @code{file} parameter."
32171 msgstr ""
32172
32173 #. type: deftypevr
32174 #: doc/guix.texi:17737
32175 msgid "Defaults to @samp{\"/var/log/zabbix/server.log\"}."
32176 msgstr ""
32177
32178 #. type: deftypevr
32179 #: doc/guix.texi:17740
32180 #, no-wrap
32181 msgid "{@code{zabbix-server-configuration} parameter} string pid-file"
32182 msgstr ""
32183
32184 #. type: deftypevr
32185 #: doc/guix.texi:17742 doc/guix.texi:17843
32186 msgid "Name of PID file."
32187 msgstr ""
32188
32189 #. type: deftypevr
32190 #: doc/guix.texi:17744
32191 msgid "Defaults to @samp{\"/var/run/zabbix/zabbix_server.pid\"}."
32192 msgstr ""
32193
32194 #. type: deftypevr
32195 #: doc/guix.texi:17747
32196 #, no-wrap
32197 msgid "{@code{zabbix-server-configuration} parameter} string ssl-ca-location"
32198 msgstr ""
32199
32200 #. type: deftypevr
32201 #: doc/guix.texi:17750
32202 msgid "The location of certificate authority (CA) files for SSL server certificate verification."
32203 msgstr ""
32204
32205 #. type: deftypevr
32206 #: doc/guix.texi:17752
32207 msgid "Defaults to @samp{\"/etc/ssl/certs/ca-certificates.crt\"}."
32208 msgstr ""
32209
32210 #. type: deftypevr
32211 #: doc/guix.texi:17755
32212 #, no-wrap
32213 msgid "{@code{zabbix-server-configuration} parameter} string ssl-cert-location"
32214 msgstr ""
32215
32216 #. type: deftypevr
32217 #: doc/guix.texi:17757
32218 msgid "Location of SSL client certificates."
32219 msgstr ""
32220
32221 #. type: deftypevr
32222 #: doc/guix.texi:17759
32223 msgid "Defaults to @samp{\"/etc/ssl/certs\"}."
32224 msgstr ""
32225
32226 #. type: deftypevr
32227 #: doc/guix.texi:17762
32228 #, no-wrap
32229 msgid "{@code{zabbix-server-configuration} parameter} string extra-options"
32230 msgstr ""
32231
32232 #. type: deftypevr
32233 #: doc/guix.texi:17764 doc/guix.texi:17868
32234 msgid "Extra options will be appended to Zabbix server configuration file."
32235 msgstr ""
32236
32237 #. type: deftypevr
32238 #: doc/guix.texi:17769
32239 #, no-wrap
32240 msgid "{@code{zabbix-server-configuration} parameter} include-files include-files"
32241 msgstr ""
32242
32243 #. type: deftypevr
32244 #: doc/guix.texi:17772 doc/guix.texi:17876
32245 msgid "You may include individual files or all files in a directory in the configuration file."
32246 msgstr ""
32247
32248 #. type: subsubheading
32249 #: doc/guix.texi:17779
32250 #, no-wrap
32251 msgid "Zabbix agent"
32252 msgstr ""
32253
32254 #. type: cindex
32255 #: doc/guix.texi:17780
32256 #, no-wrap
32257 msgid "zabbix zabbix-agent"
32258 msgstr ""
32259
32260 #. type: Plain text
32261 #: doc/guix.texi:17783
32262 msgid "Zabbix agent gathers information for Zabbix server."
32263 msgstr ""
32264
32265 #. type: Plain text
32266 #: doc/guix.texi:17787
32267 msgid "Available @code{zabbix-agent-configuration} fields are:"
32268 msgstr ""
32269
32270 #. type: deftypevr
32271 #: doc/guix.texi:17788
32272 #, no-wrap
32273 msgid "{@code{zabbix-agent-configuration} parameter} package zabbix-agent"
32274 msgstr ""
32275
32276 #. type: deftypevr
32277 #: doc/guix.texi:17790
32278 msgid "The zabbix-agent package."
32279 msgstr ""
32280
32281 #. type: deftypevr
32282 #: doc/guix.texi:17793
32283 #, no-wrap
32284 msgid "{@code{zabbix-agent-configuration} parameter} string user"
32285 msgstr ""
32286
32287 #. type: deftypevr
32288 #: doc/guix.texi:17795
32289 msgid "User who will run the Zabbix agent."
32290 msgstr ""
32291
32292 #. type: deftypevr
32293 #: doc/guix.texi:17800
32294 #, no-wrap
32295 msgid "{@code{zabbix-agent-configuration} parameter} group group"
32296 msgstr ""
32297
32298 #. type: deftypevr
32299 #: doc/guix.texi:17802
32300 msgid "Group who will run the Zabbix agent."
32301 msgstr ""
32302
32303 #. type: deftypevr
32304 #: doc/guix.texi:17807
32305 #, no-wrap
32306 msgid "{@code{zabbix-agent-configuration} parameter} string hostname"
32307 msgstr ""
32308
32309 #. type: deftypevr
32310 #: doc/guix.texi:17810
32311 msgid "Unique, case sensitive hostname which is required for active checks and must match hostname as configured on the server."
32312 msgstr ""
32313
32314 #. type: deftypevr
32315 #: doc/guix.texi:17812
32316 msgid "Defaults to @samp{\"Zabbix server\"}."
32317 msgstr ""
32318
32319 #. type: deftypevr
32320 #: doc/guix.texi:17815
32321 #, no-wrap
32322 msgid "{@code{zabbix-agent-configuration} parameter} string log-type"
32323 msgstr ""
32324
32325 #. type: deftypevr
32326 #: doc/guix.texi:17834
32327 #, no-wrap
32328 msgid "{@code{zabbix-agent-configuration} parameter} string log-file"
32329 msgstr ""
32330
32331 #. type: deftypevr
32332 #: doc/guix.texi:17838
32333 msgid "Defaults to @samp{\"/var/log/zabbix/agent.log\"}."
32334 msgstr ""
32335
32336 #. type: deftypevr
32337 #: doc/guix.texi:17841
32338 #, no-wrap
32339 msgid "{@code{zabbix-agent-configuration} parameter} string pid-file"
32340 msgstr ""
32341
32342 #. type: deftypevr
32343 #: doc/guix.texi:17845
32344 msgid "Defaults to @samp{\"/var/run/zabbix/zabbix_agent.pid\"}."
32345 msgstr ""
32346
32347 #. type: deftypevr
32348 #: doc/guix.texi:17848
32349 #, no-wrap
32350 msgid "{@code{zabbix-agent-configuration} parameter} list server"
32351 msgstr ""
32352
32353 #. type: deftypevr
32354 #: doc/guix.texi:17852
32355 msgid "List of IP addresses, optionally in CIDR notation, or hostnames of Zabbix servers and Zabbix proxies. Incoming connections will be accepted only from the hosts listed here."
32356 msgstr ""
32357
32358 #. type: deftypevr
32359 #: doc/guix.texi:17854 doc/guix.texi:17863
32360 msgid "Defaults to @samp{(\"127.0.0.1\")}."
32361 msgstr ""
32362
32363 #. type: deftypevr
32364 #: doc/guix.texi:17857
32365 #, no-wrap
32366 msgid "{@code{zabbix-agent-configuration} parameter} list server-active"
32367 msgstr ""
32368
32369 #. type: deftypevr
32370 #: doc/guix.texi:17861
32371 msgid "List of IP:port (or hostname:port) pairs of Zabbix servers and Zabbix proxies for active checks. If port is not specified, default port is used. If this parameter is not specified, active checks are disabled."
32372 msgstr ""
32373
32374 #. type: deftypevr
32375 #: doc/guix.texi:17866
32376 #, no-wrap
32377 msgid "{@code{zabbix-agent-configuration} parameter} string extra-options"
32378 msgstr ""
32379
32380 #. type: deftypevr
32381 #: doc/guix.texi:17873
32382 #, no-wrap
32383 msgid "{@code{zabbix-agent-configuration} parameter} include-files include-files"
32384 msgstr ""
32385
32386 #. type: subsubheading
32387 #: doc/guix.texi:17883
32388 #, no-wrap
32389 msgid "Zabbix front-end"
32390 msgstr ""
32391
32392 #. type: cindex
32393 #: doc/guix.texi:17884
32394 #, no-wrap
32395 msgid "zabbix zabbix-front-end"
32396 msgstr ""
32397
32398 #. type: Plain text
32399 #: doc/guix.texi:17887
32400 msgid "This service provides a WEB interface to Zabbix server."
32401 msgstr ""
32402
32403 #. type: Plain text
32404 #: doc/guix.texi:17891
32405 msgid "Available @code{zabbix-front-end-configuration} fields are:"
32406 msgstr ""
32407
32408 #. type: deftypevr
32409 #: doc/guix.texi:17892
32410 #, no-wrap
32411 msgid "{@code{zabbix-front-end-configuration} parameter} nginx-server-configuration-list nginx"
32412 msgstr ""
32413
32414 #. type: deftypevr
32415 #: doc/guix.texi:17894 doc/guix.texi:22296
32416 msgid "NGINX configuration."
32417 msgstr ""
32418
32419 #. type: deftypevr
32420 #: doc/guix.texi:17897
32421 #, no-wrap
32422 msgid "{@code{zabbix-front-end-configuration} parameter} string db-host"
32423 msgstr ""
32424
32425 #. type: deftypevr
32426 #: doc/guix.texi:17904
32427 #, no-wrap
32428 msgid "{@code{zabbix-front-end-configuration} parameter} number db-port"
32429 msgstr ""
32430
32431 #. type: deftypevr
32432 #: doc/guix.texi:17911
32433 #, no-wrap
32434 msgid "{@code{zabbix-front-end-configuration} parameter} string db-name"
32435 msgstr ""
32436
32437 #. type: deftypevr
32438 #: doc/guix.texi:17918
32439 #, no-wrap
32440 msgid "{@code{zabbix-front-end-configuration} parameter} string db-user"
32441 msgstr ""
32442
32443 #. type: deftypevr
32444 #: doc/guix.texi:17925
32445 #, no-wrap
32446 msgid "{@code{zabbix-front-end-configuration} parameter} string db-password"
32447 msgstr ""
32448
32449 #. type: deftypevr
32450 #: doc/guix.texi:17927
32451 msgid "Database password. Please, use @code{db-secret-file} instead."
32452 msgstr ""
32453
32454 #. type: deftypevr
32455 #: doc/guix.texi:17932
32456 #, no-wrap
32457 msgid "{@code{zabbix-front-end-configuration} parameter} string db-secret-file"
32458 msgstr ""
32459
32460 #. type: deftypevr
32461 #: doc/guix.texi:17936
32462 msgid "Secret file which will be appended to @file{zabbix.conf.php} file. This file contains credentials for use by Zabbix front-end. You are expected to create it manually."
32463 msgstr ""
32464
32465 #. type: deftypevr
32466 #: doc/guix.texi:17941
32467 #, no-wrap
32468 msgid "{@code{zabbix-front-end-configuration} parameter} string zabbix-host"
32469 msgstr ""
32470
32471 #. type: deftypevr
32472 #: doc/guix.texi:17943
32473 msgid "Zabbix server hostname."
32474 msgstr ""
32475
32476 #. type: deftypevr
32477 #: doc/guix.texi:17948
32478 #, no-wrap
32479 msgid "{@code{zabbix-front-end-configuration} parameter} number zabbix-port"
32480 msgstr ""
32481
32482 #. type: deftypevr
32483 #: doc/guix.texi:17950
32484 msgid "Zabbix server port."
32485 msgstr ""
32486
32487 #. type: deftypevr
32488 #: doc/guix.texi:17952
32489 msgid "Defaults to @samp{10051}."
32490 msgstr ""
32491
32492 #. type: cindex
32493 #: doc/guix.texi:17960
32494 #, no-wrap
32495 msgid "Kerberos"
32496 msgstr ""
32497
32498 #. type: Plain text
32499 #: doc/guix.texi:17964
32500 msgid "The @code{(gnu services kerberos)} module provides services relating to the authentication protocol @dfn{Kerberos}."
32501 msgstr ""
32502
32503 #. type: subsubheading
32504 #: doc/guix.texi:17965
32505 #, no-wrap
32506 msgid "Krb5 Service"
32507 msgstr ""
32508
32509 #. type: Plain text
32510 #: doc/guix.texi:17972
32511 msgid "Programs using a Kerberos client library normally expect a configuration file in @file{/etc/krb5.conf}. This service generates such a file from a definition provided in the operating system declaration. It does not cause any daemon to be started."
32512 msgstr ""
32513
32514 #. type: Plain text
32515 #: doc/guix.texi:17976
32516 msgid "No ``keytab'' files are provided by this service---you must explicitly create them. This service is known to work with the MIT client library, @code{mit-krb5}. Other implementations have not been tested."
32517 msgstr ""
32518
32519 #. type: defvr
32520 #: doc/guix.texi:17977
32521 #, no-wrap
32522 msgid "{Scheme Variable} krb5-service-type"
32523 msgstr ""
32524
32525 #. type: defvr
32526 #: doc/guix.texi:17979
32527 msgid "A service type for Kerberos 5 clients."
32528 msgstr ""
32529
32530 #. type: Plain text
32531 #: doc/guix.texi:17983
32532 msgid "Here is an example of its use:"
32533 msgstr ""
32534
32535 #. type: lisp
32536 #: doc/guix.texi:17997
32537 #, no-wrap
32538 msgid ""
32539 "(service krb5-service-type\n"
32540 " (krb5-configuration\n"
32541 " (default-realm \"EXAMPLE.COM\")\n"
32542 " (allow-weak-crypto? #t)\n"
32543 " (realms (list\n"
32544 " (krb5-realm\n"
32545 " (name \"EXAMPLE.COM\")\n"
32546 " (admin-server \"groucho.example.com\")\n"
32547 " (kdc \"karl.example.com\"))\n"
32548 " (krb5-realm\n"
32549 " (name \"ARGRX.EDU\")\n"
32550 " (admin-server \"kerb-admin.argrx.edu\")\n"
32551 " (kdc \"keys.argrx.edu\"))))))\n"
32552 msgstr ""
32553
32554 #. type: Plain text
32555 #: doc/guix.texi:18001
32556 msgid "This example provides a Kerberos@tie{}5 client configuration which:"
32557 msgstr ""
32558
32559 #. type: item
32560 #: doc/guix.texi:18002
32561 #, no-wrap
32562 msgid "Recognizes two realms, @i{viz:} ``EXAMPLE.COM'' and ``ARGRX.EDU'', both"
32563 msgstr ""
32564
32565 #. type: itemize
32566 #: doc/guix.texi:18004
32567 msgid "of which have distinct administration servers and key distribution centers;"
32568 msgstr ""
32569
32570 #. type: item
32571 #: doc/guix.texi:18004
32572 #, no-wrap
32573 msgid "Will default to the realm ``EXAMPLE.COM'' if the realm is not explicitly"
32574 msgstr ""
32575
32576 #. type: itemize
32577 #: doc/guix.texi:18006
32578 msgid "specified by clients;"
32579 msgstr ""
32580
32581 #. type: item
32582 #: doc/guix.texi:18006
32583 #, no-wrap
32584 msgid "Accepts services which only support encryption types known to be weak."
32585 msgstr ""
32586
32587 #. type: Plain text
32588 #: doc/guix.texi:18014
32589 msgid "The @code{krb5-realm} and @code{krb5-configuration} types have many fields. Only the most commonly used ones are described here. For a full list, and more detailed explanation of each, see the MIT @uref{https://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf} documentation."
32590 msgstr ""
32591
32592 #. type: deftp
32593 #: doc/guix.texi:18016
32594 #, no-wrap
32595 msgid "{Data Type} krb5-realm"
32596 msgstr ""
32597
32598 #. type: cindex
32599 #: doc/guix.texi:18017
32600 #, no-wrap
32601 msgid "realm, kerberos"
32602 msgstr ""
32603
32604 #. type: table
32605 #: doc/guix.texi:18023
32606 msgid "This field is a string identifying the name of the realm. A common convention is to use the fully qualified DNS name of your organization, converted to upper case."
32607 msgstr ""
32608
32609 #. type: code{#1}
32610 #: doc/guix.texi:18024
32611 #, no-wrap
32612 msgid "admin-server"
32613 msgstr ""
32614
32615 #. type: table
32616 #: doc/guix.texi:18027
32617 msgid "This field is a string identifying the host where the administration server is running."
32618 msgstr ""
32619
32620 #. type: code{#1}
32621 #: doc/guix.texi:18028
32622 #, no-wrap
32623 msgid "kdc"
32624 msgstr ""
32625
32626 #. type: table
32627 #: doc/guix.texi:18031
32628 msgid "This field is a string identifying the key distribution center for the realm."
32629 msgstr ""
32630
32631 #. type: deftp
32632 #: doc/guix.texi:18034
32633 #, no-wrap
32634 msgid "{Data Type} krb5-configuration"
32635 msgstr ""
32636
32637 #. type: item
32638 #: doc/guix.texi:18037
32639 #, no-wrap
32640 msgid "@code{allow-weak-crypto?} (default: @code{#f})"
32641 msgstr ""
32642
32643 #. type: table
32644 #: doc/guix.texi:18040
32645 msgid "If this flag is @code{#t} then services which only offer encryption algorithms known to be weak will be accepted."
32646 msgstr ""
32647
32648 #. type: item
32649 #: doc/guix.texi:18041
32650 #, no-wrap
32651 msgid "@code{default-realm} (default: @code{#f})"
32652 msgstr ""
32653
32654 #. type: table
32655 #: doc/guix.texi:18048
32656 msgid "This field should be a string identifying the default Kerberos realm for the client. You should set this field to the name of your Kerberos realm. If this value is @code{#f} then a realm must be specified with every Kerberos principal when invoking programs such as @command{kinit}."
32657 msgstr ""
32658
32659 #. type: code{#1}
32660 #: doc/guix.texi:18049
32661 #, no-wrap
32662 msgid "realms"
32663 msgstr ""
32664
32665 #. type: table
32666 #: doc/guix.texi:18054
32667 msgid "This should be a non-empty list of @code{krb5-realm} objects, which clients may access. Normally, one of them will have a @code{name} field matching the @code{default-realm} field."
32668 msgstr ""
32669
32670 #. type: subsubheading
32671 #: doc/guix.texi:18058
32672 #, no-wrap
32673 msgid "PAM krb5 Service"
32674 msgstr ""
32675
32676 #. type: cindex
32677 #: doc/guix.texi:18059
32678 #, no-wrap
32679 msgid "pam-krb5"
32680 msgstr ""
32681
32682 #. type: Plain text
32683 #: doc/guix.texi:18065
32684 msgid "The @code{pam-krb5} service allows for login authentication and password management via Kerberos. You will need this service if you want PAM enabled applications to authenticate users using Kerberos."
32685 msgstr ""
32686
32687 #. type: defvr
32688 #: doc/guix.texi:18066
32689 #, no-wrap
32690 msgid "{Scheme Variable} pam-krb5-service-type"
32691 msgstr ""
32692
32693 #. type: defvr
32694 #: doc/guix.texi:18068
32695 msgid "A service type for the Kerberos 5 PAM module."
32696 msgstr ""
32697
32698 #. type: deftp
32699 #: doc/guix.texi:18070
32700 #, no-wrap
32701 msgid "{Data Type} pam-krb5-configuration"
32702 msgstr ""
32703
32704 #. type: deftp
32705 #: doc/guix.texi:18073
32706 msgid "Data type representing the configuration of the Kerberos 5 PAM module. This type has the following parameters:"
32707 msgstr ""
32708
32709 #. type: item
32710 #: doc/guix.texi:18074
32711 #, no-wrap
32712 msgid "@code{pam-krb5} (default: @code{pam-krb5})"
32713 msgstr ""
32714
32715 #. type: table
32716 #: doc/guix.texi:18076
32717 msgid "The pam-krb5 package to use."
32718 msgstr ""
32719
32720 #. type: item
32721 #: doc/guix.texi:18077
32722 #, no-wrap
32723 msgid "@code{minimum-uid} (default: @code{1000})"
32724 msgstr ""
32725
32726 #. type: table
32727 #: doc/guix.texi:18080
32728 msgid "The smallest user ID for which Kerberos authentications should be attempted. Local accounts with lower values will silently fail to authenticate."
32729 msgstr ""
32730
32731 #. type: cindex
32732 #: doc/guix.texi:18086
32733 #, no-wrap
32734 msgid "LDAP"
32735 msgstr ""
32736
32737 #. type: cindex
32738 #: doc/guix.texi:18087
32739 #, no-wrap
32740 msgid "nslcd, LDAP service"
32741 msgstr ""
32742
32743 #. type: Plain text
32744 #: doc/guix.texi:18094
32745 msgid "The @code{(gnu services authentication)} module provides the @code{nslcd-service-type}, which can be used to authenticate against an LDAP server. In addition to configuring the service itself, you may want to add @code{ldap} as a name service to the Name Service Switch. @xref{Name Service Switch} for detailed information."
32746 msgstr ""
32747
32748 #. type: Plain text
32749 #: doc/guix.texi:18098
32750 msgid "Here is a simple operating system declaration with a default configuration of the @code{nslcd-service-type} and a Name Service Switch configuration that consults the @code{ldap} name service last:"
32751 msgstr ""
32752
32753 #. type: example
32754 #: doc/guix.texi:18121
32755 #, no-wrap
32756 msgid ""
32757 "(use-service-modules authentication)\n"
32758 "(use-modules (gnu system nss))\n"
32759 "...\n"
32760 "(operating-system\n"
32761 " ...\n"
32762 " (services\n"
32763 " (cons*\n"
32764 " (service nslcd-service-type)\n"
32765 " (service dhcp-client-service-type)\n"
32766 " %base-services))\n"
32767 " (name-service-switch\n"
32768 " (let ((services (list (name-service (name \"db\"))\n"
32769 " (name-service (name \"files\"))\n"
32770 " (name-service (name \"ldap\")))))\n"
32771 " (name-service-switch\n"
32772 " (inherit %mdns-host-lookup-nss)\n"
32773 " (password services)\n"
32774 " (shadow services)\n"
32775 " (group services)\n"
32776 " (netgroup services)\n"
32777 " (gshadow services)))))\n"
32778 msgstr ""
32779
32780 #. type: Plain text
32781 #: doc/guix.texi:18126
32782 msgid "Available @code{nslcd-configuration} fields are:"
32783 msgstr ""
32784
32785 #. type: deftypevr
32786 #: doc/guix.texi:18127
32787 #, no-wrap
32788 msgid "{@code{nslcd-configuration} parameter} package nss-pam-ldapd"
32789 msgstr ""
32790
32791 #. type: deftypevr
32792 #: doc/guix.texi:18129
32793 msgid "The @code{nss-pam-ldapd} package to use."
32794 msgstr ""
32795
32796 #. type: deftypevr
32797 #: doc/guix.texi:18132
32798 #, no-wrap
32799 msgid "{@code{nslcd-configuration} parameter} maybe-number threads"
32800 msgstr ""
32801
32802 #. type: deftypevr
32803 #: doc/guix.texi:18136
32804 msgid "The number of threads to start that can handle requests and perform LDAP queries. Each thread opens a separate connection to the LDAP server. The default is to start 5 threads."
32805 msgstr ""
32806
32807 #. type: deftypevr
32808 #: doc/guix.texi:18138 doc/guix.texi:18180 doc/guix.texi:18188
32809 #: doc/guix.texi:18196 doc/guix.texi:18204 doc/guix.texi:18213
32810 #: doc/guix.texi:18221 doc/guix.texi:18228 doc/guix.texi:18236
32811 #: doc/guix.texi:18244 doc/guix.texi:18254 doc/guix.texi:18261
32812 #: doc/guix.texi:18285 doc/guix.texi:18293 doc/guix.texi:18319
32813 #: doc/guix.texi:18328 doc/guix.texi:18337 doc/guix.texi:18346
32814 #: doc/guix.texi:18355 doc/guix.texi:18364 doc/guix.texi:18372
32815 #: doc/guix.texi:18380 doc/guix.texi:18387 doc/guix.texi:18395
32816 #: doc/guix.texi:18402 doc/guix.texi:18410 doc/guix.texi:18418
32817 #: doc/guix.texi:18427 doc/guix.texi:18436 doc/guix.texi:18444
32818 #: doc/guix.texi:18452 doc/guix.texi:18460 doc/guix.texi:18471
32819 #: doc/guix.texi:18481 doc/guix.texi:18492 doc/guix.texi:18501
32820 #: doc/guix.texi:18511 doc/guix.texi:18519 doc/guix.texi:18530
32821 #: doc/guix.texi:18539 doc/guix.texi:18549 doc/guix.texi:20839
32822 #: doc/guix.texi:20846 doc/guix.texi:20853 doc/guix.texi:20860
32823 #: doc/guix.texi:20867 doc/guix.texi:20874 doc/guix.texi:20882
32824 #: doc/guix.texi:20890 doc/guix.texi:20897 doc/guix.texi:20904
32825 #: doc/guix.texi:20911 doc/guix.texi:20918 doc/guix.texi:20948
32826 #: doc/guix.texi:20986 doc/guix.texi:20993 doc/guix.texi:21002
32827 #: doc/guix.texi:21024 doc/guix.texi:21032 doc/guix.texi:21039
32828 #: doc/guix.texi:21194 doc/guix.texi:21214 doc/guix.texi:21229
32829 #: doc/guix.texi:21236 doc/guix.texi:23034 doc/guix.texi:23042
32830 #: doc/guix.texi:23050 doc/guix.texi:23058 doc/guix.texi:23066
32831 #: doc/guix.texi:23074
32832 msgid "Defaults to @samp{disabled}."
32833 msgstr ""
32834
32835 #. type: deftypevr
32836 #: doc/guix.texi:18141
32837 #, no-wrap
32838 msgid "{@code{nslcd-configuration} parameter} string uid"
32839 msgstr ""
32840
32841 #. type: deftypevr
32842 #: doc/guix.texi:18143
32843 msgid "This specifies the user id with which the daemon should be run."
32844 msgstr ""
32845
32846 #. type: deftypevr
32847 #: doc/guix.texi:18145 doc/guix.texi:18152
32848 msgid "Defaults to @samp{\"nslcd\"}."
32849 msgstr ""
32850
32851 #. type: deftypevr
32852 #: doc/guix.texi:18148
32853 #, no-wrap
32854 msgid "{@code{nslcd-configuration} parameter} string gid"
32855 msgstr ""
32856
32857 #. type: deftypevr
32858 #: doc/guix.texi:18150
32859 msgid "This specifies the group id with which the daemon should be run."
32860 msgstr ""
32861
32862 #. type: deftypevr
32863 #: doc/guix.texi:18155
32864 #, no-wrap
32865 msgid "{@code{nslcd-configuration} parameter} log-option log"
32866 msgstr ""
32867
32868 #. type: deftypevr
32869 #: doc/guix.texi:18162
32870 msgid "This option controls the way logging is done via a list containing SCHEME and LEVEL. The SCHEME argument may either be the symbols \"none\" or \"syslog\", or an absolute file name. The LEVEL argument is optional and specifies the log level. The log level may be one of the following symbols: \"crit\", \"error\", \"warning\", \"notice\", \"info\" or \"debug\". All messages with the specified log level or higher are logged."
32871 msgstr ""
32872
32873 #. type: deftypevr
32874 #: doc/guix.texi:18164
32875 msgid "Defaults to @samp{(\"/var/log/nslcd\" info)}."
32876 msgstr ""
32877
32878 #. type: deftypevr
32879 #: doc/guix.texi:18167
32880 #, no-wrap
32881 msgid "{@code{nslcd-configuration} parameter} list uri"
32882 msgstr ""
32883
32884 #. type: deftypevr
32885 #: doc/guix.texi:18170
32886 msgid "The list of LDAP server URIs. Normally, only the first server will be used with the following servers as fall-back."
32887 msgstr ""
32888
32889 #. type: deftypevr
32890 #: doc/guix.texi:18172
32891 msgid "Defaults to @samp{(\"ldap://localhost:389/\")}."
32892 msgstr ""
32893
32894 #. type: deftypevr
32895 #: doc/guix.texi:18175
32896 #, no-wrap
32897 msgid "{@code{nslcd-configuration} parameter} maybe-string ldap-version"
32898 msgstr ""
32899
32900 #. type: deftypevr
32901 #: doc/guix.texi:18178
32902 msgid "The version of the LDAP protocol to use. The default is to use the maximum version supported by the LDAP library."
32903 msgstr ""
32904
32905 #. type: deftypevr
32906 #: doc/guix.texi:18183
32907 #, no-wrap
32908 msgid "{@code{nslcd-configuration} parameter} maybe-string binddn"
32909 msgstr ""
32910
32911 #. type: deftypevr
32912 #: doc/guix.texi:18186
32913 msgid "Specifies the distinguished name with which to bind to the directory server for lookups. The default is to bind anonymously."
32914 msgstr ""
32915
32916 #. type: deftypevr
32917 #: doc/guix.texi:18191
32918 #, no-wrap
32919 msgid "{@code{nslcd-configuration} parameter} maybe-string bindpw"
32920 msgstr ""
32921
32922 #. type: deftypevr
32923 #: doc/guix.texi:18194
32924 msgid "Specifies the credentials with which to bind. This option is only applicable when used with binddn."
32925 msgstr ""
32926
32927 #. type: deftypevr
32928 #: doc/guix.texi:18199
32929 #, no-wrap
32930 msgid "{@code{nslcd-configuration} parameter} maybe-string rootpwmoddn"
32931 msgstr ""
32932
32933 #. type: deftypevr
32934 #: doc/guix.texi:18202
32935 msgid "Specifies the distinguished name to use when the root user tries to modify a user's password using the PAM module."
32936 msgstr ""
32937
32938 #. type: deftypevr
32939 #: doc/guix.texi:18207
32940 #, no-wrap
32941 msgid "{@code{nslcd-configuration} parameter} maybe-string rootpwmodpw"
32942 msgstr ""
32943
32944 #. type: deftypevr
32945 #: doc/guix.texi:18211
32946 msgid "Specifies the credentials with which to bind if the root user tries to change a user's password. This option is only applicable when used with rootpwmoddn"
32947 msgstr ""
32948
32949 #. type: deftypevr
32950 #: doc/guix.texi:18216
32951 #, no-wrap
32952 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-mech"
32953 msgstr ""
32954
32955 #. type: deftypevr
32956 #: doc/guix.texi:18219
32957 msgid "Specifies the SASL mechanism to be used when performing SASL authentication."
32958 msgstr ""
32959
32960 #. type: deftypevr
32961 #: doc/guix.texi:18224
32962 #, no-wrap
32963 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-realm"
32964 msgstr ""
32965
32966 #. type: deftypevr
32967 #: doc/guix.texi:18226
32968 msgid "Specifies the SASL realm to be used when performing SASL authentication."
32969 msgstr ""
32970
32971 #. type: deftypevr
32972 #: doc/guix.texi:18231
32973 #, no-wrap
32974 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-authcid"
32975 msgstr ""
32976
32977 #. type: deftypevr
32978 #: doc/guix.texi:18234
32979 msgid "Specifies the authentication identity to be used when performing SASL authentication."
32980 msgstr ""
32981
32982 #. type: deftypevr
32983 #: doc/guix.texi:18239
32984 #, no-wrap
32985 msgid "{@code{nslcd-configuration} parameter} maybe-string sasl-authzid"
32986 msgstr ""
32987
32988 #. type: deftypevr
32989 #: doc/guix.texi:18242
32990 msgid "Specifies the authorization identity to be used when performing SASL authentication."
32991 msgstr ""
32992
32993 #. type: deftypevr
32994 #: doc/guix.texi:18247
32995 #, no-wrap
32996 msgid "{@code{nslcd-configuration} parameter} maybe-boolean sasl-canonicalize?"
32997 msgstr ""
32998
32999 #. type: deftypevr
33000 #: doc/guix.texi:18252
33001 msgid "Determines whether the LDAP server host name should be canonicalised. If this is enabled the LDAP library will do a reverse host name lookup. By default, it is left up to the LDAP library whether this check is performed or not."
33002 msgstr ""
33003
33004 #. type: deftypevr
33005 #: doc/guix.texi:18257
33006 #, no-wrap
33007 msgid "{@code{nslcd-configuration} parameter} maybe-string krb5-ccname"
33008 msgstr ""
33009
33010 #. type: deftypevr
33011 #: doc/guix.texi:18259
33012 msgid "Set the name for the GSS-API Kerberos credentials cache."
33013 msgstr ""
33014
33015 #. type: deftypevr
33016 #: doc/guix.texi:18264
33017 #, no-wrap
33018 msgid "{@code{nslcd-configuration} parameter} string base"
33019 msgstr ""
33020
33021 #. type: deftypevr
33022 #: doc/guix.texi:18266
33023 msgid "The directory search base."
33024 msgstr ""
33025
33026 #. type: deftypevr
33027 #: doc/guix.texi:18268
33028 msgid "Defaults to @samp{\"dc=example,dc=com\"}."
33029 msgstr ""
33030
33031 #. type: deftypevr
33032 #: doc/guix.texi:18271
33033 #, no-wrap
33034 msgid "{@code{nslcd-configuration} parameter} scope-option scope"
33035 msgstr ""
33036
33037 #. type: deftypevr
33038 #: doc/guix.texi:18275
33039 msgid "Specifies the search scope (subtree, onelevel, base or children). The default scope is subtree; base scope is almost never useful for name service lookups; children scope is not supported on all servers."
33040 msgstr ""
33041
33042 #. type: deftypevr
33043 #: doc/guix.texi:18277
33044 msgid "Defaults to @samp{(subtree)}."
33045 msgstr ""
33046
33047 #. type: deftypevr
33048 #: doc/guix.texi:18280
33049 #, no-wrap
33050 msgid "{@code{nslcd-configuration} parameter} maybe-deref-option deref"
33051 msgstr ""
33052
33053 #. type: deftypevr
33054 #: doc/guix.texi:18283
33055 msgid "Specifies the policy for dereferencing aliases. The default policy is to never dereference aliases."
33056 msgstr ""
33057
33058 #. type: deftypevr
33059 #: doc/guix.texi:18288
33060 #, no-wrap
33061 msgid "{@code{nslcd-configuration} parameter} maybe-boolean referrals"
33062 msgstr ""
33063
33064 #. type: deftypevr
33065 #: doc/guix.texi:18291
33066 msgid "Specifies whether automatic referral chasing should be enabled. The default behaviour is to chase referrals."
33067 msgstr ""
33068
33069 #. type: deftypevr
33070 #: doc/guix.texi:18296
33071 #, no-wrap
33072 msgid "{@code{nslcd-configuration} parameter} list-of-map-entries maps"
33073 msgstr ""
33074
33075 #. type: deftypevr
33076 #: doc/guix.texi:18301
33077 msgid "This option allows for custom attributes to be looked up instead of the default RFC 2307 attributes. It is a list of maps, each consisting of the name of a map, the RFC 2307 attribute to match and the query expression for the attribute as it is available in the directory."
33078 msgstr ""
33079
33080 #. type: deftypevr
33081 #: doc/guix.texi:18306
33082 #, no-wrap
33083 msgid "{@code{nslcd-configuration} parameter} list-of-filter-entries filters"
33084 msgstr ""
33085
33086 #. type: deftypevr
33087 #: doc/guix.texi:18309
33088 msgid "A list of filters consisting of the name of a map to which the filter applies and an LDAP search filter expression."
33089 msgstr ""
33090
33091 #. type: deftypevr
33092 #: doc/guix.texi:18314
33093 #, no-wrap
33094 msgid "{@code{nslcd-configuration} parameter} maybe-number bind-timelimit"
33095 msgstr ""
33096
33097 #. type: deftypevr
33098 #: doc/guix.texi:18317
33099 msgid "Specifies the time limit in seconds to use when connecting to the directory server. The default value is 10 seconds."
33100 msgstr ""
33101
33102 #. type: deftypevr
33103 #: doc/guix.texi:18322
33104 #, no-wrap
33105 msgid "{@code{nslcd-configuration} parameter} maybe-number timelimit"
33106 msgstr ""
33107
33108 #. type: deftypevr
33109 #: doc/guix.texi:18326
33110 msgid "Specifies the time limit (in seconds) to wait for a response from the LDAP server. A value of zero, which is the default, is to wait indefinitely for searches to be completed."
33111 msgstr ""
33112
33113 #. type: deftypevr
33114 #: doc/guix.texi:18331
33115 #, no-wrap
33116 msgid "{@code{nslcd-configuration} parameter} maybe-number idle-timelimit"
33117 msgstr ""
33118
33119 #. type: deftypevr
33120 #: doc/guix.texi:18335
33121 msgid "Specifies the period if inactivity (in seconds) after which the con‐ nection to the LDAP server will be closed. The default is not to time out connections."
33122 msgstr ""
33123
33124 #. type: deftypevr
33125 #: doc/guix.texi:18340
33126 #, no-wrap
33127 msgid "{@code{nslcd-configuration} parameter} maybe-number reconnect-sleeptime"
33128 msgstr ""
33129
33130 #. type: deftypevr
33131 #: doc/guix.texi:18344
33132 msgid "Specifies the number of seconds to sleep when connecting to all LDAP servers fails. By default one second is waited between the first failure and the first retry."
33133 msgstr ""
33134
33135 #. type: deftypevr
33136 #: doc/guix.texi:18349
33137 #, no-wrap
33138 msgid "{@code{nslcd-configuration} parameter} maybe-number reconnect-retrytime"
33139 msgstr ""
33140
33141 #. type: deftypevr
33142 #: doc/guix.texi:18353
33143 msgid "Specifies the time after which the LDAP server is considered to be permanently unavailable. Once this time is reached retries will be done only once per this time period. The default value is 10 seconds."
33144 msgstr ""
33145
33146 #. type: deftypevr
33147 #: doc/guix.texi:18358
33148 #, no-wrap
33149 msgid "{@code{nslcd-configuration} parameter} maybe-ssl-option ssl"
33150 msgstr ""
33151
33152 #. type: deftypevr
33153 #: doc/guix.texi:18362
33154 msgid "Specifies whether to use SSL/TLS or not (the default is not to). If 'start-tls is specified then StartTLS is used rather than raw LDAP over SSL."
33155 msgstr ""
33156
33157 #. type: deftypevr
33158 #: doc/guix.texi:18367
33159 #, no-wrap
33160 msgid "{@code{nslcd-configuration} parameter} maybe-tls-reqcert-option tls-reqcert"
33161 msgstr ""
33162
33163 #. type: deftypevr
33164 #: doc/guix.texi:18370
33165 msgid "Specifies what checks to perform on a server-supplied certificate. The meaning of the values is described in the ldap.conf(5) manual page."
33166 msgstr ""
33167
33168 #. type: deftypevr
33169 #: doc/guix.texi:18375
33170 #, no-wrap
33171 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-cacertdir"
33172 msgstr ""
33173
33174 #. type: deftypevr
33175 #: doc/guix.texi:18378
33176 msgid "Specifies the directory containing X.509 certificates for peer authen‐ tication. This parameter is ignored when using GnuTLS."
33177 msgstr ""
33178
33179 #. type: deftypevr
33180 #: doc/guix.texi:18383
33181 #, no-wrap
33182 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-cacertfile"
33183 msgstr ""
33184
33185 #. type: deftypevr
33186 #: doc/guix.texi:18385
33187 msgid "Specifies the path to the X.509 certificate for peer authentication."
33188 msgstr ""
33189
33190 #. type: deftypevr
33191 #: doc/guix.texi:18390
33192 #, no-wrap
33193 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-randfile"
33194 msgstr ""
33195
33196 #. type: deftypevr
33197 #: doc/guix.texi:18393
33198 msgid "Specifies the path to an entropy source. This parameter is ignored when using GnuTLS."
33199 msgstr ""
33200
33201 #. type: deftypevr
33202 #: doc/guix.texi:18398
33203 #, no-wrap
33204 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-ciphers"
33205 msgstr ""
33206
33207 #. type: deftypevr
33208 #: doc/guix.texi:18400
33209 msgid "Specifies the ciphers to use for TLS as a string."
33210 msgstr ""
33211
33212 #. type: deftypevr
33213 #: doc/guix.texi:18405
33214 #, no-wrap
33215 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-cert"
33216 msgstr ""
33217
33218 #. type: deftypevr
33219 #: doc/guix.texi:18408
33220 msgid "Specifies the path to the file containing the local certificate for client TLS authentication."
33221 msgstr ""
33222
33223 #. type: deftypevr
33224 #: doc/guix.texi:18413
33225 #, no-wrap
33226 msgid "{@code{nslcd-configuration} parameter} maybe-string tls-key"
33227 msgstr ""
33228
33229 #. type: deftypevr
33230 #: doc/guix.texi:18416
33231 msgid "Specifies the path to the file containing the private key for client TLS authentication."
33232 msgstr ""
33233
33234 #. type: deftypevr
33235 #: doc/guix.texi:18421
33236 #, no-wrap
33237 msgid "{@code{nslcd-configuration} parameter} maybe-number pagesize"
33238 msgstr ""
33239
33240 #. type: deftypevr
33241 #: doc/guix.texi:18425
33242 msgid "Set this to a number greater than 0 to request paged results from the LDAP server in accordance with RFC2696. The default (0) is to not request paged results."
33243 msgstr ""
33244
33245 #. type: deftypevr
33246 #: doc/guix.texi:18430
33247 #, no-wrap
33248 msgid "{@code{nslcd-configuration} parameter} maybe-ignore-users-option nss-initgroups-ignoreusers"
33249 msgstr ""
33250
33251 #. type: deftypevr
33252 #: doc/guix.texi:18434
33253 msgid "This option prevents group membership lookups through LDAP for the specified users. Alternatively, the value 'all-local may be used. With that value nslcd builds a full list of non-LDAP users on startup."
33254 msgstr ""
33255
33256 #. type: deftypevr
33257 #: doc/guix.texi:18439
33258 #, no-wrap
33259 msgid "{@code{nslcd-configuration} parameter} maybe-number nss-min-uid"
33260 msgstr ""
33261
33262 #. type: deftypevr
33263 #: doc/guix.texi:18442
33264 msgid "This option ensures that LDAP users with a numeric user id lower than the specified value are ignored."
33265 msgstr ""
33266
33267 #. type: deftypevr
33268 #: doc/guix.texi:18447
33269 #, no-wrap
33270 msgid "{@code{nslcd-configuration} parameter} maybe-number nss-uid-offset"
33271 msgstr ""
33272
33273 #. type: deftypevr
33274 #: doc/guix.texi:18450
33275 msgid "This option specifies an offset that is added to all LDAP numeric user ids. This can be used to avoid user id collisions with local users."
33276 msgstr ""
33277
33278 #. type: deftypevr
33279 #: doc/guix.texi:18455
33280 #, no-wrap
33281 msgid "{@code{nslcd-configuration} parameter} maybe-number nss-gid-offset"
33282 msgstr ""
33283
33284 #. type: deftypevr
33285 #: doc/guix.texi:18458
33286 msgid "This option specifies an offset that is added to all LDAP numeric group ids. This can be used to avoid user id collisions with local groups."
33287 msgstr ""
33288
33289 #. type: deftypevr
33290 #: doc/guix.texi:18463
33291 #, no-wrap
33292 msgid "{@code{nslcd-configuration} parameter} maybe-boolean nss-nested-groups"
33293 msgstr ""
33294
33295 #. type: deftypevr
33296 #: doc/guix.texi:18469
33297 msgid "If this option is set, the member attribute of a group may point to another group. Members of nested groups are also returned in the higher level group and parent groups are returned when finding groups for a specific user. The default is not to perform extra searches for nested groups."
33298 msgstr ""
33299
33300 #. type: deftypevr
33301 #: doc/guix.texi:18474
33302 #, no-wrap
33303 msgid "{@code{nslcd-configuration} parameter} maybe-boolean nss-getgrent-skipmembers"
33304 msgstr ""
33305
33306 #. type: deftypevr
33307 #: doc/guix.texi:18479
33308 msgid "If this option is set, the group member list is not retrieved when looking up groups. Lookups for finding which groups a user belongs to will remain functional so the user will likely still get the correct groups assigned on login."
33309 msgstr ""
33310
33311 #. type: deftypevr
33312 #: doc/guix.texi:18484
33313 #, no-wrap
33314 msgid "{@code{nslcd-configuration} parameter} maybe-boolean nss-disable-enumeration"
33315 msgstr ""
33316
33317 #. type: deftypevr
33318 #: doc/guix.texi:18490
33319 msgid "If this option is set, functions which cause all user/group entries to be loaded from the directory will not succeed in doing so. This can dramatically reduce LDAP server load in situations where there are a great number of users and/or groups. This option is not recommended for most configurations."
33320 msgstr ""
33321
33322 #. type: deftypevr
33323 #: doc/guix.texi:18495
33324 #, no-wrap
33325 msgid "{@code{nslcd-configuration} parameter} maybe-string validnames"
33326 msgstr ""
33327
33328 #. type: deftypevr
33329 #: doc/guix.texi:18499
33330 msgid "This option can be used to specify how user and group names are verified within the system. This pattern is used to check all user and group names that are requested and returned from LDAP."
33331 msgstr ""
33332
33333 #. type: deftypevr
33334 #: doc/guix.texi:18504
33335 #, no-wrap
33336 msgid "{@code{nslcd-configuration} parameter} maybe-boolean ignorecase"
33337 msgstr ""
33338
33339 #. type: deftypevr
33340 #: doc/guix.texi:18509
33341 msgid "This specifies whether or not to perform searches using case-insensitive matching. Enabling this could open up the system to authorization bypass vulnerabilities and introduce nscd cache poisoning vulnerabilities which allow denial of service."
33342 msgstr ""
33343
33344 #. type: deftypevr
33345 #: doc/guix.texi:18514
33346 #, no-wrap
33347 msgid "{@code{nslcd-configuration} parameter} maybe-boolean pam-authc-ppolicy"
33348 msgstr ""
33349
33350 #. type: deftypevr
33351 #: doc/guix.texi:18517
33352 msgid "This option specifies whether password policy controls are requested and handled from the LDAP server when performing user authentication."
33353 msgstr ""
33354
33355 #. type: deftypevr
33356 #: doc/guix.texi:18522
33357 #, no-wrap
33358 msgid "{@code{nslcd-configuration} parameter} maybe-string pam-authc-search"
33359 msgstr ""
33360
33361 #. type: deftypevr
33362 #: doc/guix.texi:18528
33363 msgid "By default nslcd performs an LDAP search with the user's credentials after BIND (authentication) to ensure that the BIND operation was successful. The default search is a simple check to see if the user's DN exists. A search filter can be specified that will be used instead. It should return at least one entry."
33364 msgstr ""
33365
33366 #. type: deftypevr
33367 #: doc/guix.texi:18533
33368 #, no-wrap
33369 msgid "{@code{nslcd-configuration} parameter} maybe-string pam-authz-search"
33370 msgstr ""
33371
33372 #. type: deftypevr
33373 #: doc/guix.texi:18537
33374 msgid "This option allows flexible fine tuning of the authorisation check that should be performed. The search filter specified is executed and if any entries match, access is granted, otherwise access is denied."
33375 msgstr ""
33376
33377 #. type: deftypevr
33378 #: doc/guix.texi:18542
33379 #, no-wrap
33380 msgid "{@code{nslcd-configuration} parameter} maybe-string pam-password-prohibit-message"
33381 msgstr ""
33382
33383 #. type: deftypevr
33384 #: doc/guix.texi:18547
33385 msgid "If this option is set password modification using pam_ldap will be denied and the specified message will be presented to the user instead. The message can be used to direct the user to an alternative means of changing their password."
33386 msgstr ""
33387
33388 #. type: deftypevr
33389 #: doc/guix.texi:18552
33390 #, no-wrap
33391 msgid "{@code{nslcd-configuration} parameter} list pam-services"
33392 msgstr ""
33393
33394 #. type: deftypevr
33395 #: doc/guix.texi:18554
33396 msgid "List of pam service names for which LDAP authentication should suffice."
33397 msgstr ""
33398
33399 #. type: cindex
33400 #: doc/guix.texi:18565
33401 #, no-wrap
33402 msgid "web"
33403 msgstr ""
33404
33405 #. type: cindex
33406 #: doc/guix.texi:18566
33407 #, no-wrap
33408 msgid "www"
33409 msgstr ""
33410
33411 #. type: cindex
33412 #: doc/guix.texi:18567
33413 #, no-wrap
33414 msgid "HTTP"
33415 msgstr ""
33416
33417 #. type: Plain text
33418 #: doc/guix.texi:18570
33419 msgid "The @code{(gnu services web)} module provides the Apache HTTP Server, the nginx web server, and also a fastcgi wrapper daemon."
33420 msgstr ""
33421
33422 #. type: subsubheading
33423 #: doc/guix.texi:18571
33424 #, no-wrap
33425 msgid "Apache HTTP Server"
33426 msgstr ""
33427
33428 #. type: deffn
33429 #: doc/guix.texi:18573
33430 #, no-wrap
33431 msgid "{Scheme Variable} httpd-service-type"
33432 msgstr ""
33433
33434 #. type: deffn
33435 #: doc/guix.texi:18577
33436 msgid "Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server (@dfn{httpd}). The value for this service type is a @code{httpd-configuration} record."
33437 msgstr ""
33438
33439 #. type: deffn
33440 #: doc/guix.texi:18579 doc/guix.texi:18760
33441 msgid "A simple example configuration is given below."
33442 msgstr ""
33443
33444 #. type: example
33445 #: doc/guix.texi:18587
33446 #, no-wrap
33447 msgid ""
33448 "(service httpd-service-type\n"
33449 " (httpd-configuration\n"
33450 " (config\n"
33451 " (httpd-config-file\n"
33452 " (server-name \"www.example.com\")\n"
33453 " (document-root \"/srv/http/www.example.com\")))))\n"
33454 msgstr ""
33455
33456 #. type: deffn
33457 #: doc/guix.texi:18591
33458 msgid "Other services can also extend the @code{httpd-service-type} to add to the configuration."
33459 msgstr ""
33460
33461 #. type: example
33462 #: doc/guix.texi:18600 doc/guix.texi:18740
33463 #, no-wrap
33464 msgid ""
33465 "(simple-service 'my-extra-server httpd-service-type\n"
33466 " (list\n"
33467 " (httpd-virtualhost\n"
33468 " \"*:80\"\n"
33469 " (list (string-append\n"
33470 " \"ServerName \"www.example.com\n"
33471 " DocumentRoot \\\"/srv/http/www.example.com\\\"\")))))\n"
33472 msgstr ""
33473
33474 #. type: Plain text
33475 #: doc/guix.texi:18606
33476 msgid "The details for the @code{httpd-configuration}, @code{httpd-module}, @code{httpd-config-file} and @code{httpd-virtualhost} record types are given below."
33477 msgstr ""
33478
33479 #. type: deffn
33480 #: doc/guix.texi:18607
33481 #, no-wrap
33482 msgid "{Data Type} httpd-configuration"
33483 msgstr ""
33484
33485 #. type: deffn
33486 #: doc/guix.texi:18609
33487 msgid "This data type represents the configuration for the httpd service."
33488 msgstr ""
33489
33490 #. type: item
33491 #: doc/guix.texi:18611
33492 #, no-wrap
33493 msgid "@code{package} (default: @code{httpd})"
33494 msgstr ""
33495
33496 #. type: table
33497 #: doc/guix.texi:18613
33498 msgid "The httpd package to use."
33499 msgstr ""
33500
33501 #. type: item
33502 #: doc/guix.texi:18614 doc/guix.texi:18703
33503 #, no-wrap
33504 msgid "@code{pid-file} (default: @code{\"/var/run/httpd\"})"
33505 msgstr ""
33506
33507 #. type: table
33508 #: doc/guix.texi:18616
33509 msgid "The pid file used by the shepherd-service."
33510 msgstr ""
33511
33512 #. type: item
33513 #: doc/guix.texi:18617
33514 #, no-wrap
33515 msgid "@code{config} (default: @code{(httpd-config-file)})"
33516 msgstr ""
33517
33518 #. type: table
33519 #: doc/guix.texi:18622
33520 msgid "The configuration file to use with the httpd service. The default value is a @code{httpd-config-file} record, but this can also be a different G-expression that generates a file, for example a @code{plain-file}. A file outside of the store can also be specified through a string."
33521 msgstr ""
33522
33523 #. type: deffn
33524 #: doc/guix.texi:18626
33525 #, no-wrap
33526 msgid "{Data Type} httpd-module"
33527 msgstr ""
33528
33529 #. type: deffn
33530 #: doc/guix.texi:18628
33531 msgid "This data type represents a module for the httpd service."
33532 msgstr ""
33533
33534 #. type: table
33535 #: doc/guix.texi:18632
33536 msgid "The name of the module."
33537 msgstr ""
33538
33539 #. type: table
33540 #: doc/guix.texi:18638
33541 msgid "The file for the module. This can be relative to the httpd package being used, the absolute location of a file, or a G-expression for a file within the store, for example @code{(file-append mod-wsgi \"/modules/mod_wsgi.so\")}."
33542 msgstr ""
33543
33544 #. type: defvr
33545 #: doc/guix.texi:18642
33546 #, no-wrap
33547 msgid "{Scheme Variable} %default-httpd-modules"
33548 msgstr ""
33549
33550 #. type: defvr
33551 #: doc/guix.texi:18644
33552 msgid "A default list of @code{httpd-module} objects."
33553 msgstr ""
33554
33555 #. type: deffn
33556 #: doc/guix.texi:18646
33557 #, no-wrap
33558 msgid "{Data Type} httpd-config-file"
33559 msgstr ""
33560
33561 #. type: deffn
33562 #: doc/guix.texi:18648
33563 msgid "This data type represents a configuration file for the httpd service."
33564 msgstr ""
33565
33566 #. type: item
33567 #: doc/guix.texi:18650
33568 #, no-wrap
33569 msgid "@code{modules} (default: @code{%default-httpd-modules})"
33570 msgstr ""
33571
33572 #. type: table
33573 #: doc/guix.texi:18653
33574 msgid "The modules to load. Additional modules can be added here, or loaded by additional configuration."
33575 msgstr ""
33576
33577 #. type: table
33578 #: doc/guix.texi:18656
33579 msgid "For example, in order to handle requests for PHP files, you can use Apache’s @code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}:"
33580 msgstr ""
33581
33582 #. type: example
33583 #: doc/guix.texi:18678
33584 #, no-wrap
33585 msgid ""
33586 "(service httpd-service-type\n"
33587 " (httpd-configuration\n"
33588 " (config\n"
33589 " (httpd-config-file\n"
33590 " (modules (cons*\n"
33591 " (httpd-module\n"
33592 " (name \"proxy_module\")\n"
33593 " (file \"modules/mod_proxy.so\"))\n"
33594 " (httpd-module\n"
33595 " (name \"proxy_fcgi_module\")\n"
33596 " (file \"modules/mod_proxy_fcgi.so\"))\n"
33597 " %default-httpd-modules))\n"
33598 " (extra-config (list \"\\\n"
33599 "<FilesMatch \\\\.php$>\n"
33600 " SetHandler \\\"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\\\"\n"
33601 "</FilesMatch>\"))))))\n"
33602 "(service php-fpm-service-type\n"
33603 " (php-fpm-configuration\n"
33604 " (socket \"/var/run/php-fpm.sock\")\n"
33605 " (socket-group \"httpd\")))\n"
33606 msgstr ""
33607
33608 #. type: item
33609 #: doc/guix.texi:18680
33610 #, no-wrap
33611 msgid "@code{server-root} (default: @code{httpd})"
33612 msgstr ""
33613
33614 #. type: table
33615 #: doc/guix.texi:18684
33616 msgid "The @code{ServerRoot} in the configuration file, defaults to the httpd package. Directives including @code{Include} and @code{LoadModule} are taken as relative to the server root."
33617 msgstr ""
33618
33619 #. type: item
33620 #: doc/guix.texi:18685
33621 #, no-wrap
33622 msgid "@code{server-name} (default: @code{#f})"
33623 msgstr ""
33624
33625 #. type: table
33626 #: doc/guix.texi:18689
33627 msgid "The @code{ServerName} in the configuration file, used to specify the request scheme, hostname and port that the server uses to identify itself."
33628 msgstr ""
33629
33630 #. type: table
33631 #: doc/guix.texi:18693
33632 msgid "This doesn't need to be set in the server config, and can be specifyed in virtual hosts. The default is @code{#f} to not specify a @code{ServerName}."
33633 msgstr ""
33634
33635 #. type: item
33636 #: doc/guix.texi:18694
33637 #, no-wrap
33638 msgid "@code{document-root} (default: @code{\"/srv/http\"})"
33639 msgstr ""
33640
33641 #. type: table
33642 #: doc/guix.texi:18696
33643 msgid "The @code{DocumentRoot} from which files will be served."
33644 msgstr ""
33645
33646 #. type: item
33647 #: doc/guix.texi:18697
33648 #, no-wrap
33649 msgid "@code{listen} (default: @code{'(\"80\")})"
33650 msgstr ""
33651
33652 #. type: table
33653 #: doc/guix.texi:18702
33654 msgid "The list of values for the @code{Listen} directives in the config file. The value should be a list of strings, when each string can specify the port number to listen on, and optionally the IP address and protocol to use."
33655 msgstr ""
33656
33657 #. type: table
33658 #: doc/guix.texi:18707
33659 msgid "The @code{PidFile} to use. This should match the @code{pid-file} set in the @code{httpd-configuration} so that the Shepherd service is configured correctly."
33660 msgstr ""
33661
33662 #. type: item
33663 #: doc/guix.texi:18708
33664 #, no-wrap
33665 msgid "@code{error-log} (default: @code{\"/var/log/httpd/error_log\"})"
33666 msgstr ""
33667
33668 #. type: table
33669 #: doc/guix.texi:18710
33670 msgid "The @code{ErrorLog} to which the server will log errors."
33671 msgstr ""
33672
33673 #. type: item
33674 #: doc/guix.texi:18711
33675 #, no-wrap
33676 msgid "@code{user} (default: @code{\"httpd\"})"
33677 msgstr ""
33678
33679 #. type: table
33680 #: doc/guix.texi:18713
33681 msgid "The @code{User} which the server will answer requests as."
33682 msgstr ""
33683
33684 #. type: item
33685 #: doc/guix.texi:18714
33686 #, no-wrap
33687 msgid "@code{group} (default: @code{\"httpd\"})"
33688 msgstr ""
33689
33690 #. type: table
33691 #: doc/guix.texi:18716
33692 msgid "The @code{Group} which the server will answer requests as."
33693 msgstr ""
33694
33695 #. type: item
33696 #: doc/guix.texi:18717
33697 #, no-wrap
33698 msgid "@code{extra-config} (default: @code{(list \"TypesConfig etc/httpd/mime.types\")})"
33699 msgstr ""
33700
33701 #. type: table
33702 #: doc/guix.texi:18720
33703 msgid "A flat list of strings and G-expressions which will be added to the end of the configuration file."
33704 msgstr ""
33705
33706 #. type: table
33707 #: doc/guix.texi:18723
33708 msgid "Any values which the service is extended with will be appended to this list."
33709 msgstr ""
33710
33711 #. type: deffn
33712 #: doc/guix.texi:18727
33713 #, no-wrap
33714 msgid "{Data Type} httpd-virtualhost"
33715 msgstr ""
33716
33717 #. type: deffn
33718 #: doc/guix.texi:18729
33719 msgid "This data type represents a virtualhost configuration block for the httpd service."
33720 msgstr ""
33721
33722 #. type: deffn
33723 #: doc/guix.texi:18731
33724 msgid "These should be added to the extra-config for the httpd-service."
33725 msgstr ""
33726
33727 #. type: code{#1}
33728 #: doc/guix.texi:18743
33729 #, no-wrap
33730 msgid "addresses-and-ports"
33731 msgstr ""
33732
33733 #. type: table
33734 #: doc/guix.texi:18745
33735 msgid "The addresses and ports for the @code{VirtualHost} directive."
33736 msgstr ""
33737
33738 #. type: code{#1}
33739 #: doc/guix.texi:18746
33740 #, no-wrap
33741 msgid "contents"
33742 msgstr ""
33743
33744 #. type: table
33745 #: doc/guix.texi:18749
33746 msgid "The contents of the @code{VirtualHost} directive, this should be a list of strings and G-expressions."
33747 msgstr ""
33748
33749 #. type: subsubheading
33750 #: doc/guix.texi:18753
33751 #, no-wrap
33752 msgid "NGINX"
33753 msgstr ""
33754
33755 #. type: deffn
33756 #: doc/guix.texi:18755
33757 #, no-wrap
33758 msgid "{Scheme Variable} nginx-service-type"
33759 msgstr ""
33760
33761 #. type: deffn
33762 #: doc/guix.texi:18758
33763 msgid "Service type for the @uref{https://nginx.org/,NGinx} web server. The value for this service type is a @code{<nginx-configuration>} record."
33764 msgstr ""
33765
33766 #. type: example
33767 #: doc/guix.texi:18768 doc/guix.texi:18822
33768 #, no-wrap
33769 msgid ""
33770 "(service nginx-service-type\n"
33771 " (nginx-configuration\n"
33772 " (server-blocks\n"
33773 " (list (nginx-server-configuration\n"
33774 " (server-name '(\"www.example.com\"))\n"
33775 " (root \"/srv/http/www.example.com\"))))))\n"
33776 msgstr ""
33777
33778 #. type: deffn
33779 #: doc/guix.texi:18773
33780 msgid "In addition to adding server blocks to the service configuration directly, this service can be extended by other services to add server blocks, as in this example:"
33781 msgstr ""
33782
33783 #. type: example
33784 #: doc/guix.texi:18779
33785 #, no-wrap
33786 msgid ""
33787 "(simple-service 'my-extra-server nginx-service-type\n"
33788 " (list (nginx-server-configuration\n"
33789 " (root \"/srv/http/extra-website\")\n"
33790 " (try-files (list \"$uri\" \"$uri/index.html\")))))\n"
33791 msgstr ""
33792
33793 #. type: Plain text
33794 #: doc/guix.texi:18790
33795 msgid "At startup, @command{nginx} has not yet read its configuration file, so it uses a default file to log error messages. If it fails to load its configuration file, that is where error messages are logged. After the configuration file is loaded, the default error log file changes as per configuration. In our case, startup error messages can be found in @file{/var/run/nginx/logs/error.log}, and after configuration in @file{/var/log/nginx/error.log}. The second location can be changed with the @var{log-directory} configuration option."
33796 msgstr ""
33797
33798 #. type: deffn
33799 #: doc/guix.texi:18791
33800 #, no-wrap
33801 msgid "{Data Type} nginx-configuration"
33802 msgstr ""
33803
33804 #. type: deffn
33805 #: doc/guix.texi:18795
33806 msgid "This data type represents the configuration for NGinx. Some configuration can be done through this and the other provided record types, or alternatively, a config file can be provided."
33807 msgstr ""
33808
33809 #. type: item
33810 #: doc/guix.texi:18797
33811 #, no-wrap
33812 msgid "@code{nginx} (default: @code{nginx})"
33813 msgstr ""
33814
33815 #. type: table
33816 #: doc/guix.texi:18799
33817 msgid "The nginx package to use."
33818 msgstr ""
33819
33820 #. type: item
33821 #: doc/guix.texi:18800
33822 #, no-wrap
33823 msgid "@code{log-directory} (default: @code{\"/var/log/nginx\"})"
33824 msgstr ""
33825
33826 #. type: table
33827 #: doc/guix.texi:18802
33828 msgid "The directory to which NGinx will write log files."
33829 msgstr ""
33830
33831 #. type: item
33832 #: doc/guix.texi:18803
33833 #, no-wrap
33834 msgid "@code{run-directory} (default: @code{\"/var/run/nginx\"})"
33835 msgstr ""
33836
33837 #. type: table
33838 #: doc/guix.texi:18806
33839 msgid "The directory in which NGinx will create a pid file, and write temporary files."
33840 msgstr ""
33841
33842 #. type: item
33843 #: doc/guix.texi:18807
33844 #, no-wrap
33845 msgid "@code{server-blocks} (default: @code{'()})"
33846 msgstr ""
33847
33848 #. type: table
33849 #: doc/guix.texi:18811
33850 msgid "A list of @dfn{server blocks} to create in the generated configuration file, the elements should be of type @code{<nginx-server-configuration>}."
33851 msgstr ""
33852
33853 #. type: table
33854 #: doc/guix.texi:18815
33855 msgid "The following example would setup NGinx to serve @code{www.example.com} from the @code{/srv/http/www.example.com} directory, without using HTTPS."
33856 msgstr ""
33857
33858 #. type: item
33859 #: doc/guix.texi:18824
33860 #, no-wrap
33861 msgid "@code{upstream-blocks} (default: @code{'()})"
33862 msgstr ""
33863
33864 #. type: table
33865 #: doc/guix.texi:18828
33866 msgid "A list of @dfn{upstream blocks} to create in the generated configuration file, the elements should be of type @code{<nginx-upstream-configuration>}."
33867 msgstr ""
33868
33869 #. type: table
33870 #: doc/guix.texi:18835
33871 msgid "Configuring upstreams through the @code{upstream-blocks} can be useful when combined with @code{locations} in the @code{<nginx-server-configuration>} records. The following example creates a server configuration with one location configuration, that will proxy requests to a upstream configuration, which will handle requests with two servers."
33872 msgstr ""
33873
33874 #. type: example
33875 #: doc/guix.texi:18854
33876 #, no-wrap
33877 msgid ""
33878 "(service\n"
33879 " nginx-service-type\n"
33880 " (nginx-configuration\n"
33881 " (server-blocks\n"
33882 " (list (nginx-server-configuration\n"
33883 " (server-name '(\"www.example.com\"))\n"
33884 " (root \"/srv/http/www.example.com\")\n"
33885 " (locations\n"
33886 " (list\n"
33887 " (nginx-location-configuration\n"
33888 " (uri \"/path1\")\n"
33889 " (body '(\"proxy_pass http://server-proxy;\"))))))))\n"
33890 " (upstream-blocks\n"
33891 " (list (nginx-upstream-configuration\n"
33892 " (name \"server-proxy\")\n"
33893 " (servers (list \"server1.example.com\"\n"
33894 " \"server2.example.com\")))))))\n"
33895 msgstr ""
33896
33897 #. type: table
33898 #: doc/guix.texi:18862
33899 msgid "If a configuration @var{file} is provided, this will be used, rather than generating a configuration file from the provided @code{log-directory}, @code{run-directory}, @code{server-blocks} and @code{upstream-blocks}. For proper operation, these arguments should match what is in @var{file} to ensure that the directories are created when the service is activated."
33900 msgstr ""
33901
33902 #. type: table
33903 #: doc/guix.texi:18866
33904 msgid "This can be useful if you have an existing configuration file, or it's not possible to do what is required through the other parts of the nginx-configuration record."
33905 msgstr ""
33906
33907 #. type: item
33908 #: doc/guix.texi:18867
33909 #, no-wrap
33910 msgid "@code{server-names-hash-bucket-size} (default: @code{#f})"
33911 msgstr ""
33912
33913 #. type: table
33914 #: doc/guix.texi:18870
33915 msgid "Bucket size for the server names hash tables, defaults to @code{#f} to use the size of the processors cache line."
33916 msgstr ""
33917
33918 #. type: item
33919 #: doc/guix.texi:18871
33920 #, no-wrap
33921 msgid "@code{server-names-hash-bucket-max-size} (default: @code{#f})"
33922 msgstr ""
33923
33924 #. type: table
33925 #: doc/guix.texi:18873
33926 msgid "Maximum bucket size for the server names hash tables."
33927 msgstr ""
33928
33929 #. type: table
33930 #: doc/guix.texi:18877
33931 msgid "Extra content for the @code{http} block. Should be string or a string valued G-expression."
33932 msgstr ""
33933
33934 #. type: deftp
33935 #: doc/guix.texi:18881
33936 #, no-wrap
33937 msgid "{Data Type} nginx-server-configuration"
33938 msgstr ""
33939
33940 #. type: deftp
33941 #: doc/guix.texi:18884
33942 msgid "Data type representing the configuration of an nginx server block. This type has the following parameters:"
33943 msgstr ""
33944
33945 #. type: item
33946 #: doc/guix.texi:18886
33947 #, no-wrap
33948 msgid "@code{listen} (default: @code{'(\"80\" \"443 ssl\")})"
33949 msgstr ""
33950
33951 #. type: table
33952 #: doc/guix.texi:18891
33953 msgid "Each @code{listen} directive sets the address and port for IP, or the path for a UNIX-domain socket on which the server will accept requests. Both address and port, or only address or only port can be specified. An address may also be a hostname, for example:"
33954 msgstr ""
33955
33956 #. type: example
33957 #: doc/guix.texi:18894
33958 #, no-wrap
33959 msgid "'(\"127.0.0.1:8000\" \"127.0.0.1\" \"8000\" \"*:8000\" \"localhost:8000\")\n"
33960 msgstr ""
33961
33962 #. type: item
33963 #: doc/guix.texi:18896
33964 #, no-wrap
33965 msgid "@code{server-name} (default: @code{(list 'default)})"
33966 msgstr ""
33967
33968 #. type: table
33969 #: doc/guix.texi:18899
33970 msgid "A list of server names this server represents. @code{'default} represents the default server for connections matching no other server."
33971 msgstr ""
33972
33973 #. type: item
33974 #: doc/guix.texi:18900
33975 #, no-wrap
33976 msgid "@code{root} (default: @code{\"/srv/http\"})"
33977 msgstr ""
33978
33979 #. type: table
33980 #: doc/guix.texi:18902
33981 msgid "Root of the website nginx will serve."
33982 msgstr ""
33983
33984 #. type: item
33985 #: doc/guix.texi:18903
33986 #, no-wrap
33987 msgid "@code{locations} (default: @code{'()})"
33988 msgstr ""
33989
33990 #. type: table
33991 #: doc/guix.texi:18907
33992 msgid "A list of @dfn{nginx-location-configuration} or @dfn{nginx-named-location-configuration} records to use within this server block."
33993 msgstr ""
33994
33995 #. type: item
33996 #: doc/guix.texi:18908
33997 #, no-wrap
33998 msgid "@code{index} (default: @code{(list \"index.html\")})"
33999 msgstr ""
34000
34001 #. type: table
34002 #: doc/guix.texi:18911
34003 msgid "Index files to look for when clients ask for a directory. If it cannot be found, Nginx will send the list of files in the directory."
34004 msgstr ""
34005
34006 #. type: item
34007 #: doc/guix.texi:18912
34008 #, no-wrap
34009 msgid "@code{try-files} (default: @code{'()})"
34010 msgstr ""
34011
34012 #. type: table
34013 #: doc/guix.texi:18915
34014 msgid "A list of files whose existence is checked in the specified order. @code{nginx} will use the first file it finds to process the request."
34015 msgstr ""
34016
34017 #. type: item
34018 #: doc/guix.texi:18916
34019 #, no-wrap
34020 msgid "@code{ssl-certificate} (default: @code{#f})"
34021 msgstr ""
34022
34023 #. type: table
34024 #: doc/guix.texi:18919
34025 msgid "Where to find the certificate for secure connections. Set it to @code{#f} if you don't have a certificate or you don't want to use HTTPS."
34026 msgstr ""
34027
34028 #. type: item
34029 #: doc/guix.texi:18920
34030 #, no-wrap
34031 msgid "@code{ssl-certificate-key} (default: @code{#f})"
34032 msgstr ""
34033
34034 #. type: table
34035 #: doc/guix.texi:18923
34036 msgid "Where to find the private key for secure connections. Set it to @code{#f} if you don't have a key or you don't want to use HTTPS."
34037 msgstr ""
34038
34039 #. type: item
34040 #: doc/guix.texi:18924
34041 #, no-wrap
34042 msgid "@code{server-tokens?} (default: @code{#f})"
34043 msgstr ""
34044
34045 #. type: table
34046 #: doc/guix.texi:18926
34047 msgid "Whether the server should add its configuration to response."
34048 msgstr ""
34049
34050 #. type: item
34051 #: doc/guix.texi:18927
34052 #, no-wrap
34053 msgid "@code{raw-content} (default: @code{'()})"
34054 msgstr ""
34055
34056 #. type: table
34057 #: doc/guix.texi:18929
34058 msgid "A list of raw lines added to the server block."
34059 msgstr ""
34060
34061 #. type: deftp
34062 #: doc/guix.texi:18933
34063 #, no-wrap
34064 msgid "{Data Type} nginx-upstream-configuration"
34065 msgstr ""
34066
34067 #. type: deftp
34068 #: doc/guix.texi:18936
34069 msgid "Data type representing the configuration of an nginx @code{upstream} block. This type has the following parameters:"
34070 msgstr ""
34071
34072 #. type: table
34073 #: doc/guix.texi:18940
34074 msgid "Name for this group of servers."
34075 msgstr ""
34076
34077 #. type: code{#1}
34078 #: doc/guix.texi:18941
34079 #, no-wrap
34080 msgid "servers"
34081 msgstr ""
34082
34083 #. type: table
34084 #: doc/guix.texi:18948
34085 msgid "Specify the addresses of the servers in the group. The address can be specified as a IP address (e.g.@: @samp{127.0.0.1}), domain name (e.g.@: @samp{backend1.example.com}) or a path to a UNIX socket using the prefix @samp{unix:}. For addresses using an IP address or domain name, the default port is 80, and a different port can be specified explicitly."
34086 msgstr ""
34087
34088 #. type: deftp
34089 #: doc/guix.texi:18952
34090 #, no-wrap
34091 msgid "{Data Type} nginx-location-configuration"
34092 msgstr ""
34093
34094 #. type: deftp
34095 #: doc/guix.texi:18955
34096 msgid "Data type representing the configuration of an nginx @code{location} block. This type has the following parameters:"
34097 msgstr ""
34098
34099 #. type: table
34100 #: doc/guix.texi:18959
34101 msgid "URI which this location block matches."
34102 msgstr ""
34103
34104 #. type: anchor{#1}
34105 #: doc/guix.texi:18961
34106 msgid "nginx-location-configuration body"
34107 msgstr ""
34108
34109 #. type: code{#1}
34110 #: doc/guix.texi:18961 doc/guix.texi:18982
34111 #, no-wrap
34112 msgid "body"
34113 msgstr ""
34114
34115 #. type: table
34116 #: doc/guix.texi:18968
34117 msgid "Body of the location block, specified as a list of strings. This can contain many configuration directives. For example, to pass requests to a upstream server group defined using an @code{nginx-upstream-configuration} block, the following directive would be specified in the body @samp{(list \"proxy_pass http://upstream-name;\")}."
34118 msgstr ""
34119
34120 #. type: deftp
34121 #: doc/guix.texi:18972
34122 #, no-wrap
34123 msgid "{Data Type} nginx-named-location-configuration"
34124 msgstr ""
34125
34126 #. type: deftp
34127 #: doc/guix.texi:18977
34128 msgid "Data type representing the configuration of an nginx named location block. Named location blocks are used for request redirection, and not used for regular request processing. This type has the following parameters:"
34129 msgstr ""
34130
34131 #. type: table
34132 #: doc/guix.texi:18981
34133 msgid "Name to identify this location block."
34134 msgstr ""
34135
34136 #. type: table
34137 #: doc/guix.texi:18987
34138 msgid "@xref{nginx-location-configuration body}, as the body for named location blocks can be used in a similar way to the @code{nginx-location-configuration body}. One restriction is that the body of a named location block cannot contain location blocks."
34139 msgstr ""
34140
34141 #. type: subsubheading
34142 #: doc/guix.texi:18991
34143 #, no-wrap
34144 msgid "Varnish Cache"
34145 msgstr ""
34146
34147 #. type: cindex
34148 #: doc/guix.texi:18992
34149 #, no-wrap
34150 msgid "Varnish"
34151 msgstr ""
34152
34153 #. type: Plain text
34154 #: doc/guix.texi:18997
34155 msgid "Varnish is a fast cache server that sits in between web applications and end users. It proxies requests from clients and caches the accessed URLs such that multiple requests for the same resource only creates one request to the back-end."
34156 msgstr ""
34157
34158 #. type: defvr
34159 #: doc/guix.texi:18998
34160 #, no-wrap
34161 msgid "{Scheme Variable} varnish-service-type"
34162 msgstr ""
34163
34164 #. type: defvr
34165 #: doc/guix.texi:19000
34166 msgid "Service type for the Varnish daemon."
34167 msgstr ""
34168
34169 #. type: deftp
34170 #: doc/guix.texi:19002
34171 #, no-wrap
34172 msgid "{Data Type} varnish-configuration"
34173 msgstr ""
34174
34175 #. type: deftp
34176 #: doc/guix.texi:19005
34177 msgid "Data type representing the @code{varnish} service configuration. This type has the following parameters:"
34178 msgstr ""
34179
34180 #. type: item
34181 #: doc/guix.texi:19007
34182 #, no-wrap
34183 msgid "@code{package} (default: @code{varnish})"
34184 msgstr ""
34185
34186 #. type: table
34187 #: doc/guix.texi:19009
34188 msgid "The Varnish package to use."
34189 msgstr ""
34190
34191 #. type: item
34192 #: doc/guix.texi:19010
34193 #, no-wrap
34194 msgid "@code{name} (default: @code{\"default\"})"
34195 msgstr ""
34196
34197 #. type: table
34198 #: doc/guix.texi:19015
34199 msgid "A name for this Varnish instance. Varnish will create a directory in @file{/var/varnish/} with this name and keep temporary files there. If the name starts with a forward slash, it is interpreted as an absolute directory name."
34200 msgstr ""
34201
34202 #. type: table
34203 #: doc/guix.texi:19018
34204 msgid "Pass the @code{-n} argument to other Varnish programs to connect to the named instance, e.g.@: @command{varnishncsa -n default}."
34205 msgstr ""
34206
34207 #. type: item
34208 #: doc/guix.texi:19019
34209 #, no-wrap
34210 msgid "@code{backend} (default: @code{\"localhost:8080\"})"
34211 msgstr ""
34212
34213 #. type: table
34214 #: doc/guix.texi:19021
34215 msgid "The backend to use. This option has no effect if @code{vcl} is set."
34216 msgstr ""
34217
34218 #. type: item
34219 #: doc/guix.texi:19022
34220 #, no-wrap
34221 msgid "@code{vcl} (default: #f)"
34222 msgstr ""
34223
34224 #. type: table
34225 #: doc/guix.texi:19027
34226 msgid "The @dfn{VCL} (Varnish Configuration Language) program to run. If this is @code{#f}, Varnish will proxy @code{backend} using the default configuration. Otherwise this must be a file-like object with valid VCL syntax."
34227 msgstr ""
34228
34229 #. type: table
34230 #: doc/guix.texi:19031
34231 msgid "For example, to mirror @url{http://www.gnu.org,www.gnu.org} with VCL you can do something along these lines:"
34232 msgstr ""
34233
34234 #. type: example
34235 #: doc/guix.texi:19038
34236 #, no-wrap
34237 msgid ""
34238 "(define %gnu-mirror\n"
34239 " (plain-file\n"
34240 " \"gnu.vcl\"\n"
34241 " \"vcl 4.1;\n"
34242 "backend gnu @{ .host = \"www.gnu.org\"; @}\"))\n"
34243 "\n"
34244 msgstr ""
34245
34246 #. type: example
34247 #: doc/guix.texi:19046
34248 #, no-wrap
34249 msgid ""
34250 "(operating-system\n"
34251 " ...\n"
34252 " (services (cons (service varnish-service-type\n"
34253 " (varnish-configuration\n"
34254 " (listen '(\":80\"))\n"
34255 " (vcl %gnu-mirror)))\n"
34256 " %base-services)))\n"
34257 msgstr ""
34258
34259 #. type: table
34260 #: doc/guix.texi:19050
34261 msgid "The configuration of an already running Varnish instance can be inspected and changed using the @command{varnishadm} program."
34262 msgstr ""
34263
34264 #. type: table
34265 #: doc/guix.texi:19054
34266 msgid "Consult the @url{https://varnish-cache.org/docs/,Varnish User Guide} and @url{https://book.varnish-software.com/4.0/,Varnish Book} for comprehensive documentation on Varnish and its configuration language."
34267 msgstr ""
34268
34269 #. type: item
34270 #: doc/guix.texi:19055
34271 #, no-wrap
34272 msgid "@code{listen} (default: @code{'(\"localhost:80\")})"
34273 msgstr ""
34274
34275 #. type: table
34276 #: doc/guix.texi:19057
34277 msgid "List of addresses Varnish will listen on."
34278 msgstr ""
34279
34280 #. type: item
34281 #: doc/guix.texi:19058
34282 #, no-wrap
34283 msgid "@code{storage} (default: @code{'(\"malloc,128m\")})"
34284 msgstr ""
34285
34286 #. type: table
34287 #: doc/guix.texi:19060
34288 msgid "List of storage backends that will be available in VCL."
34289 msgstr ""
34290
34291 #. type: item
34292 #: doc/guix.texi:19061
34293 #, no-wrap
34294 msgid "@code{parameters} (default: @code{'()})"
34295 msgstr ""
34296
34297 #. type: table
34298 #: doc/guix.texi:19063
34299 msgid "List of run-time parameters in the form @code{'((\"parameter\" . \"value\"))}."
34300 msgstr ""
34301
34302 #. type: table
34303 #: doc/guix.texi:19066
34304 msgid "Additional arguments to pass to the @command{varnishd} process."
34305 msgstr ""
34306
34307 #. type: subsubheading
34308 #: doc/guix.texi:19070
34309 #, no-wrap
34310 msgid "FastCGI"
34311 msgstr ""
34312
34313 #. type: cindex
34314 #: doc/guix.texi:19071
34315 #, no-wrap
34316 msgid "fastcgi"
34317 msgstr ""
34318
34319 #. type: cindex
34320 #: doc/guix.texi:19072
34321 #, no-wrap
34322 msgid "fcgiwrap"
34323 msgstr ""
34324
34325 #. type: Plain text
34326 #: doc/guix.texi:19079
34327 msgid "FastCGI is an interface between the front-end and the back-end of a web service. It is a somewhat legacy facility; new web services should generally just talk HTTP between the front-end and the back-end. However there are a number of back-end services such as PHP or the optimized HTTP Git repository access that use FastCGI, so we have support for it in Guix."
34328 msgstr ""
34329
34330 #. type: Plain text
34331 #: doc/guix.texi:19086
34332 msgid "To use FastCGI, you configure the front-end web server (e.g., nginx) to dispatch some subset of its requests to the fastcgi backend, which listens on a local TCP or UNIX socket. There is an intermediary @code{fcgiwrap} program that sits between the actual backend process and the web server. The front-end indicates which backend program to run, passing that information to the @code{fcgiwrap} process."
34333 msgstr ""
34334
34335 #. type: defvr
34336 #: doc/guix.texi:19087
34337 #, no-wrap
34338 msgid "{Scheme Variable} fcgiwrap-service-type"
34339 msgstr ""
34340
34341 #. type: defvr
34342 #: doc/guix.texi:19089
34343 msgid "A service type for the @code{fcgiwrap} FastCGI proxy."
34344 msgstr ""
34345
34346 #. type: deftp
34347 #: doc/guix.texi:19091
34348 #, no-wrap
34349 msgid "{Data Type} fcgiwrap-configuration"
34350 msgstr ""
34351
34352 #. type: deftp
34353 #: doc/guix.texi:19094
34354 msgid "Data type representing the configuration of the @code{fcgiwrap} service. This type has the following parameters:"
34355 msgstr ""
34356
34357 #. type: item
34358 #: doc/guix.texi:19095
34359 #, no-wrap
34360 msgid "@code{package} (default: @code{fcgiwrap})"
34361 msgstr ""
34362
34363 #. type: table
34364 #: doc/guix.texi:19097
34365 msgid "The fcgiwrap package to use."
34366 msgstr ""
34367
34368 #. type: item
34369 #: doc/guix.texi:19098
34370 #, no-wrap
34371 msgid "@code{socket} (default: @code{tcp:127.0.0.1:9000})"
34372 msgstr ""
34373
34374 #. type: table
34375 #: doc/guix.texi:19104
34376 msgid "The socket on which the @code{fcgiwrap} process should listen, as a string. Valid @var{socket} values include @code{unix:@var{/path/to/unix/socket}}, @code{tcp:@var{dot.ted.qu.ad}:@var{port}} and @code{tcp6:[@var{ipv6_addr}]:port}."
34377 msgstr ""
34378
34379 #. type: item
34380 #: doc/guix.texi:19105
34381 #, no-wrap
34382 msgid "@code{user} (default: @code{fcgiwrap})"
34383 msgstr ""
34384
34385 #. type: itemx
34386 #: doc/guix.texi:19106
34387 #, no-wrap
34388 msgid "@code{group} (default: @code{fcgiwrap})"
34389 msgstr ""
34390
34391 #. type: table
34392 #: doc/guix.texi:19111
34393 msgid "The user and group names, as strings, under which to run the @code{fcgiwrap} process. The @code{fastcgi} service will ensure that if the user asks for the specific user or group names @code{fcgiwrap} that the corresponding user and/or group is present on the system."
34394 msgstr ""
34395
34396 #. type: table
34397 #: doc/guix.texi:19118
34398 msgid "It is possible to configure a FastCGI-backed web service to pass HTTP authentication information from the front-end to the back-end, and to allow @code{fcgiwrap} to run the back-end process as a corresponding local user. To enable this capability on the back-end., run @code{fcgiwrap} as the @code{root} user and group. Note that this capability also has to be configured on the front-end as well."
34399 msgstr ""
34400
34401 #. type: cindex
34402 #: doc/guix.texi:19121
34403 #, no-wrap
34404 msgid "php-fpm"
34405 msgstr ""
34406
34407 #. type: Plain text
34408 #: doc/guix.texi:19124
34409 msgid "PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size."
34410 msgstr ""
34411
34412 #. type: Plain text
34413 #: doc/guix.texi:19126
34414 msgid "These features include:"
34415 msgstr ""
34416
34417 #. type: item
34418 #: doc/guix.texi:19127
34419 #, no-wrap
34420 msgid "Adaptive process spawning"
34421 msgstr ""
34422
34423 #. type: item
34424 #: doc/guix.texi:19128
34425 #, no-wrap
34426 msgid "Basic statistics (similar to Apache's mod_status)"
34427 msgstr ""
34428
34429 #. type: item
34430 #: doc/guix.texi:19129
34431 #, no-wrap
34432 msgid "Advanced process management with graceful stop/start"
34433 msgstr ""
34434
34435 #. type: item
34436 #: doc/guix.texi:19130
34437 #, no-wrap
34438 msgid "Ability to start workers with different uid/gid/chroot/environment"
34439 msgstr ""
34440
34441 #. type: itemize
34442 #: doc/guix.texi:19132
34443 msgid "and different php.ini (replaces safe_mode)"
34444 msgstr ""
34445
34446 #. type: item
34447 #: doc/guix.texi:19132
34448 #, no-wrap
34449 msgid "Stdout & stderr logging"
34450 msgstr ""
34451
34452 #. type: item
34453 #: doc/guix.texi:19133
34454 #, no-wrap
34455 msgid "Emergency restart in case of accidental opcode cache destruction"
34456 msgstr ""
34457
34458 #. type: item
34459 #: doc/guix.texi:19134
34460 #, no-wrap
34461 msgid "Accelerated upload support"
34462 msgstr ""
34463
34464 #. type: item
34465 #: doc/guix.texi:19135
34466 #, no-wrap
34467 msgid "Support for a \"slowlog\""
34468 msgstr ""
34469
34470 #. type: item
34471 #: doc/guix.texi:19136
34472 #, no-wrap
34473 msgid "Enhancements to FastCGI, such as fastcgi_finish_request() -"
34474 msgstr ""
34475
34476 #. type: itemize
34477 #: doc/guix.texi:19139
34478 msgid "a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.)"
34479 msgstr ""
34480
34481 #. type: Plain text
34482 #: doc/guix.texi:19141
34483 msgid "...@: and much more."
34484 msgstr ""
34485
34486 #. type: defvr
34487 #: doc/guix.texi:19142
34488 #, no-wrap
34489 msgid "{Scheme Variable} php-fpm-service-type"
34490 msgstr ""
34491
34492 #. type: defvr
34493 #: doc/guix.texi:19144
34494 msgid "A Service type for @code{php-fpm}."
34495 msgstr ""
34496
34497 #. type: deftp
34498 #: doc/guix.texi:19146
34499 #, no-wrap
34500 msgid "{Data Type} php-fpm-configuration"
34501 msgstr ""
34502
34503 #. type: deftp
34504 #: doc/guix.texi:19148
34505 msgid "Data Type for php-fpm service configuration."
34506 msgstr ""
34507
34508 #. type: item
34509 #: doc/guix.texi:19149
34510 #, no-wrap
34511 msgid "@code{php} (default: @code{php})"
34512 msgstr ""
34513
34514 #. type: table
34515 #: doc/guix.texi:19151
34516 msgid "The php package to use."
34517 msgstr ""
34518
34519 #. type: item
34520 #: doc/guix.texi:19151
34521 #, no-wrap
34522 msgid "@code{socket} (default: @code{(string-append \"/var/run/php\" (version-major (package-version php)) \"-fpm.sock\")})"
34523 msgstr ""
34524
34525 #. type: table
34526 #: doc/guix.texi:19153
34527 msgid "The address on which to accept FastCGI requests. Valid syntaxes are:"
34528 msgstr ""
34529
34530 #. type: code{#1}
34531 #: doc/guix.texi:19154
34532 #, no-wrap
34533 msgid "\"ip.add.re.ss:port\""
34534 msgstr ""
34535
34536 #. type: table
34537 #: doc/guix.texi:19156
34538 msgid "Listen on a TCP socket to a specific address on a specific port."
34539 msgstr ""
34540
34541 #. type: code{#1}
34542 #: doc/guix.texi:19156
34543 #, no-wrap
34544 msgid "\"port\""
34545 msgstr ""
34546
34547 #. type: table
34548 #: doc/guix.texi:19158
34549 msgid "Listen on a TCP socket to all addresses on a specific port."
34550 msgstr ""
34551
34552 #. type: code{#1}
34553 #: doc/guix.texi:19158
34554 #, no-wrap
34555 msgid "\"/path/to/unix/socket\""
34556 msgstr ""
34557
34558 #. type: table
34559 #: doc/guix.texi:19160
34560 msgid "Listen on a unix socket."
34561 msgstr ""
34562
34563 #. type: item
34564 #: doc/guix.texi:19162
34565 #, no-wrap
34566 msgid "@code{user} (default: @code{php-fpm})"
34567 msgstr ""
34568
34569 #. type: table
34570 #: doc/guix.texi:19164
34571 msgid "User who will own the php worker processes."
34572 msgstr ""
34573
34574 #. type: item
34575 #: doc/guix.texi:19164
34576 #, no-wrap
34577 msgid "@code{group} (default: @code{php-fpm})"
34578 msgstr ""
34579
34580 #. type: table
34581 #: doc/guix.texi:19166
34582 msgid "Group of the worker processes."
34583 msgstr ""
34584
34585 #. type: item
34586 #: doc/guix.texi:19166
34587 #, no-wrap
34588 msgid "@code{socket-user} (default: @code{php-fpm})"
34589 msgstr ""
34590
34591 #. type: table
34592 #: doc/guix.texi:19168
34593 msgid "User who can speak to the php-fpm socket."
34594 msgstr ""
34595
34596 #. type: item
34597 #: doc/guix.texi:19168
34598 #, no-wrap
34599 msgid "@code{socket-group} (default: @code{php-fpm})"
34600 msgstr ""
34601
34602 #. type: table
34603 #: doc/guix.texi:19170
34604 msgid "Group that can speak to the php-fpm socket."
34605 msgstr ""
34606
34607 #. type: item
34608 #: doc/guix.texi:19170
34609 #, no-wrap
34610 msgid "@code{pid-file} (default: @code{(string-append \"/var/run/php\" (version-major (package-version php)) \"-fpm.pid\")})"
34611 msgstr ""
34612
34613 #. type: table
34614 #: doc/guix.texi:19173
34615 msgid "The process id of the php-fpm process is written to this file once the service has started."
34616 msgstr ""
34617
34618 #. type: item
34619 #: doc/guix.texi:19173
34620 #, no-wrap
34621 msgid "@code{log-file} (default: @code{(string-append \"/var/log/php\" (version-major (package-version php)) \"-fpm.log\")})"
34622 msgstr ""
34623
34624 #. type: table
34625 #: doc/guix.texi:19175
34626 msgid "Log for the php-fpm master process."
34627 msgstr ""
34628
34629 #. type: item
34630 #: doc/guix.texi:19175
34631 #, no-wrap
34632 msgid "@code{process-manager} (default: @code{(php-fpm-dynamic-process-manager-configuration)})"
34633 msgstr ""
34634
34635 #. type: table
34636 #: doc/guix.texi:19178
34637 msgid "Detailed settings for the php-fpm process manager. Must be either:"
34638 msgstr ""
34639
34640 #. type: code{#1}
34641 #: doc/guix.texi:19179
34642 #, no-wrap
34643 msgid "<php-fpm-dynamic-process-manager-configuration>"
34644 msgstr ""
34645
34646 #. type: code{#1}
34647 #: doc/guix.texi:19180
34648 #, no-wrap
34649 msgid "<php-fpm-static-process-manager-configuration>"
34650 msgstr ""
34651
34652 #. type: code{#1}
34653 #: doc/guix.texi:19181
34654 #, no-wrap
34655 msgid "<php-fpm-on-demand-process-manager-configuration>"
34656 msgstr ""
34657
34658 #. type: item
34659 #: doc/guix.texi:19183
34660 #, no-wrap
34661 msgid "@code{display-errors} (default @code{#f})"
34662 msgstr ""
34663
34664 #. type: table
34665 #: doc/guix.texi:19188
34666 msgid "Determines whether php errors and warning should be sent to clients and displayed in their browsers. This is useful for local php development, but a security risk for public sites, as error messages can reveal passwords and personal data."
34667 msgstr ""
34668
34669 #. type: item
34670 #: doc/guix.texi:19188
34671 #, no-wrap
34672 msgid "@code{timezone} (default @code{#f})"
34673 msgstr ""
34674
34675 #. type: table
34676 #: doc/guix.texi:19190
34677 msgid "Specifies @code{php_admin_value[date.timezone]} parameter."
34678 msgstr ""
34679
34680 #. type: item
34681 #: doc/guix.texi:19190
34682 #, no-wrap
34683 msgid "@code{workers-logfile} (default @code{(string-append \"/var/log/php\" (version-major (package-version php)) \"-fpm.www.log\")})"
34684 msgstr ""
34685
34686 #. type: table
34687 #: doc/guix.texi:19193
34688 msgid "This file will log the @code{stderr} outputs of php worker processes. Can be set to @code{#f} to disable logging."
34689 msgstr ""
34690
34691 #. type: item
34692 #: doc/guix.texi:19193
34693 #, no-wrap
34694 msgid "@code{file} (default @code{#f})"
34695 msgstr ""
34696
34697 #. type: table
34698 #: doc/guix.texi:19196
34699 msgid "An optional override of the whole configuration. You can use the @code{mixed-text-file} function or an absolute filepath for it."
34700 msgstr ""
34701
34702 #. type: deftp
34703 #: doc/guix.texi:19199
34704 #, no-wrap
34705 msgid "{Data type} php-fpm-dynamic-process-manager-configuration"
34706 msgstr ""
34707
34708 #. type: deftp
34709 #: doc/guix.texi:19203
34710 msgid "Data Type for the @code{dynamic} php-fpm process manager. With the @code{dynamic} process manager, spare worker processes are kept around based on it's configured limits."
34711 msgstr ""
34712
34713 #. type: item
34714 #: doc/guix.texi:19204 doc/guix.texi:19220 doc/guix.texi:19230
34715 #, no-wrap
34716 msgid "@code{max-children} (default: @code{5})"
34717 msgstr ""
34718
34719 #. type: table
34720 #: doc/guix.texi:19206 doc/guix.texi:19222 doc/guix.texi:19232
34721 msgid "Maximum of worker processes."
34722 msgstr ""
34723
34724 #. type: item
34725 #: doc/guix.texi:19206
34726 #, no-wrap
34727 msgid "@code{start-servers} (default: @code{2})"
34728 msgstr ""
34729
34730 #. type: table
34731 #: doc/guix.texi:19208
34732 msgid "How many worker processes should be started on start-up."
34733 msgstr ""
34734
34735 #. type: item
34736 #: doc/guix.texi:19208
34737 #, no-wrap
34738 msgid "@code{min-spare-servers} (default: @code{1})"
34739 msgstr ""
34740
34741 #. type: table
34742 #: doc/guix.texi:19210
34743 msgid "How many spare worker processes should be kept around at minimum."
34744 msgstr ""
34745
34746 #. type: item
34747 #: doc/guix.texi:19210
34748 #, no-wrap
34749 msgid "@code{max-spare-servers} (default: @code{3})"
34750 msgstr ""
34751
34752 #. type: table
34753 #: doc/guix.texi:19212
34754 msgid "How many spare worker processes should be kept around at maximum."
34755 msgstr ""
34756
34757 #. type: deftp
34758 #: doc/guix.texi:19215
34759 #, no-wrap
34760 msgid "{Data type} php-fpm-static-process-manager-configuration"
34761 msgstr ""
34762
34763 #. type: deftp
34764 #: doc/guix.texi:19219
34765 msgid "Data Type for the @code{static} php-fpm process manager. With the @code{static} process manager, an unchanging number of worker processes are created."
34766 msgstr ""
34767
34768 #. type: deftp
34769 #: doc/guix.texi:19225
34770 #, no-wrap
34771 msgid "{Data type} php-fpm-on-demand-process-manager-configuration"
34772 msgstr ""
34773
34774 #. type: deftp
34775 #: doc/guix.texi:19229
34776 msgid "Data Type for the @code{on-demand} php-fpm process manager. With the @code{on-demand} process manager, worker processes are only created as requests arrive."
34777 msgstr ""
34778
34779 #. type: item
34780 #: doc/guix.texi:19232
34781 #, no-wrap
34782 msgid "@code{process-idle-timeout} (default: @code{10})"
34783 msgstr ""
34784
34785 #. type: table
34786 #: doc/guix.texi:19234
34787 msgid "The time in seconds after which a process with no requests is killed."
34788 msgstr ""
34789
34790 #. type: deffn
34791 #: doc/guix.texi:19238
34792 #, no-wrap
34793 msgid "{Scheme Procedure} nginx-php-fpm-location @"
34794 msgstr ""
34795
34796 #. type: deffn
34797 #: doc/guix.texi:19244
34798 msgid "[#:nginx-package nginx] @ [socket (string-append \"/var/run/php\" @ (version-major (package-version php)) @ \"-fpm.sock\")] A helper function to quickly add php to an @code{nginx-server-configuration}."
34799 msgstr ""
34800
34801 #. type: Plain text
34802 #: doc/guix.texi:19247
34803 msgid "A simple services setup for nginx with php can look like this:"
34804 msgstr ""
34805
34806 #. type: example
34807 #: doc/guix.texi:19260
34808 #, no-wrap
34809 msgid ""
34810 "(services (cons* (service dhcp-client-service-type)\n"
34811 " (service php-fpm-service-type)\n"
34812 " (service nginx-service-type\n"
34813 " (nginx-server-configuration\n"
34814 " (server-name '(\"example.com\"))\n"
34815 " (root \"/srv/http/\")\n"
34816 " (locations\n"
34817 " (list (nginx-php-location)))\n"
34818 " (listen '(\"80\"))\n"
34819 " (ssl-certificate #f)\n"
34820 " (ssl-certificate-key #f)))\n"
34821 " %base-services))\n"
34822 msgstr ""
34823
34824 #. type: cindex
34825 #: doc/guix.texi:19262
34826 #, no-wrap
34827 msgid "cat-avatar-generator"
34828 msgstr ""
34829
34830 #. type: Plain text
34831 #: doc/guix.texi:19266
34832 msgid "The cat avatar generator is a simple service to demonstrate the use of php-fpm in @code{Nginx}. It is used to generate cat avatar from a seed, for instance the hash of a user's email address."
34833 msgstr ""
34834
34835 #. type: deffn
34836 #: doc/guix.texi:19267
34837 #, no-wrap
34838 msgid "{Scheme Procedure} cat-avatar-generator-service @"
34839 msgstr ""
34840
34841 #. type: deffn
34842 #: doc/guix.texi:19275
34843 msgid "[#:cache-dir \"/var/cache/cat-avatar-generator\"] @ [#:package cat-avatar-generator] @ [#:configuration (nginx-server-configuration)] Returns an nginx-server-configuration that inherits @code{configuration}. It extends the nginx configuration to add a server block that serves @code{package}, a version of cat-avatar-generator. During execution, cat-avatar-generator will be able to use @code{cache-dir} as its cache directory."
34844 msgstr ""
34845
34846 #. type: Plain text
34847 #: doc/guix.texi:19278
34848 msgid "A simple setup for cat-avatar-generator can look like this:"
34849 msgstr ""
34850
34851 #. type: example
34852 #: doc/guix.texi:19285
34853 #, no-wrap
34854 msgid ""
34855 "(services (cons* (cat-avatar-generator-service\n"
34856 " #:configuration\n"
34857 " (nginx-server-configuration\n"
34858 " (server-name '(\"example.com\"))))\n"
34859 " ...\n"
34860 " %base-services))\n"
34861 msgstr ""
34862
34863 #. type: subsubheading
34864 #: doc/guix.texi:19287
34865 #, no-wrap
34866 msgid "Hpcguix-web"
34867 msgstr ""
34868
34869 #. type: cindex
34870 #: doc/guix.texi:19289
34871 #, no-wrap
34872 msgid "hpcguix-web"
34873 msgstr ""
34874
34875 #. type: Plain text
34876 #: doc/guix.texi:19294
34877 msgid "The @uref{hpcguix-web, https://github.com/UMCUGenetics/hpcguix-web/} program is a customizable web interface to browse Guix packages, initially designed for users of high-performance computing (HPC) clusters."
34878 msgstr ""
34879
34880 #. type: defvr
34881 #: doc/guix.texi:19295
34882 #, no-wrap
34883 msgid "{Scheme Variable} hpcguix-web-service-type"
34884 msgstr ""
34885
34886 #. type: defvr
34887 #: doc/guix.texi:19297
34888 msgid "The service type for @code{hpcguix-web}."
34889 msgstr ""
34890
34891 #. type: deftp
34892 #: doc/guix.texi:19299
34893 #, no-wrap
34894 msgid "{Data Type} hpcguix-web-configuration"
34895 msgstr ""
34896
34897 #. type: deftp
34898 #: doc/guix.texi:19301
34899 msgid "Data type for the hpcguix-web service configuration."
34900 msgstr ""
34901
34902 #. type: code{#1}
34903 #: doc/guix.texi:19303
34904 #, no-wrap
34905 msgid "specs"
34906 msgstr ""
34907
34908 #. type: table
34909 #: doc/guix.texi:19306
34910 msgid "A gexp (@pxref{G-Expressions}) specifying the hpcguix-web service configuration. The main items available in this spec are:"
34911 msgstr ""
34912
34913 #. type: item
34914 #: doc/guix.texi:19308
34915 #, no-wrap
34916 msgid "@code{title-prefix} (default: @code{\"hpcguix | \"})"
34917 msgstr ""
34918
34919 #. type: table
34920 #: doc/guix.texi:19310
34921 msgid "The page title prefix."
34922 msgstr ""
34923
34924 #. type: item
34925 #: doc/guix.texi:19311
34926 #, no-wrap
34927 msgid "@code{guix-command} (default: @code{\"guix\"})"
34928 msgstr ""
34929
34930 #. type: table
34931 #: doc/guix.texi:19313
34932 msgid "The @command{guix} command."
34933 msgstr ""
34934
34935 #. type: item
34936 #: doc/guix.texi:19314
34937 #, no-wrap
34938 msgid "@code{package-filter-proc} (default: @code{(const #t)})"
34939 msgstr ""
34940
34941 #. type: table
34942 #: doc/guix.texi:19316
34943 msgid "A procedure specifying how to filter packages that are displayed."
34944 msgstr ""
34945
34946 #. type: item
34947 #: doc/guix.texi:19317
34948 #, no-wrap
34949 msgid "@code{package-page-extension-proc} (default: @code{(const '())})"
34950 msgstr ""
34951
34952 #. type: table
34953 #: doc/guix.texi:19319
34954 msgid "Extension package for @code{hpcguix-web}."
34955 msgstr ""
34956
34957 #. type: item
34958 #: doc/guix.texi:19320
34959 #, no-wrap
34960 msgid "@code{menu} (default: @code{'()})"
34961 msgstr ""
34962
34963 #. type: table
34964 #: doc/guix.texi:19322
34965 msgid "Additional entry in page @code{menu}."
34966 msgstr ""
34967
34968 #. type: item
34969 #: doc/guix.texi:19323
34970 #, no-wrap
34971 msgid "@code{channels} (default: @code{%default-channels})"
34972 msgstr ""
34973
34974 #. type: table
34975 #: doc/guix.texi:19325
34976 msgid "List of channels from which the package list is built (@pxref{Channels})."
34977 msgstr ""
34978
34979 #. type: item
34980 #: doc/guix.texi:19326
34981 #, no-wrap
34982 msgid "@code{package-list-expiration} (default: @code{(* 12 3600)})"
34983 msgstr ""
34984
34985 #. type: table
34986 #: doc/guix.texi:19329
34987 msgid "The expiration time, in seconds, after which the package list is rebuilt from the latest instances of the given channels."
34988 msgstr ""
34989
34990 #. type: table
34991 #: doc/guix.texi:19334
34992 msgid "See the hpcguix-web repository for a @uref{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, complete example}."
34993 msgstr ""
34994
34995 #. type: item
34996 #: doc/guix.texi:19335
34997 #, no-wrap
34998 msgid "@code{package} (default: @code{hpcguix-web})"
34999 msgstr ""
35000
35001 #. type: table
35002 #: doc/guix.texi:19337
35003 msgid "The hpcguix-web package to use."
35004 msgstr ""
35005
35006 #. type: Plain text
35007 #: doc/guix.texi:19341
35008 msgid "A typical hpcguix-web service declaration looks like this:"
35009 msgstr ""
35010
35011 #. type: example
35012 #: doc/guix.texi:19350
35013 #, no-wrap
35014 msgid ""
35015 "(service hpcguix-web-service-type\n"
35016 " (hpcguix-web-configuration\n"
35017 " (specs\n"
35018 " #~(define site-config\n"
35019 " (hpcweb-configuration\n"
35020 " (title-prefix \"Guix-HPC - \")\n"
35021 " (menu '((\"/about\" \"ABOUT\"))))))))\n"
35022 msgstr ""
35023
35024 #. type: quotation
35025 #: doc/guix.texi:19357
35026 msgid "The hpcguix-web service periodically updates the package list it publishes by pulling channels from Git. To that end, it needs to access X.509 certificates so that it can authenticate Git servers when communicating over HTTPS, and it assumes that @file{/etc/ssl/certs} contains those certificates."
35027 msgstr ""
35028
35029 #. type: quotation
35030 #: doc/guix.texi:19361
35031 msgid "Thus, make sure to add @code{nss-certs} or another certificate package to the @code{packages} field of your configuration. @ref{X.509 Certificates}, for more information on X.509 certificates."
35032 msgstr ""
35033
35034 #. type: cindex
35035 #: doc/guix.texi:19366
35036 #, no-wrap
35037 msgid "Web"
35038 msgstr ""
35039
35040 #. type: cindex
35041 #: doc/guix.texi:19367
35042 #, no-wrap
35043 msgid "HTTP, HTTPS"
35044 msgstr ""
35045
35046 #. type: cindex
35047 #: doc/guix.texi:19368
35048 #, no-wrap
35049 msgid "Let's Encrypt"
35050 msgstr ""
35051
35052 #. type: cindex
35053 #: doc/guix.texi:19369
35054 #, no-wrap
35055 msgid "TLS certificates"
35056 msgstr ""
35057
35058 #. type: Plain text
35059 #: doc/guix.texi:19376
35060 msgid "The @code{(gnu services certbot)} module provides a service to automatically obtain a valid TLS certificate from the Let's Encrypt certificate authority. These certificates can then be used to serve content securely over HTTPS or other TLS-based protocols, with the knowledge that the client will be able to verify the server's authenticity."
35061 msgstr ""
35062
35063 #. type: Plain text
35064 #: doc/guix.texi:19388
35065 msgid "@url{https://letsencrypt.org/, Let's Encrypt} provides the @code{certbot} tool to automate the certification process. This tool first securely generates a key on the server. It then makes a request to the Let's Encrypt certificate authority (CA) to sign the key. The CA checks that the request originates from the host in question by using a challenge-response protocol, requiring the server to provide its response over HTTP. If that protocol completes successfully, the CA signs the key, resulting in a certificate. That certificate is valid for a limited period of time, and therefore to continue to provide TLS services, the server needs to periodically ask the CA to renew its signature."
35066 msgstr ""
35067
35068 #. type: Plain text
35069 #: doc/guix.texi:19395
35070 msgid "The certbot service automates this process: the initial key generation, the initial certification request to the Let's Encrypt service, the web server challenge/response integration, writing the certificate to disk, the automated periodic renewals, and the deployment tasks associated with the renewal (e.g.@: reloading services, copying keys with different permissions)."
35071 msgstr ""
35072
35073 #. type: Plain text
35074 #: doc/guix.texi:19401
35075 msgid "Certbot is run twice a day, at a random minute within the hour. It won't do anything until your certificates are due for renewal or revoked, but running it regularly would give your service a chance of staying online in case a Let's Encrypt-initiated revocation happened for some reason."
35076 msgstr ""
35077
35078 #. type: Plain text
35079 #: doc/guix.texi:19405
35080 msgid "By using this service, you agree to the ACME Subscriber Agreement, which can be found there: @url{https://acme-v01.api.letsencrypt.org/directory}."
35081 msgstr ""
35082
35083 #. type: defvr
35084 #: doc/guix.texi:19406
35085 #, no-wrap
35086 msgid "{Scheme Variable} certbot-service-type"
35087 msgstr ""
35088
35089 #. type: defvr
35090 #: doc/guix.texi:19409
35091 msgid "A service type for the @code{certbot} Let's Encrypt client. Its value must be a @code{certbot-configuration} record as in this example:"
35092 msgstr ""
35093
35094 #. type: example
35095 #: doc/guix.texi:19416
35096 #, no-wrap
35097 msgid ""
35098 "(define %nginx-deploy-hook\n"
35099 " (program-file\n"
35100 " \"nginx-deploy-hook\"\n"
35101 " #~(let ((pid (call-with-input-file \"/var/run/nginx/pid\" read)))\n"
35102 " (kill pid SIGHUP))))\n"
35103 "\n"
35104 msgstr ""
35105
35106 #. type: example
35107 #: doc/guix.texi:19427
35108 #, no-wrap
35109 msgid ""
35110 "(service certbot-service-type\n"
35111 " (certbot-configuration\n"
35112 " (email \"foo@@example.net\")\n"
35113 " (certificates\n"
35114 " (list\n"
35115 " (certificate-configuration\n"
35116 " (domains '(\"example.net\" \"www.example.net\"))\n"
35117 " (deploy-hook %nginx-deploy-hook))\n"
35118 " (certificate-configuration\n"
35119 " (domains '(\"bar.example.net\")))))))\n"
35120 msgstr ""
35121
35122 #. type: defvr
35123 #: doc/guix.texi:19430
35124 msgid "See below for details about @code{certbot-configuration}."
35125 msgstr ""
35126
35127 #. type: deftp
35128 #: doc/guix.texi:19432
35129 #, no-wrap
35130 msgid "{Data Type} certbot-configuration"
35131 msgstr ""
35132
35133 #. type: deftp
35134 #: doc/guix.texi:19435
35135 msgid "Data type representing the configuration of the @code{certbot} service. This type has the following parameters:"
35136 msgstr ""
35137
35138 #. type: item
35139 #: doc/guix.texi:19437
35140 #, no-wrap
35141 msgid "@code{package} (default: @code{certbot})"
35142 msgstr ""
35143
35144 #. type: table
35145 #: doc/guix.texi:19439
35146 msgid "The certbot package to use."
35147 msgstr ""
35148
35149 #. type: item
35150 #: doc/guix.texi:19440
35151 #, no-wrap
35152 msgid "@code{webroot} (default: @code{/var/www})"
35153 msgstr ""
35154
35155 #. type: table
35156 #: doc/guix.texi:19443
35157 msgid "The directory from which to serve the Let's Encrypt challenge/response files."
35158 msgstr ""
35159
35160 #. type: item
35161 #: doc/guix.texi:19444
35162 #, no-wrap
35163 msgid "@code{certificates} (default: @code{()})"
35164 msgstr ""
35165
35166 #. type: table
35167 #: doc/guix.texi:19448
35168 msgid "A list of @code{certificates-configuration}s for which to generate certificates and request signatures. Each certificate has a @code{name} and several @code{domains}."
35169 msgstr ""
35170
35171 #. type: table
35172 #: doc/guix.texi:19452
35173 msgid "Mandatory email used for registration, recovery contact, and important account notifications."
35174 msgstr ""
35175
35176 #. type: item
35177 #: doc/guix.texi:19453
35178 #, no-wrap
35179 msgid "@code{rsa-key-size} (default: @code{2048})"
35180 msgstr ""
35181
35182 #. type: table
35183 #: doc/guix.texi:19455
35184 msgid "Size of the RSA key."
35185 msgstr ""
35186
35187 #. type: item
35188 #: doc/guix.texi:19456
35189 #, no-wrap
35190 msgid "@code{default-location} (default: @i{see below})"
35191 msgstr ""
35192
35193 #. type: table
35194 #: doc/guix.texi:19465
35195 msgid "The default @code{nginx-location-configuration}. Because @code{certbot} needs to be able to serve challenges and responses, it needs to be able to run a web server. It does so by extending the @code{nginx} web service with an @code{nginx-server-configuration} listening on the @var{domains} on port 80, and which has a @code{nginx-location-configuration} for the @code{/.well-known/} URI path subspace used by Let's Encrypt. @xref{Web Services}, for more on these nginx configuration data types."
35196 msgstr ""
35197
35198 #. type: table
35199 #: doc/guix.texi:19469
35200 msgid "Requests to other URL paths will be matched by the @code{default-location}, which if present is added to all @code{nginx-server-configuration}s."
35201 msgstr ""
35202
35203 #. type: table
35204 #: doc/guix.texi:19473
35205 msgid "By default, the @code{default-location} will issue a redirect from @code{http://@var{domain}/...} to @code{https://@var{domain}/...}, leaving you to define what to serve on your site via @code{https}."
35206 msgstr ""
35207
35208 #. type: table
35209 #: doc/guix.texi:19475
35210 msgid "Pass @code{#f} to not issue a default location."
35211 msgstr ""
35212
35213 #. type: deftp
35214 #: doc/guix.texi:19478
35215 #, no-wrap
35216 msgid "{Data Type} certificate-configuration"
35217 msgstr ""
35218
35219 #. type: deftp
35220 #: doc/guix.texi:19481
35221 msgid "Data type representing the configuration of a certificate. This type has the following parameters:"
35222 msgstr ""
35223
35224 #. type: item
35225 #: doc/guix.texi:19483
35226 #, no-wrap
35227 msgid "@code{name} (default: @i{see below})"
35228 msgstr ""
35229
35230 #. type: table
35231 #: doc/guix.texi:19487
35232 msgid "This name is used by Certbot for housekeeping and in file paths; it doesn't affect the content of the certificate itself. To see certificate names, run @code{certbot certificates}."
35233 msgstr ""
35234
35235 #. type: table
35236 #: doc/guix.texi:19489
35237 msgid "Its default is the first provided domain."
35238 msgstr ""
35239
35240 #. type: item
35241 #: doc/guix.texi:19490
35242 #, no-wrap
35243 msgid "@code{domains} (default: @code{()})"
35244 msgstr ""
35245
35246 #. type: table
35247 #: doc/guix.texi:19493
35248 msgid "The first domain provided will be the subject CN of the certificate, and all domains will be Subject Alternative Names on the certificate."
35249 msgstr ""
35250
35251 #. type: item
35252 #: doc/guix.texi:19494
35253 #, no-wrap
35254 msgid "@code{challenge} (default: @code{#f})"
35255 msgstr "@code{challenge}(默认值:@code{#f})"
35256
35257 #. type: table
35258 #: doc/guix.texi:19499
35259 msgid "The challenge type that has to be run by certbot. If @code{#f} is specified, default to the HTTP challenge. If a value is specified, defaults to the manual plugin (see @code{authentication-hook}, @code{cleanup-hook} and the documentation at @url{https://certbot.eff.org/docs/using.html#hooks})."
35260 msgstr ""
35261
35262 #. type: item
35263 #: doc/guix.texi:19500
35264 #, no-wrap
35265 msgid "@code{authentication-hook} (default: @code{#f})"
35266 msgstr "@code{authentication-hook}(默认值:@code{#f})"
35267
35268 #. type: table
35269 #: doc/guix.texi:19506
35270 msgid "Command to be run in a shell once for each certificate challenge to be answered. For this command, the shell variable @code{$CERTBOT_DOMAIN} will contain the domain being authenticated, @code{$CERTBOT_VALIDATION} contains the validation string and @code{$CERTBOT_TOKEN} contains the file name of the resource requested when performing an HTTP-01 challenge."
35271 msgstr ""
35272
35273 #. type: item
35274 #: doc/guix.texi:19507
35275 #, no-wrap
35276 msgid "@code{cleanup-hook} (default: @code{#f})"
35277 msgstr "@code{cleanup-hook}(默认值:@code{#f})"
35278
35279 #. type: table
35280 #: doc/guix.texi:19513
35281 msgid "Command to be run in a shell once for each certificate challenge that have been answered by the @code{auth-hook}. For this command, the shell variables available in the @code{auth-hook} script are still available, and additionally @code{$CERTBOT_AUTH_OUTPUT} will contain the standard output of the @code{auth-hook} script."
35282 msgstr ""
35283
35284 #. type: item
35285 #: doc/guix.texi:19514
35286 #, no-wrap
35287 msgid "@code{deploy-hook} (default: @code{#f})"
35288 msgstr ""
35289
35290 #. type: table
35291 #: doc/guix.texi:19522
35292 msgid "Command to be run in a shell once for each successfully issued certificate. For this command, the shell variable @code{$RENEWED_LINEAGE} will point to the config live subdirectory (for example, @samp{\"/etc/letsencrypt/live/example.com\"}) containing the new certificates and keys; the shell variable @code{$RENEWED_DOMAINS} will contain a space-delimited list of renewed certificate domains (for example, @samp{\"example.com www.example.com\"}."
35293 msgstr ""
35294
35295 #. type: Plain text
35296 #: doc/guix.texi:19529
35297 msgid "For each @code{certificate-configuration}, the certificate is saved to @code{/etc/letsencrypt/live/@var{name}/fullchain.pem} and the key is saved to @code{/etc/letsencrypt/live/@var{name}/privkey.pem}."
35298 msgstr ""
35299
35300 #. type: cindex
35301 #: doc/guix.texi:19531
35302 #, no-wrap
35303 msgid "DNS (domain name system)"
35304 msgstr ""
35305
35306 #. type: cindex
35307 #: doc/guix.texi:19532
35308 #, no-wrap
35309 msgid "domain name system (DNS)"
35310 msgstr ""
35311
35312 #. type: Plain text
35313 #: doc/guix.texi:19540
35314 msgid "The @code{(gnu services dns)} module provides services related to the @dfn{domain name system} (DNS). It provides a server service for hosting an @emph{authoritative} DNS server for multiple zones, slave or master. This service uses @uref{https://www.knot-dns.cz/, Knot DNS}. And also a caching and forwarding DNS server for the LAN, which uses @uref{http://www.thekelleys.org.uk/dnsmasq/doc.html, dnsmasq}."
35315 msgstr ""
35316
35317 #. type: subsubheading
35318 #: doc/guix.texi:19541
35319 #, no-wrap
35320 msgid "Knot Service"
35321 msgstr ""
35322
35323 #. type: Plain text
35324 #: doc/guix.texi:19545
35325 msgid "An example configuration of an authoritative server for two zones, one master and one slave, is:"
35326 msgstr ""
35327
35328 #. type: lisp
35329 #: doc/guix.texi:19552
35330 #, no-wrap
35331 msgid ""
35332 "(define-zone-entries example.org.zone\n"
35333 ";; Name TTL Class Type Data\n"
35334 " (\"@@\" \"\" \"IN\" \"A\" \"127.0.0.1\")\n"
35335 " (\"@@\" \"\" \"IN\" \"NS\" \"ns\")\n"
35336 " (\"ns\" \"\" \"IN\" \"A\" \"127.0.0.1\"))\n"
35337 "\n"
35338 msgstr ""
35339
35340 #. type: lisp
35341 #: doc/guix.texi:19559
35342 #, no-wrap
35343 msgid ""
35344 "(define master-zone\n"
35345 " (knot-zone-configuration\n"
35346 " (domain \"example.org\")\n"
35347 " (zone (zone-file\n"
35348 " (origin \"example.org\")\n"
35349 " (entries example.org.zone)))))\n"
35350 "\n"
35351 msgstr ""
35352
35353 #. type: lisp
35354 #: doc/guix.texi:19565
35355 #, no-wrap
35356 msgid ""
35357 "(define slave-zone\n"
35358 " (knot-zone-configuration\n"
35359 " (domain \"plop.org\")\n"
35360 " (dnssec-policy \"default\")\n"
35361 " (master (list \"plop-master\"))))\n"
35362 "\n"
35363 msgstr ""
35364
35365 #. type: lisp
35366 #: doc/guix.texi:19570
35367 #, no-wrap
35368 msgid ""
35369 "(define plop-master\n"
35370 " (knot-remote-configuration\n"
35371 " (id \"plop-master\")\n"
35372 " (address (list \"208.76.58.171\"))))\n"
35373 "\n"
35374 msgstr ""
35375
35376 #. type: lisp
35377 #: doc/guix.texi:19579
35378 #, no-wrap
35379 msgid ""
35380 "(operating-system\n"
35381 " ;; ...\n"
35382 " (services (cons* (service knot-service-type\n"
35383 " (knot-configuration\n"
35384 " (remotes (list plop-master))\n"
35385 " (zones (list master-zone slave-zone))))\n"
35386 " ;; ...\n"
35387 " %base-services)))\n"
35388 msgstr ""
35389
35390 #. type: deffn
35391 #: doc/guix.texi:19581
35392 #, no-wrap
35393 msgid "{Scheme Variable} knot-service-type"
35394 msgstr ""
35395
35396 #. type: deffn
35397 #: doc/guix.texi:19583
35398 msgid "This is the type for the Knot DNS server."
35399 msgstr ""
35400
35401 #. type: deffn
35402 #: doc/guix.texi:19591
35403 msgid "Knot DNS is an authoritative DNS server, meaning that it can serve multiple zones, that is to say domain names you would buy from a registrar. This server is not a resolver, meaning that it can only resolve names for which it is authoritative. This server can be configured to serve zones as a master server or a slave server as a per-zone basis. Slave zones will get their data from masters, and will serve it as an authoritative server. From the point of view of a resolver, there is no difference between master and slave."
35404 msgstr ""
35405
35406 #. type: deffn
35407 #: doc/guix.texi:19593
35408 msgid "The following data types are used to configure the Knot DNS server:"
35409 msgstr ""
35410
35411 #. type: deftp
35412 #: doc/guix.texi:19595
35413 #, no-wrap
35414 msgid "{Data Type} knot-key-configuration"
35415 msgstr ""
35416
35417 #. type: deftp
35418 #: doc/guix.texi:19598
35419 msgid "Data type representing a key. This type has the following parameters:"
35420 msgstr ""
35421
35422 #. type: item
35423 #: doc/guix.texi:19600 doc/guix.texi:19620 doc/guix.texi:19735
35424 #: doc/guix.texi:19761 doc/guix.texi:19796
35425 #, no-wrap
35426 msgid "@code{id} (default: @code{\"\"})"
35427 msgstr ""
35428
35429 #. type: table
35430 #: doc/guix.texi:19603
35431 msgid "An identifier for other configuration fields to refer to this key. IDs must be unique and must not be empty."
35432 msgstr ""
35433
35434 #. type: item
35435 #: doc/guix.texi:19604
35436 #, no-wrap
35437 msgid "@code{algorithm} (default: @code{#f})"
35438 msgstr ""
35439
35440 #. type: table
35441 #: doc/guix.texi:19608
35442 msgid "The algorithm to use. Choose between @code{#f}, @code{'hmac-md5}, @code{'hmac-sha1}, @code{'hmac-sha224}, @code{'hmac-sha256}, @code{'hmac-sha384} and @code{'hmac-sha512}."
35443 msgstr ""
35444
35445 #. type: item
35446 #: doc/guix.texi:19609
35447 #, no-wrap
35448 msgid "@code{secret} (default: @code{\"\"})"
35449 msgstr ""
35450
35451 #. type: table
35452 #: doc/guix.texi:19611
35453 msgid "The secret key itself."
35454 msgstr ""
35455
35456 #. type: deftp
35457 #: doc/guix.texi:19615
35458 #, no-wrap
35459 msgid "{Data Type} knot-acl-configuration"
35460 msgstr ""
35461
35462 #. type: deftp
35463 #: doc/guix.texi:19618
35464 msgid "Data type representing an Access Control List (ACL) configuration. This type has the following parameters:"
35465 msgstr ""
35466
35467 #. type: table
35468 #: doc/guix.texi:19623
35469 msgid "An identifier for ether configuration fields to refer to this key. IDs must be unique and must not be empty."
35470 msgstr ""
35471
35472 #. type: item
35473 #: doc/guix.texi:19624 doc/guix.texi:19739
35474 #, no-wrap
35475 msgid "@code{address} (default: @code{'()})"
35476 msgstr ""
35477
35478 #. type: table
35479 #: doc/guix.texi:19628
35480 msgid "An ordered list of IP addresses, network subnets, or network ranges represented with strings. The query must match one of them. Empty value means that address match is not required."
35481 msgstr ""
35482
35483 #. type: item
35484 #: doc/guix.texi:19629
35485 #, no-wrap
35486 msgid "@code{key} (default: @code{'()})"
35487 msgstr ""
35488
35489 #. type: table
35490 #: doc/guix.texi:19633
35491 msgid "An ordered list of references to keys represented with strings. The string must match a key ID defined in a @code{knot-key-configuration}. No key means that a key is not require to match that ACL."
35492 msgstr ""
35493
35494 #. type: item
35495 #: doc/guix.texi:19634
35496 #, no-wrap
35497 msgid "@code{action} (default: @code{'()})"
35498 msgstr ""
35499
35500 #. type: table
35501 #: doc/guix.texi:19638
35502 msgid "An ordered list of actions that are permitted or forbidden by this ACL. Possible values are lists of zero or more elements from @code{'transfer}, @code{'notify} and @code{'update}."
35503 msgstr ""
35504
35505 #. type: item
35506 #: doc/guix.texi:19639
35507 #, no-wrap
35508 msgid "@code{deny?} (default: @code{#f})"
35509 msgstr ""
35510
35511 #. type: table
35512 #: doc/guix.texi:19642
35513 msgid "When true, the ACL defines restrictions. Listed actions are forbidden. When false, listed actions are allowed."
35514 msgstr ""
35515
35516 #. type: deftp
35517 #: doc/guix.texi:19646
35518 #, no-wrap
35519 msgid "{Data Type} zone-entry"
35520 msgstr ""
35521
35522 #. type: deftp
35523 #: doc/guix.texi:19649
35524 msgid "Data type represnting a record entry in a zone file. This type has the following parameters:"
35525 msgstr ""
35526
35527 #. type: item
35528 #: doc/guix.texi:19651
35529 #, no-wrap
35530 msgid "@code{name} (default: @code{\"@@\"})"
35531 msgstr ""
35532
35533 #. type: table
35534 #: doc/guix.texi:19657
35535 msgid "The name of the record. @code{\"@@\"} refers to the origin of the zone. Names are relative to the origin of the zone. For example, in the @code{example.org} zone, @code{\"ns.example.org\"} actually refers to @code{ns.example.org.example.org}. Names ending with a dot are absolute, which means that @code{\"ns.example.org.\"} refers to @code{ns.example.org}."
35536 msgstr ""
35537
35538 #. type: item
35539 #: doc/guix.texi:19658
35540 #, no-wrap
35541 msgid "@code{ttl} (default: @code{\"\"})"
35542 msgstr ""
35543
35544 #. type: table
35545 #: doc/guix.texi:19660
35546 msgid "The Time-To-Live (TTL) of this record. If not set, the default TTL is used."
35547 msgstr ""
35548
35549 #. type: item
35550 #: doc/guix.texi:19661
35551 #, no-wrap
35552 msgid "@code{class} (default: @code{\"IN\"})"
35553 msgstr ""
35554
35555 #. type: table
35556 #: doc/guix.texi:19664
35557 msgid "The class of the record. Knot currently supports only @code{\"IN\"} and partially @code{\"CH\"}."
35558 msgstr ""
35559
35560 #. type: item
35561 #: doc/guix.texi:19665
35562 #, no-wrap
35563 msgid "@code{type} (default: @code{\"A\"})"
35564 msgstr ""
35565
35566 #. type: table
35567 #: doc/guix.texi:19669
35568 msgid "The type of the record. Common types include A (IPv4 address), AAAA (IPv6 address), NS (Name Server) and MX (Mail eXchange). Many other types are defined."
35569 msgstr ""
35570
35571 #. type: item
35572 #: doc/guix.texi:19670
35573 #, no-wrap
35574 msgid "@code{data} (default: @code{\"\"})"
35575 msgstr ""
35576
35577 #. type: table
35578 #: doc/guix.texi:19674
35579 msgid "The data contained in the record. For instance an IP address associated with an A record, or a domain name associated with an NS record. Remember that domain names are relative to the origin unless they end with a dot."
35580 msgstr ""
35581
35582 #. type: deftp
35583 #: doc/guix.texi:19678
35584 #, no-wrap
35585 msgid "{Data Type} zone-file"
35586 msgstr ""
35587
35588 #. type: deftp
35589 #: doc/guix.texi:19681
35590 msgid "Data type representing the content of a zone file. This type has the following parameters:"
35591 msgstr ""
35592
35593 #. type: table
35594 #: doc/guix.texi:19690
35595 msgid "The list of entries. The SOA record is taken care of, so you don't need to put it in the list of entries. This list should probably contain an entry for your primary authoritative DNS server. Other than using a list of entries directly, you can use @code{define-zone-entries} to define a object containing the list of entries more easily, that you can later pass to the @code{entries} field of the @code{zone-file}."
35596 msgstr ""
35597
35598 #. type: item
35599 #: doc/guix.texi:19691
35600 #, no-wrap
35601 msgid "@code{origin} (default: @code{\"\"})"
35602 msgstr ""
35603
35604 #. type: table
35605 #: doc/guix.texi:19693
35606 msgid "The name of your zone. This parameter cannot be empty."
35607 msgstr ""
35608
35609 #. type: item
35610 #: doc/guix.texi:19694
35611 #, no-wrap
35612 msgid "@code{ns} (default: @code{\"ns\"})"
35613 msgstr ""
35614
35615 #. type: table
35616 #: doc/guix.texi:19699
35617 msgid "The domain of your primary authoritative DNS server. The name is relative to the origin, unless it ends with a dot. It is mandatory that this primary DNS server corresponds to an NS record in the zone and that it is associated to an IP address in the list of entries."
35618 msgstr ""
35619
35620 #. type: item
35621 #: doc/guix.texi:19700
35622 #, no-wrap
35623 msgid "@code{mail} (default: @code{\"hostmaster\"})"
35624 msgstr ""
35625
35626 #. type: table
35627 #: doc/guix.texi:19703
35628 msgid "An email address people can contact you at, as the owner of the zone. This is translated as @code{<mail>@@<origin>}."
35629 msgstr ""
35630
35631 #. type: item
35632 #: doc/guix.texi:19704
35633 #, no-wrap
35634 msgid "@code{serial} (default: @code{1})"
35635 msgstr ""
35636
35637 #. type: table
35638 #: doc/guix.texi:19708
35639 msgid "The serial number of the zone. As this is used to keep track of changes by both slaves and resolvers, it is mandatory that it @emph{never} decreases. Always increment it when you make a change in your zone."
35640 msgstr ""
35641
35642 #. type: item
35643 #: doc/guix.texi:19709
35644 #, no-wrap
35645 msgid "@code{refresh} (default: @code{(* 2 24 3600)})"
35646 msgstr ""
35647
35648 #. type: table
35649 #: doc/guix.texi:19713
35650 msgid "The frequency at which slaves will do a zone transfer. This value is a number of seconds. It can be computed by multiplications or with @code{(string->duration)}."
35651 msgstr ""
35652
35653 #. type: item
35654 #: doc/guix.texi:19714
35655 #, no-wrap
35656 msgid "@code{retry} (default: @code{(* 15 60)})"
35657 msgstr ""
35658
35659 #. type: table
35660 #: doc/guix.texi:19717
35661 msgid "The period after which a slave will retry to contact its master when it fails to do so a first time."
35662 msgstr ""
35663
35664 #. type: item
35665 #: doc/guix.texi:19718
35666 #, no-wrap
35667 msgid "@code{expiry} (default: @code{(* 14 24 3600)})"
35668 msgstr ""
35669
35670 #. type: table
35671 #: doc/guix.texi:19722
35672 msgid "Default TTL of records. Existing records are considered correct for at most this amount of time. After this period, resolvers will invalidate their cache and check again that it still exists."
35673 msgstr ""
35674
35675 #. type: item
35676 #: doc/guix.texi:19723
35677 #, no-wrap
35678 msgid "@code{nx} (default: @code{3600})"
35679 msgstr ""
35680
35681 #. type: table
35682 #: doc/guix.texi:19726
35683 msgid "Default TTL of inexistant records. This delay is usually short because you want your new domains to reach everyone quickly."
35684 msgstr ""
35685
35686 #. type: deftp
35687 #: doc/guix.texi:19730
35688 #, no-wrap
35689 msgid "{Data Type} knot-remote-configuration"
35690 msgstr ""
35691
35692 #. type: deftp
35693 #: doc/guix.texi:19733
35694 msgid "Data type representing a remote configuration. This type has the following parameters:"
35695 msgstr ""
35696
35697 #. type: table
35698 #: doc/guix.texi:19738
35699 msgid "An identifier for other configuration fields to refer to this remote. IDs must be unique and must not be empty."
35700 msgstr ""
35701
35702 #. type: table
35703 #: doc/guix.texi:19743
35704 msgid "An ordered list of destination IP addresses. Addresses are tried in sequence. An optional port can be given with the @@ separator. For instance: @code{(list \"1.2.3.4\" \"2.3.4.5@@53\")}. Default port is 53."
35705 msgstr ""
35706
35707 #. type: item
35708 #: doc/guix.texi:19744
35709 #, no-wrap
35710 msgid "@code{via} (default: @code{'()})"
35711 msgstr ""
35712
35713 #. type: table
35714 #: doc/guix.texi:19748
35715 msgid "An ordered list of source IP addresses. An empty list will have Knot choose an appropriate source IP. An optional port can be given with the @@ separator. The default is to choose at random."
35716 msgstr ""
35717
35718 #. type: item
35719 #: doc/guix.texi:19749
35720 #, no-wrap
35721 msgid "@code{key} (default: @code{#f})"
35722 msgstr ""
35723
35724 #. type: table
35725 #: doc/guix.texi:19752
35726 msgid "A reference to a key, that is a string containing the identifier of a key defined in a @code{knot-key-configuration} field."
35727 msgstr ""
35728
35729 #. type: deftp
35730 #: doc/guix.texi:19756
35731 #, no-wrap
35732 msgid "{Data Type} knot-keystore-configuration"
35733 msgstr ""
35734
35735 #. type: deftp
35736 #: doc/guix.texi:19759
35737 msgid "Data type representing a keystore to hold dnssec keys. This type has the following parameters:"
35738 msgstr ""
35739
35740 #. type: table
35741 #: doc/guix.texi:19763
35742 msgid "The id of the keystore. It must not be empty."
35743 msgstr ""
35744
35745 #. type: item
35746 #: doc/guix.texi:19764
35747 #, no-wrap
35748 msgid "@code{backend} (default: @code{'pem})"
35749 msgstr ""
35750
35751 #. type: table
35752 #: doc/guix.texi:19766
35753 msgid "The backend to store the keys in. Can be @code{'pem} or @code{'pkcs11}."
35754 msgstr ""
35755
35756 #. type: item
35757 #: doc/guix.texi:19767
35758 #, no-wrap
35759 msgid "@code{config} (default: @code{\"/var/lib/knot/keys/keys\"})"
35760 msgstr ""
35761
35762 #. type: table
35763 #: doc/guix.texi:19771
35764 msgid "The configuration string of the backend. An example for the PKCS#11 is: @code{\"pkcs11:token=knot;pin-value=1234 /gnu/store/.../lib/pkcs11/libsofthsm2.so\"}. For the pem backend, the string reprensents a path in the file system."
35765 msgstr ""
35766
35767 #. type: deftp
35768 #: doc/guix.texi:19775
35769 #, no-wrap
35770 msgid "{Data Type} knot-policy-configuration"
35771 msgstr ""
35772
35773 #. type: deftp
35774 #: doc/guix.texi:19779
35775 msgid "Data type representing a dnssec policy. Knot DNS is able to automatically sign your zones. It can either generate and manage your keys automatically or use keys that you generate."
35776 msgstr ""
35777
35778 #. type: deftp
35779 #: doc/guix.texi:19786
35780 msgid "Dnssec is usually implemented using two keys: a Key Signing Key (KSK) that is used to sign the second, and a Zone Signing Key (ZSK) that is used to sign the zone. In order to be trusted, the KSK needs to be present in the parent zone (usually a top-level domain). If your registrar supports dnssec, you will have to send them your KSK's hash so they can add a DS record in their zone. This is not automated and need to be done each time you change your KSK."
35781 msgstr ""
35782
35783 #. type: deftp
35784 #: doc/guix.texi:19792
35785 msgid "The policy also defines the lifetime of keys. Usually, ZSK can be changed easily and use weaker cryptographic functions (they use lower parameters) in order to sign records quickly, so they are changed often. The KSK however requires manual interaction with the registrar, so they are changed less often and use stronger parameters because they sign only one record."
35786 msgstr ""
35787
35788 #. type: deftp
35789 #: doc/guix.texi:19794
35790 msgid "This type has the following parameters:"
35791 msgstr ""
35792
35793 #. type: table
35794 #: doc/guix.texi:19798
35795 msgid "The id of the policy. It must not be empty."
35796 msgstr ""
35797
35798 #. type: item
35799 #: doc/guix.texi:19799
35800 #, no-wrap
35801 msgid "@code{keystore} (default: @code{\"default\"})"
35802 msgstr ""
35803
35804 #. type: table
35805 #: doc/guix.texi:19804
35806 msgid "A reference to a keystore, that is a string containing the identifier of a keystore defined in a @code{knot-keystore-configuration} field. The @code{\"default\"} identifier means the default keystore (a kasp database that was setup by this service)."
35807 msgstr ""
35808
35809 #. type: item
35810 #: doc/guix.texi:19805
35811 #, no-wrap
35812 msgid "@code{manual?} (default: @code{#f})"
35813 msgstr ""
35814
35815 #. type: table
35816 #: doc/guix.texi:19807
35817 msgid "Whether the key management is manual or automatic."
35818 msgstr ""
35819
35820 #. type: item
35821 #: doc/guix.texi:19808
35822 #, no-wrap
35823 msgid "@code{single-type-signing?} (default: @code{#f})"
35824 msgstr ""
35825
35826 #. type: table
35827 #: doc/guix.texi:19810
35828 msgid "When @code{#t}, use the Single-Type Signing Scheme."
35829 msgstr ""
35830
35831 #. type: item
35832 #: doc/guix.texi:19811
35833 #, no-wrap
35834 msgid "@code{algorithm} (default: @code{\"ecdsap256sha256\"})"
35835 msgstr ""
35836
35837 #. type: table
35838 #: doc/guix.texi:19813
35839 msgid "An algorithm of signing keys and issued signatures."
35840 msgstr ""
35841
35842 #. type: item
35843 #: doc/guix.texi:19814
35844 #, no-wrap
35845 msgid "@code{ksk-size} (default: @code{256})"
35846 msgstr ""
35847
35848 #. type: table
35849 #: doc/guix.texi:19817
35850 msgid "The length of the KSK. Note that this value is correct for the default algorithm, but would be unsecure for other algorithms."
35851 msgstr ""
35852
35853 #. type: item
35854 #: doc/guix.texi:19818
35855 #, no-wrap
35856 msgid "@code{zsk-size} (default: @code{256})"
35857 msgstr ""
35858
35859 #. type: table
35860 #: doc/guix.texi:19821
35861 msgid "The length of the ZSK. Note that this value is correct for the default algorithm, but would be unsecure for other algorithms."
35862 msgstr ""
35863
35864 #. type: item
35865 #: doc/guix.texi:19822
35866 #, no-wrap
35867 msgid "@code{dnskey-ttl} (default: @code{'default})"
35868 msgstr ""
35869
35870 #. type: table
35871 #: doc/guix.texi:19825
35872 msgid "The TTL value for DNSKEY records added into zone apex. The special @code{'default} value means same as the zone SOA TTL."
35873 msgstr ""
35874
35875 #. type: item
35876 #: doc/guix.texi:19826
35877 #, no-wrap
35878 msgid "@code{zsk-lifetime} (default: @code{(* 30 24 3600)})"
35879 msgstr ""
35880
35881 #. type: table
35882 #: doc/guix.texi:19828
35883 msgid "The period between ZSK publication and the next rollover initiation."
35884 msgstr ""
35885
35886 #. type: item
35887 #: doc/guix.texi:19829
35888 #, no-wrap
35889 msgid "@code{propagation-delay} (default: @code{(* 24 3600)})"
35890 msgstr ""
35891
35892 #. type: table
35893 #: doc/guix.texi:19832
35894 msgid "An extra delay added for each key rollover step. This value should be high enough to cover propagation of data from the master server to all slaves."
35895 msgstr ""
35896
35897 #. type: item
35898 #: doc/guix.texi:19833
35899 #, no-wrap
35900 msgid "@code{rrsig-lifetime} (default: @code{(* 14 24 3600)})"
35901 msgstr ""
35902
35903 #. type: table
35904 #: doc/guix.texi:19835
35905 msgid "A validity period of newly issued signatures."
35906 msgstr ""
35907
35908 #. type: item
35909 #: doc/guix.texi:19836
35910 #, no-wrap
35911 msgid "@code{rrsig-refresh} (default: @code{(* 7 24 3600)})"
35912 msgstr ""
35913
35914 #. type: table
35915 #: doc/guix.texi:19838
35916 msgid "A period how long before a signature expiration the signature will be refreshed."
35917 msgstr ""
35918
35919 #. type: item
35920 #: doc/guix.texi:19839
35921 #, no-wrap
35922 msgid "@code{nsec3?} (default: @code{#f})"
35923 msgstr ""
35924
35925 #. type: table
35926 #: doc/guix.texi:19841
35927 msgid "When @code{#t}, NSEC3 will be used instead of NSEC."
35928 msgstr ""
35929
35930 #. type: item
35931 #: doc/guix.texi:19842
35932 #, no-wrap
35933 msgid "@code{nsec3-iterations} (default: @code{5})"
35934 msgstr ""
35935
35936 #. type: table
35937 #: doc/guix.texi:19844
35938 msgid "The number of additional times the hashing is performed."
35939 msgstr ""
35940
35941 #. type: item
35942 #: doc/guix.texi:19845
35943 #, no-wrap
35944 msgid "@code{nsec3-salt-length} (default: @code{8})"
35945 msgstr ""
35946
35947 #. type: table
35948 #: doc/guix.texi:19848
35949 msgid "The length of a salt field in octets, which is appended to the original owner name before hashing."
35950 msgstr ""
35951
35952 #. type: item
35953 #: doc/guix.texi:19849
35954 #, no-wrap
35955 msgid "@code{nsec3-salt-lifetime} (default: @code{(* 30 24 3600)})"
35956 msgstr ""
35957
35958 #. type: table
35959 #: doc/guix.texi:19851
35960 msgid "The validity period of newly issued salt field."
35961 msgstr ""
35962
35963 #. type: deftp
35964 #: doc/guix.texi:19855
35965 #, no-wrap
35966 msgid "{Data Type} knot-zone-configuration"
35967 msgstr ""
35968
35969 #. type: deftp
35970 #: doc/guix.texi:19858
35971 msgid "Data type representing a zone served by Knot. This type has the following parameters:"
35972 msgstr ""
35973
35974 #. type: item
35975 #: doc/guix.texi:19860
35976 #, no-wrap
35977 msgid "@code{domain} (default: @code{\"\"})"
35978 msgstr ""
35979
35980 #. type: table
35981 #: doc/guix.texi:19862
35982 msgid "The domain served by this configuration. It must not be empty."
35983 msgstr ""
35984
35985 #. type: item
35986 #: doc/guix.texi:19863
35987 #, no-wrap
35988 msgid "@code{file} (default: @code{\"\"})"
35989 msgstr ""
35990
35991 #. type: table
35992 #: doc/guix.texi:19866
35993 msgid "The file where this zone is saved. This parameter is ignored by master zones. Empty means default location that depends on the domain name."
35994 msgstr ""
35995
35996 #. type: item
35997 #: doc/guix.texi:19867
35998 #, no-wrap
35999 msgid "@code{zone} (default: @code{(zone-file)})"
36000 msgstr ""
36001
36002 #. type: table
36003 #: doc/guix.texi:19870
36004 msgid "The content of the zone file. This parameter is ignored by slave zones. It must contain a zone-file record."
36005 msgstr ""
36006
36007 #. type: item
36008 #: doc/guix.texi:19871
36009 #, no-wrap
36010 msgid "@code{master} (default: @code{'()})"
36011 msgstr ""
36012
36013 #. type: table
36014 #: doc/guix.texi:19874
36015 msgid "A list of master remotes. When empty, this zone is a master. When set, this zone is a slave. This is a list of remotes identifiers."
36016 msgstr ""
36017
36018 #. type: item
36019 #: doc/guix.texi:19875
36020 #, no-wrap
36021 msgid "@code{ddns-master} (default: @code{#f})"
36022 msgstr ""
36023
36024 #. type: table
36025 #: doc/guix.texi:19878
36026 msgid "The main master. When empty, it defaults to the first master in the list of masters."
36027 msgstr ""
36028
36029 #. type: item
36030 #: doc/guix.texi:19879
36031 #, no-wrap
36032 msgid "@code{notify} (default: @code{'()})"
36033 msgstr ""
36034
36035 #. type: table
36036 #: doc/guix.texi:19881
36037 msgid "A list of slave remote identifiers."
36038 msgstr ""
36039
36040 #. type: item
36041 #: doc/guix.texi:19882
36042 #, no-wrap
36043 msgid "@code{acl} (default: @code{'()})"
36044 msgstr ""
36045
36046 #. type: table
36047 #: doc/guix.texi:19884
36048 msgid "A list of acl identifiers."
36049 msgstr ""
36050
36051 #. type: item
36052 #: doc/guix.texi:19885
36053 #, no-wrap
36054 msgid "@code{semantic-checks?} (default: @code{#f})"
36055 msgstr ""
36056
36057 #. type: table
36058 #: doc/guix.texi:19887
36059 msgid "When set, this adds more semantic checks to the zone."
36060 msgstr ""
36061
36062 #. type: item
36063 #: doc/guix.texi:19888
36064 #, no-wrap
36065 msgid "@code{disable-any?} (default: @code{#f})"
36066 msgstr ""
36067
36068 #. type: table
36069 #: doc/guix.texi:19890
36070 msgid "When set, this forbids queries of the ANY type."
36071 msgstr ""
36072
36073 #. type: item
36074 #: doc/guix.texi:19891
36075 #, no-wrap
36076 msgid "@code{zonefile-sync} (default: @code{0})"
36077 msgstr ""
36078
36079 #. type: table
36080 #: doc/guix.texi:19894
36081 msgid "The delay between a modification in memory and on disk. 0 means immediate synchronization."
36082 msgstr ""
36083
36084 #. type: item
36085 #: doc/guix.texi:19895
36086 #, no-wrap
36087 msgid "@code{zonefile-load} (default: @code{#f})"
36088 msgstr "@code{zonefile-load}(默认值:@code{#f})"
36089
36090 #. type: table
36091 #: doc/guix.texi:19898
36092 msgid "The way the zone file contents are applied during zone load. Possible values are:"
36093 msgstr ""
36094
36095 #. type: item
36096 #: doc/guix.texi:19900
36097 #, no-wrap
36098 msgid "@code{#f} for using the default value from Knot,"
36099 msgstr ""
36100
36101 #. type: item
36102 #: doc/guix.texi:19901
36103 #, no-wrap
36104 msgid "@code{'none} for not using the zone file at all,"
36105 msgstr ""
36106
36107 #. type: item
36108 #: doc/guix.texi:19902
36109 #, no-wrap
36110 msgid "@code{'difference} for computing the difference between already available"
36111 msgstr ""
36112
36113 #. type: itemize
36114 #: doc/guix.texi:19904
36115 msgid "contents and zone contents and applying it to the current zone contents,"
36116 msgstr ""
36117
36118 #. type: item
36119 #: doc/guix.texi:19904
36120 #, no-wrap
36121 msgid "@code{'difference-no-serial} for the same as @code{'difference}, but"
36122 msgstr ""
36123
36124 #. type: itemize
36125 #: doc/guix.texi:19907
36126 msgid "ignoring the SOA serial in the zone file, while the server takes care of it automatically."
36127 msgstr ""
36128
36129 #. type: item
36130 #: doc/guix.texi:19907
36131 #, no-wrap
36132 msgid "@code{'whole} for loading zone contents from the zone file."
36133 msgstr ""
36134
36135 #. type: item
36136 #: doc/guix.texi:19910
36137 #, no-wrap
36138 msgid "@code{journal-content} (default: @code{#f})"
36139 msgstr "@code{journal-content}(默认值:@code{#f})"
36140
36141 #. type: table
36142 #: doc/guix.texi:19915
36143 msgid "The way the journal is used to store zone and its changes. Possible values are @code{'none} to not use it at all, @code{'changes} to store changes and @code{'all} to store contents. @code{#f} does not set this option, so the default value from Knot is used."
36144 msgstr ""
36145
36146 #. type: item
36147 #: doc/guix.texi:19916
36148 #, no-wrap
36149 msgid "@code{max-journal-usage} (default: @code{#f})"
36150 msgstr "@code{max-journal-usage}(默认值:@code{#f})"
36151
36152 #. type: table
36153 #: doc/guix.texi:19919
36154 msgid "The maximum size for the journal on disk. @code{#f} does not set this option, so the default value from Knot is used."
36155 msgstr ""
36156
36157 #. type: item
36158 #: doc/guix.texi:19920
36159 #, no-wrap
36160 msgid "@code{max-journal-depth} (default: @code{#f})"
36161 msgstr "@code{max-journal-depth}(默认值:@code{#f})"
36162
36163 #. type: table
36164 #: doc/guix.texi:19923
36165 msgid "The maximum size of the history. @code{#f} does not set this option, so the default value from Knot is used."
36166 msgstr ""
36167
36168 #. type: item
36169 #: doc/guix.texi:19924
36170 #, no-wrap
36171 msgid "@code{max-zone-size} (default: @code{#f})"
36172 msgstr "@code{max-zone-size}(默认值:@code{#f})"
36173
36174 #. type: table
36175 #: doc/guix.texi:19928
36176 msgid "The maximum size of the zone file. This limit is enforced for incoming transfer and updates. @code{#f} does not set this option, so the default value from Knot is used."
36177 msgstr ""
36178
36179 #. type: item
36180 #: doc/guix.texi:19929
36181 #, no-wrap
36182 msgid "@code{dnssec-policy} (default: @code{#f})"
36183 msgstr "@code{dnssec-policy}(默认值:@code{#f})"
36184
36185 #. type: table
36186 #: doc/guix.texi:19933
36187 msgid "A reference to a @code{knot-policy-configuration} record, or the special name @code{\"default\"}. If the value is @code{#f}, there is no dnssec signing on this zone."
36188 msgstr ""
36189
36190 #. type: item
36191 #: doc/guix.texi:19934
36192 #, no-wrap
36193 msgid "@code{serial-policy} (default: @code{'increment})"
36194 msgstr ""
36195
36196 #. type: table
36197 #: doc/guix.texi:19936
36198 msgid "A policy between @code{'increment} and @code{'unixtime}."
36199 msgstr ""
36200
36201 #. type: deftp
36202 #: doc/guix.texi:19940
36203 #, no-wrap
36204 msgid "{Data Type} knot-configuration"
36205 msgstr ""
36206
36207 #. type: deftp
36208 #: doc/guix.texi:19943
36209 msgid "Data type representing the Knot configuration. This type has the following parameters:"
36210 msgstr ""
36211
36212 #. type: item
36213 #: doc/guix.texi:19945
36214 #, no-wrap
36215 msgid "@code{knot} (default: @code{knot})"
36216 msgstr ""
36217
36218 #. type: table
36219 #: doc/guix.texi:19947
36220 msgid "The Knot package."
36221 msgstr ""
36222
36223 #. type: item
36224 #: doc/guix.texi:19948
36225 #, no-wrap
36226 msgid "@code{run-directory} (default: @code{\"/var/run/knot\"})"
36227 msgstr ""
36228
36229 #. type: table
36230 #: doc/guix.texi:19950
36231 msgid "The run directory. This directory will be used for pid file and sockets."
36232 msgstr ""
36233
36234 #. type: item
36235 #: doc/guix.texi:19951
36236 #, no-wrap
36237 msgid "@code{includes} (default: @code{'()})"
36238 msgstr "@code{includes}(默认值:@code{'()})"
36239
36240 #. type: table
36241 #: doc/guix.texi:19954
36242 msgid "A list of strings or file-like objects denoting other files that must be included at the top of the configuration file."
36243 msgstr ""
36244
36245 #. type: cindex
36246 #: doc/guix.texi:19955
36247 #, no-wrap
36248 msgid "secrets, Knot service"
36249 msgstr "秘密,Knot服务。"
36250
36251 #. type: table
36252 #: doc/guix.texi:19961
36253 msgid "This can be used to manage secrets out-of-band. For example, secret keys may be stored in an out-of-band file not managed by Guix, and thus not visible in @file{/gnu/store}---e.g., you could store secret key configuration in @file{/etc/knot/secrets.conf} and add this file to the @code{includes} list."
36254 msgstr ""
36255
36256 #. type: table
36257 #: doc/guix.texi:19963
36258 msgid "It can also be used to add configuration not supported by this interface."
36259 msgstr ""
36260
36261 #. type: item
36262 #: doc/guix.texi:19964
36263 #, no-wrap
36264 msgid "@code{listen-v4} (default: @code{\"0.0.0.0\"})"
36265 msgstr ""
36266
36267 #. type: table
36268 #: doc/guix.texi:19966 doc/guix.texi:19969
36269 msgid "An ip address on which to listen."
36270 msgstr ""
36271
36272 #. type: item
36273 #: doc/guix.texi:19967
36274 #, no-wrap
36275 msgid "@code{listen-v6} (default: @code{\"::\"})"
36276 msgstr ""
36277
36278 #. type: item
36279 #: doc/guix.texi:19970
36280 #, no-wrap
36281 msgid "@code{listen-port} (default: @code{53})"
36282 msgstr ""
36283
36284 #. type: table
36285 #: doc/guix.texi:19972
36286 msgid "A port on which to listen."
36287 msgstr ""
36288
36289 #. type: item
36290 #: doc/guix.texi:19973
36291 #, no-wrap
36292 msgid "@code{keys} (default: @code{'()})"
36293 msgstr ""
36294
36295 #. type: table
36296 #: doc/guix.texi:19975
36297 msgid "The list of knot-key-configuration used by this configuration."
36298 msgstr ""
36299
36300 #. type: item
36301 #: doc/guix.texi:19976
36302 #, no-wrap
36303 msgid "@code{acls} (default: @code{'()})"
36304 msgstr ""
36305
36306 #. type: table
36307 #: doc/guix.texi:19978
36308 msgid "The list of knot-acl-configuration used by this configuration."
36309 msgstr ""
36310
36311 #. type: item
36312 #: doc/guix.texi:19979
36313 #, no-wrap
36314 msgid "@code{remotes} (default: @code{'()})"
36315 msgstr ""
36316
36317 #. type: table
36318 #: doc/guix.texi:19981
36319 msgid "The list of knot-remote-configuration used by this configuration."
36320 msgstr ""
36321
36322 #. type: item
36323 #: doc/guix.texi:19982
36324 #, no-wrap
36325 msgid "@code{zones} (default: @code{'()})"
36326 msgstr ""
36327
36328 #. type: table
36329 #: doc/guix.texi:19984
36330 msgid "The list of knot-zone-configuration used by this configuration."
36331 msgstr ""
36332
36333 #. type: subsubheading
36334 #: doc/guix.texi:19988
36335 #, no-wrap
36336 msgid "Dnsmasq Service"
36337 msgstr ""
36338
36339 #. type: deffn
36340 #: doc/guix.texi:19990
36341 #, no-wrap
36342 msgid "{Scheme Variable} dnsmasq-service-type"
36343 msgstr ""
36344
36345 #. type: deffn
36346 #: doc/guix.texi:19993
36347 msgid "This is the type of the dnsmasq service, whose value should be an @code{dnsmasq-configuration} object as in this example:"
36348 msgstr ""
36349
36350 #. type: example
36351 #: doc/guix.texi:19999
36352 #, no-wrap
36353 msgid ""
36354 "(service dnsmasq-service-type\n"
36355 " (dnsmasq-configuration\n"
36356 " (no-resolv? #t)\n"
36357 " (servers '(\"192.168.1.1\"))))\n"
36358 msgstr ""
36359
36360 #. type: deftp
36361 #: doc/guix.texi:20002
36362 #, no-wrap
36363 msgid "{Data Type} dnsmasq-configuration"
36364 msgstr ""
36365
36366 #. type: deftp
36367 #: doc/guix.texi:20004
36368 msgid "Data type representing the configuration of dnsmasq."
36369 msgstr ""
36370
36371 #. type: item
36372 #: doc/guix.texi:20006
36373 #, no-wrap
36374 msgid "@code{package} (default: @var{dnsmasq})"
36375 msgstr ""
36376
36377 #. type: table
36378 #: doc/guix.texi:20008
36379 msgid "Package object of the dnsmasq server."
36380 msgstr ""
36381
36382 #. type: item
36383 #: doc/guix.texi:20009
36384 #, no-wrap
36385 msgid "@code{no-hosts?} (default: @code{#f})"
36386 msgstr ""
36387
36388 #. type: table
36389 #: doc/guix.texi:20011
36390 msgid "When true, don't read the hostnames in /etc/hosts."
36391 msgstr ""
36392
36393 #. type: item
36394 #: doc/guix.texi:20012
36395 #, no-wrap
36396 msgid "@code{port} (default: @code{53})"
36397 msgstr ""
36398
36399 #. type: table
36400 #: doc/guix.texi:20015
36401 msgid "The port to listen on. Setting this to zero completely disables DNS responses, leaving only DHCP and/or TFTP functions."
36402 msgstr ""
36403
36404 #. type: item
36405 #: doc/guix.texi:20016
36406 #, no-wrap
36407 msgid "@code{local-service?} (default: @code{#t})"
36408 msgstr ""
36409
36410 #. type: table
36411 #: doc/guix.texi:20019
36412 msgid "Accept DNS queries only from hosts whose address is on a local subnet, ie a subnet for which an interface exists on the server."
36413 msgstr ""
36414
36415 #. type: item
36416 #: doc/guix.texi:20020
36417 #, no-wrap
36418 msgid "@code{listen-addresses} (default: @code{'()})"
36419 msgstr ""
36420
36421 #. type: table
36422 #: doc/guix.texi:20022
36423 msgid "Listen on the given IP addresses."
36424 msgstr ""
36425
36426 #. type: item
36427 #: doc/guix.texi:20023
36428 #, no-wrap
36429 msgid "@code{resolv-file} (default: @code{\"/etc/resolv.conf\"})"
36430 msgstr ""
36431
36432 #. type: table
36433 #: doc/guix.texi:20025
36434 msgid "The file to read the IP address of the upstream nameservers from."
36435 msgstr ""
36436
36437 #. type: item
36438 #: doc/guix.texi:20026
36439 #, no-wrap
36440 msgid "@code{no-resolv?} (default: @code{#f})"
36441 msgstr ""
36442
36443 #. type: table
36444 #: doc/guix.texi:20028
36445 msgid "When true, don't read @var{resolv-file}."
36446 msgstr ""
36447
36448 #. type: table
36449 #: doc/guix.texi:20031
36450 msgid "Specify IP address of upstream servers directly."
36451 msgstr ""
36452
36453 #. type: item
36454 #: doc/guix.texi:20032
36455 #, no-wrap
36456 msgid "@code{cache-size} (default: @code{150})"
36457 msgstr ""
36458
36459 #. type: table
36460 #: doc/guix.texi:20035
36461 msgid "Set the size of dnsmasq's cache. Setting the cache size to zero disables caching."
36462 msgstr ""
36463
36464 #. type: item
36465 #: doc/guix.texi:20036
36466 #, no-wrap
36467 msgid "@code{negative-cache?} (default: @code{#t})"
36468 msgstr ""
36469
36470 #. type: table
36471 #: doc/guix.texi:20038
36472 msgid "When false, disable negative caching."
36473 msgstr ""
36474
36475 #. type: subsubheading
36476 #: doc/guix.texi:20042
36477 #, no-wrap
36478 msgid "ddclient Service"
36479 msgstr ""
36480
36481 #. type: cindex
36482 #: doc/guix.texi:20044
36483 #, no-wrap
36484 msgid "ddclient"
36485 msgstr ""
36486
36487 #. type: Plain text
36488 #: doc/guix.texi:20048
36489 msgid "The ddclient service described below runs the ddclient daemon, which takes care of automatically updating DNS entries for service providers such as @uref{https://dyn.com/dns/, Dyn}."
36490 msgstr ""
36491
36492 #. type: Plain text
36493 #: doc/guix.texi:20051
36494 msgid "The following example show instantiates the service with its default configuration:"
36495 msgstr ""
36496
36497 #. type: example
36498 #: doc/guix.texi:20054
36499 #, no-wrap
36500 msgid "(service ddclient-service-type)\n"
36501 msgstr ""
36502
36503 #. type: Plain text
36504 #: doc/guix.texi:20063
36505 msgid "Note that ddclient needs to access credentials that are stored in a @dfn{secret file}, by default @file{/etc/ddclient/secrets} (see @code{secret-file} below.) You are expected to create this file manually, in an ``out-of-band'' fashion (you @emph{could} make this file part of the service configuration, for instance by using @code{plain-file}, but it will be world-readable @i{via} @file{/gnu/store}.) See the examples in the @file{share/ddclient} directory of the @code{ddclient} package."
36506 msgstr ""
36507
36508 #. type: Plain text
36509 #: doc/guix.texi:20067
36510 msgid "Available @code{ddclient-configuration} fields are:"
36511 msgstr ""
36512
36513 #. type: deftypevr
36514 #: doc/guix.texi:20068
36515 #, no-wrap
36516 msgid "{@code{ddclient-configuration} parameter} package ddclient"
36517 msgstr ""
36518
36519 #. type: deftypevr
36520 #: doc/guix.texi:20070
36521 msgid "The ddclient package."
36522 msgstr ""
36523
36524 #. type: deftypevr
36525 #: doc/guix.texi:20073
36526 #, no-wrap
36527 msgid "{@code{ddclient-configuration} parameter} integer daemon"
36528 msgstr ""
36529
36530 #. type: deftypevr
36531 #: doc/guix.texi:20075
36532 msgid "The period after which ddclient will retry to check IP and domain name."
36533 msgstr ""
36534
36535 #. type: deftypevr
36536 #: doc/guix.texi:20080
36537 #, no-wrap
36538 msgid "{@code{ddclient-configuration} parameter} boolean syslog"
36539 msgstr ""
36540
36541 #. type: deftypevr
36542 #: doc/guix.texi:20082
36543 msgid "Use syslog for the output."
36544 msgstr ""
36545
36546 #. type: deftypevr
36547 #: doc/guix.texi:20087
36548 #, no-wrap
36549 msgid "{@code{ddclient-configuration} parameter} string mail"
36550 msgstr ""
36551
36552 #. type: deftypevr
36553 #: doc/guix.texi:20089
36554 msgid "Mail to user."
36555 msgstr ""
36556
36557 #. type: deftypevr
36558 #: doc/guix.texi:20091 doc/guix.texi:20098 doc/guix.texi:21435
36559 msgid "Defaults to @samp{\"root\"}."
36560 msgstr ""
36561
36562 #. type: deftypevr
36563 #: doc/guix.texi:20094
36564 #, no-wrap
36565 msgid "{@code{ddclient-configuration} parameter} string mail-failure"
36566 msgstr ""
36567
36568 #. type: deftypevr
36569 #: doc/guix.texi:20096
36570 msgid "Mail failed update to user."
36571 msgstr ""
36572
36573 #. type: deftypevr
36574 #: doc/guix.texi:20101
36575 #, no-wrap
36576 msgid "{@code{ddclient-configuration} parameter} string pid"
36577 msgstr ""
36578
36579 #. type: deftypevr
36580 #: doc/guix.texi:20103
36581 msgid "The ddclient PID file."
36582 msgstr ""
36583
36584 #. type: deftypevr
36585 #: doc/guix.texi:20105
36586 msgid "Defaults to @samp{\"/var/run/ddclient/ddclient.pid\"}."
36587 msgstr ""
36588
36589 #. type: deftypevr
36590 #: doc/guix.texi:20108
36591 #, no-wrap
36592 msgid "{@code{ddclient-configuration} parameter} boolean ssl"
36593 msgstr ""
36594
36595 #. type: deftypevr
36596 #: doc/guix.texi:20110
36597 msgid "Enable SSL support."
36598 msgstr ""
36599
36600 #. type: deftypevr
36601 #: doc/guix.texi:20115
36602 #, no-wrap
36603 msgid "{@code{ddclient-configuration} parameter} string user"
36604 msgstr ""
36605
36606 #. type: deftypevr
36607 #: doc/guix.texi:20118
36608 msgid "Specifies the user name or ID that is used when running ddclient program."
36609 msgstr ""
36610
36611 #. type: deftypevr
36612 #: doc/guix.texi:20120 doc/guix.texi:20127
36613 msgid "Defaults to @samp{\"ddclient\"}."
36614 msgstr ""
36615
36616 #. type: deftypevr
36617 #: doc/guix.texi:20123
36618 #, no-wrap
36619 msgid "{@code{ddclient-configuration} parameter} string group"
36620 msgstr ""
36621
36622 #. type: deftypevr
36623 #: doc/guix.texi:20125
36624 msgid "Group of the user who will run the ddclient program."
36625 msgstr ""
36626
36627 #. type: deftypevr
36628 #: doc/guix.texi:20130
36629 #, no-wrap
36630 msgid "{@code{ddclient-configuration} parameter} string secret-file"
36631 msgstr ""
36632
36633 #. type: deftypevr
36634 #: doc/guix.texi:20134
36635 msgid "Secret file which will be appended to @file{ddclient.conf} file. This file contains credentials for use by ddclient. You are expected to create it manually."
36636 msgstr ""
36637
36638 #. type: deftypevr
36639 #: doc/guix.texi:20136
36640 msgid "Defaults to @samp{\"/etc/ddclient/secrets.conf\"}."
36641 msgstr ""
36642
36643 #. type: deftypevr
36644 #: doc/guix.texi:20139
36645 #, no-wrap
36646 msgid "{@code{ddclient-configuration} parameter} list extra-options"
36647 msgstr ""
36648
36649 #. type: deftypevr
36650 #: doc/guix.texi:20141
36651 msgid "Extra options will be appended to @file{ddclient.conf} file."
36652 msgstr ""
36653
36654 #. type: cindex
36655 #: doc/guix.texi:20152
36656 #, no-wrap
36657 msgid "VPN (virtual private network)"
36658 msgstr ""
36659
36660 #. type: cindex
36661 #: doc/guix.texi:20153
36662 #, no-wrap
36663 msgid "virtual private network (VPN)"
36664 msgstr ""
36665
36666 #. type: Plain text
36667 #: doc/guix.texi:20159
36668 msgid "The @code{(gnu services vpn)} module provides services related to @dfn{virtual private networks} (VPNs). It provides a @emph{client} service for your machine to connect to a VPN, and a @emph{server} service for your machine to host a VPN. Both services use @uref{https://openvpn.net/, OpenVPN}."
36669 msgstr ""
36670
36671 #. type: deffn
36672 #: doc/guix.texi:20160
36673 #, no-wrap
36674 msgid "{Scheme Procedure} openvpn-client-service @"
36675 msgstr ""
36676
36677 #. type: deffn
36678 #: doc/guix.texi:20162
36679 msgid "[#:config (openvpn-client-configuration)]"
36680 msgstr ""
36681
36682 #. type: deffn
36683 #: doc/guix.texi:20164
36684 msgid "Return a service that runs @command{openvpn}, a VPN daemon, as a client."
36685 msgstr ""
36686
36687 #. type: deffn
36688 #: doc/guix.texi:20166
36689 #, no-wrap
36690 msgid "{Scheme Procedure} openvpn-server-service @"
36691 msgstr ""
36692
36693 #. type: deffn
36694 #: doc/guix.texi:20168
36695 msgid "[#:config (openvpn-server-configuration)]"
36696 msgstr ""
36697
36698 #. type: deffn
36699 #: doc/guix.texi:20170
36700 msgid "Return a service that runs @command{openvpn}, a VPN daemon, as a server."
36701 msgstr ""
36702
36703 #. type: deffn
36704 #: doc/guix.texi:20172
36705 msgid "Both can be run simultaneously."
36706 msgstr ""
36707
36708 #. type: Plain text
36709 #: doc/guix.texi:20177
36710 msgid "Available @code{openvpn-client-configuration} fields are:"
36711 msgstr ""
36712
36713 #. type: deftypevr
36714 #: doc/guix.texi:20178
36715 #, no-wrap
36716 msgid "{@code{openvpn-client-configuration} parameter} package openvpn"
36717 msgstr ""
36718
36719 #. type: deftypevr
36720 #: doc/guix.texi:20180 doc/guix.texi:20316
36721 msgid "The OpenVPN package."
36722 msgstr ""
36723
36724 #. type: deftypevr
36725 #: doc/guix.texi:20183
36726 #, no-wrap
36727 msgid "{@code{openvpn-client-configuration} parameter} string pid-file"
36728 msgstr ""
36729
36730 #. type: deftypevr
36731 #: doc/guix.texi:20185 doc/guix.texi:20321
36732 msgid "The OpenVPN pid file."
36733 msgstr ""
36734
36735 #. type: deftypevr
36736 #: doc/guix.texi:20187 doc/guix.texi:20323
36737 msgid "Defaults to @samp{\"/var/run/openvpn/openvpn.pid\"}."
36738 msgstr ""
36739
36740 #. type: deftypevr
36741 #: doc/guix.texi:20190
36742 #, no-wrap
36743 msgid "{@code{openvpn-client-configuration} parameter} proto proto"
36744 msgstr ""
36745
36746 #. type: deftypevr
36747 #: doc/guix.texi:20193 doc/guix.texi:20329
36748 msgid "The protocol (UDP or TCP) used to open a channel between clients and servers."
36749 msgstr ""
36750
36751 #. type: deftypevr
36752 #: doc/guix.texi:20195 doc/guix.texi:20331
36753 msgid "Defaults to @samp{udp}."
36754 msgstr ""
36755
36756 #. type: deftypevr
36757 #: doc/guix.texi:20198
36758 #, no-wrap
36759 msgid "{@code{openvpn-client-configuration} parameter} dev dev"
36760 msgstr ""
36761
36762 #. type: deftypevr
36763 #: doc/guix.texi:20200 doc/guix.texi:20336
36764 msgid "The device type used to represent the VPN connection."
36765 msgstr ""
36766
36767 #. type: deftypevr
36768 #: doc/guix.texi:20202 doc/guix.texi:20338
36769 msgid "Defaults to @samp{tun}."
36770 msgstr ""
36771
36772 #. type: deftypevr
36773 #: doc/guix.texi:20205
36774 #, no-wrap
36775 msgid "{@code{openvpn-client-configuration} parameter} string ca"
36776 msgstr ""
36777
36778 #. type: deftypevr
36779 #: doc/guix.texi:20207 doc/guix.texi:20343
36780 msgid "The certificate authority to check connections against."
36781 msgstr ""
36782
36783 #. type: deftypevr
36784 #: doc/guix.texi:20209 doc/guix.texi:20345
36785 msgid "Defaults to @samp{\"/etc/openvpn/ca.crt\"}."
36786 msgstr ""
36787
36788 #. type: deftypevr
36789 #: doc/guix.texi:20212
36790 #, no-wrap
36791 msgid "{@code{openvpn-client-configuration} parameter} string cert"
36792 msgstr ""
36793
36794 #. type: deftypevr
36795 #: doc/guix.texi:20215 doc/guix.texi:20351
36796 msgid "The certificate of the machine the daemon is running on. It should be signed by the authority given in @code{ca}."
36797 msgstr ""
36798
36799 #. type: deftypevr
36800 #: doc/guix.texi:20217 doc/guix.texi:20353
36801 msgid "Defaults to @samp{\"/etc/openvpn/client.crt\"}."
36802 msgstr ""
36803
36804 #. type: deftypevr
36805 #: doc/guix.texi:20220
36806 #, no-wrap
36807 msgid "{@code{openvpn-client-configuration} parameter} string key"
36808 msgstr ""
36809
36810 #. type: deftypevr
36811 #: doc/guix.texi:20223 doc/guix.texi:20359
36812 msgid "The key of the machine the daemon is running on. It must be the key whose certificate is @code{cert}."
36813 msgstr ""
36814
36815 #. type: deftypevr
36816 #: doc/guix.texi:20225 doc/guix.texi:20361
36817 msgid "Defaults to @samp{\"/etc/openvpn/client.key\"}."
36818 msgstr ""
36819
36820 #. type: deftypevr
36821 #: doc/guix.texi:20228
36822 #, no-wrap
36823 msgid "{@code{openvpn-client-configuration} parameter} boolean comp-lzo?"
36824 msgstr ""
36825
36826 #. type: deftypevr
36827 #: doc/guix.texi:20230 doc/guix.texi:20366
36828 msgid "Whether to use the lzo compression algorithm."
36829 msgstr ""
36830
36831 #. type: deftypevr
36832 #: doc/guix.texi:20235
36833 #, no-wrap
36834 msgid "{@code{openvpn-client-configuration} parameter} boolean persist-key?"
36835 msgstr ""
36836
36837 #. type: deftypevr
36838 #: doc/guix.texi:20237 doc/guix.texi:20373
36839 msgid "Don't re-read key files across SIGUSR1 or --ping-restart."
36840 msgstr ""
36841
36842 #. type: deftypevr
36843 #: doc/guix.texi:20242
36844 #, no-wrap
36845 msgid "{@code{openvpn-client-configuration} parameter} boolean persist-tun?"
36846 msgstr ""
36847
36848 #. type: deftypevr
36849 #: doc/guix.texi:20245 doc/guix.texi:20381
36850 msgid "Don't close and reopen TUN/TAP device or run up/down scripts across SIGUSR1 or --ping-restart restarts."
36851 msgstr ""
36852
36853 #. type: deftypevr
36854 #: doc/guix.texi:20250
36855 #, no-wrap
36856 msgid "{@code{openvpn-client-configuration} parameter} number verbosity"
36857 msgstr ""
36858
36859 #. type: deftypevr
36860 #: doc/guix.texi:20252 doc/guix.texi:20388
36861 msgid "Verbosity level."
36862 msgstr ""
36863
36864 #. type: deftypevr
36865 #: doc/guix.texi:20254 doc/guix.texi:20390 doc/guix.texi:21703
36866 #: doc/guix.texi:21926
36867 msgid "Defaults to @samp{3}."
36868 msgstr ""
36869
36870 #. type: deftypevr
36871 #: doc/guix.texi:20257
36872 #, no-wrap
36873 msgid "{@code{openvpn-client-configuration} parameter} tls-auth-client tls-auth"
36874 msgstr ""
36875
36876 #. type: deftypevr
36877 #: doc/guix.texi:20260 doc/guix.texi:20396
36878 msgid "Add an additional layer of HMAC authentication on top of the TLS control channel to protect against DoS attacks."
36879 msgstr ""
36880
36881 #. type: deftypevr
36882 #: doc/guix.texi:20265
36883 #, no-wrap
36884 msgid "{@code{openvpn-client-configuration} parameter} key-usage verify-key-usage?"
36885 msgstr ""
36886
36887 #. type: deftypevr
36888 #: doc/guix.texi:20267
36889 msgid "Whether to check the server certificate has server usage extension."
36890 msgstr ""
36891
36892 #. type: deftypevr
36893 #: doc/guix.texi:20272
36894 #, no-wrap
36895 msgid "{@code{openvpn-client-configuration} parameter} bind bind?"
36896 msgstr ""
36897
36898 #. type: deftypevr
36899 #: doc/guix.texi:20274
36900 msgid "Bind to a specific local port number."
36901 msgstr ""
36902
36903 #. type: deftypevr
36904 #: doc/guix.texi:20279
36905 #, no-wrap
36906 msgid "{@code{openvpn-client-configuration} parameter} resolv-retry resolv-retry?"
36907 msgstr ""
36908
36909 #. type: deftypevr
36910 #: doc/guix.texi:20281
36911 msgid "Retry resolving server address."
36912 msgstr ""
36913
36914 #. type: deftypevr
36915 #: doc/guix.texi:20286
36916 #, no-wrap
36917 msgid "{@code{openvpn-client-configuration} parameter} openvpn-remote-list remote"
36918 msgstr ""
36919
36920 #. type: deftypevr
36921 #: doc/guix.texi:20288
36922 msgid "A list of remote servers to connect to."
36923 msgstr ""
36924
36925 #. type: deftypevr
36926 #: doc/guix.texi:20292
36927 msgid "Available @code{openvpn-remote-configuration} fields are:"
36928 msgstr ""
36929
36930 #. type: deftypevr
36931 #: doc/guix.texi:20293
36932 #, no-wrap
36933 msgid "{@code{openvpn-remote-configuration} parameter} string name"
36934 msgstr ""
36935
36936 #. type: deftypevr
36937 #: doc/guix.texi:20295
36938 msgid "Server name."
36939 msgstr ""
36940
36941 #. type: deftypevr
36942 #: doc/guix.texi:20297
36943 msgid "Defaults to @samp{\"my-server\"}."
36944 msgstr ""
36945
36946 #. type: deftypevr
36947 #: doc/guix.texi:20300
36948 #, no-wrap
36949 msgid "{@code{openvpn-remote-configuration} parameter} number port"
36950 msgstr ""
36951
36952 #. type: deftypevr
36953 #: doc/guix.texi:20302
36954 msgid "Port number the server listens to."
36955 msgstr ""
36956
36957 #. type: deftypevr
36958 #: doc/guix.texi:20304 doc/guix.texi:20405
36959 msgid "Defaults to @samp{1194}."
36960 msgstr ""
36961
36962 #. type: Plain text
36963 #: doc/guix.texi:20313
36964 msgid "Available @code{openvpn-server-configuration} fields are:"
36965 msgstr ""
36966
36967 #. type: deftypevr
36968 #: doc/guix.texi:20314
36969 #, no-wrap
36970 msgid "{@code{openvpn-server-configuration} parameter} package openvpn"
36971 msgstr ""
36972
36973 #. type: deftypevr
36974 #: doc/guix.texi:20319
36975 #, no-wrap
36976 msgid "{@code{openvpn-server-configuration} parameter} string pid-file"
36977 msgstr ""
36978
36979 #. type: deftypevr
36980 #: doc/guix.texi:20326
36981 #, no-wrap
36982 msgid "{@code{openvpn-server-configuration} parameter} proto proto"
36983 msgstr ""
36984
36985 #. type: deftypevr
36986 #: doc/guix.texi:20334
36987 #, no-wrap
36988 msgid "{@code{openvpn-server-configuration} parameter} dev dev"
36989 msgstr ""
36990
36991 #. type: deftypevr
36992 #: doc/guix.texi:20341
36993 #, no-wrap
36994 msgid "{@code{openvpn-server-configuration} parameter} string ca"
36995 msgstr ""
36996
36997 #. type: deftypevr
36998 #: doc/guix.texi:20348
36999 #, no-wrap
37000 msgid "{@code{openvpn-server-configuration} parameter} string cert"
37001 msgstr ""
37002
37003 #. type: deftypevr
37004 #: doc/guix.texi:20356
37005 #, no-wrap
37006 msgid "{@code{openvpn-server-configuration} parameter} string key"
37007 msgstr ""
37008
37009 #. type: deftypevr
37010 #: doc/guix.texi:20364
37011 #, no-wrap
37012 msgid "{@code{openvpn-server-configuration} parameter} boolean comp-lzo?"
37013 msgstr ""
37014
37015 #. type: deftypevr
37016 #: doc/guix.texi:20371
37017 #, no-wrap
37018 msgid "{@code{openvpn-server-configuration} parameter} boolean persist-key?"
37019 msgstr ""
37020
37021 #. type: deftypevr
37022 #: doc/guix.texi:20378
37023 #, no-wrap
37024 msgid "{@code{openvpn-server-configuration} parameter} boolean persist-tun?"
37025 msgstr ""
37026
37027 #. type: deftypevr
37028 #: doc/guix.texi:20386
37029 #, no-wrap
37030 msgid "{@code{openvpn-server-configuration} parameter} number verbosity"
37031 msgstr ""
37032
37033 #. type: deftypevr
37034 #: doc/guix.texi:20393
37035 #, no-wrap
37036 msgid "{@code{openvpn-server-configuration} parameter} tls-auth-server tls-auth"
37037 msgstr ""
37038
37039 #. type: deftypevr
37040 #: doc/guix.texi:20401
37041 #, no-wrap
37042 msgid "{@code{openvpn-server-configuration} parameter} number port"
37043 msgstr ""
37044
37045 #. type: deftypevr
37046 #: doc/guix.texi:20403
37047 msgid "Specifies the port number on which the server listens."
37048 msgstr ""
37049
37050 #. type: deftypevr
37051 #: doc/guix.texi:20408
37052 #, no-wrap
37053 msgid "{@code{openvpn-server-configuration} parameter} ip-mask server"
37054 msgstr ""
37055
37056 #. type: deftypevr
37057 #: doc/guix.texi:20410
37058 msgid "An ip and mask specifying the subnet inside the virtual network."
37059 msgstr ""
37060
37061 #. type: deftypevr
37062 #: doc/guix.texi:20412
37063 msgid "Defaults to @samp{\"10.8.0.0 255.255.255.0\"}."
37064 msgstr ""
37065
37066 #. type: deftypevr
37067 #: doc/guix.texi:20415
37068 #, no-wrap
37069 msgid "{@code{openvpn-server-configuration} parameter} cidr6 server-ipv6"
37070 msgstr ""
37071
37072 #. type: deftypevr
37073 #: doc/guix.texi:20417
37074 msgid "A CIDR notation specifying the IPv6 subnet inside the virtual network."
37075 msgstr ""
37076
37077 #. type: deftypevr
37078 #: doc/guix.texi:20422
37079 #, no-wrap
37080 msgid "{@code{openvpn-server-configuration} parameter} string dh"
37081 msgstr ""
37082
37083 #. type: deftypevr
37084 #: doc/guix.texi:20424
37085 msgid "The Diffie-Hellman parameters file."
37086 msgstr ""
37087
37088 #. type: deftypevr
37089 #: doc/guix.texi:20426
37090 msgid "Defaults to @samp{\"/etc/openvpn/dh2048.pem\"}."
37091 msgstr ""
37092
37093 #. type: deftypevr
37094 #: doc/guix.texi:20429
37095 #, no-wrap
37096 msgid "{@code{openvpn-server-configuration} parameter} string ifconfig-pool-persist"
37097 msgstr ""
37098
37099 #. type: deftypevr
37100 #: doc/guix.texi:20431
37101 msgid "The file that records client IPs."
37102 msgstr ""
37103
37104 #. type: deftypevr
37105 #: doc/guix.texi:20433
37106 msgid "Defaults to @samp{\"/etc/openvpn/ipp.txt\"}."
37107 msgstr ""
37108
37109 #. type: deftypevr
37110 #: doc/guix.texi:20436
37111 #, no-wrap
37112 msgid "{@code{openvpn-server-configuration} parameter} gateway redirect-gateway?"
37113 msgstr ""
37114
37115 #. type: deftypevr
37116 #: doc/guix.texi:20438
37117 msgid "When true, the server will act as a gateway for its clients."
37118 msgstr ""
37119
37120 #. type: deftypevr
37121 #: doc/guix.texi:20443
37122 #, no-wrap
37123 msgid "{@code{openvpn-server-configuration} parameter} boolean client-to-client?"
37124 msgstr ""
37125
37126 #. type: deftypevr
37127 #: doc/guix.texi:20445
37128 msgid "When true, clients are allowed to talk to each other inside the VPN."
37129 msgstr ""
37130
37131 #. type: deftypevr
37132 #: doc/guix.texi:20450
37133 #, no-wrap
37134 msgid "{@code{openvpn-server-configuration} parameter} keepalive keepalive"
37135 msgstr ""
37136
37137 #. type: deftypevr
37138 #: doc/guix.texi:20456
37139 msgid "Causes ping-like messages to be sent back and forth over the link so that each side knows when the other side has gone down. @code{keepalive} requires a pair. The first element is the period of the ping sending, and the second element is the timeout before considering the other side down."
37140 msgstr ""
37141
37142 #. type: deftypevr
37143 #: doc/guix.texi:20459
37144 #, no-wrap
37145 msgid "{@code{openvpn-server-configuration} parameter} number max-clients"
37146 msgstr ""
37147
37148 #. type: deftypevr
37149 #: doc/guix.texi:20461
37150 msgid "The maximum number of clients."
37151 msgstr ""
37152
37153 #. type: deftypevr
37154 #: doc/guix.texi:20466
37155 #, no-wrap
37156 msgid "{@code{openvpn-server-configuration} parameter} string status"
37157 msgstr ""
37158
37159 #. type: deftypevr
37160 #: doc/guix.texi:20469
37161 msgid "The status file. This file shows a small report on current connection. It is truncated and rewritten every minute."
37162 msgstr ""
37163
37164 #. type: deftypevr
37165 #: doc/guix.texi:20471
37166 msgid "Defaults to @samp{\"/var/run/openvpn/status\"}."
37167 msgstr ""
37168
37169 #. type: deftypevr
37170 #: doc/guix.texi:20474
37171 #, no-wrap
37172 msgid "{@code{openvpn-server-configuration} parameter} openvpn-ccd-list client-config-dir"
37173 msgstr ""
37174
37175 #. type: deftypevr
37176 #: doc/guix.texi:20476
37177 msgid "The list of configuration for some clients."
37178 msgstr ""
37179
37180 #. type: deftypevr
37181 #: doc/guix.texi:20480
37182 msgid "Available @code{openvpn-ccd-configuration} fields are:"
37183 msgstr ""
37184
37185 #. type: deftypevr
37186 #: doc/guix.texi:20481
37187 #, no-wrap
37188 msgid "{@code{openvpn-ccd-configuration} parameter} string name"
37189 msgstr ""
37190
37191 #. type: deftypevr
37192 #: doc/guix.texi:20483
37193 msgid "Client name."
37194 msgstr ""
37195
37196 #. type: deftypevr
37197 #: doc/guix.texi:20485
37198 msgid "Defaults to @samp{\"client\"}."
37199 msgstr ""
37200
37201 #. type: deftypevr
37202 #: doc/guix.texi:20488
37203 #, no-wrap
37204 msgid "{@code{openvpn-ccd-configuration} parameter} ip-mask iroute"
37205 msgstr ""
37206
37207 #. type: deftypevr
37208 #: doc/guix.texi:20490
37209 msgid "Client own network"
37210 msgstr ""
37211
37212 #. type: deftypevr
37213 #: doc/guix.texi:20495
37214 #, no-wrap
37215 msgid "{@code{openvpn-ccd-configuration} parameter} ip-mask ifconfig-push"
37216 msgstr ""
37217
37218 #. type: deftypevr
37219 #: doc/guix.texi:20497
37220 msgid "Client VPN IP."
37221 msgstr ""
37222
37223 #. type: cindex
37224 #: doc/guix.texi:20510
37225 #, no-wrap
37226 msgid "NFS"
37227 msgstr ""
37228
37229 #. type: Plain text
37230 #: doc/guix.texi:20515
37231 msgid "The @code{(gnu services nfs)} module provides the following services, which are most commonly used in relation to mounting or exporting directory trees as @dfn{network file systems} (NFS)."
37232 msgstr ""
37233
37234 #. type: subsubheading
37235 #: doc/guix.texi:20516
37236 #, no-wrap
37237 msgid "RPC Bind Service"
37238 msgstr ""
37239
37240 #. type: cindex
37241 #: doc/guix.texi:20517
37242 #, no-wrap
37243 msgid "rpcbind"
37244 msgstr ""
37245
37246 #. type: Plain text
37247 #: doc/guix.texi:20523
37248 msgid "The RPC Bind service provides a facility to map program numbers into universal addresses. Many NFS related services use this facility. Hence it is automatically started when a dependent service starts."
37249 msgstr ""
37250
37251 #. type: defvr
37252 #: doc/guix.texi:20524
37253 #, no-wrap
37254 msgid "{Scheme Variable} rpcbind-service-type"
37255 msgstr ""
37256
37257 #. type: defvr
37258 #: doc/guix.texi:20526
37259 msgid "A service type for the RPC portmapper daemon."
37260 msgstr ""
37261
37262 #. type: deftp
37263 #: doc/guix.texi:20529
37264 #, no-wrap
37265 msgid "{Data Type} rpcbind-configuration"
37266 msgstr ""
37267
37268 #. type: deftp
37269 #: doc/guix.texi:20532
37270 msgid "Data type representing the configuration of the RPC Bind Service. This type has the following parameters:"
37271 msgstr ""
37272
37273 #. type: item
37274 #: doc/guix.texi:20533
37275 #, no-wrap
37276 msgid "@code{rpcbind} (default: @code{rpcbind})"
37277 msgstr ""
37278
37279 #. type: table
37280 #: doc/guix.texi:20535
37281 msgid "The rpcbind package to use."
37282 msgstr ""
37283
37284 #. type: item
37285 #: doc/guix.texi:20536
37286 #, no-wrap
37287 msgid "@code{warm-start?} (default: @code{#t})"
37288 msgstr ""
37289
37290 #. type: table
37291 #: doc/guix.texi:20540
37292 msgid "If this parameter is @code{#t}, then the daemon will read a state file on startup thus reloading state information saved by a previous instance."
37293 msgstr ""
37294
37295 #. type: subsubheading
37296 #: doc/guix.texi:20544
37297 #, no-wrap
37298 msgid "Pipefs Pseudo File System"
37299 msgstr ""
37300
37301 #. type: cindex
37302 #: doc/guix.texi:20545
37303 #, no-wrap
37304 msgid "pipefs"
37305 msgstr ""
37306
37307 #. type: cindex
37308 #: doc/guix.texi:20546
37309 #, no-wrap
37310 msgid "rpc_pipefs"
37311 msgstr ""
37312
37313 #. type: Plain text
37314 #: doc/guix.texi:20550
37315 msgid "The pipefs file system is used to transfer NFS related data between the kernel and user space programs."
37316 msgstr ""
37317
37318 #. type: defvr
37319 #: doc/guix.texi:20551
37320 #, no-wrap
37321 msgid "{Scheme Variable} pipefs-service-type"
37322 msgstr ""
37323
37324 #. type: defvr
37325 #: doc/guix.texi:20553
37326 msgid "A service type for the pipefs pseudo file system."
37327 msgstr ""
37328
37329 #. type: deftp
37330 #: doc/guix.texi:20555
37331 #, no-wrap
37332 msgid "{Data Type} pipefs-configuration"
37333 msgstr ""
37334
37335 #. type: deftp
37336 #: doc/guix.texi:20558
37337 msgid "Data type representing the configuration of the pipefs pseudo file system service. This type has the following parameters:"
37338 msgstr ""
37339
37340 #. type: item
37341 #: doc/guix.texi:20559
37342 #, no-wrap
37343 msgid "@code{mount-point} (default: @code{\"/var/lib/nfs/rpc_pipefs\"})"
37344 msgstr ""
37345
37346 #. type: table
37347 #: doc/guix.texi:20561
37348 msgid "The directory to which the file system is to be attached."
37349 msgstr ""
37350
37351 #. type: subsubheading
37352 #: doc/guix.texi:20565
37353 #, no-wrap
37354 msgid "GSS Daemon Service"
37355 msgstr ""
37356
37357 #. type: cindex
37358 #: doc/guix.texi:20566
37359 #, no-wrap
37360 msgid "GSSD"
37361 msgstr ""
37362
37363 #. type: cindex
37364 #: doc/guix.texi:20567
37365 #, no-wrap
37366 msgid "GSS"
37367 msgstr ""
37368
37369 #. type: cindex
37370 #: doc/guix.texi:20568
37371 #, no-wrap
37372 msgid "global security system"
37373 msgstr ""
37374
37375 #. type: Plain text
37376 #: doc/guix.texi:20575
37377 msgid "The @dfn{global security system} (GSS) daemon provides strong security for RPC based protocols. Before exchanging RPC requests an RPC client must establish a security context. Typically this is done using the Kerberos command @command{kinit} or automatically at login time using PAM services (@pxref{Kerberos Services})."
37378 msgstr ""
37379
37380 #. type: defvr
37381 #: doc/guix.texi:20576
37382 #, no-wrap
37383 msgid "{Scheme Variable} gss-service-type"
37384 msgstr ""
37385
37386 #. type: defvr
37387 #: doc/guix.texi:20578
37388 msgid "A service type for the Global Security System (GSS) daemon."
37389 msgstr ""
37390
37391 #. type: deftp
37392 #: doc/guix.texi:20580
37393 #, no-wrap
37394 msgid "{Data Type} gss-configuration"
37395 msgstr ""
37396
37397 #. type: deftp
37398 #: doc/guix.texi:20583
37399 msgid "Data type representing the configuration of the GSS daemon service. This type has the following parameters:"
37400 msgstr ""
37401
37402 #. type: item
37403 #: doc/guix.texi:20584 doc/guix.texi:20609
37404 #, no-wrap
37405 msgid "@code{nfs-utils} (default: @code{nfs-utils})"
37406 msgstr ""
37407
37408 #. type: table
37409 #: doc/guix.texi:20586
37410 msgid "The package in which the @command{rpc.gssd} command is to be found."
37411 msgstr ""
37412
37413 #. type: item
37414 #: doc/guix.texi:20587 doc/guix.texi:20612
37415 #, no-wrap
37416 msgid "@code{pipefs-directory} (default: @code{\"/var/lib/nfs/rpc_pipefs\"})"
37417 msgstr ""
37418
37419 #. type: table
37420 #: doc/guix.texi:20589 doc/guix.texi:20614
37421 msgid "The directory where the pipefs file system is mounted."
37422 msgstr ""
37423
37424 #. type: subsubheading
37425 #: doc/guix.texi:20594
37426 #, no-wrap
37427 msgid "IDMAP Daemon Service"
37428 msgstr ""
37429
37430 #. type: cindex
37431 #: doc/guix.texi:20595
37432 #, no-wrap
37433 msgid "idmapd"
37434 msgstr ""
37435
37436 #. type: cindex
37437 #: doc/guix.texi:20596
37438 #, no-wrap
37439 msgid "name mapper"
37440 msgstr ""
37441
37442 #. type: Plain text
37443 #: doc/guix.texi:20600
37444 msgid "The idmap daemon service provides mapping between user IDs and user names. Typically it is required in order to access file systems mounted via NFSv4."
37445 msgstr ""
37446
37447 #. type: defvr
37448 #: doc/guix.texi:20601
37449 #, no-wrap
37450 msgid "{Scheme Variable} idmap-service-type"
37451 msgstr ""
37452
37453 #. type: defvr
37454 #: doc/guix.texi:20603
37455 msgid "A service type for the Identity Mapper (IDMAP) daemon."
37456 msgstr ""
37457
37458 #. type: deftp
37459 #: doc/guix.texi:20605
37460 #, no-wrap
37461 msgid "{Data Type} idmap-configuration"
37462 msgstr ""
37463
37464 #. type: deftp
37465 #: doc/guix.texi:20608
37466 msgid "Data type representing the configuration of the IDMAP daemon service. This type has the following parameters:"
37467 msgstr ""
37468
37469 #. type: table
37470 #: doc/guix.texi:20611
37471 msgid "The package in which the @command{rpc.idmapd} command is to be found."
37472 msgstr ""
37473
37474 #. type: item
37475 #: doc/guix.texi:20615
37476 #, no-wrap
37477 msgid "@code{domain} (default: @code{#f})"
37478 msgstr ""
37479
37480 #. type: table
37481 #: doc/guix.texi:20619
37482 msgid "The local NFSv4 domain name. This must be a string or @code{#f}. If it is @code{#f} then the daemon will use the host's fully qualified domain name."
37483 msgstr ""
37484
37485 #. type: Plain text
37486 #: doc/guix.texi:20630
37487 msgid "@uref{https://git.savannah.gnu.org/cgit/guix/guix-cuirass.git, Cuirass} is a continuous integration tool for Guix. It can be used both for development and for providing substitutes to others (@pxref{Substitutes})."
37488 msgstr ""
37489
37490 #. type: Plain text
37491 #: doc/guix.texi:20632
37492 msgid "The @code{(gnu services cuirass)} module provides the following service."
37493 msgstr ""
37494
37495 #. type: defvr
37496 #: doc/guix.texi:20633
37497 #, no-wrap
37498 msgid "{Scheme Procedure} cuirass-service-type"
37499 msgstr ""
37500
37501 #. type: defvr
37502 #: doc/guix.texi:20636
37503 msgid "The type of the Cuirass service. Its value must be a @code{cuirass-configuration} object, as described below."
37504 msgstr ""
37505
37506 #. type: Plain text
37507 #: doc/guix.texi:20643
37508 msgid "To add build jobs, you have to set the @code{specifications} field of the configuration. Here is an example of a service that polls the Guix repository and builds the packages from a manifest. Some of the packages are defined in the @code{\"custom-packages\"} input, which is the equivalent of @code{GUIX_PACKAGE_PATH}."
37509 msgstr ""
37510
37511 #. type: example
37512 #: doc/guix.texi:20671
37513 #, no-wrap
37514 msgid ""
37515 "(define %cuirass-specs\n"
37516 " #~(list\n"
37517 " '((#:name . \"my-manifest\")\n"
37518 " (#:load-path-inputs . (\"guix\"))\n"
37519 " (#:package-path-inputs . (\"custom-packages\"))\n"
37520 " (#:proc-input . \"guix\")\n"
37521 " (#:proc-file . \"build-aux/cuirass/gnu-system.scm\")\n"
37522 " (#:proc . cuirass-jobs)\n"
37523 " (#:proc-args . ((subset . \"manifests\")\n"
37524 " (systems . (\"x86_64-linux\"))\n"
37525 " (manifests . ((\"config\" . \"guix/manifest.scm\")))))\n"
37526 " (#:inputs . (((#:name . \"guix\")\n"
37527 " (#:url . \"git://git.savannah.gnu.org/guix.git\")\n"
37528 " (#:load-path . \".\")\n"
37529 " (#:branch . \"master\")\n"
37530 " (#:no-compile? . #t))\n"
37531 " ((#:name . \"config\")\n"
37532 " (#:url . \"git://git.example.org/config.git\")\n"
37533 " (#:load-path . \".\")\n"
37534 " (#:branch . \"master\")\n"
37535 " (#:no-compile? . #t))\n"
37536 " ((#:name . \"custom-packages\")\n"
37537 " (#:url . \"git://git.example.org/custom-packages.git\")\n"
37538 " (#:load-path . \".\")\n"
37539 " (#:branch . \"master\")\n"
37540 " (#:no-compile? . #t)))))))\n"
37541 "\n"
37542 msgstr ""
37543
37544 #. type: example
37545 #: doc/guix.texi:20675
37546 #, no-wrap
37547 msgid ""
37548 "(service cuirass-service-type\n"
37549 " (cuirass-configuration\n"
37550 " (specifications %cuirass-specs)))\n"
37551 msgstr ""
37552
37553 #. type: Plain text
37554 #: doc/guix.texi:20680
37555 msgid "While information related to build jobs is located directly in the specifications, global settings for the @command{cuirass} process are accessible in other @code{cuirass-configuration} fields."
37556 msgstr ""
37557
37558 #. type: deftp
37559 #: doc/guix.texi:20681
37560 #, no-wrap
37561 msgid "{Data Type} cuirass-configuration"
37562 msgstr ""
37563
37564 #. type: deftp
37565 #: doc/guix.texi:20683
37566 msgid "Data type representing the configuration of Cuirass."
37567 msgstr ""
37568
37569 #. type: item
37570 #: doc/guix.texi:20685
37571 #, no-wrap
37572 msgid "@code{log-file} (default: @code{\"/var/log/cuirass.log\"})"
37573 msgstr ""
37574
37575 #. type: table
37576 #: doc/guix.texi:20687
37577 msgid "Location of the log file."
37578 msgstr ""
37579
37580 #. type: item
37581 #: doc/guix.texi:20688
37582 #, no-wrap
37583 msgid "@code{cache-directory} (default: @code{\"/var/cache/cuirass\"})"
37584 msgstr ""
37585
37586 #. type: table
37587 #: doc/guix.texi:20690
37588 msgid "Location of the repository cache."
37589 msgstr ""
37590
37591 #. type: item
37592 #: doc/guix.texi:20691
37593 #, no-wrap
37594 msgid "@code{user} (default: @code{\"cuirass\"})"
37595 msgstr ""
37596
37597 #. type: table
37598 #: doc/guix.texi:20693
37599 msgid "Owner of the @code{cuirass} process."
37600 msgstr ""
37601
37602 #. type: item
37603 #: doc/guix.texi:20694
37604 #, no-wrap
37605 msgid "@code{group} (default: @code{\"cuirass\"})"
37606 msgstr ""
37607
37608 #. type: table
37609 #: doc/guix.texi:20696
37610 msgid "Owner's group of the @code{cuirass} process."
37611 msgstr ""
37612
37613 #. type: item
37614 #: doc/guix.texi:20697
37615 #, no-wrap
37616 msgid "@code{interval} (default: @code{60})"
37617 msgstr ""
37618
37619 #. type: table
37620 #: doc/guix.texi:20700
37621 msgid "Number of seconds between the poll of the repositories followed by the Cuirass jobs."
37622 msgstr ""
37623
37624 #. type: item
37625 #: doc/guix.texi:20701
37626 #, no-wrap
37627 msgid "@code{database} (default: @code{\"/var/lib/cuirass/cuirass.db\"})"
37628 msgstr ""
37629
37630 #. type: table
37631 #: doc/guix.texi:20704
37632 msgid "Location of sqlite database which contains the build results and previously added specifications."
37633 msgstr ""
37634
37635 #. type: item
37636 #: doc/guix.texi:20705
37637 #, no-wrap
37638 msgid "@code{ttl} (default: @code{(* 30 24 3600)})"
37639 msgstr ""
37640
37641 #. type: table
37642 #: doc/guix.texi:20709
37643 msgid "Specifies the time-to-live (TTL) in seconds of garbage collector roots that are registered for build results. This means that build results are protected from garbage collection for at least @var{ttl} seconds."
37644 msgstr ""
37645
37646 #. type: item
37647 #: doc/guix.texi:20710
37648 #, no-wrap
37649 msgid "@code{port} (default: @code{8081})"
37650 msgstr ""
37651
37652 #. type: table
37653 #: doc/guix.texi:20712
37654 msgid "Port number used by the HTTP server."
37655 msgstr ""
37656
37657 #. type: table
37658 #: doc/guix.texi:20716
37659 msgid "Listen on the network interface for @var{host}. The default is to accept connections from localhost."
37660 msgstr ""
37661
37662 #. type: item
37663 #: doc/guix.texi:20717
37664 #, no-wrap
37665 msgid "@code{specifications} (default: @code{#~'()})"
37666 msgstr ""
37667
37668 #. type: table
37669 #: doc/guix.texi:20723
37670 msgid "A gexp (@pxref{G-Expressions}) that evaluates to a list of specifications, where a specification is an association list (@pxref{Associations Lists,,, guile, GNU Guile Reference Manual}) whose keys are keywords (@code{#:keyword-example}) as shown in the example above."
37671 msgstr ""
37672
37673 #. type: item
37674 #: doc/guix.texi:20724
37675 #, no-wrap
37676 msgid "@code{use-substitutes?} (default: @code{#f})"
37677 msgstr ""
37678
37679 #. type: table
37680 #: doc/guix.texi:20727
37681 msgid "This allows using substitutes to avoid building every dependencies of a job from source."
37682 msgstr ""
37683
37684 #. type: item
37685 #: doc/guix.texi:20728 doc/guix.texi:25286
37686 #, no-wrap
37687 msgid "@code{one-shot?} (default: @code{#f})"
37688 msgstr ""
37689
37690 #. type: table
37691 #: doc/guix.texi:20730
37692 msgid "Only evaluate specifications and build derivations once."
37693 msgstr ""
37694
37695 #. type: item
37696 #: doc/guix.texi:20731
37697 #, no-wrap
37698 msgid "@code{fallback?} (default: @code{#f})"
37699 msgstr ""
37700
37701 #. type: table
37702 #: doc/guix.texi:20734
37703 msgid "When substituting a pre-built binary fails, fall back to building packages locally."
37704 msgstr ""
37705
37706 #. type: item
37707 #: doc/guix.texi:20735
37708 #, no-wrap
37709 msgid "@code{cuirass} (default: @code{cuirass})"
37710 msgstr ""
37711
37712 #. type: table
37713 #: doc/guix.texi:20737
37714 msgid "The Cuirass package to use."
37715 msgstr ""
37716
37717 #. type: cindex
37718 #: doc/guix.texi:20743
37719 #, no-wrap
37720 msgid "tlp"
37721 msgstr ""
37722
37723 #. type: cindex
37724 #: doc/guix.texi:20744
37725 #, no-wrap
37726 msgid "power management with TLP"
37727 msgstr ""
37728
37729 #. type: subsubheading
37730 #: doc/guix.texi:20745
37731 #, no-wrap
37732 msgid "TLP daemon"
37733 msgstr ""
37734
37735 #. type: Plain text
37736 #: doc/guix.texi:20749
37737 msgid "The @code{(gnu services pm)} module provides a Guix service definition for the Linux power management tool TLP."
37738 msgstr ""
37739
37740 #. type: Plain text
37741 #: doc/guix.texi:20755
37742 msgid "TLP enables various powersaving modes in userspace and kernel. Contrary to @code{upower-service}, it is not a passive, monitoring tool, as it will apply custom settings each time a new power source is detected. More information can be found at @uref{https://linrunner.de/en/tlp/tlp.html, TLP home page}."
37743 msgstr ""
37744
37745 #. type: deffn
37746 #: doc/guix.texi:20756
37747 #, no-wrap
37748 msgid "{Scheme Variable} tlp-service-type"
37749 msgstr ""
37750
37751 #. type: deffn
37752 #: doc/guix.texi:20760
37753 msgid "The service type for the TLP tool. Its value should be a valid TLP configuration (see below). To use the default settings, simply write:"
37754 msgstr ""
37755
37756 #. type: example
37757 #: doc/guix.texi:20762
37758 #, no-wrap
37759 msgid "(service tlp-service-type)\n"
37760 msgstr ""
37761
37762 #. type: Plain text
37763 #: doc/guix.texi:20767
37764 msgid "By default TLP does not need much configuration but most TLP parameters can be tweaked using @code{tlp-configuration}."
37765 msgstr ""
37766
37767 #. type: Plain text
37768 #: doc/guix.texi:20773
37769 msgid "Each parameter definition is preceded by its type; for example, @samp{boolean foo} indicates that the @code{foo} parameter should be specified as a boolean. Types starting with @code{maybe-} denote parameters that won't show up in TLP config file when their value is @code{'disabled}."
37770 msgstr ""
37771
37772 #. type: Plain text
37773 #: doc/guix.texi:20783
37774 msgid "Available @code{tlp-configuration} fields are:"
37775 msgstr ""
37776
37777 #. type: deftypevr
37778 #: doc/guix.texi:20784
37779 #, no-wrap
37780 msgid "{@code{tlp-configuration} parameter} package tlp"
37781 msgstr ""
37782
37783 #. type: deftypevr
37784 #: doc/guix.texi:20786
37785 msgid "The TLP package."
37786 msgstr ""
37787
37788 #. type: deftypevr
37789 #: doc/guix.texi:20789
37790 #, no-wrap
37791 msgid "{@code{tlp-configuration} parameter} boolean tlp-enable?"
37792 msgstr ""
37793
37794 #. type: deftypevr
37795 #: doc/guix.texi:20791
37796 msgid "Set to true if you wish to enable TLP."
37797 msgstr ""
37798
37799 #. type: deftypevr
37800 #: doc/guix.texi:20796
37801 #, no-wrap
37802 msgid "{@code{tlp-configuration} parameter} string tlp-default-mode"
37803 msgstr ""
37804
37805 #. type: deftypevr
37806 #: doc/guix.texi:20799
37807 msgid "Default mode when no power supply can be detected. Alternatives are AC and BAT."
37808 msgstr ""
37809
37810 #. type: deftypevr
37811 #: doc/guix.texi:20801
37812 msgid "Defaults to @samp{\"AC\"}."
37813 msgstr ""
37814
37815 #. type: deftypevr
37816 #: doc/guix.texi:20804
37817 #, no-wrap
37818 msgid "{@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-ac"
37819 msgstr ""
37820
37821 #. type: deftypevr
37822 #: doc/guix.texi:20807
37823 msgid "Number of seconds Linux kernel has to wait after the disk goes idle, before syncing on AC."
37824 msgstr ""
37825
37826 #. type: deftypevr
37827 #: doc/guix.texi:20812
37828 #, no-wrap
37829 msgid "{@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-bat"
37830 msgstr ""
37831
37832 #. type: deftypevr
37833 #: doc/guix.texi:20814
37834 msgid "Same as @code{disk-idle-ac} but on BAT mode."
37835 msgstr ""
37836
37837 #. type: deftypevr
37838 #: doc/guix.texi:20816
37839 msgid "Defaults to @samp{2}."
37840 msgstr ""
37841
37842 #. type: deftypevr
37843 #: doc/guix.texi:20819
37844 #, no-wrap
37845 msgid "{@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-ac"
37846 msgstr ""
37847
37848 #. type: deftypevr
37849 #: doc/guix.texi:20821
37850 msgid "Dirty pages flushing periodicity, expressed in seconds."
37851 msgstr ""
37852
37853 #. type: deftypevr
37854 #: doc/guix.texi:20823 doc/guix.texi:21046 doc/guix.texi:22375
37855 #: doc/guix.texi:22383
37856 msgid "Defaults to @samp{15}."
37857 msgstr ""
37858
37859 #. type: deftypevr
37860 #: doc/guix.texi:20826
37861 #, no-wrap
37862 msgid "{@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-bat"
37863 msgstr ""
37864
37865 #. type: deftypevr
37866 #: doc/guix.texi:20828
37867 msgid "Same as @code{max-lost-work-secs-on-ac} but on BAT mode."
37868 msgstr ""
37869
37870 #. type: deftypevr
37871 #: doc/guix.texi:20830
37872 msgid "Defaults to @samp{60}."
37873 msgstr ""
37874
37875 #. type: deftypevr
37876 #: doc/guix.texi:20833
37877 #, no-wrap
37878 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-ac"
37879 msgstr ""
37880
37881 #. type: deftypevr
37882 #: doc/guix.texi:20837
37883 msgid "CPU frequency scaling governor on AC mode. With intel_pstate driver, alternatives are powersave and performance. With acpi-cpufreq driver, alternatives are ondemand, powersave, performance and conservative."
37884 msgstr ""
37885
37886 #. type: deftypevr
37887 #: doc/guix.texi:20842
37888 #, no-wrap
37889 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-bat"
37890 msgstr ""
37891
37892 #. type: deftypevr
37893 #: doc/guix.texi:20844
37894 msgid "Same as @code{cpu-scaling-governor-on-ac} but on BAT mode."
37895 msgstr ""
37896
37897 #. type: deftypevr
37898 #: doc/guix.texi:20849
37899 #, no-wrap
37900 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-ac"
37901 msgstr ""
37902
37903 #. type: deftypevr
37904 #: doc/guix.texi:20851
37905 msgid "Set the min available frequency for the scaling governor on AC."
37906 msgstr ""
37907
37908 #. type: deftypevr
37909 #: doc/guix.texi:20856
37910 #, no-wrap
37911 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-ac"
37912 msgstr ""
37913
37914 #. type: deftypevr
37915 #: doc/guix.texi:20858
37916 msgid "Set the max available frequency for the scaling governor on AC."
37917 msgstr ""
37918
37919 #. type: deftypevr
37920 #: doc/guix.texi:20863
37921 #, no-wrap
37922 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-bat"
37923 msgstr ""
37924
37925 #. type: deftypevr
37926 #: doc/guix.texi:20865
37927 msgid "Set the min available frequency for the scaling governor on BAT."
37928 msgstr ""
37929
37930 #. type: deftypevr
37931 #: doc/guix.texi:20870
37932 #, no-wrap
37933 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-bat"
37934 msgstr ""
37935
37936 #. type: deftypevr
37937 #: doc/guix.texi:20872
37938 msgid "Set the max available frequency for the scaling governor on BAT."
37939 msgstr ""
37940
37941 #. type: deftypevr
37942 #: doc/guix.texi:20877
37943 #, no-wrap
37944 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-ac"
37945 msgstr ""
37946
37947 #. type: deftypevr
37948 #: doc/guix.texi:20880
37949 msgid "Limit the min P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance."
37950 msgstr ""
37951
37952 #. type: deftypevr
37953 #: doc/guix.texi:20885
37954 #, no-wrap
37955 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-ac"
37956 msgstr ""
37957
37958 #. type: deftypevr
37959 #: doc/guix.texi:20888
37960 msgid "Limit the max P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance."
37961 msgstr ""
37962
37963 #. type: deftypevr
37964 #: doc/guix.texi:20893
37965 #, no-wrap
37966 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-bat"
37967 msgstr ""
37968
37969 #. type: deftypevr
37970 #: doc/guix.texi:20895
37971 msgid "Same as @code{cpu-min-perf-on-ac} on BAT mode."
37972 msgstr ""
37973
37974 #. type: deftypevr
37975 #: doc/guix.texi:20900
37976 #, no-wrap
37977 msgid "{@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-bat"
37978 msgstr ""
37979
37980 #. type: deftypevr
37981 #: doc/guix.texi:20902
37982 msgid "Same as @code{cpu-max-perf-on-ac} on BAT mode."
37983 msgstr ""
37984
37985 #. type: deftypevr
37986 #: doc/guix.texi:20907
37987 #, no-wrap
37988 msgid "{@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-ac?"
37989 msgstr ""
37990
37991 #. type: deftypevr
37992 #: doc/guix.texi:20909
37993 msgid "Enable CPU turbo boost feature on AC mode."
37994 msgstr ""
37995
37996 #. type: deftypevr
37997 #: doc/guix.texi:20914
37998 #, no-wrap
37999 msgid "{@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-bat?"
38000 msgstr ""
38001
38002 #. type: deftypevr
38003 #: doc/guix.texi:20916
38004 msgid "Same as @code{cpu-boost-on-ac?} on BAT mode."
38005 msgstr ""
38006
38007 #. type: deftypevr
38008 #: doc/guix.texi:20921
38009 #, no-wrap
38010 msgid "{@code{tlp-configuration} parameter} boolean sched-powersave-on-ac?"
38011 msgstr ""
38012
38013 #. type: deftypevr
38014 #: doc/guix.texi:20924
38015 msgid "Allow Linux kernel to minimize the number of CPU cores/hyper-threads used under light load conditions."
38016 msgstr ""
38017
38018 #. type: deftypevr
38019 #: doc/guix.texi:20929
38020 #, no-wrap
38021 msgid "{@code{tlp-configuration} parameter} boolean sched-powersave-on-bat?"
38022 msgstr ""
38023
38024 #. type: deftypevr
38025 #: doc/guix.texi:20931
38026 msgid "Same as @code{sched-powersave-on-ac?} but on BAT mode."
38027 msgstr ""
38028
38029 #. type: deftypevr
38030 #: doc/guix.texi:20936
38031 #, no-wrap
38032 msgid "{@code{tlp-configuration} parameter} boolean nmi-watchdog?"
38033 msgstr ""
38034
38035 #. type: deftypevr
38036 #: doc/guix.texi:20938
38037 msgid "Enable Linux kernel NMI watchdog."
38038 msgstr ""
38039
38040 #. type: deftypevr
38041 #: doc/guix.texi:20943
38042 #, no-wrap
38043 msgid "{@code{tlp-configuration} parameter} maybe-string phc-controls"
38044 msgstr ""
38045
38046 #. type: deftypevr
38047 #: doc/guix.texi:20946
38048 msgid "For Linux kernels with PHC patch applied, change CPU voltages. An example value would be @samp{\"F:V F:V F:V F:V\"}."
38049 msgstr ""
38050
38051 #. type: deftypevr
38052 #: doc/guix.texi:20951
38053 #, no-wrap
38054 msgid "{@code{tlp-configuration} parameter} string energy-perf-policy-on-ac"
38055 msgstr ""
38056
38057 #. type: deftypevr
38058 #: doc/guix.texi:20954
38059 msgid "Set CPU performance versus energy saving policy on AC. Alternatives are performance, normal, powersave."
38060 msgstr ""
38061
38062 #. type: deftypevr
38063 #: doc/guix.texi:20956 doc/guix.texi:21054 doc/guix.texi:21084
38064 msgid "Defaults to @samp{\"performance\"}."
38065 msgstr ""
38066
38067 #. type: deftypevr
38068 #: doc/guix.texi:20959
38069 #, no-wrap
38070 msgid "{@code{tlp-configuration} parameter} string energy-perf-policy-on-bat"
38071 msgstr ""
38072
38073 #. type: deftypevr
38074 #: doc/guix.texi:20961
38075 msgid "Same as @code{energy-perf-policy-ac} but on BAT mode."
38076 msgstr ""
38077
38078 #. type: deftypevr
38079 #: doc/guix.texi:20963 doc/guix.texi:21061
38080 msgid "Defaults to @samp{\"powersave\"}."
38081 msgstr ""
38082
38083 #. type: deftypevr
38084 #: doc/guix.texi:20966
38085 #, no-wrap
38086 msgid "{@code{tlp-configuration} parameter} space-separated-string-list disks-devices"
38087 msgstr ""
38088
38089 #. type: deftypevr
38090 #: doc/guix.texi:20968
38091 msgid "Hard disk devices."
38092 msgstr ""
38093
38094 #. type: deftypevr
38095 #: doc/guix.texi:20971
38096 #, no-wrap
38097 msgid "{@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-ac"
38098 msgstr ""
38099
38100 #. type: deftypevr
38101 #: doc/guix.texi:20973
38102 msgid "Hard disk advanced power management level."
38103 msgstr ""
38104
38105 #. type: deftypevr
38106 #: doc/guix.texi:20976
38107 #, no-wrap
38108 msgid "{@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-bat"
38109 msgstr ""
38110
38111 #. type: deftypevr
38112 #: doc/guix.texi:20978
38113 msgid "Same as @code{disk-apm-bat} but on BAT mode."
38114 msgstr ""
38115
38116 #. type: deftypevr
38117 #: doc/guix.texi:20981
38118 #, no-wrap
38119 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-ac"
38120 msgstr ""
38121
38122 #. type: deftypevr
38123 #: doc/guix.texi:20984
38124 msgid "Hard disk spin down timeout. One value has to be specified for each declared hard disk."
38125 msgstr ""
38126
38127 #. type: deftypevr
38128 #: doc/guix.texi:20989
38129 #, no-wrap
38130 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-bat"
38131 msgstr ""
38132
38133 #. type: deftypevr
38134 #: doc/guix.texi:20991
38135 msgid "Same as @code{disk-spindown-timeout-on-ac} but on BAT mode."
38136 msgstr ""
38137
38138 #. type: deftypevr
38139 #: doc/guix.texi:20996
38140 #, no-wrap
38141 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-iosched"
38142 msgstr ""
38143
38144 #. type: deftypevr
38145 #: doc/guix.texi:21000
38146 msgid "Select IO scheduler for disk devices. One value has to be specified for each declared hard disk. Example alternatives are cfq, deadline and noop."
38147 msgstr ""
38148
38149 #. type: deftypevr
38150 #: doc/guix.texi:21005
38151 #, no-wrap
38152 msgid "{@code{tlp-configuration} parameter} string sata-linkpwr-on-ac"
38153 msgstr ""
38154
38155 #. type: deftypevr
38156 #: doc/guix.texi:21008
38157 msgid "SATA aggressive link power management (ALPM) level. Alternatives are min_power, medium_power, max_performance."
38158 msgstr ""
38159
38160 #. type: deftypevr
38161 #: doc/guix.texi:21010
38162 msgid "Defaults to @samp{\"max_performance\"}."
38163 msgstr ""
38164
38165 #. type: deftypevr
38166 #: doc/guix.texi:21013
38167 #, no-wrap
38168 msgid "{@code{tlp-configuration} parameter} string sata-linkpwr-on-bat"
38169 msgstr ""
38170
38171 #. type: deftypevr
38172 #: doc/guix.texi:21015
38173 msgid "Same as @code{sata-linkpwr-ac} but on BAT mode."
38174 msgstr ""
38175
38176 #. type: deftypevr
38177 #: doc/guix.texi:21017
38178 msgid "Defaults to @samp{\"min_power\"}."
38179 msgstr ""
38180
38181 #. type: deftypevr
38182 #: doc/guix.texi:21020
38183 #, no-wrap
38184 msgid "{@code{tlp-configuration} parameter} maybe-string sata-linkpwr-blacklist"
38185 msgstr ""
38186
38187 #. type: deftypevr
38188 #: doc/guix.texi:21022
38189 msgid "Exclude specified SATA host devices for link power management."
38190 msgstr ""
38191
38192 #. type: deftypevr
38193 #: doc/guix.texi:21027
38194 #, no-wrap
38195 msgid "{@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-ac?"
38196 msgstr ""
38197
38198 #. type: deftypevr
38199 #: doc/guix.texi:21030
38200 msgid "Enable Runtime Power Management for AHCI controller and disks on AC mode."
38201 msgstr ""
38202
38203 #. type: deftypevr
38204 #: doc/guix.texi:21035
38205 #, no-wrap
38206 msgid "{@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-bat?"
38207 msgstr ""
38208
38209 #. type: deftypevr
38210 #: doc/guix.texi:21037
38211 msgid "Same as @code{ahci-runtime-pm-on-ac} on BAT mode."
38212 msgstr ""
38213
38214 #. type: deftypevr
38215 #: doc/guix.texi:21042
38216 #, no-wrap
38217 msgid "{@code{tlp-configuration} parameter} non-negative-integer ahci-runtime-pm-timeout"
38218 msgstr ""
38219
38220 #. type: deftypevr
38221 #: doc/guix.texi:21044
38222 msgid "Seconds of inactivity before disk is suspended."
38223 msgstr ""
38224
38225 #. type: deftypevr
38226 #: doc/guix.texi:21049
38227 #, no-wrap
38228 msgid "{@code{tlp-configuration} parameter} string pcie-aspm-on-ac"
38229 msgstr ""
38230
38231 #. type: deftypevr
38232 #: doc/guix.texi:21052
38233 msgid "PCI Express Active State Power Management level. Alternatives are default, performance, powersave."
38234 msgstr ""
38235
38236 #. type: deftypevr
38237 #: doc/guix.texi:21057
38238 #, no-wrap
38239 msgid "{@code{tlp-configuration} parameter} string pcie-aspm-on-bat"
38240 msgstr ""
38241
38242 #. type: deftypevr
38243 #: doc/guix.texi:21059
38244 msgid "Same as @code{pcie-aspm-ac} but on BAT mode."
38245 msgstr ""
38246
38247 #. type: deftypevr
38248 #: doc/guix.texi:21064
38249 #, no-wrap
38250 msgid "{@code{tlp-configuration} parameter} string radeon-power-profile-on-ac"
38251 msgstr ""
38252
38253 #. type: deftypevr
38254 #: doc/guix.texi:21067
38255 msgid "Radeon graphics clock speed level. Alternatives are low, mid, high, auto, default."
38256 msgstr ""
38257
38258 #. type: deftypevr
38259 #: doc/guix.texi:21069
38260 msgid "Defaults to @samp{\"high\"}."
38261 msgstr ""
38262
38263 #. type: deftypevr
38264 #: doc/guix.texi:21072
38265 #, no-wrap
38266 msgid "{@code{tlp-configuration} parameter} string radeon-power-profile-on-bat"
38267 msgstr ""
38268
38269 #. type: deftypevr
38270 #: doc/guix.texi:21074
38271 msgid "Same as @code{radeon-power-ac} but on BAT mode."
38272 msgstr ""
38273
38274 #. type: deftypevr
38275 #: doc/guix.texi:21076
38276 msgid "Defaults to @samp{\"low\"}."
38277 msgstr ""
38278
38279 #. type: deftypevr
38280 #: doc/guix.texi:21079
38281 #, no-wrap
38282 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-state-on-ac"
38283 msgstr ""
38284
38285 #. type: deftypevr
38286 #: doc/guix.texi:21082
38287 msgid "Radeon dynamic power management method (DPM). Alternatives are battery, performance."
38288 msgstr ""
38289
38290 #. type: deftypevr
38291 #: doc/guix.texi:21087
38292 #, no-wrap
38293 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-state-on-bat"
38294 msgstr ""
38295
38296 #. type: deftypevr
38297 #: doc/guix.texi:21089
38298 msgid "Same as @code{radeon-dpm-state-ac} but on BAT mode."
38299 msgstr ""
38300
38301 #. type: deftypevr
38302 #: doc/guix.texi:21091
38303 msgid "Defaults to @samp{\"battery\"}."
38304 msgstr ""
38305
38306 #. type: deftypevr
38307 #: doc/guix.texi:21094
38308 #, no-wrap
38309 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-ac"
38310 msgstr ""
38311
38312 #. type: deftypevr
38313 #: doc/guix.texi:21096
38314 msgid "Radeon DPM performance level. Alternatives are auto, low, high."
38315 msgstr ""
38316
38317 #. type: deftypevr
38318 #: doc/guix.texi:21098 doc/guix.texi:21105 doc/guix.texi:21179
38319 msgid "Defaults to @samp{\"auto\"}."
38320 msgstr ""
38321
38322 #. type: deftypevr
38323 #: doc/guix.texi:21101
38324 #, no-wrap
38325 msgid "{@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-bat"
38326 msgstr ""
38327
38328 #. type: deftypevr
38329 #: doc/guix.texi:21103
38330 msgid "Same as @code{radeon-dpm-perf-ac} but on BAT mode."
38331 msgstr ""
38332
38333 #. type: deftypevr
38334 #: doc/guix.texi:21108
38335 #, no-wrap
38336 msgid "{@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-ac?"
38337 msgstr ""
38338
38339 #. type: deftypevr
38340 #: doc/guix.texi:21110
38341 msgid "Wifi power saving mode."
38342 msgstr ""
38343
38344 #. type: deftypevr
38345 #: doc/guix.texi:21115
38346 #, no-wrap
38347 msgid "{@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-bat?"
38348 msgstr ""
38349
38350 #. type: deftypevr
38351 #: doc/guix.texi:21117
38352 msgid "Same as @code{wifi-power-ac?} but on BAT mode."
38353 msgstr ""
38354
38355 #. type: deftypevr
38356 #: doc/guix.texi:21122
38357 #, no-wrap
38358 msgid "{@code{tlp-configuration} parameter} y-n-boolean wol-disable?"
38359 msgstr ""
38360
38361 #. type: deftypevr
38362 #: doc/guix.texi:21124
38363 msgid "Disable wake on LAN."
38364 msgstr ""
38365
38366 #. type: deftypevr
38367 #: doc/guix.texi:21129
38368 #, no-wrap
38369 msgid "{@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-ac"
38370 msgstr ""
38371
38372 #. type: deftypevr
38373 #: doc/guix.texi:21132
38374 msgid "Timeout duration in seconds before activating audio power saving on Intel HDA and AC97 devices. A value of 0 disables power saving."
38375 msgstr ""
38376
38377 #. type: deftypevr
38378 #: doc/guix.texi:21137
38379 #, no-wrap
38380 msgid "{@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-bat"
38381 msgstr ""
38382
38383 #. type: deftypevr
38384 #: doc/guix.texi:21139
38385 msgid "Same as @code{sound-powersave-ac} but on BAT mode."
38386 msgstr ""
38387
38388 #. type: deftypevr
38389 #: doc/guix.texi:21141 doc/guix.texi:21668 doc/guix.texi:21812
38390 msgid "Defaults to @samp{1}."
38391 msgstr ""
38392
38393 #. type: deftypevr
38394 #: doc/guix.texi:21144
38395 #, no-wrap
38396 msgid "{@code{tlp-configuration} parameter} y-n-boolean sound-power-save-controller?"
38397 msgstr ""
38398
38399 #. type: deftypevr
38400 #: doc/guix.texi:21146
38401 msgid "Disable controller in powersaving mode on Intel HDA devices."
38402 msgstr ""
38403
38404 #. type: deftypevr
38405 #: doc/guix.texi:21151
38406 #, no-wrap
38407 msgid "{@code{tlp-configuration} parameter} boolean bay-poweroff-on-bat?"
38408 msgstr ""
38409
38410 #. type: deftypevr
38411 #: doc/guix.texi:21155
38412 msgid "Enable optical drive in UltraBay/MediaBay on BAT mode. Drive can be powered on again by releasing (and reinserting) the eject lever or by pressing the disc eject button on newer models."
38413 msgstr ""
38414
38415 #. type: deftypevr
38416 #: doc/guix.texi:21160
38417 #, no-wrap
38418 msgid "{@code{tlp-configuration} parameter} string bay-device"
38419 msgstr ""
38420
38421 #. type: deftypevr
38422 #: doc/guix.texi:21162
38423 msgid "Name of the optical drive device to power off."
38424 msgstr ""
38425
38426 #. type: deftypevr
38427 #: doc/guix.texi:21164
38428 msgid "Defaults to @samp{\"sr0\"}."
38429 msgstr ""
38430
38431 #. type: deftypevr
38432 #: doc/guix.texi:21167
38433 #, no-wrap
38434 msgid "{@code{tlp-configuration} parameter} string runtime-pm-on-ac"
38435 msgstr ""
38436
38437 #. type: deftypevr
38438 #: doc/guix.texi:21170
38439 msgid "Runtime Power Management for PCI(e) bus devices. Alternatives are on and auto."
38440 msgstr ""
38441
38442 #. type: deftypevr
38443 #: doc/guix.texi:21172
38444 msgid "Defaults to @samp{\"on\"}."
38445 msgstr ""
38446
38447 #. type: deftypevr
38448 #: doc/guix.texi:21175
38449 #, no-wrap
38450 msgid "{@code{tlp-configuration} parameter} string runtime-pm-on-bat"
38451 msgstr ""
38452
38453 #. type: deftypevr
38454 #: doc/guix.texi:21177
38455 msgid "Same as @code{runtime-pm-ac} but on BAT mode."
38456 msgstr ""
38457
38458 #. type: deftypevr
38459 #: doc/guix.texi:21182
38460 #, no-wrap
38461 msgid "{@code{tlp-configuration} parameter} boolean runtime-pm-all?"
38462 msgstr ""
38463
38464 #. type: deftypevr
38465 #: doc/guix.texi:21185
38466 msgid "Runtime Power Management for all PCI(e) bus devices, except blacklisted ones."
38467 msgstr ""
38468
38469 #. type: deftypevr
38470 #: doc/guix.texi:21190
38471 #, no-wrap
38472 msgid "{@code{tlp-configuration} parameter} maybe-space-separated-string-list runtime-pm-blacklist"
38473 msgstr ""
38474
38475 #. type: deftypevr
38476 #: doc/guix.texi:21192
38477 msgid "Exclude specified PCI(e) device addresses from Runtime Power Management."
38478 msgstr ""
38479
38480 #. type: deftypevr
38481 #: doc/guix.texi:21197
38482 #, no-wrap
38483 msgid "{@code{tlp-configuration} parameter} space-separated-string-list runtime-pm-driver-blacklist"
38484 msgstr ""
38485
38486 #. type: deftypevr
38487 #: doc/guix.texi:21200
38488 msgid "Exclude PCI(e) devices assigned to the specified drivers from Runtime Power Management."
38489 msgstr ""
38490
38491 #. type: deftypevr
38492 #: doc/guix.texi:21203
38493 #, no-wrap
38494 msgid "{@code{tlp-configuration} parameter} boolean usb-autosuspend?"
38495 msgstr ""
38496
38497 #. type: deftypevr
38498 #: doc/guix.texi:21205
38499 msgid "Enable USB autosuspend feature."
38500 msgstr ""
38501
38502 #. type: deftypevr
38503 #: doc/guix.texi:21210
38504 #, no-wrap
38505 msgid "{@code{tlp-configuration} parameter} maybe-string usb-blacklist"
38506 msgstr ""
38507
38508 #. type: deftypevr
38509 #: doc/guix.texi:21212
38510 msgid "Exclude specified devices from USB autosuspend."
38511 msgstr ""
38512
38513 #. type: deftypevr
38514 #: doc/guix.texi:21217
38515 #, no-wrap
38516 msgid "{@code{tlp-configuration} parameter} boolean usb-blacklist-wwan?"
38517 msgstr ""
38518
38519 #. type: deftypevr
38520 #: doc/guix.texi:21219
38521 msgid "Exclude WWAN devices from USB autosuspend."
38522 msgstr ""
38523
38524 #. type: deftypevr
38525 #: doc/guix.texi:21224
38526 #, no-wrap
38527 msgid "{@code{tlp-configuration} parameter} maybe-string usb-whitelist"
38528 msgstr ""
38529
38530 #. type: deftypevr
38531 #: doc/guix.texi:21227
38532 msgid "Include specified devices into USB autosuspend, even if they are already excluded by the driver or via @code{usb-blacklist-wwan?}."
38533 msgstr ""
38534
38535 #. type: deftypevr
38536 #: doc/guix.texi:21232
38537 #, no-wrap
38538 msgid "{@code{tlp-configuration} parameter} maybe-boolean usb-autosuspend-disable-on-shutdown?"
38539 msgstr ""
38540
38541 #. type: deftypevr
38542 #: doc/guix.texi:21234
38543 msgid "Enable USB autosuspend before shutdown."
38544 msgstr ""
38545
38546 #. type: deftypevr
38547 #: doc/guix.texi:21239
38548 #, no-wrap
38549 msgid "{@code{tlp-configuration} parameter} boolean restore-device-state-on-startup?"
38550 msgstr ""
38551
38552 #. type: deftypevr
38553 #: doc/guix.texi:21242
38554 msgid "Restore radio device state (bluetooth, wifi, wwan) from previous shutdown on system startup."
38555 msgstr ""
38556
38557 #. type: cindex
38558 #: doc/guix.texi:21247
38559 #, no-wrap
38560 msgid "thermald"
38561 msgstr ""
38562
38563 #. type: cindex
38564 #: doc/guix.texi:21248
38565 #, no-wrap
38566 msgid "CPU frequency scaling with thermald"
38567 msgstr ""
38568
38569 #. type: subsubheading
38570 #: doc/guix.texi:21249
38571 #, no-wrap
38572 msgid "Thermald daemon"
38573 msgstr ""
38574
38575 #. type: Plain text
38576 #: doc/guix.texi:21253
38577 msgid "The @code{(gnu services pm)} module provides an interface to thermald, a CPU frequency scaling service which helps prevent overheating."
38578 msgstr ""
38579
38580 #. type: defvr
38581 #: doc/guix.texi:21254
38582 #, no-wrap
38583 msgid "{Scheme Variable} thermald-service-type"
38584 msgstr ""
38585
38586 #. type: defvr
38587 #: doc/guix.texi:21259
38588 msgid "This is the service type for @uref{https://01.org/linux-thermal-daemon/, thermald}, the Linux Thermal Daemon, which is responsible for controlling the thermal state of processors and preventing overheating."
38589 msgstr ""
38590
38591 #. type: deftp
38592 #: doc/guix.texi:21261
38593 #, no-wrap
38594 msgid "{Data Type} thermald-configuration"
38595 msgstr ""
38596
38597 #. type: deftp
38598 #: doc/guix.texi:21263
38599 msgid "Data type representing the configuration of @code{thermald-service-type}."
38600 msgstr ""
38601
38602 #. type: item
38603 #: doc/guix.texi:21265
38604 #, no-wrap
38605 msgid "@code{ignore-cpuid-check?} (default: @code{#f})"
38606 msgstr ""
38607
38608 #. type: table
38609 #: doc/guix.texi:21267
38610 msgid "Ignore cpuid check for supported CPU models."
38611 msgstr ""
38612
38613 #. type: item
38614 #: doc/guix.texi:21268
38615 #, no-wrap
38616 msgid "@code{thermald} (default: @var{thermald})"
38617 msgstr ""
38618
38619 #. type: table
38620 #: doc/guix.texi:21270
38621 msgid "Package object of thermald."
38622 msgstr ""
38623
38624 #. type: Plain text
38625 #: doc/guix.texi:21279
38626 msgid "The @code{(gnu services audio)} module provides a service to start MPD (the Music Player Daemon)."
38627 msgstr ""
38628
38629 #. type: cindex
38630 #: doc/guix.texi:21280
38631 #, no-wrap
38632 msgid "mpd"
38633 msgstr ""
38634
38635 #. type: subsubheading
38636 #: doc/guix.texi:21281
38637 #, no-wrap
38638 msgid "Music Player Daemon"
38639 msgstr ""
38640
38641 #. type: Plain text
38642 #: doc/guix.texi:21286
38643 msgid "The Music Player Daemon (MPD) is a service that can play music while being controlled from the local machine or over the network by a variety of clients."
38644 msgstr ""
38645
38646 #. type: Plain text
38647 #: doc/guix.texi:21289
38648 msgid "The following example shows how one might run @code{mpd} as user @code{\"bob\"} on port @code{6666}. It uses pulseaudio for output."
38649 msgstr ""
38650
38651 #. type: example
38652 #: doc/guix.texi:21295
38653 #, no-wrap
38654 msgid ""
38655 "(service mpd-service-type\n"
38656 " (mpd-configuration\n"
38657 " (user \"bob\")\n"
38658 " (port \"6666\")))\n"
38659 msgstr ""
38660
38661 #. type: defvr
38662 #: doc/guix.texi:21297
38663 #, no-wrap
38664 msgid "{Scheme Variable} mpd-service-type"
38665 msgstr ""
38666
38667 #. type: defvr
38668 #: doc/guix.texi:21299
38669 msgid "The service type for @command{mpd}"
38670 msgstr ""
38671
38672 #. type: deftp
38673 #: doc/guix.texi:21301
38674 #, no-wrap
38675 msgid "{Data Type} mpd-configuration"
38676 msgstr ""
38677
38678 #. type: deftp
38679 #: doc/guix.texi:21303
38680 msgid "Data type representing the configuration of @command{mpd}."
38681 msgstr ""
38682
38683 #. type: item
38684 #: doc/guix.texi:21305
38685 #, no-wrap
38686 msgid "@code{user} (default: @code{\"mpd\"})"
38687 msgstr ""
38688
38689 #. type: table
38690 #: doc/guix.texi:21307
38691 msgid "The user to run mpd as."
38692 msgstr ""
38693
38694 #. type: item
38695 #: doc/guix.texi:21308
38696 #, no-wrap
38697 msgid "@code{music-dir} (default: @code{\"~/Music\"})"
38698 msgstr ""
38699
38700 #. type: table
38701 #: doc/guix.texi:21310
38702 msgid "The directory to scan for music files."
38703 msgstr ""
38704
38705 #. type: item
38706 #: doc/guix.texi:21311
38707 #, no-wrap
38708 msgid "@code{playlist-dir} (default: @code{\"~/.mpd/playlists\"})"
38709 msgstr ""
38710
38711 #. type: table
38712 #: doc/guix.texi:21313
38713 msgid "The directory to store playlists."
38714 msgstr ""
38715
38716 #. type: item
38717 #: doc/guix.texi:21314
38718 #, no-wrap
38719 msgid "@code{db-file} (default: @code{\"~/.mpd/tag_cache\"})"
38720 msgstr ""
38721
38722 #. type: table
38723 #: doc/guix.texi:21316
38724 msgid "The location of the music database."
38725 msgstr ""
38726
38727 #. type: item
38728 #: doc/guix.texi:21317
38729 #, no-wrap
38730 msgid "@code{state-file} (default: @code{\"~/.mpd/state\"})"
38731 msgstr ""
38732
38733 #. type: table
38734 #: doc/guix.texi:21319
38735 msgid "The location of the file that stores current MPD's state."
38736 msgstr ""
38737
38738 #. type: item
38739 #: doc/guix.texi:21320
38740 #, no-wrap
38741 msgid "@code{sticker-file} (default: @code{\"~/.mpd/sticker.sql\"})"
38742 msgstr ""
38743
38744 #. type: table
38745 #: doc/guix.texi:21322
38746 msgid "The location of the sticker database."
38747 msgstr ""
38748
38749 #. type: item
38750 #: doc/guix.texi:21323
38751 #, no-wrap
38752 msgid "@code{port} (default: @code{\"6600\"})"
38753 msgstr ""
38754
38755 #. type: table
38756 #: doc/guix.texi:21325
38757 msgid "The port to run mpd on."
38758 msgstr ""
38759
38760 #. type: item
38761 #: doc/guix.texi:21326
38762 #, no-wrap
38763 msgid "@code{address} (default: @code{\"any\"})"
38764 msgstr ""
38765
38766 #. type: table
38767 #: doc/guix.texi:21329
38768 msgid "The address that mpd will bind to. To use a Unix domain socket, an absolute path can be specified here."
38769 msgstr ""
38770
38771 #. type: subsection
38772 #: doc/guix.texi:21334
38773 #, no-wrap
38774 msgid "Virtualization services"
38775 msgstr ""
38776
38777 #. type: Plain text
38778 #: doc/guix.texi:21339
38779 msgid "The @code{(gnu services virtualization)} module provides services for the libvirt and virtlog daemons, as well as other virtualization-related services."
38780 msgstr ""
38781
38782 #. type: subsubheading
38783 #: doc/guix.texi:21340
38784 #, no-wrap
38785 msgid "Libvirt daemon"
38786 msgstr ""
38787
38788 #. type: Plain text
38789 #: doc/guix.texi:21344
38790 msgid "@code{libvirtd} is the server side daemon component of the libvirt virtualization management system. This daemon runs on host servers and performs required management tasks for virtualized guests."
38791 msgstr ""
38792
38793 #. type: deffn
38794 #: doc/guix.texi:21345
38795 #, no-wrap
38796 msgid "{Scheme Variable} libvirt-service-type"
38797 msgstr ""
38798
38799 #. type: deffn
38800 #: doc/guix.texi:21348
38801 msgid "This is the type of the @uref{https://libvirt.org, libvirt daemon}. Its value must be a @code{libvirt-configuration}."
38802 msgstr ""
38803
38804 #. type: example
38805 #: doc/guix.texi:21354
38806 #, no-wrap
38807 msgid ""
38808 "(service libvirt-service-type\n"
38809 " (libvirt-configuration\n"
38810 " (unix-sock-group \"libvirt\")\n"
38811 " (tls-port \"16555\")))\n"
38812 msgstr ""
38813
38814 #. type: Plain text
38815 #: doc/guix.texi:21359
38816 msgid "Available @code{libvirt-configuration} fields are:"
38817 msgstr ""
38818
38819 #. type: deftypevr
38820 #: doc/guix.texi:21360
38821 #, no-wrap
38822 msgid "{@code{libvirt-configuration} parameter} package libvirt"
38823 msgstr ""
38824
38825 #. type: deftypevr
38826 #: doc/guix.texi:21362
38827 msgid "Libvirt package."
38828 msgstr ""
38829
38830 #. type: deftypevr
38831 #: doc/guix.texi:21365
38832 #, no-wrap
38833 msgid "{@code{libvirt-configuration} parameter} boolean listen-tls?"
38834 msgstr ""
38835
38836 #. type: deftypevr
38837 #: doc/guix.texi:21368
38838 msgid "Flag listening for secure TLS connections on the public TCP/IP port. must set @code{listen} for this to have any effect."
38839 msgstr ""
38840
38841 #. type: deftypevr
38842 #: doc/guix.texi:21371
38843 msgid "It is necessary to setup a CA and issue server certificates before using this capability."
38844 msgstr ""
38845
38846 #. type: deftypevr
38847 #: doc/guix.texi:21376
38848 #, no-wrap
38849 msgid "{@code{libvirt-configuration} parameter} boolean listen-tcp?"
38850 msgstr ""
38851
38852 #. type: deftypevr
38853 #: doc/guix.texi:21379
38854 msgid "Listen for unencrypted TCP connections on the public TCP/IP port. must set @code{listen} for this to have any effect."
38855 msgstr ""
38856
38857 #. type: deftypevr
38858 #: doc/guix.texi:21383
38859 msgid "Using the TCP socket requires SASL authentication by default. Only SASL mechanisms which support data encryption are allowed. This is DIGEST_MD5 and GSSAPI (Kerberos5)"
38860 msgstr ""
38861
38862 #. type: deftypevr
38863 #: doc/guix.texi:21388
38864 #, no-wrap
38865 msgid "{@code{libvirt-configuration} parameter} string tls-port"
38866 msgstr ""
38867
38868 #. type: deftypevr
38869 #: doc/guix.texi:21391
38870 msgid "Port for accepting secure TLS connections This can be a port number, or service name"
38871 msgstr ""
38872
38873 #. type: deftypevr
38874 #: doc/guix.texi:21393
38875 msgid "Defaults to @samp{\"16514\"}."
38876 msgstr ""
38877
38878 #. type: deftypevr
38879 #: doc/guix.texi:21396
38880 #, no-wrap
38881 msgid "{@code{libvirt-configuration} parameter} string tcp-port"
38882 msgstr ""
38883
38884 #. type: deftypevr
38885 #: doc/guix.texi:21399
38886 msgid "Port for accepting insecure TCP connections This can be a port number, or service name"
38887 msgstr ""
38888
38889 #. type: deftypevr
38890 #: doc/guix.texi:21401
38891 msgid "Defaults to @samp{\"16509\"}."
38892 msgstr ""
38893
38894 #. type: deftypevr
38895 #: doc/guix.texi:21404
38896 #, no-wrap
38897 msgid "{@code{libvirt-configuration} parameter} string listen-addr"
38898 msgstr ""
38899
38900 #. type: deftypevr
38901 #: doc/guix.texi:21406
38902 msgid "IP address or hostname used for client connections."
38903 msgstr ""
38904
38905 #. type: deftypevr
38906 #: doc/guix.texi:21408
38907 msgid "Defaults to @samp{\"0.0.0.0\"}."
38908 msgstr ""
38909
38910 #. type: deftypevr
38911 #: doc/guix.texi:21411
38912 #, no-wrap
38913 msgid "{@code{libvirt-configuration} parameter} boolean mdns-adv?"
38914 msgstr ""
38915
38916 #. type: deftypevr
38917 #: doc/guix.texi:21413
38918 msgid "Flag toggling mDNS advertisement of the libvirt service."
38919 msgstr ""
38920
38921 #. type: deftypevr
38922 #: doc/guix.texi:21416
38923 msgid "Alternatively can disable for all services on a host by stopping the Avahi daemon."
38924 msgstr ""
38925
38926 #. type: deftypevr
38927 #: doc/guix.texi:21421
38928 #, no-wrap
38929 msgid "{@code{libvirt-configuration} parameter} string mdns-name"
38930 msgstr ""
38931
38932 #. type: deftypevr
38933 #: doc/guix.texi:21424
38934 msgid "Default mDNS advertisement name. This must be unique on the immediate broadcast network."
38935 msgstr ""
38936
38937 #. type: deftypevr
38938 #: doc/guix.texi:21426
38939 msgid "Defaults to @samp{\"Virtualization Host <hostname>\"}."
38940 msgstr ""
38941
38942 #. type: deftypevr
38943 #: doc/guix.texi:21429
38944 #, no-wrap
38945 msgid "{@code{libvirt-configuration} parameter} string unix-sock-group"
38946 msgstr ""
38947
38948 #. type: deftypevr
38949 #: doc/guix.texi:21433
38950 msgid "UNIX domain socket group ownership. This can be used to allow a 'trusted' set of users access to management capabilities without becoming root."
38951 msgstr ""
38952
38953 #. type: deftypevr
38954 #: doc/guix.texi:21438
38955 #, no-wrap
38956 msgid "{@code{libvirt-configuration} parameter} string unix-sock-ro-perms"
38957 msgstr ""
38958
38959 #. type: deftypevr
38960 #: doc/guix.texi:21441
38961 msgid "UNIX socket permissions for the R/O socket. This is used for monitoring VM status only."
38962 msgstr ""
38963
38964 #. type: deftypevr
38965 #: doc/guix.texi:21443 doc/guix.texi:21461
38966 msgid "Defaults to @samp{\"0777\"}."
38967 msgstr ""
38968
38969 #. type: deftypevr
38970 #: doc/guix.texi:21446
38971 #, no-wrap
38972 msgid "{@code{libvirt-configuration} parameter} string unix-sock-rw-perms"
38973 msgstr ""
38974
38975 #. type: deftypevr
38976 #: doc/guix.texi:21450
38977 msgid "UNIX socket permissions for the R/W socket. Default allows only root. If PolicyKit is enabled on the socket, the default will change to allow everyone (eg, 0777)"
38978 msgstr ""
38979
38980 #. type: deftypevr
38981 #: doc/guix.texi:21452
38982 msgid "Defaults to @samp{\"0770\"}."
38983 msgstr ""
38984
38985 #. type: deftypevr
38986 #: doc/guix.texi:21455
38987 #, no-wrap
38988 msgid "{@code{libvirt-configuration} parameter} string unix-sock-admin-perms"
38989 msgstr ""
38990
38991 #. type: deftypevr
38992 #: doc/guix.texi:21459
38993 msgid "UNIX socket permissions for the admin socket. Default allows only owner (root), do not change it unless you are sure to whom you are exposing the access to."
38994 msgstr ""
38995
38996 #. type: deftypevr
38997 #: doc/guix.texi:21464
38998 #, no-wrap
38999 msgid "{@code{libvirt-configuration} parameter} string unix-sock-dir"
39000 msgstr ""
39001
39002 #. type: deftypevr
39003 #: doc/guix.texi:21466
39004 msgid "The directory in which sockets will be found/created."
39005 msgstr ""
39006
39007 #. type: deftypevr
39008 #: doc/guix.texi:21468
39009 msgid "Defaults to @samp{\"/var/run/libvirt\"}."
39010 msgstr ""
39011
39012 #. type: deftypevr
39013 #: doc/guix.texi:21471
39014 #, no-wrap
39015 msgid "{@code{libvirt-configuration} parameter} string auth-unix-ro"
39016 msgstr ""
39017
39018 #. type: deftypevr
39019 #: doc/guix.texi:21474
39020 msgid "Authentication scheme for UNIX read-only sockets. By default socket permissions allow anyone to connect"
39021 msgstr ""
39022
39023 #. type: deftypevr
39024 #: doc/guix.texi:21476 doc/guix.texi:21485
39025 msgid "Defaults to @samp{\"polkit\"}."
39026 msgstr ""
39027
39028 #. type: deftypevr
39029 #: doc/guix.texi:21479
39030 #, no-wrap
39031 msgid "{@code{libvirt-configuration} parameter} string auth-unix-rw"
39032 msgstr ""
39033
39034 #. type: deftypevr
39035 #: doc/guix.texi:21483
39036 msgid "Authentication scheme for UNIX read-write sockets. By default socket permissions only allow root. If PolicyKit support was compiled into libvirt, the default will be to use 'polkit' auth."
39037 msgstr ""
39038
39039 #. type: deftypevr
39040 #: doc/guix.texi:21488
39041 #, no-wrap
39042 msgid "{@code{libvirt-configuration} parameter} string auth-tcp"
39043 msgstr ""
39044
39045 #. type: deftypevr
39046 #: doc/guix.texi:21492
39047 msgid "Authentication scheme for TCP sockets. If you don't enable SASL, then all TCP traffic is cleartext. Don't do this outside of a dev/test scenario."
39048 msgstr ""
39049
39050 #. type: deftypevr
39051 #: doc/guix.texi:21494
39052 msgid "Defaults to @samp{\"sasl\"}."
39053 msgstr ""
39054
39055 #. type: deftypevr
39056 #: doc/guix.texi:21497
39057 #, no-wrap
39058 msgid "{@code{libvirt-configuration} parameter} string auth-tls"
39059 msgstr ""
39060
39061 #. type: deftypevr
39062 #: doc/guix.texi:21501
39063 msgid "Authentication scheme for TLS sockets. TLS sockets already have encryption provided by the TLS layer, and limited authentication is done by certificates."
39064 msgstr ""
39065
39066 #. type: deftypevr
39067 #: doc/guix.texi:21504
39068 msgid "It is possible to make use of any SASL authentication mechanism as well, by using 'sasl' for this option"
39069 msgstr ""
39070
39071 #. type: deftypevr
39072 #: doc/guix.texi:21506
39073 msgid "Defaults to @samp{\"none\"}."
39074 msgstr ""
39075
39076 #. type: deftypevr
39077 #: doc/guix.texi:21509
39078 #, no-wrap
39079 msgid "{@code{libvirt-configuration} parameter} optional-list access-drivers"
39080 msgstr ""
39081
39082 #. type: deftypevr
39083 #: doc/guix.texi:21511
39084 msgid "API access control scheme."
39085 msgstr ""
39086
39087 #. type: deftypevr
39088 #: doc/guix.texi:21514
39089 msgid "By default an authenticated user is allowed access to all APIs. Access drivers can place restrictions on this."
39090 msgstr ""
39091
39092 #. type: deftypevr
39093 #: doc/guix.texi:21519
39094 #, no-wrap
39095 msgid "{@code{libvirt-configuration} parameter} string key-file"
39096 msgstr ""
39097
39098 #. type: deftypevr
39099 #: doc/guix.texi:21522
39100 msgid "Server key file path. If set to an empty string, then no private key is loaded."
39101 msgstr ""
39102
39103 #. type: deftypevr
39104 #: doc/guix.texi:21527
39105 #, no-wrap
39106 msgid "{@code{libvirt-configuration} parameter} string cert-file"
39107 msgstr ""
39108
39109 #. type: deftypevr
39110 #: doc/guix.texi:21530
39111 msgid "Server key file path. If set to an empty string, then no certificate is loaded."
39112 msgstr ""
39113
39114 #. type: deftypevr
39115 #: doc/guix.texi:21535
39116 #, no-wrap
39117 msgid "{@code{libvirt-configuration} parameter} string ca-file"
39118 msgstr ""
39119
39120 #. type: deftypevr
39121 #: doc/guix.texi:21538
39122 msgid "Server key file path. If set to an empty string, then no CA certificate is loaded."
39123 msgstr ""
39124
39125 #. type: deftypevr
39126 #: doc/guix.texi:21543
39127 #, no-wrap
39128 msgid "{@code{libvirt-configuration} parameter} string crl-file"
39129 msgstr ""
39130
39131 #. type: deftypevr
39132 #: doc/guix.texi:21546
39133 msgid "Certificate revocation list path. If set to an empty string, then no CRL is loaded."
39134 msgstr ""
39135
39136 #. type: deftypevr
39137 #: doc/guix.texi:21551
39138 #, no-wrap
39139 msgid "{@code{libvirt-configuration} parameter} boolean tls-no-sanity-cert"
39140 msgstr ""
39141
39142 #. type: deftypevr
39143 #: doc/guix.texi:21553
39144 msgid "Disable verification of our own server certificates."
39145 msgstr ""
39146
39147 #. type: deftypevr
39148 #: doc/guix.texi:21556
39149 msgid "When libvirtd starts it performs some sanity checks against its own certificates."
39150 msgstr ""
39151
39152 #. type: deftypevr
39153 #: doc/guix.texi:21561
39154 #, no-wrap
39155 msgid "{@code{libvirt-configuration} parameter} boolean tls-no-verify-cert"
39156 msgstr ""
39157
39158 #. type: deftypevr
39159 #: doc/guix.texi:21563
39160 msgid "Disable verification of client certificates."
39161 msgstr ""
39162
39163 #. type: deftypevr
39164 #: doc/guix.texi:21567
39165 msgid "Client certificate verification is the primary authentication mechanism. Any client which does not present a certificate signed by the CA will be rejected."
39166 msgstr ""
39167
39168 #. type: deftypevr
39169 #: doc/guix.texi:21572
39170 #, no-wrap
39171 msgid "{@code{libvirt-configuration} parameter} optional-list tls-allowed-dn-list"
39172 msgstr ""
39173
39174 #. type: deftypevr
39175 #: doc/guix.texi:21574
39176 msgid "Whitelist of allowed x509 Distinguished Name."
39177 msgstr ""
39178
39179 #. type: deftypevr
39180 #: doc/guix.texi:21579
39181 #, no-wrap
39182 msgid "{@code{libvirt-configuration} parameter} optional-list sasl-allowed-usernames"
39183 msgstr ""
39184
39185 #. type: deftypevr
39186 #: doc/guix.texi:21582
39187 msgid "Whitelist of allowed SASL usernames. The format for username depends on the SASL authentication mechanism."
39188 msgstr ""
39189
39190 #. type: deftypevr
39191 #: doc/guix.texi:21587
39192 #, no-wrap
39193 msgid "{@code{libvirt-configuration} parameter} string tls-priority"
39194 msgstr ""
39195
39196 #. type: deftypevr
39197 #: doc/guix.texi:21591
39198 msgid "Override the compile time default TLS priority string. The default is usually \"NORMAL\" unless overridden at build time. Only set this is it is desired for libvirt to deviate from the global default settings."
39199 msgstr ""
39200
39201 #. type: deftypevr
39202 #: doc/guix.texi:21593
39203 msgid "Defaults to @samp{\"NORMAL\"}."
39204 msgstr ""
39205
39206 #. type: deftypevr
39207 #: doc/guix.texi:21596
39208 #, no-wrap
39209 msgid "{@code{libvirt-configuration} parameter} integer max-clients"
39210 msgstr ""
39211
39212 #. type: deftypevr
39213 #: doc/guix.texi:21599 doc/guix.texi:22022
39214 msgid "Maximum number of concurrent client connections to allow over all sockets combined."
39215 msgstr ""
39216
39217 #. type: deftypevr
39218 #: doc/guix.texi:21601
39219 msgid "Defaults to @samp{5000}."
39220 msgstr ""
39221
39222 #. type: deftypevr
39223 #: doc/guix.texi:21604
39224 #, no-wrap
39225 msgid "{@code{libvirt-configuration} parameter} integer max-queued-clients"
39226 msgstr ""
39227
39228 #. type: deftypevr
39229 #: doc/guix.texi:21608
39230 msgid "Maximum length of queue of connections waiting to be accepted by the daemon. Note, that some protocols supporting retransmission may obey this so that a later reattempt at connection succeeds."
39231 msgstr ""
39232
39233 #. type: deftypevr
39234 #: doc/guix.texi:21613
39235 #, no-wrap
39236 msgid "{@code{libvirt-configuration} parameter} integer max-anonymous-clients"
39237 msgstr ""
39238
39239 #. type: deftypevr
39240 #: doc/guix.texi:21616
39241 msgid "Maximum length of queue of accepted but not yet authenticated clients. Set this to zero to turn this feature off"
39242 msgstr ""
39243
39244 #. type: deftypevr
39245 #: doc/guix.texi:21618 doc/guix.texi:21636 doc/guix.texi:21652
39246 msgid "Defaults to @samp{20}."
39247 msgstr ""
39248
39249 #. type: deftypevr
39250 #: doc/guix.texi:21621
39251 #, no-wrap
39252 msgid "{@code{libvirt-configuration} parameter} integer min-workers"
39253 msgstr ""
39254
39255 #. type: deftypevr
39256 #: doc/guix.texi:21623
39257 msgid "Number of workers to start up initially."
39258 msgstr ""
39259
39260 #. type: deftypevr
39261 #: doc/guix.texi:21628
39262 #, no-wrap
39263 msgid "{@code{libvirt-configuration} parameter} integer max-workers"
39264 msgstr ""
39265
39266 #. type: deftypevr
39267 #: doc/guix.texi:21630
39268 msgid "Maximum number of worker threads."
39269 msgstr ""
39270
39271 #. type: deftypevr
39272 #: doc/guix.texi:21634
39273 msgid "If the number of active clients exceeds @code{min-workers}, then more threads are spawned, up to max_workers limit. Typically you'd want max_workers to equal maximum number of clients allowed."
39274 msgstr ""
39275
39276 #. type: deftypevr
39277 #: doc/guix.texi:21639
39278 #, no-wrap
39279 msgid "{@code{libvirt-configuration} parameter} integer prio-workers"
39280 msgstr ""
39281
39282 #. type: deftypevr
39283 #: doc/guix.texi:21643
39284 msgid "Number of priority workers. If all workers from above pool are stuck, some calls marked as high priority (notably domainDestroy) can be executed in this pool."
39285 msgstr ""
39286
39287 #. type: deftypevr
39288 #: doc/guix.texi:21648
39289 #, no-wrap
39290 msgid "{@code{libvirt-configuration} parameter} integer max-requests"
39291 msgstr ""
39292
39293 #. type: deftypevr
39294 #: doc/guix.texi:21650
39295 msgid "Total global limit on concurrent RPC calls."
39296 msgstr ""
39297
39298 #. type: deftypevr
39299 #: doc/guix.texi:21655
39300 #, no-wrap
39301 msgid "{@code{libvirt-configuration} parameter} integer max-client-requests"
39302 msgstr ""
39303
39304 #. type: deftypevr
39305 #: doc/guix.texi:21659
39306 msgid "Limit on concurrent requests from a single client connection. To avoid one client monopolizing the server this should be a small fraction of the global max_requests and max_workers parameter."
39307 msgstr ""
39308
39309 #. type: deftypevr
39310 #: doc/guix.texi:21664
39311 #, no-wrap
39312 msgid "{@code{libvirt-configuration} parameter} integer admin-min-workers"
39313 msgstr ""
39314
39315 #. type: deftypevr
39316 #: doc/guix.texi:21666
39317 msgid "Same as @code{min-workers} but for the admin interface."
39318 msgstr ""
39319
39320 #. type: deftypevr
39321 #: doc/guix.texi:21671
39322 #, no-wrap
39323 msgid "{@code{libvirt-configuration} parameter} integer admin-max-workers"
39324 msgstr ""
39325
39326 #. type: deftypevr
39327 #: doc/guix.texi:21673
39328 msgid "Same as @code{max-workers} but for the admin interface."
39329 msgstr ""
39330
39331 #. type: deftypevr
39332 #: doc/guix.texi:21678
39333 #, no-wrap
39334 msgid "{@code{libvirt-configuration} parameter} integer admin-max-clients"
39335 msgstr ""
39336
39337 #. type: deftypevr
39338 #: doc/guix.texi:21680
39339 msgid "Same as @code{max-clients} but for the admin interface."
39340 msgstr ""
39341
39342 #. type: deftypevr
39343 #: doc/guix.texi:21685
39344 #, no-wrap
39345 msgid "{@code{libvirt-configuration} parameter} integer admin-max-queued-clients"
39346 msgstr ""
39347
39348 #. type: deftypevr
39349 #: doc/guix.texi:21687
39350 msgid "Same as @code{max-queued-clients} but for the admin interface."
39351 msgstr ""
39352
39353 #. type: deftypevr
39354 #: doc/guix.texi:21692
39355 #, no-wrap
39356 msgid "{@code{libvirt-configuration} parameter} integer admin-max-client-requests"
39357 msgstr ""
39358
39359 #. type: deftypevr
39360 #: doc/guix.texi:21694
39361 msgid "Same as @code{max-client-requests} but for the admin interface."
39362 msgstr ""
39363
39364 #. type: deftypevr
39365 #: doc/guix.texi:21699
39366 #, no-wrap
39367 msgid "{@code{libvirt-configuration} parameter} integer log-level"
39368 msgstr ""
39369
39370 #. type: deftypevr
39371 #: doc/guix.texi:21701 doc/guix.texi:21924
39372 msgid "Logging level. 4 errors, 3 warnings, 2 information, 1 debug."
39373 msgstr ""
39374
39375 #. type: deftypevr
39376 #: doc/guix.texi:21706
39377 #, no-wrap
39378 msgid "{@code{libvirt-configuration} parameter} string log-filters"
39379 msgstr ""
39380
39381 #. type: deftypevr
39382 #: doc/guix.texi:21708 doc/guix.texi:21931
39383 msgid "Logging filters."
39384 msgstr ""
39385
39386 #. type: deftypevr
39387 #: doc/guix.texi:21711 doc/guix.texi:21934
39388 msgid "A filter allows to select a different logging level for a given category of logs The format for a filter is one of:"
39389 msgstr ""
39390
39391 #. type: itemize
39392 #: doc/guix.texi:21715 doc/guix.texi:21938
39393 msgid "x:name"
39394 msgstr ""
39395
39396 #. type: itemize
39397 #: doc/guix.texi:21718 doc/guix.texi:21941
39398 msgid "x:+name"
39399 msgstr ""
39400
39401 #. type: deftypevr
39402 #: doc/guix.texi:21728 doc/guix.texi:21951
39403 msgid "where @code{name} is a string which is matched against the category given in the @code{VIR_LOG_INIT()} at the top of each libvirt source file, e.g., \"remote\", \"qemu\", or \"util.json\" (the name in the filter can be a substring of the full category name, in order to match multiple similar categories), the optional \"+\" prefix tells libvirt to log stack trace for each message matching name, and @code{x} is the minimal level where matching messages should be logged:"
39404 msgstr ""
39405
39406 #. type: itemize
39407 #: doc/guix.texi:21732 doc/guix.texi:21777 doc/guix.texi:21955
39408 #: doc/guix.texi:22000
39409 msgid "1: DEBUG"
39410 msgstr ""
39411
39412 #. type: itemize
39413 #: doc/guix.texi:21735 doc/guix.texi:21780 doc/guix.texi:21958
39414 #: doc/guix.texi:22003
39415 msgid "2: INFO"
39416 msgstr ""
39417
39418 #. type: itemize
39419 #: doc/guix.texi:21738 doc/guix.texi:21783 doc/guix.texi:21961
39420 #: doc/guix.texi:22006
39421 msgid "3: WARNING"
39422 msgstr ""
39423
39424 #. type: itemize
39425 #: doc/guix.texi:21741 doc/guix.texi:21786 doc/guix.texi:21964
39426 #: doc/guix.texi:22009
39427 msgid "4: ERROR"
39428 msgstr ""
39429
39430 #. type: deftypevr
39431 #: doc/guix.texi:21746 doc/guix.texi:21969
39432 msgid "Multiple filters can be defined in a single filters statement, they just need to be separated by spaces."
39433 msgstr ""
39434
39435 #. type: deftypevr
39436 #: doc/guix.texi:21748 doc/guix.texi:21971
39437 msgid "Defaults to @samp{\"3:remote 4:event\"}."
39438 msgstr ""
39439
39440 #. type: deftypevr
39441 #: doc/guix.texi:21751
39442 #, no-wrap
39443 msgid "{@code{libvirt-configuration} parameter} string log-outputs"
39444 msgstr ""
39445
39446 #. type: deftypevr
39447 #: doc/guix.texi:21753 doc/guix.texi:21976
39448 msgid "Logging outputs."
39449 msgstr ""
39450
39451 #. type: deftypevr
39452 #: doc/guix.texi:21756
39453 msgid "An output is one of the places to save logging information. The format for an output can be:"
39454 msgstr ""
39455
39456 #. type: item
39457 #: doc/guix.texi:21758 doc/guix.texi:21981
39458 #, no-wrap
39459 msgid "x:stderr"
39460 msgstr ""
39461
39462 #. type: table
39463 #: doc/guix.texi:21760 doc/guix.texi:21983
39464 msgid "output goes to stderr"
39465 msgstr ""
39466
39467 #. type: item
39468 #: doc/guix.texi:21761 doc/guix.texi:21984
39469 #, no-wrap
39470 msgid "x:syslog:name"
39471 msgstr ""
39472
39473 #. type: table
39474 #: doc/guix.texi:21763 doc/guix.texi:21986
39475 msgid "use syslog for the output and use the given name as the ident"
39476 msgstr ""
39477
39478 #. type: item
39479 #: doc/guix.texi:21764 doc/guix.texi:21987
39480 #, no-wrap
39481 msgid "x:file:file_path"
39482 msgstr ""
39483
39484 #. type: table
39485 #: doc/guix.texi:21766 doc/guix.texi:21989
39486 msgid "output to a file, with the given filepath"
39487 msgstr ""
39488
39489 #. type: item
39490 #: doc/guix.texi:21767 doc/guix.texi:21990
39491 #, no-wrap
39492 msgid "x:journald"
39493 msgstr ""
39494
39495 #. type: table
39496 #: doc/guix.texi:21769 doc/guix.texi:21992
39497 msgid "output to journald logging system"
39498 msgstr ""
39499
39500 #. type: deftypevr
39501 #: doc/guix.texi:21773 doc/guix.texi:21996
39502 msgid "In all case the x prefix is the minimal level, acting as a filter"
39503 msgstr ""
39504
39505 #. type: deftypevr
39506 #: doc/guix.texi:21791 doc/guix.texi:22014
39507 msgid "Multiple outputs can be defined, they just need to be separated by spaces."
39508 msgstr ""
39509
39510 #. type: deftypevr
39511 #: doc/guix.texi:21793 doc/guix.texi:22016
39512 msgid "Defaults to @samp{\"3:stderr\"}."
39513 msgstr ""
39514
39515 #. type: deftypevr
39516 #: doc/guix.texi:21796
39517 #, no-wrap
39518 msgid "{@code{libvirt-configuration} parameter} integer audit-level"
39519 msgstr ""
39520
39521 #. type: deftypevr
39522 #: doc/guix.texi:21798
39523 msgid "Allows usage of the auditing subsystem to be altered"
39524 msgstr ""
39525
39526 #. type: itemize
39527 #: doc/guix.texi:21802
39528 msgid "0: disable all auditing"
39529 msgstr ""
39530
39531 #. type: itemize
39532 #: doc/guix.texi:21805
39533 msgid "1: enable auditing, only if enabled on host"
39534 msgstr ""
39535
39536 #. type: itemize
39537 #: doc/guix.texi:21808
39538 msgid "2: enable auditing, and exit if disabled on host."
39539 msgstr ""
39540
39541 #. type: deftypevr
39542 #: doc/guix.texi:21815
39543 #, no-wrap
39544 msgid "{@code{libvirt-configuration} parameter} boolean audit-logging"
39545 msgstr ""
39546
39547 #. type: deftypevr
39548 #: doc/guix.texi:21817
39549 msgid "Send audit messages via libvirt logging infrastructure."
39550 msgstr ""
39551
39552 #. type: deftypevr
39553 #: doc/guix.texi:21822
39554 #, no-wrap
39555 msgid "{@code{libvirt-configuration} parameter} optional-string host-uuid"
39556 msgstr ""
39557
39558 #. type: deftypevr
39559 #: doc/guix.texi:21824
39560 msgid "Host UUID. UUID must not have all digits be the same."
39561 msgstr ""
39562
39563 #. type: deftypevr
39564 #: doc/guix.texi:21829
39565 #, no-wrap
39566 msgid "{@code{libvirt-configuration} parameter} string host-uuid-source"
39567 msgstr ""
39568
39569 #. type: deftypevr
39570 #: doc/guix.texi:21831
39571 msgid "Source to read host UUID."
39572 msgstr ""
39573
39574 #. type: itemize
39575 #: doc/guix.texi:21835
39576 msgid "@code{smbios}: fetch the UUID from @code{dmidecode -s system-uuid}"
39577 msgstr ""
39578
39579 #. type: itemize
39580 #: doc/guix.texi:21838
39581 msgid "@code{machine-id}: fetch the UUID from @code{/etc/machine-id}"
39582 msgstr ""
39583
39584 #. type: deftypevr
39585 #: doc/guix.texi:21843
39586 msgid "If @code{dmidecode} does not provide a valid UUID a temporary UUID will be generated."
39587 msgstr ""
39588
39589 #. type: deftypevr
39590 #: doc/guix.texi:21845
39591 msgid "Defaults to @samp{\"smbios\"}."
39592 msgstr ""
39593
39594 #. type: deftypevr
39595 #: doc/guix.texi:21848
39596 #, no-wrap
39597 msgid "{@code{libvirt-configuration} parameter} integer keepalive-interval"
39598 msgstr ""
39599
39600 #. type: deftypevr
39601 #: doc/guix.texi:21853
39602 msgid "A keepalive message is sent to a client after @code{keepalive_interval} seconds of inactivity to check if the client is still responding. If set to -1, libvirtd will never send keepalive requests; however clients can still send them and the daemon will send responses."
39603 msgstr ""
39604
39605 #. type: deftypevr
39606 #: doc/guix.texi:21858
39607 #, no-wrap
39608 msgid "{@code{libvirt-configuration} parameter} integer keepalive-count"
39609 msgstr ""
39610
39611 #. type: deftypevr
39612 #: doc/guix.texi:21862
39613 msgid "Maximum number of keepalive messages that are allowed to be sent to the client without getting any response before the connection is considered broken."
39614 msgstr ""
39615
39616 #. type: deftypevr
39617 #: doc/guix.texi:21869
39618 msgid "In other words, the connection is automatically closed approximately after @code{keepalive_interval * (keepalive_count + 1)} seconds since the last message received from the client. When @code{keepalive-count} is set to 0, connections will be automatically closed after @code{keepalive-interval} seconds of inactivity without sending any keepalive messages."
39619 msgstr ""
39620
39621 #. type: deftypevr
39622 #: doc/guix.texi:21874
39623 #, no-wrap
39624 msgid "{@code{libvirt-configuration} parameter} integer admin-keepalive-interval"
39625 msgstr ""
39626
39627 #. type: deftypevr
39628 #: doc/guix.texi:21876 doc/guix.texi:21883
39629 msgid "Same as above but for admin interface."
39630 msgstr ""
39631
39632 #. type: deftypevr
39633 #: doc/guix.texi:21881
39634 #, no-wrap
39635 msgid "{@code{libvirt-configuration} parameter} integer admin-keepalive-count"
39636 msgstr ""
39637
39638 #. type: deftypevr
39639 #: doc/guix.texi:21888
39640 #, no-wrap
39641 msgid "{@code{libvirt-configuration} parameter} integer ovs-timeout"
39642 msgstr ""
39643
39644 #. type: deftypevr
39645 #: doc/guix.texi:21890
39646 msgid "Timeout for Open vSwitch calls."
39647 msgstr ""
39648
39649 #. type: deftypevr
39650 #: doc/guix.texi:21894
39651 msgid "The @code{ovs-vsctl} utility is used for the configuration and its timeout option is set by default to 5 seconds to avoid potential infinite waits blocking libvirt."
39652 msgstr ""
39653
39654 #. type: subsubheading
39655 #: doc/guix.texi:21901
39656 #, no-wrap
39657 msgid "Virtlog daemon"
39658 msgstr ""
39659
39660 #. type: Plain text
39661 #: doc/guix.texi:21904
39662 msgid "The virtlogd service is a server side daemon component of libvirt that is used to manage logs from virtual machine consoles."
39663 msgstr ""
39664
39665 #. type: Plain text
39666 #: doc/guix.texi:21910
39667 msgid "This daemon is not used directly by libvirt client applications, rather it is called on their behalf by @code{libvirtd}. By maintaining the logs in a standalone daemon, the main @code{libvirtd} daemon can be restarted without risk of losing logs. The @code{virtlogd} daemon has the ability to re-exec() itself upon receiving @code{SIGUSR1}, to allow live upgrades without downtime."
39668 msgstr ""
39669
39670 #. type: deffn
39671 #: doc/guix.texi:21911
39672 #, no-wrap
39673 msgid "{Scheme Variable} virtlog-service-type"
39674 msgstr ""
39675
39676 #. type: deffn
39677 #: doc/guix.texi:21914
39678 msgid "This is the type of the virtlog daemon. Its value must be a @code{virtlog-configuration}."
39679 msgstr ""
39680
39681 #. type: example
39682 #: doc/guix.texi:21919
39683 #, no-wrap
39684 msgid ""
39685 "(service virtlog-service-type\n"
39686 " (virtlog-configuration\n"
39687 " (max-clients 1000)))\n"
39688 msgstr ""
39689
39690 #. type: deftypevr
39691 #: doc/guix.texi:21922
39692 #, no-wrap
39693 msgid "{@code{virtlog-configuration} parameter} integer log-level"
39694 msgstr ""
39695
39696 #. type: deftypevr
39697 #: doc/guix.texi:21929
39698 #, no-wrap
39699 msgid "{@code{virtlog-configuration} parameter} string log-filters"
39700 msgstr ""
39701
39702 #. type: deftypevr
39703 #: doc/guix.texi:21974
39704 #, no-wrap
39705 msgid "{@code{virtlog-configuration} parameter} string log-outputs"
39706 msgstr ""
39707
39708 #. type: deftypevr
39709 #: doc/guix.texi:21979
39710 msgid "An output is one of the places to save logging information The format for an output can be:"
39711 msgstr ""
39712
39713 #. type: deftypevr
39714 #: doc/guix.texi:22019
39715 #, no-wrap
39716 msgid "{@code{virtlog-configuration} parameter} integer max-clients"
39717 msgstr ""
39718
39719 #. type: deftypevr
39720 #: doc/guix.texi:22024
39721 msgid "Defaults to @samp{1024}."
39722 msgstr ""
39723
39724 #. type: deftypevr
39725 #: doc/guix.texi:22027
39726 #, no-wrap
39727 msgid "{@code{virtlog-configuration} parameter} integer max-size"
39728 msgstr ""
39729
39730 #. type: deftypevr
39731 #: doc/guix.texi:22029
39732 msgid "Maximum file size before rolling over."
39733 msgstr ""
39734
39735 #. type: deftypevr
39736 #: doc/guix.texi:22031
39737 msgid "Defaults to @samp{2MB}"
39738 msgstr ""
39739
39740 #. type: deftypevr
39741 #: doc/guix.texi:22034
39742 #, no-wrap
39743 msgid "{@code{virtlog-configuration} parameter} integer max-backups"
39744 msgstr ""
39745
39746 #. type: deftypevr
39747 #: doc/guix.texi:22036
39748 msgid "Maximum number of backup files to keep."
39749 msgstr ""
39750
39751 #. type: deftypevr
39752 #: doc/guix.texi:22038
39753 msgid "Defaults to @samp{3}"
39754 msgstr ""
39755
39756 #. type: subsubheading
39757 #: doc/guix.texi:22041
39758 #, no-wrap
39759 msgid "Transparent Emulation with QEMU"
39760 msgstr ""
39761
39762 #. type: cindex
39763 #: doc/guix.texi:22043
39764 #, no-wrap
39765 msgid "emulation"
39766 msgstr ""
39767
39768 #. type: code{#1}
39769 #: doc/guix.texi:22044
39770 #, no-wrap
39771 msgid "binfmt_misc"
39772 msgstr ""
39773
39774 #. type: Plain text
39775 #: doc/guix.texi:22050
39776 msgid "@code{qemu-binfmt-service-type} provides support for transparent emulation of program binaries built for different architectures---e.g., it allows you to transparently execute an ARMv7 program on an x86_64 machine. It achieves this by combining the @uref{https://www.qemu.org, QEMU} emulator and the @code{binfmt_misc} feature of the kernel Linux."
39777 msgstr ""
39778
39779 #. type: defvr
39780 #: doc/guix.texi:22051
39781 #, no-wrap
39782 msgid "{Scheme Variable} qemu-binfmt-service-type"
39783 msgstr ""
39784
39785 #. type: defvr
39786 #: doc/guix.texi:22056
39787 msgid "This is the type of the QEMU/binfmt service for transparent emulation. Its value must be a @code{qemu-binfmt-configuration} object, which specifies the QEMU package to use as well as the architecture we want to emulated:"
39788 msgstr ""
39789
39790 #. type: example
39791 #: doc/guix.texi:22061
39792 #, no-wrap
39793 msgid ""
39794 "(service qemu-binfmt-service-type\n"
39795 " (qemu-binfmt-configuration\n"
39796 " (platforms (lookup-qemu-platforms \"arm\" \"aarch64\" \"mips64el\"))))\n"
39797 msgstr ""
39798
39799 #. type: defvr
39800 #: doc/guix.texi:22067
39801 msgid "In this example, we enable transparent emulation for the ARM and aarch64 platforms. Running @code{herd stop qemu-binfmt} turns it off, and running @code{herd start qemu-binfmt} turns it back on (@pxref{Invoking herd, the @command{herd} command,, shepherd, The GNU Shepherd Manual})."
39802 msgstr ""
39803
39804 #. type: deftp
39805 #: doc/guix.texi:22069
39806 #, no-wrap
39807 msgid "{Data Type} qemu-binfmt-configuration"
39808 msgstr ""
39809
39810 #. type: deftp
39811 #: doc/guix.texi:22071
39812 msgid "This is the configuration for the @code{qemu-binfmt} service."
39813 msgstr ""
39814
39815 #. type: item
39816 #: doc/guix.texi:22073
39817 #, no-wrap
39818 msgid "@code{platforms} (default: @code{'()})"
39819 msgstr ""
39820
39821 #. type: table
39822 #: doc/guix.texi:22076
39823 msgid "The list of emulated QEMU platforms. Each item must be a @dfn{platform object} as returned by @code{lookup-qemu-platforms} (see below)."
39824 msgstr ""
39825
39826 #. type: item
39827 #: doc/guix.texi:22077
39828 #, no-wrap
39829 msgid "@code{guix-support?} (default: @code{#f})"
39830 msgstr ""
39831
39832 #. type: table
39833 #: doc/guix.texi:22083
39834 msgid "When it is true, QEMU and all its dependencies are added to the build environment of @command{guix-daemon} (@pxref{Invoking guix-daemon, @code{--chroot-directory} option}). This allows the @code{binfmt_misc} handlers to be used within the build environment, which in turn means that you can transparently build programs for another architecture."
39835 msgstr ""
39836
39837 #. type: table
39838 #: doc/guix.texi:22086
39839 msgid "For example, let's suppose you're on an x86_64 machine and you have this service:"
39840 msgstr ""
39841
39842 #. type: example
39843 #: doc/guix.texi:22092
39844 #, no-wrap
39845 msgid ""
39846 "(service qemu-binfmt-service-type\n"
39847 " (qemu-binfmt-configuration\n"
39848 " (platforms (lookup-qemu-platforms \"arm\"))\n"
39849 " (guix-support? #t)))\n"
39850 msgstr ""
39851
39852 #. type: table
39853 #: doc/guix.texi:22095
39854 msgid "You can run:"
39855 msgstr ""
39856
39857 #. type: example
39858 #: doc/guix.texi:22098
39859 #, no-wrap
39860 msgid "guix build -s armhf-linux inkscape\n"
39861 msgstr ""
39862
39863 #. type: table
39864 #: doc/guix.texi:22105
39865 msgid "and it will build Inkscape for ARMv7 @emph{as if it were a native build}, transparently using QEMU to emulate the ARMv7 CPU. Pretty handy if you'd like to test a package build for an architecture you don't have access to!"
39866 msgstr ""
39867
39868 #. type: item
39869 #: doc/guix.texi:22106
39870 #, no-wrap
39871 msgid "@code{qemu} (default: @code{qemu})"
39872 msgstr ""
39873
39874 #. type: table
39875 #: doc/guix.texi:22108
39876 msgid "The QEMU package to use."
39877 msgstr ""
39878
39879 #. type: deffn
39880 #: doc/guix.texi:22111
39881 #, no-wrap
39882 msgid "{Scheme Procedure} lookup-qemu-platforms @var{platforms}@dots{}"
39883 msgstr ""
39884
39885 #. type: deffn
39886 #: doc/guix.texi:22116
39887 msgid "Return the list of QEMU platform objects corresponding to @var{platforms}@dots{}. @var{platforms} must be a list of strings corresponding to platform names, such as @code{\"arm\"}, @code{\"sparc\"}, @code{\"mips64el\"}, and so on."
39888 msgstr ""
39889
39890 #. type: deffn
39891 #: doc/guix.texi:22118
39892 #, no-wrap
39893 msgid "{Scheme Procedure} qemu-platform? @var{obj}"
39894 msgstr ""
39895
39896 #. type: deffn
39897 #: doc/guix.texi:22120
39898 msgid "Return true if @var{obj} is a platform object."
39899 msgstr ""
39900
39901 #. type: deffn
39902 #: doc/guix.texi:22122
39903 #, no-wrap
39904 msgid "{Scheme Procedure} qemu-platform-name @var{platform}"
39905 msgstr ""
39906
39907 #. type: deffn
39908 #: doc/guix.texi:22124
39909 msgid "Return the name of @var{platform}---a string such as @code{\"arm\"}."
39910 msgstr ""
39911
39912 #. type: Plain text
39913 #: doc/guix.texi:22136
39914 msgid "The @code{(gnu services version-control)} module provides a service to allow remote access to local Git repositories. There are three options: the @code{git-daemon-service}, which provides access to repositories via the @code{git://} unsecured TCP-based protocol, extending the @code{nginx} web server to proxy some requests to @code{git-http-backend}, or providing a web interface with @code{cgit-service-type}."
39915 msgstr ""
39916
39917 #. type: deffn
39918 #: doc/guix.texi:22137
39919 #, no-wrap
39920 msgid "{Scheme Procedure} git-daemon-service [#:config (git-daemon-configuration)]"
39921 msgstr ""
39922
39923 #. type: deffn
39924 #: doc/guix.texi:22141
39925 msgid "Return a service that runs @command{git daemon}, a simple TCP server to expose repositories over the Git protocol for anonymous access."
39926 msgstr ""
39927
39928 #. type: deffn
39929 #: doc/guix.texi:22147
39930 msgid "The optional @var{config} argument should be a @code{<git-daemon-configuration>} object, by default it allows read-only access to exported@footnote{By creating the magic file \"git-daemon-export-ok\" in the repository directory.} repositories under @file{/srv/git}."
39931 msgstr ""
39932
39933 #. type: deftp
39934 #: doc/guix.texi:22150
39935 #, no-wrap
39936 msgid "{Data Type} git-daemon-configuration"
39937 msgstr ""
39938
39939 #. type: deftp
39940 #: doc/guix.texi:22152
39941 msgid "Data type representing the configuration for @code{git-daemon-service}."
39942 msgstr ""
39943
39944 #. type: item
39945 #: doc/guix.texi:22154 doc/guix.texi:22210
39946 #, no-wrap
39947 msgid "@code{package} (default: @var{git})"
39948 msgstr ""
39949
39950 #. type: table
39951 #: doc/guix.texi:22156 doc/guix.texi:22212
39952 msgid "Package object of the Git distributed version control system."
39953 msgstr ""
39954
39955 #. type: item
39956 #: doc/guix.texi:22157 doc/guix.texi:22216
39957 #, no-wrap
39958 msgid "@code{export-all?} (default: @var{#f})"
39959 msgstr ""
39960
39961 #. type: table
39962 #: doc/guix.texi:22160
39963 msgid "Whether to allow access for all Git repositories, even if they do not have the @file{git-daemon-export-ok} file."
39964 msgstr ""
39965
39966 #. type: item
39967 #: doc/guix.texi:22161
39968 #, no-wrap
39969 msgid "@code{base-path} (default: @file{/srv/git})"
39970 msgstr ""
39971
39972 #. type: table
39973 #: doc/guix.texi:22166
39974 msgid "Whether to remap all the path requests as relative to the given path. If you run git daemon with @var{(base-path \"/srv/git\")} on example.com, then if you later try to pull @code{git://example.com/hello.git}, git daemon will interpret the path as @code{/srv/git/hello.git}."
39975 msgstr ""
39976
39977 #. type: item
39978 #: doc/guix.texi:22167
39979 #, no-wrap
39980 msgid "@code{user-path} (default: @var{#f})"
39981 msgstr ""
39982
39983 #. type: table
39984 #: doc/guix.texi:22174
39985 msgid "Whether to allow @code{~user} notation to be used in requests. When specified with empty string, requests to @code{git://host/~alice/foo} is taken as a request to access @code{foo} repository in the home directory of user @code{alice}. If @var{(user-path \"path\")} is specified, the same request is taken as a request to access @code{path/foo} repository in the home directory of user @code{alice}."
39986 msgstr ""
39987
39988 #. type: item
39989 #: doc/guix.texi:22175
39990 #, no-wrap
39991 msgid "@code{listen} (default: @var{'()})"
39992 msgstr ""
39993
39994 #. type: table
39995 #: doc/guix.texi:22178
39996 msgid "Whether to listen on specific IP addresses or hostnames, defaults to all."
39997 msgstr ""
39998
39999 #. type: item
40000 #: doc/guix.texi:22179
40001 #, no-wrap
40002 msgid "@code{port} (default: @var{#f})"
40003 msgstr ""
40004
40005 #. type: table
40006 #: doc/guix.texi:22181
40007 msgid "Whether to listen on an alternative port, which defaults to 9418."
40008 msgstr ""
40009
40010 #. type: item
40011 #: doc/guix.texi:22182
40012 #, no-wrap
40013 msgid "@code{whitelist} (default: @var{'()})"
40014 msgstr ""
40015
40016 #. type: table
40017 #: doc/guix.texi:22184
40018 msgid "If not empty, only allow access to this list of directories."
40019 msgstr ""
40020
40021 #. type: item
40022 #: doc/guix.texi:22185
40023 #, no-wrap
40024 msgid "@code{extra-options} (default: @var{'()})"
40025 msgstr ""
40026
40027 #. type: table
40028 #: doc/guix.texi:22188
40029 msgid "Extra options will be passed to @code{git daemon}, please run @command{man git-daemon} for more information."
40030 msgstr ""
40031
40032 #. type: Plain text
40033 #: doc/guix.texi:22202
40034 msgid "The @code{git://} protocol lacks authentication. When you pull from a repository fetched via @code{git://}, you don't know that the data you receive was modified is really coming from the specified host, and you have your connection is subject to eavesdropping. It's better to use an authenticated and encrypted transport, such as @code{https}. Although Git allows you to serve repositories using unsophisticated file-based web servers, there is a faster protocol implemented by the @code{git-http-backend} program. This program is the back-end of a proper Git web service. It is designed to sit behind a FastCGI proxy. @xref{Web Services}, for more on running the necessary @code{fcgiwrap} daemon."
40035 msgstr ""
40036
40037 #. type: Plain text
40038 #: doc/guix.texi:22205
40039 msgid "Guix has a separate configuration data type for serving Git repositories over HTTP."
40040 msgstr ""
40041
40042 #. type: deftp
40043 #: doc/guix.texi:22206
40044 #, no-wrap
40045 msgid "{Data Type} git-http-configuration"
40046 msgstr ""
40047
40048 #. type: deftp
40049 #: doc/guix.texi:22208
40050 msgid "Data type representing the configuration for @code{git-http-service}."
40051 msgstr ""
40052
40053 #. type: item
40054 #: doc/guix.texi:22213
40055 #, no-wrap
40056 msgid "@code{git-root} (default: @file{/srv/git})"
40057 msgstr ""
40058
40059 #. type: table
40060 #: doc/guix.texi:22215
40061 msgid "Directory containing the Git repositories to expose to the world."
40062 msgstr ""
40063
40064 #. type: table
40065 #: doc/guix.texi:22219
40066 msgid "Whether to expose access for all Git repositories in @var{git-root}, even if they do not have the @file{git-daemon-export-ok} file."
40067 msgstr ""
40068
40069 #. type: item
40070 #: doc/guix.texi:22220
40071 #, no-wrap
40072 msgid "@code{uri-path} (default: @file{/git/})"
40073 msgstr ""
40074
40075 #. type: table
40076 #: doc/guix.texi:22225
40077 msgid "Path prefix for Git access. With the default @code{/git/} prefix, this will map @code{http://@var{server}/git/@var{repo}.git} to @code{/srv/git/@var{repo}.git}. Requests whose URI paths do not begin with this prefix are not passed on to this Git instance."
40078 msgstr ""
40079
40080 #. type: item
40081 #: doc/guix.texi:22226
40082 #, no-wrap
40083 msgid "@code{fcgiwrap-socket} (default: @code{127.0.0.1:9000})"
40084 msgstr ""
40085
40086 #. type: table
40087 #: doc/guix.texi:22229
40088 msgid "The socket on which the @code{fcgiwrap} daemon is listening. @xref{Web Services}."
40089 msgstr ""
40090
40091 #. type: Plain text
40092 #: doc/guix.texi:22236
40093 msgid "There is no @code{git-http-service-type}, currently; instead you can create an @code{nginx-location-configuration} from a @code{git-http-configuration} and then add that location to a web server."
40094 msgstr ""
40095
40096 #. type: deffn
40097 #: doc/guix.texi:22237
40098 #, no-wrap
40099 msgid "{Scheme Procedure} git-http-nginx-location-configuration @"
40100 msgstr ""
40101
40102 #. type: deffn
40103 #: doc/guix.texi:22242
40104 msgid "[config=(git-http-configuration)] Compute an @code{nginx-location-configuration} that corresponds to the given Git http configuration. An example nginx service definition to serve the default @file{/srv/git} over HTTPS might be:"
40105 msgstr ""
40106
40107 #. type: example
40108 #: doc/guix.texi:22259
40109 #, no-wrap
40110 msgid ""
40111 "(service nginx-service-type\n"
40112 " (nginx-configuration\n"
40113 " (server-blocks\n"
40114 " (list\n"
40115 " (nginx-server-configuration\n"
40116 " (listen '(\"443 ssl\"))\n"
40117 " (server-name \"git.my-host.org\")\n"
40118 " (ssl-certificate\n"
40119 " \"/etc/letsencrypt/live/git.my-host.org/fullchain.pem\")\n"
40120 " (ssl-certificate-key\n"
40121 " \"/etc/letsencrypt/live/git.my-host.org/privkey.pem\")\n"
40122 " (locations\n"
40123 " (list\n"
40124 " (git-http-nginx-location-configuration\n"
40125 " (git-http-configuration (uri-path \"/\"))))))))))\n"
40126 msgstr ""
40127
40128 #. type: deffn
40129 #: doc/guix.texi:22266
40130 msgid "This example assumes that you are using Let's Encrypt to get your TLS certificate. @xref{Certificate Services}. The default @code{certbot} service will redirect all HTTP traffic on @code{git.my-host.org} to HTTPS. You will also need to add an @code{fcgiwrap} proxy to your system services. @xref{Web Services}."
40131 msgstr ""
40132
40133 #. type: subsubheading
40134 #: doc/guix.texi:22268
40135 #, no-wrap
40136 msgid "Cgit Service"
40137 msgstr ""
40138
40139 #. type: cindex
40140 #: doc/guix.texi:22270
40141 #, no-wrap
40142 msgid "Cgit service"
40143 msgstr ""
40144
40145 #. type: cindex
40146 #: doc/guix.texi:22271
40147 #, no-wrap
40148 msgid "Git, web interface"
40149 msgstr ""
40150
40151 #. type: Plain text
40152 #: doc/guix.texi:22274
40153 msgid "@uref{https://git.zx2c4.com/cgit/, Cgit} is a web frontend for Git repositories written in C."
40154 msgstr ""
40155
40156 #. type: Plain text
40157 #: doc/guix.texi:22277
40158 msgid "The following example will configure the service with default values. By default, Cgit can be accessed on port 80 (@code{http://localhost:80})."
40159 msgstr ""
40160
40161 #. type: example
40162 #: doc/guix.texi:22280
40163 #, no-wrap
40164 msgid "(service cgit-service-type)\n"
40165 msgstr ""
40166
40167 #. type: Plain text
40168 #: doc/guix.texi:22284
40169 msgid "The @code{file-object} type designates either a file-like object (@pxref{G-Expressions, file-like objects}) or a string."
40170 msgstr ""
40171
40172 #. type: Plain text
40173 #: doc/guix.texi:22288
40174 msgid "Available @code{cgit-configuration} fields are:"
40175 msgstr ""
40176
40177 #. type: deftypevr
40178 #: doc/guix.texi:22289
40179 #, no-wrap
40180 msgid "{@code{cgit-configuration} parameter} package package"
40181 msgstr ""
40182
40183 #. type: deftypevr
40184 #: doc/guix.texi:22291
40185 msgid "The CGIT package."
40186 msgstr ""
40187
40188 #. type: deftypevr
40189 #: doc/guix.texi:22294
40190 #, no-wrap
40191 msgid "{@code{cgit-configuration} parameter} nginx-server-configuration-list nginx"
40192 msgstr ""
40193
40194 #. type: deftypevr
40195 #: doc/guix.texi:22299
40196 #, no-wrap
40197 msgid "{@code{cgit-configuration} parameter} file-object about-filter"
40198 msgstr ""
40199
40200 #. type: deftypevr
40201 #: doc/guix.texi:22302
40202 msgid "Specifies a command which will be invoked to format the content of about pages (both top-level and for each repository)."
40203 msgstr ""
40204
40205 #. type: deftypevr
40206 #: doc/guix.texi:22307
40207 #, no-wrap
40208 msgid "{@code{cgit-configuration} parameter} string agefile"
40209 msgstr ""
40210
40211 #. type: deftypevr
40212 #: doc/guix.texi:22310
40213 msgid "Specifies a path, relative to each repository path, which can be used to specify the date and time of the youngest commit in the repository."
40214 msgstr ""
40215
40216 #. type: deftypevr
40217 #: doc/guix.texi:22315
40218 #, no-wrap
40219 msgid "{@code{cgit-configuration} parameter} file-object auth-filter"
40220 msgstr ""
40221
40222 #. type: deftypevr
40223 #: doc/guix.texi:22318
40224 msgid "Specifies a command that will be invoked for authenticating repository access."
40225 msgstr ""
40226
40227 #. type: deftypevr
40228 #: doc/guix.texi:22323
40229 #, no-wrap
40230 msgid "{@code{cgit-configuration} parameter} string branch-sort"
40231 msgstr ""
40232
40233 #. type: deftypevr
40234 #: doc/guix.texi:22326
40235 msgid "Flag which, when set to @samp{age}, enables date ordering in the branch ref list, and when set @samp{name} enables ordering by branch name."
40236 msgstr ""
40237
40238 #. type: deftypevr
40239 #: doc/guix.texi:22328
40240 msgid "Defaults to @samp{\"name\"}."
40241 msgstr ""
40242
40243 #. type: deftypevr
40244 #: doc/guix.texi:22331
40245 #, no-wrap
40246 msgid "{@code{cgit-configuration} parameter} string cache-root"
40247 msgstr ""
40248
40249 #. type: deftypevr
40250 #: doc/guix.texi:22333
40251 msgid "Path used to store the cgit cache entries."
40252 msgstr ""
40253
40254 #. type: deftypevr
40255 #: doc/guix.texi:22335
40256 msgid "Defaults to @samp{\"/var/cache/cgit\"}."
40257 msgstr ""
40258
40259 #. type: deftypevr
40260 #: doc/guix.texi:22338
40261 #, no-wrap
40262 msgid "{@code{cgit-configuration} parameter} integer cache-static-ttl"
40263 msgstr ""
40264
40265 #. type: deftypevr
40266 #: doc/guix.texi:22341
40267 msgid "Number which specifies the time-to-live, in minutes, for the cached version of repository pages accessed with a fixed SHA1."
40268 msgstr ""
40269
40270 #. type: deftypevr
40271 #: doc/guix.texi:22343 doc/guix.texi:22786
40272 msgid "Defaults to @samp{-1}."
40273 msgstr ""
40274
40275 #. type: deftypevr
40276 #: doc/guix.texi:22346
40277 #, no-wrap
40278 msgid "{@code{cgit-configuration} parameter} integer cache-dynamic-ttl"
40279 msgstr ""
40280
40281 #. type: deftypevr
40282 #: doc/guix.texi:22349
40283 msgid "Number which specifies the time-to-live, in minutes, for the cached version of repository pages accessed without a fixed SHA1."
40284 msgstr ""
40285
40286 #. type: deftypevr
40287 #: doc/guix.texi:22354
40288 #, no-wrap
40289 msgid "{@code{cgit-configuration} parameter} integer cache-repo-ttl"
40290 msgstr ""
40291
40292 #. type: deftypevr
40293 #: doc/guix.texi:22357
40294 msgid "Number which specifies the time-to-live, in minutes, for the cached version of the repository summary page."
40295 msgstr ""
40296
40297 #. type: deftypevr
40298 #: doc/guix.texi:22362
40299 #, no-wrap
40300 msgid "{@code{cgit-configuration} parameter} integer cache-root-ttl"
40301 msgstr ""
40302
40303 #. type: deftypevr
40304 #: doc/guix.texi:22365
40305 msgid "Number which specifies the time-to-live, in minutes, for the cached version of the repository index page."
40306 msgstr ""
40307
40308 #. type: deftypevr
40309 #: doc/guix.texi:22370
40310 #, no-wrap
40311 msgid "{@code{cgit-configuration} parameter} integer cache-scanrc-ttl"
40312 msgstr ""
40313
40314 #. type: deftypevr
40315 #: doc/guix.texi:22373
40316 msgid "Number which specifies the time-to-live, in minutes, for the result of scanning a path for Git repositories."
40317 msgstr ""
40318
40319 #. type: deftypevr
40320 #: doc/guix.texi:22378
40321 #, no-wrap
40322 msgid "{@code{cgit-configuration} parameter} integer cache-about-ttl"
40323 msgstr ""
40324
40325 #. type: deftypevr
40326 #: doc/guix.texi:22381
40327 msgid "Number which specifies the time-to-live, in minutes, for the cached version of the repository about page."
40328 msgstr ""
40329
40330 #. type: deftypevr
40331 #: doc/guix.texi:22386
40332 #, no-wrap
40333 msgid "{@code{cgit-configuration} parameter} integer cache-snapshot-ttl"
40334 msgstr ""
40335
40336 #. type: deftypevr
40337 #: doc/guix.texi:22389
40338 msgid "Number which specifies the time-to-live, in minutes, for the cached version of snapshots."
40339 msgstr ""
40340
40341 #. type: deftypevr
40342 #: doc/guix.texi:22394
40343 #, no-wrap
40344 msgid "{@code{cgit-configuration} parameter} integer cache-size"
40345 msgstr ""
40346
40347 #. type: deftypevr
40348 #: doc/guix.texi:22397
40349 msgid "The maximum number of entries in the cgit cache. When set to @samp{0}, caching is disabled."
40350 msgstr ""
40351
40352 #. type: deftypevr
40353 #: doc/guix.texi:22402
40354 #, no-wrap
40355 msgid "{@code{cgit-configuration} parameter} boolean case-sensitive-sort?"
40356 msgstr ""
40357
40358 #. type: deftypevr
40359 #: doc/guix.texi:22404
40360 msgid "Sort items in the repo list case sensitively."
40361 msgstr ""
40362
40363 #. type: deftypevr
40364 #: doc/guix.texi:22409
40365 #, no-wrap
40366 msgid "{@code{cgit-configuration} parameter} list clone-prefix"
40367 msgstr ""
40368
40369 #. type: deftypevr
40370 #: doc/guix.texi:22412
40371 msgid "List of common prefixes which, when combined with a repository URL, generates valid clone URLs for the repository."
40372 msgstr ""
40373
40374 #. type: deftypevr
40375 #: doc/guix.texi:22417
40376 #, no-wrap
40377 msgid "{@code{cgit-configuration} parameter} list clone-url"
40378 msgstr ""
40379
40380 #. type: deftypevr
40381 #: doc/guix.texi:22419
40382 msgid "List of @code{clone-url} templates."
40383 msgstr ""
40384
40385 #. type: deftypevr
40386 #: doc/guix.texi:22424
40387 #, no-wrap
40388 msgid "{@code{cgit-configuration} parameter} file-object commit-filter"
40389 msgstr ""
40390
40391 #. type: deftypevr
40392 #: doc/guix.texi:22426
40393 msgid "Command which will be invoked to format commit messages."
40394 msgstr ""
40395
40396 #. type: deftypevr
40397 #: doc/guix.texi:22431
40398 #, no-wrap
40399 msgid "{@code{cgit-configuration} parameter} string commit-sort"
40400 msgstr ""
40401
40402 #. type: deftypevr
40403 #: doc/guix.texi:22435 doc/guix.texi:22993
40404 msgid "Flag which, when set to @samp{date}, enables strict date ordering in the commit log, and when set to @samp{topo} enables strict topological ordering."
40405 msgstr ""
40406
40407 #. type: deftypevr
40408 #: doc/guix.texi:22437
40409 msgid "Defaults to @samp{\"git log\"}."
40410 msgstr ""
40411
40412 #. type: deftypevr
40413 #: doc/guix.texi:22440
40414 #, no-wrap
40415 msgid "{@code{cgit-configuration} parameter} file-object css"
40416 msgstr ""
40417
40418 #. type: deftypevr
40419 #: doc/guix.texi:22442
40420 msgid "URL which specifies the css document to include in all cgit pages."
40421 msgstr ""
40422
40423 #. type: deftypevr
40424 #: doc/guix.texi:22444
40425 msgid "Defaults to @samp{\"/share/cgit/cgit.css\"}."
40426 msgstr ""
40427
40428 #. type: deftypevr
40429 #: doc/guix.texi:22447
40430 #, no-wrap
40431 msgid "{@code{cgit-configuration} parameter} file-object email-filter"
40432 msgstr ""
40433
40434 #. type: deftypevr
40435 #: doc/guix.texi:22451
40436 msgid "Specifies a command which will be invoked to format names and email address of committers, authors, and taggers, as represented in various places throughout the cgit interface."
40437 msgstr ""
40438
40439 #. type: deftypevr
40440 #: doc/guix.texi:22456
40441 #, no-wrap
40442 msgid "{@code{cgit-configuration} parameter} boolean embedded?"
40443 msgstr ""
40444
40445 #. type: deftypevr
40446 #: doc/guix.texi:22459
40447 msgid "Flag which, when set to @samp{#t}, will make cgit generate a HTML fragment suitable for embedding in other HTML pages."
40448 msgstr ""
40449
40450 #. type: deftypevr
40451 #: doc/guix.texi:22464
40452 #, no-wrap
40453 msgid "{@code{cgit-configuration} parameter} boolean enable-commit-graph?"
40454 msgstr ""
40455
40456 #. type: deftypevr
40457 #: doc/guix.texi:22468
40458 msgid "Flag which, when set to @samp{#t}, will make cgit print an ASCII-art commit history graph to the left of the commit messages in the repository log page."
40459 msgstr ""
40460
40461 #. type: deftypevr
40462 #: doc/guix.texi:22473
40463 #, no-wrap
40464 msgid "{@code{cgit-configuration} parameter} boolean enable-filter-overrides?"
40465 msgstr ""
40466
40467 #. type: deftypevr
40468 #: doc/guix.texi:22476
40469 msgid "Flag which, when set to @samp{#t}, allows all filter settings to be overridden in repository-specific cgitrc files."
40470 msgstr ""
40471
40472 #. type: deftypevr
40473 #: doc/guix.texi:22481
40474 #, no-wrap
40475 msgid "{@code{cgit-configuration} parameter} boolean enable-follow-links?"
40476 msgstr ""
40477
40478 #. type: deftypevr
40479 #: doc/guix.texi:22484
40480 msgid "Flag which, when set to @samp{#t}, allows users to follow a file in the log view."
40481 msgstr ""
40482
40483 #. type: deftypevr
40484 #: doc/guix.texi:22489
40485 #, no-wrap
40486 msgid "{@code{cgit-configuration} parameter} boolean enable-http-clone?"
40487 msgstr ""
40488
40489 #. type: deftypevr
40490 #: doc/guix.texi:22492
40491 msgid "If set to @samp{#t}, cgit will act as an dumb HTTP endpoint for Git clones."
40492 msgstr ""
40493
40494 #. type: deftypevr
40495 #: doc/guix.texi:22497
40496 #, no-wrap
40497 msgid "{@code{cgit-configuration} parameter} boolean enable-index-links?"
40498 msgstr ""
40499
40500 #. type: deftypevr
40501 #: doc/guix.texi:22500
40502 msgid "Flag which, when set to @samp{#t}, will make cgit generate extra links \"summary\", \"commit\", \"tree\" for each repo in the repository index."
40503 msgstr ""
40504
40505 #. type: deftypevr
40506 #: doc/guix.texi:22505
40507 #, no-wrap
40508 msgid "{@code{cgit-configuration} parameter} boolean enable-index-owner?"
40509 msgstr ""
40510
40511 #. type: deftypevr
40512 #: doc/guix.texi:22508
40513 msgid "Flag which, when set to @samp{#t}, will make cgit display the owner of each repo in the repository index."
40514 msgstr ""
40515
40516 #. type: deftypevr
40517 #: doc/guix.texi:22513
40518 #, no-wrap
40519 msgid "{@code{cgit-configuration} parameter} boolean enable-log-filecount?"
40520 msgstr ""
40521
40522 #. type: deftypevr
40523 #: doc/guix.texi:22516
40524 msgid "Flag which, when set to @samp{#t}, will make cgit print the number of modified files for each commit on the repository log page."
40525 msgstr ""
40526
40527 #. type: deftypevr
40528 #: doc/guix.texi:22521
40529 #, no-wrap
40530 msgid "{@code{cgit-configuration} parameter} boolean enable-log-linecount?"
40531 msgstr ""
40532
40533 #. type: deftypevr
40534 #: doc/guix.texi:22524
40535 msgid "Flag which, when set to @samp{#t}, will make cgit print the number of added and removed lines for each commit on the repository log page."
40536 msgstr ""
40537
40538 #. type: deftypevr
40539 #: doc/guix.texi:22529
40540 #, no-wrap
40541 msgid "{@code{cgit-configuration} parameter} boolean enable-remote-branches?"
40542 msgstr ""
40543
40544 #. type: deftypevr
40545 #: doc/guix.texi:22532 doc/guix.texi:23056
40546 msgid "Flag which, when set to @code{#t}, will make cgit display remote branches in the summary and refs views."
40547 msgstr ""
40548
40549 #. type: deftypevr
40550 #: doc/guix.texi:22537
40551 #, no-wrap
40552 msgid "{@code{cgit-configuration} parameter} boolean enable-subject-links?"
40553 msgstr ""
40554
40555 #. type: deftypevr
40556 #: doc/guix.texi:22541
40557 msgid "Flag which, when set to @code{1}, will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view."
40558 msgstr ""
40559
40560 #. type: deftypevr
40561 #: doc/guix.texi:22546
40562 #, no-wrap
40563 msgid "{@code{cgit-configuration} parameter} boolean enable-html-serving?"
40564 msgstr ""
40565
40566 #. type: deftypevr
40567 #: doc/guix.texi:22550
40568 msgid "Flag which, when set to @samp{#t}, will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view."
40569 msgstr ""
40570
40571 #. type: deftypevr
40572 #: doc/guix.texi:22555
40573 #, no-wrap
40574 msgid "{@code{cgit-configuration} parameter} boolean enable-tree-linenumbers?"
40575 msgstr ""
40576
40577 #. type: deftypevr
40578 #: doc/guix.texi:22558
40579 msgid "Flag which, when set to @samp{#t}, will make cgit generate linenumber links for plaintext blobs printed in the tree view."
40580 msgstr ""
40581
40582 #. type: deftypevr
40583 #: doc/guix.texi:22563
40584 #, no-wrap
40585 msgid "{@code{cgit-configuration} parameter} boolean enable-git-config?"
40586 msgstr ""
40587
40588 #. type: deftypevr
40589 #: doc/guix.texi:22566
40590 msgid "Flag which, when set to @samp{#f}, will allow cgit to use Git config to set any repo specific settings."
40591 msgstr ""
40592
40593 #. type: deftypevr
40594 #: doc/guix.texi:22571
40595 #, no-wrap
40596 msgid "{@code{cgit-configuration} parameter} file-object favicon"
40597 msgstr ""
40598
40599 #. type: deftypevr
40600 #: doc/guix.texi:22573
40601 msgid "URL used as link to a shortcut icon for cgit."
40602 msgstr ""
40603
40604 #. type: deftypevr
40605 #: doc/guix.texi:22575
40606 msgid "Defaults to @samp{\"/favicon.ico\"}."
40607 msgstr ""
40608
40609 #. type: deftypevr
40610 #: doc/guix.texi:22578
40611 #, no-wrap
40612 msgid "{@code{cgit-configuration} parameter} string footer"
40613 msgstr ""
40614
40615 #. type: deftypevr
40616 #: doc/guix.texi:22582
40617 msgid "The content of the file specified with this option will be included verbatim at the bottom of all pages (i.e.@: it replaces the standard \"generated by...\"@: message)."
40618 msgstr ""
40619
40620 #. type: deftypevr
40621 #: doc/guix.texi:22587
40622 #, no-wrap
40623 msgid "{@code{cgit-configuration} parameter} string head-include"
40624 msgstr ""
40625
40626 #. type: deftypevr
40627 #: doc/guix.texi:22590
40628 msgid "The content of the file specified with this option will be included verbatim in the HTML HEAD section on all pages."
40629 msgstr ""
40630
40631 #. type: deftypevr
40632 #: doc/guix.texi:22595
40633 #, no-wrap
40634 msgid "{@code{cgit-configuration} parameter} string header"
40635 msgstr ""
40636
40637 #. type: deftypevr
40638 #: doc/guix.texi:22598
40639 msgid "The content of the file specified with this option will be included verbatim at the top of all pages."
40640 msgstr ""
40641
40642 #. type: deftypevr
40643 #: doc/guix.texi:22603
40644 #, no-wrap
40645 msgid "{@code{cgit-configuration} parameter} file-object include"
40646 msgstr ""
40647
40648 #. type: deftypevr
40649 #: doc/guix.texi:22606
40650 msgid "Name of a configfile to include before the rest of the current config- file is parsed."
40651 msgstr ""
40652
40653 #. type: deftypevr
40654 #: doc/guix.texi:22611
40655 #, no-wrap
40656 msgid "{@code{cgit-configuration} parameter} string index-header"
40657 msgstr ""
40658
40659 #. type: deftypevr
40660 #: doc/guix.texi:22614
40661 msgid "The content of the file specified with this option will be included verbatim above the repository index."
40662 msgstr ""
40663
40664 #. type: deftypevr
40665 #: doc/guix.texi:22619
40666 #, no-wrap
40667 msgid "{@code{cgit-configuration} parameter} string index-info"
40668 msgstr ""
40669
40670 #. type: deftypevr
40671 #: doc/guix.texi:22622
40672 msgid "The content of the file specified with this option will be included verbatim below the heading on the repository index page."
40673 msgstr ""
40674
40675 #. type: deftypevr
40676 #: doc/guix.texi:22627
40677 #, no-wrap
40678 msgid "{@code{cgit-configuration} parameter} boolean local-time?"
40679 msgstr ""
40680
40681 #. type: deftypevr
40682 #: doc/guix.texi:22630
40683 msgid "Flag which, if set to @samp{#t}, makes cgit print commit and tag times in the servers timezone."
40684 msgstr ""
40685
40686 #. type: deftypevr
40687 #: doc/guix.texi:22635
40688 #, no-wrap
40689 msgid "{@code{cgit-configuration} parameter} file-object logo"
40690 msgstr ""
40691
40692 #. type: deftypevr
40693 #: doc/guix.texi:22638
40694 msgid "URL which specifies the source of an image which will be used as a logo on all cgit pages."
40695 msgstr ""
40696
40697 #. type: deftypevr
40698 #: doc/guix.texi:22640
40699 msgid "Defaults to @samp{\"/share/cgit/cgit.png\"}."
40700 msgstr ""
40701
40702 #. type: deftypevr
40703 #: doc/guix.texi:22643
40704 #, no-wrap
40705 msgid "{@code{cgit-configuration} parameter} string logo-link"
40706 msgstr ""
40707
40708 #. type: deftypevr
40709 #: doc/guix.texi:22645 doc/guix.texi:23102
40710 msgid "URL loaded when clicking on the cgit logo image."
40711 msgstr ""
40712
40713 #. type: deftypevr
40714 #: doc/guix.texi:22650
40715 #, no-wrap
40716 msgid "{@code{cgit-configuration} parameter} file-object owner-filter"
40717 msgstr ""
40718
40719 #. type: deftypevr
40720 #: doc/guix.texi:22653
40721 msgid "Command which will be invoked to format the Owner column of the main page."
40722 msgstr ""
40723
40724 #. type: deftypevr
40725 #: doc/guix.texi:22658
40726 #, no-wrap
40727 msgid "{@code{cgit-configuration} parameter} integer max-atom-items"
40728 msgstr ""
40729
40730 #. type: deftypevr
40731 #: doc/guix.texi:22660
40732 msgid "Number of items to display in atom feeds view."
40733 msgstr ""
40734
40735 #. type: deftypevr
40736 #: doc/guix.texi:22662 doc/guix.texi:22897 doc/guix.texi:22905
40737 #: doc/guix.texi:22913
40738 msgid "Defaults to @samp{10}."
40739 msgstr ""
40740
40741 #. type: deftypevr
40742 #: doc/guix.texi:22665
40743 #, no-wrap
40744 msgid "{@code{cgit-configuration} parameter} integer max-commit-count"
40745 msgstr ""
40746
40747 #. type: deftypevr
40748 #: doc/guix.texi:22667
40749 msgid "Number of entries to list per page in \"log\" view."
40750 msgstr ""
40751
40752 #. type: deftypevr
40753 #: doc/guix.texi:22669 doc/guix.texi:22684
40754 msgid "Defaults to @samp{50}."
40755 msgstr ""
40756
40757 #. type: deftypevr
40758 #: doc/guix.texi:22672
40759 #, no-wrap
40760 msgid "{@code{cgit-configuration} parameter} integer max-message-length"
40761 msgstr ""
40762
40763 #. type: deftypevr
40764 #: doc/guix.texi:22674
40765 msgid "Number of commit message characters to display in \"log\" view."
40766 msgstr ""
40767
40768 #. type: deftypevr
40769 #: doc/guix.texi:22676 doc/guix.texi:22692
40770 msgid "Defaults to @samp{80}."
40771 msgstr ""
40772
40773 #. type: deftypevr
40774 #: doc/guix.texi:22679
40775 #, no-wrap
40776 msgid "{@code{cgit-configuration} parameter} integer max-repo-count"
40777 msgstr ""
40778
40779 #. type: deftypevr
40780 #: doc/guix.texi:22682
40781 msgid "Specifies the number of entries to list per page on the repository index page."
40782 msgstr ""
40783
40784 #. type: deftypevr
40785 #: doc/guix.texi:22687
40786 #, no-wrap
40787 msgid "{@code{cgit-configuration} parameter} integer max-repodesc-length"
40788 msgstr ""
40789
40790 #. type: deftypevr
40791 #: doc/guix.texi:22690
40792 msgid "Specifies the maximum number of repo description characters to display on the repository index page."
40793 msgstr ""
40794
40795 #. type: deftypevr
40796 #: doc/guix.texi:22695
40797 #, no-wrap
40798 msgid "{@code{cgit-configuration} parameter} integer max-blob-size"
40799 msgstr ""
40800
40801 #. type: deftypevr
40802 #: doc/guix.texi:22697
40803 msgid "Specifies the maximum size of a blob to display HTML for in KBytes."
40804 msgstr ""
40805
40806 #. type: deftypevr
40807 #: doc/guix.texi:22702
40808 #, no-wrap
40809 msgid "{@code{cgit-configuration} parameter} string max-stats"
40810 msgstr ""
40811
40812 #. type: deftypevr
40813 #: doc/guix.texi:22705
40814 msgid "Maximum statistics period. Valid values are @samp{week},@samp{month}, @samp{quarter} and @samp{year}."
40815 msgstr ""
40816
40817 #. type: deftypevr
40818 #: doc/guix.texi:22710
40819 #, no-wrap
40820 msgid "{@code{cgit-configuration} parameter} mimetype-alist mimetype"
40821 msgstr ""
40822
40823 #. type: deftypevr
40824 #: doc/guix.texi:22712
40825 msgid "Mimetype for the specified filename extension."
40826 msgstr ""
40827
40828 #. type: deftypevr
40829 #: doc/guix.texi:22716
40830 msgid "Defaults to @samp{((gif \"image/gif\") (html \"text/html\") (jpg \"image/jpeg\") (jpeg \"image/jpeg\") (pdf \"application/pdf\") (png \"image/png\") (svg \"image/svg+xml\"))}."
40831 msgstr ""
40832
40833 #. type: deftypevr
40834 #: doc/guix.texi:22719
40835 #, no-wrap
40836 msgid "{@code{cgit-configuration} parameter} file-object mimetype-file"
40837 msgstr ""
40838
40839 #. type: deftypevr
40840 #: doc/guix.texi:22721
40841 msgid "Specifies the file to use for automatic mimetype lookup."
40842 msgstr ""
40843
40844 #. type: deftypevr
40845 #: doc/guix.texi:22726
40846 #, no-wrap
40847 msgid "{@code{cgit-configuration} parameter} string module-link"
40848 msgstr ""
40849
40850 #. type: deftypevr
40851 #: doc/guix.texi:22729
40852 msgid "Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing."
40853 msgstr ""
40854
40855 #. type: deftypevr
40856 #: doc/guix.texi:22734
40857 #, no-wrap
40858 msgid "{@code{cgit-configuration} parameter} boolean nocache?"
40859 msgstr ""
40860
40861 #. type: deftypevr
40862 #: doc/guix.texi:22736
40863 msgid "If set to the value @samp{#t} caching will be disabled."
40864 msgstr ""
40865
40866 #. type: deftypevr
40867 #: doc/guix.texi:22741
40868 #, no-wrap
40869 msgid "{@code{cgit-configuration} parameter} boolean noplainemail?"
40870 msgstr ""
40871
40872 #. type: deftypevr
40873 #: doc/guix.texi:22744
40874 msgid "If set to @samp{#t} showing full author email addresses will be disabled."
40875 msgstr ""
40876
40877 #. type: deftypevr
40878 #: doc/guix.texi:22749
40879 #, no-wrap
40880 msgid "{@code{cgit-configuration} parameter} boolean noheader?"
40881 msgstr ""
40882
40883 #. type: deftypevr
40884 #: doc/guix.texi:22752
40885 msgid "Flag which, when set to @samp{#t}, will make cgit omit the standard header on all pages."
40886 msgstr ""
40887
40888 #. type: deftypevr
40889 #: doc/guix.texi:22757
40890 #, no-wrap
40891 msgid "{@code{cgit-configuration} parameter} project-list project-list"
40892 msgstr ""
40893
40894 #. type: deftypevr
40895 #: doc/guix.texi:22761
40896 msgid "A list of subdirectories inside of @code{repository-directory}, relative to it, that should loaded as Git repositories. An empty list means that all subdirectories will be loaded."
40897 msgstr ""
40898
40899 #. type: deftypevr
40900 #: doc/guix.texi:22766
40901 #, no-wrap
40902 msgid "{@code{cgit-configuration} parameter} file-object readme"
40903 msgstr ""
40904
40905 #. type: deftypevr
40906 #: doc/guix.texi:22768
40907 msgid "Text which will be used as default value for @code{cgit-repo-readme}."
40908 msgstr ""
40909
40910 #. type: deftypevr
40911 #: doc/guix.texi:22773
40912 #, no-wrap
40913 msgid "{@code{cgit-configuration} parameter} boolean remove-suffix?"
40914 msgstr ""
40915
40916 #. type: deftypevr
40917 #: doc/guix.texi:22777
40918 msgid "If set to @code{#t} and @code{repository-directory} is enabled, if any repositories are found with a suffix of @code{.git}, this suffix will be removed for the URL and name."
40919 msgstr ""
40920
40921 #. type: deftypevr
40922 #: doc/guix.texi:22782
40923 #, no-wrap
40924 msgid "{@code{cgit-configuration} parameter} integer renamelimit"
40925 msgstr ""
40926
40927 #. type: deftypevr
40928 #: doc/guix.texi:22784
40929 msgid "Maximum number of files to consider when detecting renames."
40930 msgstr ""
40931
40932 #. type: deftypevr
40933 #: doc/guix.texi:22789
40934 #, no-wrap
40935 msgid "{@code{cgit-configuration} parameter} string repository-sort"
40936 msgstr ""
40937
40938 #. type: deftypevr
40939 #: doc/guix.texi:22791
40940 msgid "The way in which repositories in each section are sorted."
40941 msgstr ""
40942
40943 #. type: deftypevr
40944 #: doc/guix.texi:22796
40945 #, no-wrap
40946 msgid "{@code{cgit-configuration} parameter} robots-list robots"
40947 msgstr ""
40948
40949 #. type: deftypevr
40950 #: doc/guix.texi:22798
40951 msgid "Text used as content for the @code{robots} meta-tag."
40952 msgstr ""
40953
40954 #. type: deftypevr
40955 #: doc/guix.texi:22800
40956 msgid "Defaults to @samp{(\"noindex\" \"nofollow\")}."
40957 msgstr ""
40958
40959 #. type: deftypevr
40960 #: doc/guix.texi:22803
40961 #, no-wrap
40962 msgid "{@code{cgit-configuration} parameter} string root-desc"
40963 msgstr ""
40964
40965 #. type: deftypevr
40966 #: doc/guix.texi:22805
40967 msgid "Text printed below the heading on the repository index page."
40968 msgstr ""
40969
40970 #. type: deftypevr
40971 #: doc/guix.texi:22807
40972 msgid "Defaults to @samp{\"a fast webinterface for the git dscm\"}."
40973 msgstr ""
40974
40975 #. type: deftypevr
40976 #: doc/guix.texi:22810
40977 #, no-wrap
40978 msgid "{@code{cgit-configuration} parameter} string root-readme"
40979 msgstr ""
40980
40981 #. type: deftypevr
40982 #: doc/guix.texi:22813
40983 msgid "The content of the file specified with this option will be included verbatim below thef \"about\" link on the repository index page."
40984 msgstr ""
40985
40986 #. type: deftypevr
40987 #: doc/guix.texi:22818
40988 #, no-wrap
40989 msgid "{@code{cgit-configuration} parameter} string root-title"
40990 msgstr ""
40991
40992 #. type: deftypevr
40993 #: doc/guix.texi:22820
40994 msgid "Text printed as heading on the repository index page."
40995 msgstr ""
40996
40997 #. type: deftypevr
40998 #: doc/guix.texi:22825
40999 #, no-wrap
41000 msgid "{@code{cgit-configuration} parameter} boolean scan-hidden-path"
41001 msgstr ""
41002
41003 #. type: deftypevr
41004 #: doc/guix.texi:22831
41005 msgid "If set to @samp{#t} and repository-directory is enabled, repository-directory will recurse into directories whose name starts with a period. Otherwise, repository-directory will stay away from such directories, considered as \"hidden\". Note that this does not apply to the \".git\" directory in non-bare repos."
41006 msgstr ""
41007
41008 #. type: deftypevr
41009 #: doc/guix.texi:22836
41010 #, no-wrap
41011 msgid "{@code{cgit-configuration} parameter} list snapshots"
41012 msgstr ""
41013
41014 #. type: deftypevr
41015 #: doc/guix.texi:22839
41016 msgid "Text which specifies the default set of snapshot formats that cgit generates links for."
41017 msgstr ""
41018
41019 #. type: deftypevr
41020 #: doc/guix.texi:22844
41021 #, no-wrap
41022 msgid "{@code{cgit-configuration} parameter} repository-directory repository-directory"
41023 msgstr ""
41024
41025 #. type: deftypevr
41026 #: doc/guix.texi:22847
41027 msgid "Name of the directory to scan for repositories (represents @code{scan-path})."
41028 msgstr ""
41029
41030 #. type: deftypevr
41031 #: doc/guix.texi:22849
41032 msgid "Defaults to @samp{\"/srv/git\"}."
41033 msgstr ""
41034
41035 #. type: deftypevr
41036 #: doc/guix.texi:22852
41037 #, no-wrap
41038 msgid "{@code{cgit-configuration} parameter} string section"
41039 msgstr ""
41040
41041 #. type: deftypevr
41042 #: doc/guix.texi:22855 doc/guix.texi:23171
41043 msgid "The name of the current repository section - all repositories defined after this option will inherit the current section name."
41044 msgstr ""
41045
41046 #. type: deftypevr
41047 #: doc/guix.texi:22860
41048 #, no-wrap
41049 msgid "{@code{cgit-configuration} parameter} string section-sort"
41050 msgstr ""
41051
41052 #. type: deftypevr
41053 #: doc/guix.texi:22863
41054 msgid "Flag which, when set to @samp{1}, will sort the sections on the repository listing by name."
41055 msgstr ""
41056
41057 #. type: deftypevr
41058 #: doc/guix.texi:22868
41059 #, no-wrap
41060 msgid "{@code{cgit-configuration} parameter} integer section-from-path"
41061 msgstr ""
41062
41063 #. type: deftypevr
41064 #: doc/guix.texi:22871
41065 msgid "A number which, if defined prior to repository-directory, specifies how many path elements from each repo path to use as a default section name."
41066 msgstr ""
41067
41068 #. type: deftypevr
41069 #: doc/guix.texi:22876
41070 #, no-wrap
41071 msgid "{@code{cgit-configuration} parameter} boolean side-by-side-diffs?"
41072 msgstr ""
41073
41074 #. type: deftypevr
41075 #: doc/guix.texi:22879
41076 msgid "If set to @samp{#t} shows side-by-side diffs instead of unidiffs per default."
41077 msgstr ""
41078
41079 #. type: deftypevr
41080 #: doc/guix.texi:22884
41081 #, no-wrap
41082 msgid "{@code{cgit-configuration} parameter} file-object source-filter"
41083 msgstr ""
41084
41085 #. type: deftypevr
41086 #: doc/guix.texi:22887
41087 msgid "Specifies a command which will be invoked to format plaintext blobs in the tree view."
41088 msgstr ""
41089
41090 #. type: deftypevr
41091 #: doc/guix.texi:22892
41092 #, no-wrap
41093 msgid "{@code{cgit-configuration} parameter} integer summary-branches"
41094 msgstr ""
41095
41096 #. type: deftypevr
41097 #: doc/guix.texi:22895
41098 msgid "Specifies the number of branches to display in the repository \"summary\" view."
41099 msgstr ""
41100
41101 #. type: deftypevr
41102 #: doc/guix.texi:22900
41103 #, no-wrap
41104 msgid "{@code{cgit-configuration} parameter} integer summary-log"
41105 msgstr ""
41106
41107 #. type: deftypevr
41108 #: doc/guix.texi:22903
41109 msgid "Specifies the number of log entries to display in the repository \"summary\" view."
41110 msgstr ""
41111
41112 #. type: deftypevr
41113 #: doc/guix.texi:22908
41114 #, no-wrap
41115 msgid "{@code{cgit-configuration} parameter} integer summary-tags"
41116 msgstr ""
41117
41118 #. type: deftypevr
41119 #: doc/guix.texi:22911
41120 msgid "Specifies the number of tags to display in the repository \"summary\" view."
41121 msgstr ""
41122
41123 #. type: deftypevr
41124 #: doc/guix.texi:22916
41125 #, no-wrap
41126 msgid "{@code{cgit-configuration} parameter} string strict-export"
41127 msgstr ""
41128
41129 #. type: deftypevr
41130 #: doc/guix.texi:22919
41131 msgid "Filename which, if specified, needs to be present within the repository for cgit to allow access to that repository."
41132 msgstr ""
41133
41134 #. type: deftypevr
41135 #: doc/guix.texi:22924
41136 #, no-wrap
41137 msgid "{@code{cgit-configuration} parameter} string virtual-root"
41138 msgstr ""
41139
41140 #. type: deftypevr
41141 #: doc/guix.texi:22926
41142 msgid "URL which, if specified, will be used as root for all cgit links."
41143 msgstr ""
41144
41145 #. type: deftypevr
41146 #: doc/guix.texi:22928
41147 msgid "Defaults to @samp{\"/\"}."
41148 msgstr ""
41149
41150 #. type: deftypevr
41151 #: doc/guix.texi:22931
41152 #, no-wrap
41153 msgid "{@code{cgit-configuration} parameter} repository-cgit-configuration-list repositories"
41154 msgstr ""
41155
41156 #. type: deftypevr
41157 #: doc/guix.texi:22933
41158 msgid "A list of @dfn{cgit-repo} records to use with config."
41159 msgstr ""
41160
41161 #. type: deftypevr
41162 #: doc/guix.texi:22937
41163 msgid "Available @code{repository-cgit-configuration} fields are:"
41164 msgstr ""
41165
41166 #. type: deftypevr
41167 #: doc/guix.texi:22938
41168 #, no-wrap
41169 msgid "{@code{repository-cgit-configuration} parameter} repo-list snapshots"
41170 msgstr ""
41171
41172 #. type: deftypevr
41173 #: doc/guix.texi:22941
41174 msgid "A mask of snapshot formats for this repo that cgit generates links for, restricted by the global @code{snapshots} setting."
41175 msgstr ""
41176
41177 #. type: deftypevr
41178 #: doc/guix.texi:22946
41179 #, no-wrap
41180 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object source-filter"
41181 msgstr ""
41182
41183 #. type: deftypevr
41184 #: doc/guix.texi:22948
41185 msgid "Override the default @code{source-filter}."
41186 msgstr ""
41187
41188 #. type: deftypevr
41189 #: doc/guix.texi:22953
41190 #, no-wrap
41191 msgid "{@code{repository-cgit-configuration} parameter} repo-string url"
41192 msgstr ""
41193
41194 #. type: deftypevr
41195 #: doc/guix.texi:22955
41196 msgid "The relative URL used to access the repository."
41197 msgstr ""
41198
41199 #. type: deftypevr
41200 #: doc/guix.texi:22960
41201 #, no-wrap
41202 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object about-filter"
41203 msgstr ""
41204
41205 #. type: deftypevr
41206 #: doc/guix.texi:22962
41207 msgid "Override the default @code{about-filter}."
41208 msgstr ""
41209
41210 #. type: deftypevr
41211 #: doc/guix.texi:22967
41212 #, no-wrap
41213 msgid "{@code{repository-cgit-configuration} parameter} repo-string branch-sort"
41214 msgstr ""
41215
41216 #. type: deftypevr
41217 #: doc/guix.texi:22970
41218 msgid "Flag which, when set to @samp{age}, enables date ordering in the branch ref list, and when set to @samp{name} enables ordering by branch name."
41219 msgstr ""
41220
41221 #. type: deftypevr
41222 #: doc/guix.texi:22975
41223 #, no-wrap
41224 msgid "{@code{repository-cgit-configuration} parameter} repo-list clone-url"
41225 msgstr ""
41226
41227 #. type: deftypevr
41228 #: doc/guix.texi:22977
41229 msgid "A list of URLs which can be used to clone repo."
41230 msgstr ""
41231
41232 #. type: deftypevr
41233 #: doc/guix.texi:22982
41234 #, no-wrap
41235 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object commit-filter"
41236 msgstr ""
41237
41238 #. type: deftypevr
41239 #: doc/guix.texi:22984
41240 msgid "Override the default @code{commit-filter}."
41241 msgstr ""
41242
41243 #. type: deftypevr
41244 #: doc/guix.texi:22989
41245 #, no-wrap
41246 msgid "{@code{repository-cgit-configuration} parameter} repo-string commit-sort"
41247 msgstr ""
41248
41249 #. type: deftypevr
41250 #: doc/guix.texi:22998
41251 #, no-wrap
41252 msgid "{@code{repository-cgit-configuration} parameter} repo-string defbranch"
41253 msgstr ""
41254
41255 #. type: deftypevr
41256 #: doc/guix.texi:23003
41257 msgid "The name of the default branch for this repository. If no such branch exists in the repository, the first branch name (when sorted) is used as default instead. By default branch pointed to by HEAD, or \"master\" if there is no suitable HEAD."
41258 msgstr ""
41259
41260 #. type: deftypevr
41261 #: doc/guix.texi:23008
41262 #, no-wrap
41263 msgid "{@code{repository-cgit-configuration} parameter} repo-string desc"
41264 msgstr ""
41265
41266 #. type: deftypevr
41267 #: doc/guix.texi:23010
41268 msgid "The value to show as repository description."
41269 msgstr ""
41270
41271 #. type: deftypevr
41272 #: doc/guix.texi:23015
41273 #, no-wrap
41274 msgid "{@code{repository-cgit-configuration} parameter} repo-string homepage"
41275 msgstr ""
41276
41277 #. type: deftypevr
41278 #: doc/guix.texi:23017
41279 msgid "The value to show as repository homepage."
41280 msgstr ""
41281
41282 #. type: deftypevr
41283 #: doc/guix.texi:23022
41284 #, no-wrap
41285 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object email-filter"
41286 msgstr ""
41287
41288 #. type: deftypevr
41289 #: doc/guix.texi:23024
41290 msgid "Override the default @code{email-filter}."
41291 msgstr ""
41292
41293 #. type: deftypevr
41294 #: doc/guix.texi:23029
41295 #, no-wrap
41296 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-commit-graph?"
41297 msgstr ""
41298
41299 #. type: deftypevr
41300 #: doc/guix.texi:23032
41301 msgid "A flag which can be used to disable the global setting @code{enable-commit-graph?}."
41302 msgstr ""
41303
41304 #. type: deftypevr
41305 #: doc/guix.texi:23037
41306 #, no-wrap
41307 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-filecount?"
41308 msgstr ""
41309
41310 #. type: deftypevr
41311 #: doc/guix.texi:23040
41312 msgid "A flag which can be used to disable the global setting @code{enable-log-filecount?}."
41313 msgstr ""
41314
41315 #. type: deftypevr
41316 #: doc/guix.texi:23045
41317 #, no-wrap
41318 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-linecount?"
41319 msgstr ""
41320
41321 #. type: deftypevr
41322 #: doc/guix.texi:23048
41323 msgid "A flag which can be used to disable the global setting @code{enable-log-linecount?}."
41324 msgstr ""
41325
41326 #. type: deftypevr
41327 #: doc/guix.texi:23053
41328 #, no-wrap
41329 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-remote-branches?"
41330 msgstr ""
41331
41332 #. type: deftypevr
41333 #: doc/guix.texi:23061
41334 #, no-wrap
41335 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-subject-links?"
41336 msgstr ""
41337
41338 #. type: deftypevr
41339 #: doc/guix.texi:23064
41340 msgid "A flag which can be used to override the global setting @code{enable-subject-links?}."
41341 msgstr ""
41342
41343 #. type: deftypevr
41344 #: doc/guix.texi:23069
41345 #, no-wrap
41346 msgid "{@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-html-serving?"
41347 msgstr ""
41348
41349 #. type: deftypevr
41350 #: doc/guix.texi:23072
41351 msgid "A flag which can be used to override the global setting @code{enable-html-serving?}."
41352 msgstr ""
41353
41354 #. type: deftypevr
41355 #: doc/guix.texi:23077
41356 #, no-wrap
41357 msgid "{@code{repository-cgit-configuration} parameter} repo-boolean hide?"
41358 msgstr ""
41359
41360 #. type: deftypevr
41361 #: doc/guix.texi:23080
41362 msgid "Flag which, when set to @code{#t}, hides the repository from the repository index."
41363 msgstr ""
41364
41365 #. type: deftypevr
41366 #: doc/guix.texi:23085
41367 #, no-wrap
41368 msgid "{@code{repository-cgit-configuration} parameter} repo-boolean ignore?"
41369 msgstr ""
41370
41371 #. type: deftypevr
41372 #: doc/guix.texi:23087
41373 msgid "Flag which, when set to @samp{#t}, ignores the repository."
41374 msgstr ""
41375
41376 #. type: deftypevr
41377 #: doc/guix.texi:23092
41378 #, no-wrap
41379 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object logo"
41380 msgstr ""
41381
41382 #. type: deftypevr
41383 #: doc/guix.texi:23095
41384 msgid "URL which specifies the source of an image which will be used as a logo on this repo’s pages."
41385 msgstr ""
41386
41387 #. type: deftypevr
41388 #: doc/guix.texi:23100
41389 #, no-wrap
41390 msgid "{@code{repository-cgit-configuration} parameter} repo-string logo-link"
41391 msgstr ""
41392
41393 #. type: deftypevr
41394 #: doc/guix.texi:23107
41395 #, no-wrap
41396 msgid "{@code{repository-cgit-configuration} parameter} repo-file-object owner-filter"
41397 msgstr ""
41398
41399 #. type: deftypevr
41400 #: doc/guix.texi:23109
41401 msgid "Override the default @code{owner-filter}."
41402 msgstr ""
41403
41404 #. type: deftypevr
41405 #: doc/guix.texi:23114
41406 #, no-wrap
41407 msgid "{@code{repository-cgit-configuration} parameter} repo-string module-link"
41408 msgstr ""
41409
41410 #. type: deftypevr
41411 #: doc/guix.texi:23118
41412 msgid "Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing. The arguments for the formatstring are the path and SHA1 of the submodule commit."
41413 msgstr ""
41414
41415 #. type: deftypevr
41416 #: doc/guix.texi:23123
41417 #, no-wrap
41418 msgid "{@code{repository-cgit-configuration} parameter} module-link-path module-link-path"
41419 msgstr ""
41420
41421 #. type: deftypevr
41422 #: doc/guix.texi:23127
41423 msgid "Text which will be used as the formatstring for a hyperlink when a submodule with the specified subdirectory path is printed in a directory listing."
41424 msgstr ""
41425
41426 #. type: deftypevr
41427 #: doc/guix.texi:23132
41428 #, no-wrap
41429 msgid "{@code{repository-cgit-configuration} parameter} repo-string max-stats"
41430 msgstr ""
41431
41432 #. type: deftypevr
41433 #: doc/guix.texi:23134
41434 msgid "Override the default maximum statistics period."
41435 msgstr ""
41436
41437 #. type: deftypevr
41438 #: doc/guix.texi:23139
41439 #, no-wrap
41440 msgid "{@code{repository-cgit-configuration} parameter} repo-string name"
41441 msgstr ""
41442
41443 #. type: deftypevr
41444 #: doc/guix.texi:23141
41445 msgid "The value to show as repository name."
41446 msgstr ""
41447
41448 #. type: deftypevr
41449 #: doc/guix.texi:23146
41450 #, no-wrap
41451 msgid "{@code{repository-cgit-configuration} parameter} repo-string owner"
41452 msgstr ""
41453
41454 #. type: deftypevr
41455 #: doc/guix.texi:23148
41456 msgid "A value used to identify the owner of the repository."
41457 msgstr ""
41458
41459 #. type: deftypevr
41460 #: doc/guix.texi:23153
41461 #, no-wrap
41462 msgid "{@code{repository-cgit-configuration} parameter} repo-string path"
41463 msgstr ""
41464
41465 #. type: deftypevr
41466 #: doc/guix.texi:23155
41467 msgid "An absolute path to the repository directory."
41468 msgstr ""
41469
41470 #. type: deftypevr
41471 #: doc/guix.texi:23160
41472 #, no-wrap
41473 msgid "{@code{repository-cgit-configuration} parameter} repo-string readme"
41474 msgstr ""
41475
41476 #. type: deftypevr
41477 #: doc/guix.texi:23163
41478 msgid "A path (relative to repo) which specifies a file to include verbatim as the \"About\" page for this repo."
41479 msgstr ""
41480
41481 #. type: deftypevr
41482 #: doc/guix.texi:23168
41483 #, no-wrap
41484 msgid "{@code{repository-cgit-configuration} parameter} repo-string section"
41485 msgstr ""
41486
41487 #. type: deftypevr
41488 #: doc/guix.texi:23176
41489 #, no-wrap
41490 msgid "{@code{repository-cgit-configuration} parameter} repo-list extra-options"
41491 msgstr ""
41492
41493 #. type: deftypevr
41494 #: doc/guix.texi:23178 doc/guix.texi:23187
41495 msgid "Extra options will be appended to cgitrc file."
41496 msgstr ""
41497
41498 #. type: deftypevr
41499 #: doc/guix.texi:23185
41500 #, no-wrap
41501 msgid "{@code{cgit-configuration} parameter} list extra-options"
41502 msgstr ""
41503
41504 #. type: Plain text
41505 #: doc/guix.texi:23199
41506 msgid "However, it could be that you just want to get a @code{cgitrc} up and running. In that case, you can pass an @code{opaque-cgit-configuration} as a record to @code{cgit-service-type}. As its name indicates, an opaque configuration does not have easy reflective capabilities."
41507 msgstr ""
41508
41509 #. type: Plain text
41510 #: doc/guix.texi:23201
41511 msgid "Available @code{opaque-cgit-configuration} fields are:"
41512 msgstr ""
41513
41514 #. type: deftypevr
41515 #: doc/guix.texi:23202
41516 #, no-wrap
41517 msgid "{@code{opaque-cgit-configuration} parameter} package cgit"
41518 msgstr ""
41519
41520 #. type: deftypevr
41521 #: doc/guix.texi:23204
41522 msgid "The cgit package."
41523 msgstr ""
41524
41525 #. type: deftypevr
41526 #: doc/guix.texi:23206
41527 #, no-wrap
41528 msgid "{@code{opaque-cgit-configuration} parameter} string string"
41529 msgstr ""
41530
41531 #. type: deftypevr
41532 #: doc/guix.texi:23208
41533 msgid "The contents of the @code{cgitrc}, as a string."
41534 msgstr ""
41535
41536 #. type: Plain text
41537 #: doc/guix.texi:23212
41538 msgid "For example, if your @code{cgitrc} is just the empty string, you could instantiate a cgit service like this:"
41539 msgstr ""
41540
41541 #. type: example
41542 #: doc/guix.texi:23217
41543 #, no-wrap
41544 msgid ""
41545 "(service cgit-service-type\n"
41546 " (opaque-cgit-configuration\n"
41547 " (cgitrc \"\")))\n"
41548 msgstr ""
41549
41550 #. type: subsubheading
41551 #: doc/guix.texi:23219
41552 #, no-wrap
41553 msgid "Gitolite Service"
41554 msgstr ""
41555
41556 #. type: cindex
41557 #: doc/guix.texi:23221
41558 #, no-wrap
41559 msgid "Gitolite service"
41560 msgstr ""
41561
41562 #. type: cindex
41563 #: doc/guix.texi:23222
41564 #, no-wrap
41565 msgid "Git, hosting"
41566 msgstr ""
41567
41568 #. type: Plain text
41569 #: doc/guix.texi:23225
41570 msgid "@uref{https://gitolite.com/gitolite/, Gitolite} is a tool for hosting Git repositories on a central server."
41571 msgstr ""
41572
41573 #. type: Plain text
41574 #: doc/guix.texi:23228
41575 msgid "Gitolite can handle multiple repositories and users, and supports flexible configuration of the permissions for the users on the repositories."
41576 msgstr ""
41577
41578 #. type: Plain text
41579 #: doc/guix.texi:23231
41580 msgid "The following example will configure Gitolite using the default @code{git} user, and the provided SSH public key."
41581 msgstr ""
41582
41583 #. type: example
41584 #: doc/guix.texi:23238
41585 #, no-wrap
41586 msgid ""
41587 "(service gitolite-service-type\n"
41588 " (gitolite-configuration\n"
41589 " (admin-pubkey (plain-file\n"
41590 " \"yourname.pub\"\n"
41591 " \"ssh-rsa AAAA... guix@@example.com\"))))\n"
41592 msgstr ""
41593
41594 #. type: Plain text
41595 #: doc/guix.texi:23243
41596 msgid "Gitolite is configured through a special admin repository which you can clone, for example, if you setup Gitolite on @code{example.com}, you would run the following command to clone the admin repository."
41597 msgstr ""
41598
41599 #. type: example
41600 #: doc/guix.texi:23246
41601 #, no-wrap
41602 msgid "git clone git@@example.com:gitolite-admin\n"
41603 msgstr ""
41604
41605 #. type: Plain text
41606 #: doc/guix.texi:23252
41607 msgid "When the Gitolite service is activated, the provided @code{admin-pubkey} will be inserted in to the @file{keydir} directory in the gitolite-admin repository. If this results in a change in the repository, it will be committed using the message ``gitolite setup by GNU Guix''."
41608 msgstr ""
41609
41610 #. type: deftp
41611 #: doc/guix.texi:23253
41612 #, no-wrap
41613 msgid "{Data Type} gitolite-configuration"
41614 msgstr ""
41615
41616 #. type: deftp
41617 #: doc/guix.texi:23255
41618 msgid "Data type representing the configuration for @code{gitolite-service-type}."
41619 msgstr ""
41620
41621 #. type: item
41622 #: doc/guix.texi:23257
41623 #, no-wrap
41624 msgid "@code{package} (default: @var{gitolite})"
41625 msgstr ""
41626
41627 #. type: table
41628 #: doc/guix.texi:23259
41629 msgid "Gitolite package to use."
41630 msgstr ""
41631
41632 #. type: item
41633 #: doc/guix.texi:23260
41634 #, no-wrap
41635 msgid "@code{user} (default: @var{git})"
41636 msgstr ""
41637
41638 #. type: table
41639 #: doc/guix.texi:23263
41640 msgid "User to use for Gitolite. This will be user that you use when accessing Gitolite over SSH."
41641 msgstr ""
41642
41643 #. type: item
41644 #: doc/guix.texi:23264
41645 #, no-wrap
41646 msgid "@code{group} (default: @var{git})"
41647 msgstr ""
41648
41649 #. type: table
41650 #: doc/guix.texi:23266
41651 msgid "Group to use for Gitolite."
41652 msgstr ""
41653
41654 #. type: item
41655 #: doc/guix.texi:23267
41656 #, no-wrap
41657 msgid "@code{home-directory} (default: @var{\"/var/lib/gitolite\"})"
41658 msgstr ""
41659
41660 #. type: table
41661 #: doc/guix.texi:23269
41662 msgid "Directory in which to store the Gitolite configuration and repositories."
41663 msgstr ""
41664
41665 #. type: item
41666 #: doc/guix.texi:23270
41667 #, no-wrap
41668 msgid "@code{rc-file} (default: @var{(gitolite-rc-file)})"
41669 msgstr ""
41670
41671 #. type: table
41672 #: doc/guix.texi:23273
41673 msgid "A ``file-like'' object (@pxref{G-Expressions, file-like objects}), representing the configuration for Gitolite."
41674 msgstr ""
41675
41676 #. type: item
41677 #: doc/guix.texi:23274
41678 #, no-wrap
41679 msgid "@code{admin-pubkey} (default: @var{#f})"
41680 msgstr ""
41681
41682 #. type: table
41683 #: doc/guix.texi:23278
41684 msgid "A ``file-like'' object (@pxref{G-Expressions, file-like objects}) used to setup Gitolite. This will be inserted in to the @file{keydir} directory within the gitolite-admin repository."
41685 msgstr ""
41686
41687 #. type: table
41688 #: doc/guix.texi:23280
41689 msgid "To specify the SSH key as a string, use the @code{plain-file} function."
41690 msgstr ""
41691
41692 #. type: example
41693 #: doc/guix.texi:23283
41694 #, no-wrap
41695 msgid "(plain-file \"yourname.pub\" \"ssh-rsa AAAA... guix@@example.com\")\n"
41696 msgstr ""
41697
41698 #. type: deftp
41699 #: doc/guix.texi:23288
41700 #, no-wrap
41701 msgid "{Data Type} gitolite-rc-file"
41702 msgstr ""
41703
41704 #. type: deftp
41705 #: doc/guix.texi:23290
41706 msgid "Data type representing the Gitolite RC file."
41707 msgstr ""
41708
41709 #. type: item
41710 #: doc/guix.texi:23292
41711 #, no-wrap
41712 msgid "@code{umask} (default: @code{#o0077})"
41713 msgstr ""
41714
41715 #. type: table
41716 #: doc/guix.texi:23295
41717 msgid "This controls the permissions Gitolite sets on the repositories and their contents."
41718 msgstr ""
41719
41720 #. type: table
41721 #: doc/guix.texi:23299
41722 msgid "A value like @code{#o0027} will give read access to the group used by Gitolite (by default: @code{git}). This is necessary when using Gitolite with software like cgit or gitweb."
41723 msgstr ""
41724
41725 #. type: item
41726 #: doc/guix.texi:23300
41727 #, no-wrap
41728 msgid "@code{git-config-keys} (default: @code{\"\"})"
41729 msgstr ""
41730
41731 #. type: table
41732 #: doc/guix.texi:23303
41733 msgid "Gitolite allows you to set git config values using the \"config\" keyword. This setting allows control over the config keys to accept."
41734 msgstr ""
41735
41736 #. type: item
41737 #: doc/guix.texi:23304
41738 #, no-wrap
41739 msgid "@code{roles} (default: @code{'((\"READERS\" . 1) (\"WRITERS\" . ))})"
41740 msgstr ""
41741
41742 #. type: table
41743 #: doc/guix.texi:23306
41744 msgid "Set the role names allowed to be used by users running the perms command."
41745 msgstr ""
41746
41747 #. type: item
41748 #: doc/guix.texi:23307
41749 #, no-wrap
41750 msgid "@code{enable} (default: @code{'(\"help\" \"desc\" \"info\" \"perms\" \"writable\" \"ssh-authkeys\" \"git-config\" \"daemon\" \"gitweb\")})"
41751 msgstr ""
41752
41753 #. type: table
41754 #: doc/guix.texi:23309
41755 msgid "This setting controls the commands and features to enable within Gitolite."
41756 msgstr ""
41757
41758 #. type: subsubheading
41759 #: doc/guix.texi:23317
41760 #, no-wrap
41761 msgid "The Battle for Wesnoth Service"
41762 msgstr ""
41763
41764 #. type: cindex
41765 #: doc/guix.texi:23318
41766 #, no-wrap
41767 msgid "wesnothd"
41768 msgstr ""
41769
41770 #. type: Plain text
41771 #: doc/guix.texi:23322
41772 msgid "@uref{https://wesnoth.org, The Battle for Wesnoth} is a fantasy, turn based tactical strategy game, with several single player campaigns, and multiplayer games (both networked and local)."
41773 msgstr ""
41774
41775 #. type: defvar
41776 #: doc/guix.texi:23323
41777 #, no-wrap
41778 msgid "{Scheme Variable} wesnothd-service-type"
41779 msgstr ""
41780
41781 #. type: defvar
41782 #: doc/guix.texi:23327
41783 msgid "Service type for the wesnothd service. Its value must be a @code{wesnothd-configuration} object. To run wesnothd in the default configuration, instantiate it as:"
41784 msgstr ""
41785
41786 #. type: example
41787 #: doc/guix.texi:23330
41788 #, no-wrap
41789 msgid "(service wesnothd-service-type)\n"
41790 msgstr ""
41791
41792 #. type: deftp
41793 #: doc/guix.texi:23333
41794 #, no-wrap
41795 msgid "{Data Type} wesnothd-configuration"
41796 msgstr ""
41797
41798 #. type: deftp
41799 #: doc/guix.texi:23335
41800 msgid "Data type representing the configuration of @command{wesnothd}."
41801 msgstr ""
41802
41803 #. type: item
41804 #: doc/guix.texi:23337
41805 #, no-wrap
41806 msgid "@code{package} (default: @code{wesnoth-server})"
41807 msgstr ""
41808
41809 #. type: table
41810 #: doc/guix.texi:23339
41811 msgid "The wesnoth server package to use."
41812 msgstr ""
41813
41814 #. type: item
41815 #: doc/guix.texi:23340
41816 #, no-wrap
41817 msgid "@code{port} (default: @code{15000})"
41818 msgstr ""
41819
41820 #. type: table
41821 #: doc/guix.texi:23342
41822 msgid "The port to bind the server to."
41823 msgstr ""
41824
41825 #. type: cindex
41826 #: doc/guix.texi:23348
41827 #, no-wrap
41828 msgid "fingerprint"
41829 msgstr ""
41830
41831 #. type: subsubheading
41832 #: doc/guix.texi:23349
41833 #, no-wrap
41834 msgid "Fingerprint Service"
41835 msgstr ""
41836
41837 #. type: Plain text
41838 #: doc/guix.texi:23353
41839 msgid "The @code{(gnu services authentication)} module provides a DBus service to read and identify fingerprints via a fingerprint sensor."
41840 msgstr ""
41841
41842 #. type: defvr
41843 #: doc/guix.texi:23354
41844 #, no-wrap
41845 msgid "{Scheme Variable} fprintd-service-type"
41846 msgstr ""
41847
41848 #. type: defvr
41849 #: doc/guix.texi:23357
41850 msgid "The service type for @command{fprintd}, which provides the fingerprint reading capability."
41851 msgstr ""
41852
41853 #. type: example
41854 #: doc/guix.texi:23360
41855 #, no-wrap
41856 msgid "(service fprintd-service-type)\n"
41857 msgstr ""
41858
41859 #. type: cindex
41860 #: doc/guix.texi:23363
41861 #, no-wrap
41862 msgid "sysctl"
41863 msgstr ""
41864
41865 #. type: subsubheading
41866 #: doc/guix.texi:23364
41867 #, no-wrap
41868 msgid "System Control Service"
41869 msgstr ""
41870
41871 #. type: Plain text
41872 #: doc/guix.texi:23368
41873 msgid "The @code{(gnu services sysctl)} provides a service to configure kernel parameters at boot."
41874 msgstr ""
41875
41876 #. type: defvr
41877 #: doc/guix.texi:23369
41878 #, no-wrap
41879 msgid "{Scheme Variable} sysctl-service-type"
41880 msgstr ""
41881
41882 #. type: defvr
41883 #: doc/guix.texi:23373
41884 msgid "The service type for @command{sysctl}, which modifies kernel parameters under @file{/proc/sys/}. To enable IPv4 forwarding, it can be instantiated as:"
41885 msgstr ""
41886
41887 #. type: example
41888 #: doc/guix.texi:23378
41889 #, no-wrap
41890 msgid ""
41891 "(service sysctl-service-type\n"
41892 " (sysctl-configuration\n"
41893 " (settings '((\"net.ipv4.ip_forward\" . \"1\")))))\n"
41894 msgstr ""
41895
41896 #. type: deftp
41897 #: doc/guix.texi:23381
41898 #, no-wrap
41899 msgid "{Data Type} sysctl-configuration"
41900 msgstr ""
41901
41902 #. type: deftp
41903 #: doc/guix.texi:23383
41904 msgid "The data type representing the configuration of @command{sysctl}."
41905 msgstr ""
41906
41907 #. type: item
41908 #: doc/guix.texi:23385
41909 #, no-wrap
41910 msgid "@code{sysctl} (default: @code{(file-append procps \"/sbin/sysctl\"})"
41911 msgstr ""
41912
41913 #. type: table
41914 #: doc/guix.texi:23387
41915 msgid "The @command{sysctl} executable to use."
41916 msgstr ""
41917
41918 #. type: item
41919 #: doc/guix.texi:23388
41920 #, no-wrap
41921 msgid "@code{settings} (default: @code{'()})"
41922 msgstr ""
41923
41924 #. type: table
41925 #: doc/guix.texi:23390
41926 msgid "An association list specifies kernel parameters and their values."
41927 msgstr ""
41928
41929 #. type: cindex
41930 #: doc/guix.texi:23393
41931 #, no-wrap
41932 msgid "pcscd"
41933 msgstr ""
41934
41935 #. type: subsubheading
41936 #: doc/guix.texi:23394
41937 #, no-wrap
41938 msgid "PC/SC Smart Card Daemon Service"
41939 msgstr ""
41940
41941 #. type: Plain text
41942 #: doc/guix.texi:23401
41943 msgid "The @code{(gnu services security-token)} module provides the following service to run @command{pcscd}, the PC/SC Smart Card Daemon. @command{pcscd} is the daemon program for pcsc-lite and the MuscleCard framework. It is a resource manager that coordinates communications with smart card readers, smart cards and cryptographic tokens that are connected to the system."
41944 msgstr ""
41945
41946 #. type: defvr
41947 #: doc/guix.texi:23402
41948 #, no-wrap
41949 msgid "{Scheme Variable} pcscd-service-type"
41950 msgstr ""
41951
41952 #. type: defvr
41953 #: doc/guix.texi:23406
41954 msgid "Service type for the @command{pcscd} service. Its value must be a @code{pcscd-configuration} object. To run pcscd in the default configuration, instantiate it as:"
41955 msgstr ""
41956
41957 #. type: example
41958 #: doc/guix.texi:23409
41959 #, no-wrap
41960 msgid "(service pcscd-service-type)\n"
41961 msgstr ""
41962
41963 #. type: deftp
41964 #: doc/guix.texi:23412
41965 #, no-wrap
41966 msgid "{Data Type} pcscd-configuration"
41967 msgstr ""
41968
41969 #. type: deftp
41970 #: doc/guix.texi:23414
41971 msgid "The data type representing the configuration of @command{pcscd}."
41972 msgstr ""
41973
41974 #. type: item
41975 #: doc/guix.texi:23416
41976 #, no-wrap
41977 msgid "@code{pcsc-lite} (default: @code{pcsc-lite})"
41978 msgstr ""
41979
41980 #. type: table
41981 #: doc/guix.texi:23418
41982 msgid "The pcsc-lite package that provides pcscd."
41983 msgstr ""
41984
41985 #. type: item
41986 #: doc/guix.texi:23418
41987 #, no-wrap
41988 msgid "@code{usb-drivers} (default: @code{(list ccid)})"
41989 msgstr ""
41990
41991 #. type: table
41992 #: doc/guix.texi:23421
41993 msgid "List of packages that provide USB drivers to pcscd. Drivers are expected to be under @file{pcsc/drivers} in the store directory of the package."
41994 msgstr ""
41995
41996 #. type: cindex
41997 #: doc/guix.texi:23424
41998 #, no-wrap
41999 msgid "lirc"
42000 msgstr ""
42001
42002 #. type: subsubheading
42003 #: doc/guix.texi:23425
42004 #, no-wrap
42005 msgid "Lirc Service"
42006 msgstr ""
42007
42008 #. type: Plain text
42009 #: doc/guix.texi:23428
42010 msgid "The @code{(gnu services lirc)} module provides the following service."
42011 msgstr ""
42012
42013 #. type: deffn
42014 #: doc/guix.texi:23429
42015 #, no-wrap
42016 msgid "{Scheme Procedure} lirc-service [#:lirc lirc] @"
42017 msgstr ""
42018
42019 #. type: deffn
42020 #: doc/guix.texi:23434
42021 msgid "[#:device #f] [#:driver #f] [#:config-file #f] @ [#:extra-options '()] Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that decodes infrared signals from remote controls."
42022 msgstr ""
42023
42024 #. type: deffn
42025 #: doc/guix.texi:23438
42026 msgid "Optionally, @var{device}, @var{driver} and @var{config-file} (configuration file name) may be specified. See @command{lircd} manual for details."
42027 msgstr ""
42028
42029 #. type: deffn
42030 #: doc/guix.texi:23441
42031 msgid "Finally, @var{extra-options} is a list of additional command-line options passed to @command{lircd}."
42032 msgstr ""
42033
42034 #. type: cindex
42035 #: doc/guix.texi:23443
42036 #, no-wrap
42037 msgid "spice"
42038 msgstr ""
42039
42040 #. type: subsubheading
42041 #: doc/guix.texi:23444
42042 #, no-wrap
42043 msgid "Spice Service"
42044 msgstr ""
42045
42046 #. type: Plain text
42047 #: doc/guix.texi:23447
42048 msgid "The @code{(gnu services spice)} module provides the following service."
42049 msgstr ""
42050
42051 #. type: deffn
42052 #: doc/guix.texi:23448
42053 #, no-wrap
42054 msgid "{Scheme Procedure} spice-vdagent-service [#:spice-vdagent]"
42055 msgstr ""
42056
42057 #. type: deffn
42058 #: doc/guix.texi:23452
42059 msgid "Returns a service that runs @url{https://www.spice-space.org,VDAGENT}, a daemon that enables sharing the clipboard with a vm and setting the guest display resolution when the graphical console window resizes."
42060 msgstr ""
42061
42062 #. type: cindex
42063 #: doc/guix.texi:23454
42064 #, no-wrap
42065 msgid "inputattach"
42066 msgstr ""
42067
42068 #. type: subsubheading
42069 #: doc/guix.texi:23455
42070 #, no-wrap
42071 msgid "inputattach Service"
42072 msgstr ""
42073
42074 #. type: cindex
42075 #: doc/guix.texi:23457
42076 #, no-wrap
42077 msgid "tablet input, for Xorg"
42078 msgstr ""
42079
42080 #. type: cindex
42081 #: doc/guix.texi:23458
42082 #, no-wrap
42083 msgid "touchscreen input, for Xorg"
42084 msgstr ""
42085
42086 #. type: Plain text
42087 #: doc/guix.texi:23462
42088 msgid "The @uref{https://linuxwacom.github.io/, inputattach} service allows you to use input devices such as Wacom tablets, touchscreens, or joysticks with the Xorg display server."
42089 msgstr ""
42090
42091 #. type: deffn
42092 #: doc/guix.texi:23463
42093 #, no-wrap
42094 msgid "{Scheme Variable} inputattach-service-type"
42095 msgstr ""
42096
42097 #. type: deffn
42098 #: doc/guix.texi:23466
42099 msgid "Type of a service that runs @command{inputattach} on a device and dispatches events from it."
42100 msgstr ""
42101
42102 #. type: deftp
42103 #: doc/guix.texi:23468
42104 #, no-wrap
42105 msgid "{Data Type} inputattach-configuration"
42106 msgstr ""
42107
42108 #. type: item
42109 #: doc/guix.texi:23470
42110 #, no-wrap
42111 msgid "@code{device-type} (default: @code{\"wacom\"})"
42112 msgstr ""
42113
42114 #. type: table
42115 #: doc/guix.texi:23473
42116 msgid "The type of device to connect to. Run @command{inputattach --help}, from the @code{inputattach} package, to see the list of supported device types."
42117 msgstr ""
42118
42119 #. type: item
42120 #: doc/guix.texi:23474
42121 #, no-wrap
42122 msgid "@code{device} (default: @code{\"/dev/ttyS0\"})"
42123 msgstr ""
42124
42125 #. type: table
42126 #: doc/guix.texi:23476
42127 msgid "The device file to connect to the device."
42128 msgstr ""
42129
42130 #. type: item
42131 #: doc/guix.texi:23477
42132 #, no-wrap
42133 msgid "@code{log-file} (default: @code{#f})"
42134 msgstr ""
42135
42136 #. type: table
42137 #: doc/guix.texi:23479
42138 msgid "If true, this must be the name of a file to log messages to."
42139 msgstr ""
42140
42141 #. type: subsection
42142 #: doc/guix.texi:23482
42143 #, no-wrap
42144 msgid "Dictionary Services"
42145 msgstr ""
42146
42147 #. type: cindex
42148 #: doc/guix.texi:23483
42149 #, no-wrap
42150 msgid "dictionary"
42151 msgstr ""
42152
42153 #. type: Plain text
42154 #: doc/guix.texi:23485
42155 msgid "The @code{(gnu services dict)} module provides the following service:"
42156 msgstr ""
42157
42158 #. type: deffn
42159 #: doc/guix.texi:23486
42160 #, no-wrap
42161 msgid "{Scheme Procedure} dicod-service [#:config (dicod-configuration)]"
42162 msgstr ""
42163
42164 #. type: deffn
42165 #: doc/guix.texi:23489
42166 msgid "Return a service that runs the @command{dicod} daemon, an implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual})."
42167 msgstr ""
42168
42169 #. type: deffn
42170 #: doc/guix.texi:23493
42171 msgid "The optional @var{config} argument specifies the configuration for @command{dicod}, which should be a @code{<dicod-configuration>} object, by default it serves the GNU Collaborative International Dictonary of English."
42172 msgstr ""
42173
42174 #. type: deffn
42175 #: doc/guix.texi:23497
42176 msgid "You can add @command{open localhost} to your @file{~/.dico} file to make @code{localhost} the default server for @command{dico} client (@pxref{Initialization File,,, dico, GNU Dico Manual})."
42177 msgstr ""
42178
42179 #. type: deftp
42180 #: doc/guix.texi:23499
42181 #, no-wrap
42182 msgid "{Data Type} dicod-configuration"
42183 msgstr ""
42184
42185 #. type: deftp
42186 #: doc/guix.texi:23501
42187 msgid "Data type representing the configuration of dicod."
42188 msgstr ""
42189
42190 #. type: item
42191 #: doc/guix.texi:23503
42192 #, no-wrap
42193 msgid "@code{dico} (default: @var{dico})"
42194 msgstr ""
42195
42196 #. type: table
42197 #: doc/guix.texi:23505
42198 msgid "Package object of the GNU Dico dictionary server."
42199 msgstr ""
42200
42201 #. type: item
42202 #: doc/guix.texi:23506
42203 #, no-wrap
42204 msgid "@code{interfaces} (default: @var{'(\"localhost\")})"
42205 msgstr ""
42206
42207 #. type: table
42208 #: doc/guix.texi:23510
42209 msgid "This is the list of IP addresses and ports and possibly socket file names to listen to (@pxref{Server Settings, @code{listen} directive,, dico, GNU Dico Manual})."
42210 msgstr ""
42211
42212 #. type: item
42213 #: doc/guix.texi:23511
42214 #, no-wrap
42215 msgid "@code{handlers} (default: @var{'()})"
42216 msgstr ""
42217
42218 #. type: table
42219 #: doc/guix.texi:23513
42220 msgid "List of @code{<dicod-handler>} objects denoting handlers (module instances)."
42221 msgstr ""
42222
42223 #. type: item
42224 #: doc/guix.texi:23514
42225 #, no-wrap
42226 msgid "@code{databases} (default: @var{(list %dicod-database:gcide)})"
42227 msgstr ""
42228
42229 #. type: table
42230 #: doc/guix.texi:23516
42231 msgid "List of @code{<dicod-database>} objects denoting dictionaries to be served."
42232 msgstr ""
42233
42234 #. type: deftp
42235 #: doc/guix.texi:23519
42236 #, no-wrap
42237 msgid "{Data Type} dicod-handler"
42238 msgstr ""
42239
42240 #. type: deftp
42241 #: doc/guix.texi:23521
42242 msgid "Data type representing a dictionary handler (module instance)."
42243 msgstr ""
42244
42245 #. type: table
42246 #: doc/guix.texi:23525
42247 msgid "Name of the handler (module instance)."
42248 msgstr ""
42249
42250 #. type: item
42251 #: doc/guix.texi:23526
42252 #, no-wrap
42253 msgid "@code{module} (default: @var{#f})"
42254 msgstr ""
42255
42256 #. type: table
42257 #: doc/guix.texi:23530
42258 msgid "Name of the dicod module of the handler (instance). If it is @code{#f}, the module has the same name as the handler. (@pxref{Modules,,, dico, GNU Dico Manual})."
42259 msgstr ""
42260
42261 #. type: code{#1}
42262 #: doc/guix.texi:23531 doc/guix.texi:23551
42263 #, no-wrap
42264 msgid "options"
42265 msgstr ""
42266
42267 #. type: table
42268 #: doc/guix.texi:23533
42269 msgid "List of strings or gexps representing the arguments for the module handler"
42270 msgstr ""
42271
42272 #. type: deftp
42273 #: doc/guix.texi:23536
42274 #, no-wrap
42275 msgid "{Data Type} dicod-database"
42276 msgstr ""
42277
42278 #. type: deftp
42279 #: doc/guix.texi:23538
42280 msgid "Data type representing a dictionary database."
42281 msgstr ""
42282
42283 #. type: table
42284 #: doc/guix.texi:23542
42285 msgid "Name of the database, will be used in DICT commands."
42286 msgstr ""
42287
42288 #. type: code{#1}
42289 #: doc/guix.texi:23543
42290 #, no-wrap
42291 msgid "handler"
42292 msgstr ""
42293
42294 #. type: table
42295 #: doc/guix.texi:23546
42296 msgid "Name of the dicod handler (module instance) used by this database (@pxref{Handlers,,, dico, GNU Dico Manual})."
42297 msgstr ""
42298
42299 #. type: item
42300 #: doc/guix.texi:23547
42301 #, no-wrap
42302 msgid "@code{complex?} (default: @var{#f})"
42303 msgstr ""
42304
42305 #. type: table
42306 #: doc/guix.texi:23550
42307 msgid "Whether the database configuration complex. The complex configuration will need a corresponding @code{<dicod-handler>} object, otherwise not."
42308 msgstr ""
42309
42310 #. type: table
42311 #: doc/guix.texi:23554
42312 msgid "List of strings or gexps representing the arguments for the database (@pxref{Databases,,, dico, GNU Dico Manual})."
42313 msgstr ""
42314
42315 #. type: defvr
42316 #: doc/guix.texi:23557
42317 #, no-wrap
42318 msgid "{Scheme Variable} %dicod-database:gcide"
42319 msgstr ""
42320
42321 #. type: defvr
42322 #: doc/guix.texi:23560
42323 msgid "A @code{<dicod-database>} object serving the GNU Collaborative International Dictionary of English using the @code{gcide} package."
42324 msgstr ""
42325
42326 #. type: Plain text
42327 #: doc/guix.texi:23563
42328 msgid "The following is an example @code{dicod-service} configuration."
42329 msgstr ""
42330
42331 #. type: example
42332 #: doc/guix.texi:23578
42333 #, no-wrap
42334 msgid ""
42335 "(dicod-service #:config\n"
42336 " (dicod-configuration\n"
42337 " (handlers (list (dicod-handler\n"
42338 " (name \"wordnet\")\n"
42339 " (module \"dictorg\")\n"
42340 " (options\n"
42341 " (list #~(string-append \"dbdir=\" #$wordnet))))))\n"
42342 " (databases (list (dicod-database\n"
42343 " (name \"wordnet\")\n"
42344 " (complex? #t)\n"
42345 " (handler \"wordnet\")\n"
42346 " (options '(\"database=wn\")))\n"
42347 " %dicod-database:gcide))))\n"
42348 msgstr ""
42349
42350 #. type: cindex
42351 #: doc/guix.texi:23580
42352 #, no-wrap
42353 msgid "Docker"
42354 msgstr ""
42355
42356 #. type: subsubheading
42357 #: doc/guix.texi:23581
42358 #, no-wrap
42359 msgid "Docker Service"
42360 msgstr ""
42361
42362 #. type: Plain text
42363 #: doc/guix.texi:23584
42364 msgid "The @code{(gnu services docker)} module provides the following service."
42365 msgstr ""
42366
42367 #. type: defvr
42368 #: doc/guix.texi:23585
42369 #, no-wrap
42370 msgid "{Scheme Variable} docker-service-type"
42371 msgstr ""
42372
42373 #. type: defvr
42374 #: doc/guix.texi:23590
42375 msgid "This is the type of the service that runs @url{https://www.docker.com,Docker}, a daemon that can execute application bundles (sometimes referred to as ``containers'') in isolated environments."
42376 msgstr ""
42377
42378 #. type: deftp
42379 #: doc/guix.texi:23593
42380 #, no-wrap
42381 msgid "{Data Type} docker-configuration"
42382 msgstr ""
42383
42384 #. type: deftp
42385 #: doc/guix.texi:23595
42386 msgid "This is the data type representing the configuration of Docker and Containerd."
42387 msgstr ""
42388
42389 #. type: item
42390 #: doc/guix.texi:23598
42391 #, no-wrap
42392 msgid "@code{package} (default: @code{docker})"
42393 msgstr ""
42394
42395 #. type: table
42396 #: doc/guix.texi:23600
42397 msgid "The Docker package to use."
42398 msgstr ""
42399
42400 #. type: item
42401 #: doc/guix.texi:23601
42402 #, no-wrap
42403 msgid "@code{containerd} (default: @var{containerd})"
42404 msgstr ""
42405
42406 #. type: table
42407 #: doc/guix.texi:23603
42408 msgid "The Containerd package to use."
42409 msgstr ""
42410
42411 #. type: cindex
42412 #: doc/guix.texi:23610
42413 #, no-wrap
42414 msgid "setuid programs"
42415 msgstr ""
42416
42417 #. type: Plain text
42418 #: doc/guix.texi:23620
42419 msgid "Some programs need to run with ``root'' privileges, even when they are launched by unprivileged users. A notorious example is the @command{passwd} program, which users can run to change their password, and which needs to access the @file{/etc/passwd} and @file{/etc/shadow} files---something normally restricted to root, for obvious security reasons. To address that, these executables are @dfn{setuid-root}, meaning that they always run with root privileges (@pxref{How Change Persona,,, libc, The GNU C Library Reference Manual}, for more info about the setuid mechanism.)"
42420 msgstr ""
42421
42422 #. type: Plain text
42423 #: doc/guix.texi:23627
42424 msgid "The store itself @emph{cannot} contain setuid programs: that would be a security issue since any user on the system can write derivations that populate the store (@pxref{The Store}). Thus, a different mechanism is used: instead of changing the setuid bit directly on files that are in the store, we let the system administrator @emph{declare} which programs should be setuid root."
42425 msgstr ""
42426
42427 #. type: Plain text
42428 #: doc/guix.texi:23633
42429 msgid "The @code{setuid-programs} field of an @code{operating-system} declaration contains a list of G-expressions denoting the names of programs to be setuid-root (@pxref{Using the Configuration System}). For instance, the @command{passwd} program, which is part of the Shadow package, can be designated by this G-expression (@pxref{G-Expressions}):"
42430 msgstr ""
42431
42432 #. type: example
42433 #: doc/guix.texi:23636
42434 #, no-wrap
42435 msgid "#~(string-append #$shadow \"/bin/passwd\")\n"
42436 msgstr ""
42437
42438 #. type: Plain text
42439 #: doc/guix.texi:23640
42440 msgid "A default set of setuid programs is defined by the @code{%setuid-programs} variable of the @code{(gnu system)} module."
42441 msgstr ""
42442
42443 #. type: defvr
42444 #: doc/guix.texi:23641
42445 #, no-wrap
42446 msgid "{Scheme Variable} %setuid-programs"
42447 msgstr ""
42448
42449 #. type: defvr
42450 #: doc/guix.texi:23643
42451 msgid "A list of G-expressions denoting common programs that are setuid-root."
42452 msgstr ""
42453
42454 #. type: defvr
42455 #: doc/guix.texi:23646
42456 msgid "The list includes commands such as @command{passwd}, @command{ping}, @command{su}, and @command{sudo}."
42457 msgstr ""
42458
42459 #. type: Plain text
42460 #: doc/guix.texi:23652
42461 msgid "Under the hood, the actual setuid programs are created in the @file{/run/setuid-programs} directory at system activation time. The files in this directory refer to the ``real'' binaries, which are in the store."
42462 msgstr ""
42463
42464 #. type: cindex
42465 #: doc/guix.texi:23656
42466 #, no-wrap
42467 msgid "HTTPS, certificates"
42468 msgstr ""
42469
42470 #. type: cindex
42471 #: doc/guix.texi:23657
42472 #, no-wrap
42473 msgid "X.509 certificates"
42474 msgstr ""
42475
42476 #. type: cindex
42477 #: doc/guix.texi:23658
42478 #, no-wrap
42479 msgid "TLS"
42480 msgstr ""
42481
42482 #. type: Plain text
42483 #: doc/guix.texi:23665
42484 msgid "Web servers available over HTTPS (that is, HTTP over the transport-layer security mechanism, TLS) send client programs an @dfn{X.509 certificate} that the client can then use to @emph{authenticate} the server. To do that, clients verify that the server's certificate is signed by a so-called @dfn{certificate authority} (CA). But to verify the CA's signature, clients must have first acquired the CA's certificate."
42485 msgstr ""
42486
42487 #. type: Plain text
42488 #: doc/guix.texi:23669
42489 msgid "Web browsers such as GNU@tie{}IceCat include their own set of CA certificates, such that they are able to verify CA signatures out-of-the-box."
42490 msgstr ""
42491
42492 #. type: Plain text
42493 #: doc/guix.texi:23673
42494 msgid "However, most other programs that can talk HTTPS---@command{wget}, @command{git}, @command{w3m}, etc.---need to be told where CA certificates can be found."
42495 msgstr ""
42496
42497 #. type: Plain text
42498 #: doc/guix.texi:23680
42499 msgid "In Guix, this is done by adding a package that provides certificates to the @code{packages} field of the @code{operating-system} declaration (@pxref{operating-system Reference}). Guix includes one such package, @code{nss-certs}, which is a set of CA certificates provided as part of Mozilla's Network Security Services."
42500 msgstr ""
42501
42502 #. type: Plain text
42503 #: doc/guix.texi:23685
42504 msgid "Note that it is @emph{not} part of @var{%base-packages}, so you need to explicitly add it. The @file{/etc/ssl/certs} directory, which is where most applications and libraries look for certificates by default, points to the certificates installed globally."
42505 msgstr ""
42506
42507 #. type: Plain text
42508 #: doc/guix.texi:23695
42509 msgid "Unprivileged users, including users of Guix on a foreign distro, can also install their own certificate package in their profile. A number of environment variables need to be defined so that applications and libraries know where to find them. Namely, the OpenSSL library honors the @code{SSL_CERT_DIR} and @code{SSL_CERT_FILE} variables. Some applications add their own environment variables; for instance, the Git version control system honors the certificate bundle pointed to by the @code{GIT_SSL_CAINFO} environment variable. Thus, you would typically run something like:"
42510 msgstr ""
42511
42512 #. type: example
42513 #: doc/guix.texi:23701
42514 #, no-wrap
42515 msgid ""
42516 "$ guix install nss-certs\n"
42517 "$ export SSL_CERT_DIR=\"$HOME/.guix-profile/etc/ssl/certs\"\n"
42518 "$ export SSL_CERT_FILE=\"$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt\"\n"
42519 "$ export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\"\n"
42520 msgstr ""
42521
42522 #. type: Plain text
42523 #: doc/guix.texi:23706
42524 msgid "As another example, R requires the @code{CURL_CA_BUNDLE} environment variable to point to a certificate bundle, so you would have to run something like this:"
42525 msgstr ""
42526
42527 #. type: example
42528 #: doc/guix.texi:23710
42529 #, no-wrap
42530 msgid ""
42531 "$ guix install nss-certs\n"
42532 "$ export CURL_CA_BUNDLE=\"$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt\"\n"
42533 msgstr ""
42534
42535 #. type: Plain text
42536 #: doc/guix.texi:23714
42537 msgid "For other applications you may want to look up the required environment variable in the relevant documentation."
42538 msgstr ""
42539
42540 #. type: cindex
42541 #: doc/guix.texi:23719
42542 #, no-wrap
42543 msgid "name service switch"
42544 msgstr ""
42545
42546 #. type: cindex
42547 #: doc/guix.texi:23720
42548 #, no-wrap
42549 msgid "NSS"
42550 msgstr ""
42551
42552 #. type: Plain text
42553 #: doc/guix.texi:23729
42554 msgid "The @code{(gnu system nss)} module provides bindings to the configuration file of the libc @dfn{name service switch} or @dfn{NSS} (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}). In a nutshell, the NSS is a mechanism that allows libc to be extended with new ``name'' lookup methods for system databases, which includes host names, service names, user accounts, and more (@pxref{Name Service Switch, System Databases and Name Service Switch,, libc, The GNU C Library Reference Manual})."
42555 msgstr ""
42556
42557 #. type: Plain text
42558 #: doc/guix.texi:23736
42559 msgid "The NSS configuration specifies, for each system database, which lookup method is to be used, and how the various methods are chained together---for instance, under which circumstances NSS should try the next method in the list. The NSS configuration is given in the @code{name-service-switch} field of @code{operating-system} declarations (@pxref{operating-system Reference, @code{name-service-switch}})."
42560 msgstr ""
42561
42562 #. type: cindex
42563 #: doc/guix.texi:23737
42564 #, no-wrap
42565 msgid "nss-mdns"
42566 msgstr ""
42567
42568 #. type: cindex
42569 #: doc/guix.texi:23738
42570 #, no-wrap
42571 msgid ".local, host name lookup"
42572 msgstr ""
42573
42574 #. type: Plain text
42575 #: doc/guix.texi:23743
42576 msgid "As an example, the declaration below configures the NSS to use the @uref{http://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns} back-end}, which supports host name lookups over multicast DNS (mDNS) for host names ending in @code{.local}:"
42577 msgstr ""
42578
42579 #. type: example
42580 #: doc/guix.texi:23747
42581 #, no-wrap
42582 msgid ""
42583 "(name-service-switch\n"
42584 " (hosts (list %files ;first, check /etc/hosts\n"
42585 "\n"
42586 msgstr ""
42587
42588 #. type: example
42589 #: doc/guix.texi:23752
42590 #, no-wrap
42591 msgid ""
42592 " ;; If the above did not succeed, try\n"
42593 " ;; with 'mdns_minimal'.\n"
42594 " (name-service\n"
42595 " (name \"mdns_minimal\")\n"
42596 "\n"
42597 msgstr ""
42598
42599 #. type: example
42600 #: doc/guix.texi:23758
42601 #, no-wrap
42602 msgid ""
42603 " ;; 'mdns_minimal' is authoritative for\n"
42604 " ;; '.local'. When it returns \"not found\",\n"
42605 " ;; no need to try the next methods.\n"
42606 " (reaction (lookup-specification\n"
42607 " (not-found => return))))\n"
42608 "\n"
42609 msgstr ""
42610
42611 #. type: example
42612 #: doc/guix.texi:23762
42613 #, no-wrap
42614 msgid ""
42615 " ;; Then fall back to DNS.\n"
42616 " (name-service\n"
42617 " (name \"dns\"))\n"
42618 "\n"
42619 msgstr ""
42620
42621 #. type: example
42622 #: doc/guix.texi:23766
42623 #, no-wrap
42624 msgid ""
42625 " ;; Finally, try with the \"full\" 'mdns'.\n"
42626 " (name-service\n"
42627 " (name \"mdns\")))))\n"
42628 msgstr ""
42629
42630 #. type: Plain text
42631 #: doc/guix.texi:23771
42632 msgid "Do not worry: the @code{%mdns-host-lookup-nss} variable (see below) contains this configuration, so you will not have to type it if all you want is to have @code{.local} host lookup working."
42633 msgstr ""
42634
42635 #. type: Plain text
42636 #: doc/guix.texi:23779
42637 msgid "Note that, in this case, in addition to setting the @code{name-service-switch} of the @code{operating-system} declaration, you also need to use @code{avahi-service-type} (@pxref{Networking Services, @code{avahi-service-type}}), or @var{%desktop-services}, which includes it (@pxref{Desktop Services}). Doing this makes @code{nss-mdns} accessible to the name service cache daemon (@pxref{Base Services, @code{nscd-service}})."
42638 msgstr ""
42639
42640 #. type: Plain text
42641 #: doc/guix.texi:23782
42642 msgid "For convenience, the following variables provide typical NSS configurations."
42643 msgstr ""
42644
42645 #. type: defvr
42646 #: doc/guix.texi:23783
42647 #, no-wrap
42648 msgid "{Scheme Variable} %default-nss"
42649 msgstr ""
42650
42651 #. type: defvr
42652 #: doc/guix.texi:23786
42653 msgid "This is the default name service switch configuration, a @code{name-service-switch} object."
42654 msgstr ""
42655
42656 #. type: defvr
42657 #: doc/guix.texi:23788
42658 #, no-wrap
42659 msgid "{Scheme Variable} %mdns-host-lookup-nss"
42660 msgstr ""
42661
42662 #. type: defvr
42663 #: doc/guix.texi:23791
42664 msgid "This is the name service switch configuration with support for host name lookup over multicast DNS (mDNS) for host names ending in @code{.local}."
42665 msgstr ""
42666
42667 #. type: Plain text
42668 #: doc/guix.texi:23801
42669 msgid "The reference for name service switch configuration is given below. It is a direct mapping of the configuration file format of the C library , so please refer to the C library manual for more information (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}). Compared to the configuration file format of libc NSS, it has the advantage not only of adding this warm parenthetic feel that we like, but also static checks: you will know about syntax errors and typos as soon as you run @command{guix system}."
42670 msgstr ""
42671
42672 #. type: deftp
42673 #: doc/guix.texi:23802
42674 #, no-wrap
42675 msgid "{Data Type} name-service-switch"
42676 msgstr ""
42677
42678 #. type: deftp
42679 #: doc/guix.texi:23807
42680 msgid "This is the data type representation the configuration of libc's name service switch (NSS). Each field below represents one of the supported system databases."
42681 msgstr ""
42682
42683 #. type: item
42684 #: doc/guix.texi:23809
42685 #, no-wrap
42686 msgid "aliases"
42687 msgstr ""
42688
42689 #. type: itemx
42690 #: doc/guix.texi:23810
42691 #, no-wrap
42692 msgid "ethers"
42693 msgstr ""
42694
42695 #. type: itemx
42696 #: doc/guix.texi:23812
42697 #, no-wrap
42698 msgid "gshadow"
42699 msgstr ""
42700
42701 #. type: itemx
42702 #: doc/guix.texi:23813
42703 #, no-wrap
42704 msgid "hosts"
42705 msgstr ""
42706
42707 #. type: itemx
42708 #: doc/guix.texi:23814
42709 #, no-wrap
42710 msgid "initgroups"
42711 msgstr ""
42712
42713 #. type: itemx
42714 #: doc/guix.texi:23815
42715 #, no-wrap
42716 msgid "netgroup"
42717 msgstr ""
42718
42719 #. type: itemx
42720 #: doc/guix.texi:23816
42721 #, no-wrap
42722 msgid "networks"
42723 msgstr ""
42724
42725 #. type: itemx
42726 #: doc/guix.texi:23818
42727 #, no-wrap
42728 msgid "public-key"
42729 msgstr ""
42730
42731 #. type: itemx
42732 #: doc/guix.texi:23819
42733 #, no-wrap
42734 msgid "rpc"
42735 msgstr ""
42736
42737 #. type: itemx
42738 #: doc/guix.texi:23821
42739 #, no-wrap
42740 msgid "shadow"
42741 msgstr ""
42742
42743 #. type: table
42744 #: doc/guix.texi:23824
42745 msgid "The system databases handled by the NSS. Each of these fields must be a list of @code{<name-service>} objects (see below)."
42746 msgstr ""
42747
42748 #. type: deftp
42749 #: doc/guix.texi:23827
42750 #, no-wrap
42751 msgid "{Data Type} name-service"
42752 msgstr ""
42753
42754 #. type: deftp
42755 #: doc/guix.texi:23831
42756 msgid "This is the data type representing an actual name service and the associated lookup action."
42757 msgstr ""
42758
42759 #. type: table
42760 #: doc/guix.texi:23836
42761 msgid "A string denoting the name service (@pxref{Services in the NSS configuration,,, libc, The GNU C Library Reference Manual})."
42762 msgstr ""
42763
42764 #. type: table
42765 #: doc/guix.texi:23841
42766 msgid "Note that name services listed here must be visible to nscd. This is achieved by passing the @code{#:name-services} argument to @code{nscd-service} the list of packages providing the needed name services (@pxref{Base Services, @code{nscd-service}})."
42767 msgstr ""
42768
42769 #. type: item
42770 #: doc/guix.texi:23842
42771 #, no-wrap
42772 msgid "reaction"
42773 msgstr ""
42774
42775 #. type: table
42776 #: doc/guix.texi:23846
42777 msgid "An action specified using the @code{lookup-specification} macro (@pxref{Actions in the NSS configuration,,, libc, The GNU C Library Reference Manual}). For example:"
42778 msgstr ""
42779
42780 #. type: example
42781 #: doc/guix.texi:23850
42782 #, no-wrap
42783 msgid ""
42784 "(lookup-specification (unavailable => continue)\n"
42785 " (success => return))\n"
42786 msgstr ""
42787
42788 #. type: Plain text
42789 #: doc/guix.texi:23864
42790 msgid "For bootstrapping purposes, the Linux-Libre kernel is passed an @dfn{initial RAM disk}, or @dfn{initrd}. An initrd contains a temporary root file system as well as an initialization script. The latter is responsible for mounting the real root file system, and for loading any kernel modules that may be needed to achieve that."
42791 msgstr ""
42792
42793 #. type: Plain text
42794 #: doc/guix.texi:23873
42795 msgid "The @code{initrd-modules} field of an @code{operating-system} declaration allows you to specify Linux-libre kernel modules that must be available in the initrd. In particular, this is where you would list modules needed to actually drive the hard disk where your root partition is---although the default value of @code{initrd-modules} should cover most use cases. For example, assuming you need the @code{megaraid_sas} module in addition to the default modules to be able to access your root file system, you would write:"
42796 msgstr ""
42797
42798 #. type: example
42799 #: doc/guix.texi:23878
42800 #, no-wrap
42801 msgid ""
42802 "(operating-system\n"
42803 " ;; @dots{}\n"
42804 " (initrd-modules (cons \"megaraid_sas\" %base-initrd-modules)))\n"
42805 msgstr ""
42806
42807 #. type: defvr
42808 #: doc/guix.texi:23880
42809 #, no-wrap
42810 msgid "{Scheme Variable} %base-initrd-modules"
42811 msgstr ""
42812
42813 #. type: defvr
42814 #: doc/guix.texi:23882
42815 msgid "This is the list of kernel modules included in the initrd by default."
42816 msgstr ""
42817
42818 #. type: Plain text
42819 #: doc/guix.texi:23890
42820 msgid "Furthermore, if you need lower-level customization, the @code{initrd} field of an @code{operating-system} declaration allows you to specify which initrd you would like to use. The @code{(gnu system linux-initrd)} module provides three ways to build an initrd: the high-level @code{base-initrd} procedure and the low-level @code{raw-initrd} and @code{expression->initrd} procedures."
42821 msgstr ""
42822
42823 #. type: Plain text
42824 #: doc/guix.texi:23895
42825 msgid "The @code{base-initrd} procedure is intended to cover most common uses. For example, if you want to add a bunch of kernel modules to be loaded at boot time, you can define the @code{initrd} field of the operating system declaration like this:"
42826 msgstr ""
42827
42828 #. type: example
42829 #: doc/guix.texi:23903
42830 #, no-wrap
42831 msgid ""
42832 "(initrd (lambda (file-systems . rest)\n"
42833 " ;; Create a standard initrd but set up networking\n"
42834 " ;; with the parameters QEMU expects by default.\n"
42835 " (apply base-initrd file-systems\n"
42836 " #:qemu-networking? #t\n"
42837 " rest)))\n"
42838 msgstr ""
42839
42840 #. type: Plain text
42841 #: doc/guix.texi:23908
42842 msgid "The @code{base-initrd} procedure also handles common use cases that involves using the system as a QEMU guest, or as a ``live'' system with volatile root file system."
42843 msgstr ""
42844
42845 #. type: Plain text
42846 #: doc/guix.texi:23915
42847 msgid "The @code{base-initrd} procedure is built from @code{raw-initrd} procedure. Unlike @code{base-initrd}, @code{raw-initrd} doesn't do anything high-level, such as trying to guess which kernel modules and packages should be included to the initrd. An example use of @code{raw-initrd} is when a user has a custom Linux kernel configuration and default kernel modules included by @code{base-initrd} are not available."
42848 msgstr ""
42849
42850 #. type: Plain text
42851 #: doc/guix.texi:23920
42852 msgid "The initial RAM disk produced by @code{base-initrd} or @code{raw-initrd} honors several options passed on the Linux kernel command line (that is, arguments passed @i{via} the @code{linux} command of GRUB, or the @code{-append} option of QEMU), notably:"
42853 msgstr ""
42854
42855 #. type: item
42856 #: doc/guix.texi:23922
42857 #, no-wrap
42858 msgid "--load=@var{boot}"
42859 msgstr ""
42860
42861 #. type: table
42862 #: doc/guix.texi:23925
42863 msgid "Tell the initial RAM disk to load @var{boot}, a file containing a Scheme program, once it has mounted the root file system."
42864 msgstr ""
42865
42866 #. type: table
42867 #: doc/guix.texi:23929
42868 msgid "Guix uses this option to yield control to a boot program that runs the service activation programs and then spawns the GNU@tie{}Shepherd, the initialization system."
42869 msgstr ""
42870
42871 #. type: item
42872 #: doc/guix.texi:23930
42873 #, no-wrap
42874 msgid "--root=@var{root}"
42875 msgstr ""
42876
42877 #. type: table
42878 #: doc/guix.texi:23934
42879 msgid "Mount @var{root} as the root file system. @var{root} can be a device name like @code{/dev/sda1}, a file system label, or a file system UUID."
42880 msgstr ""
42881
42882 #. type: table
42883 #: doc/guix.texi:23938
42884 msgid "Have @file{/run/booted-system} and @file{/run/current-system} point to @var{system}."
42885 msgstr ""
42886
42887 #. type: item
42888 #: doc/guix.texi:23939
42889 #, no-wrap
42890 msgid "modprobe.blacklist=@var{modules}@dots{}"
42891 msgstr ""
42892
42893 #. type: cindex
42894 #: doc/guix.texi:23940
42895 #, no-wrap
42896 msgid "module, black-listing"
42897 msgstr ""
42898
42899 #. type: cindex
42900 #: doc/guix.texi:23941
42901 #, no-wrap
42902 msgid "black list, of kernel modules"
42903 msgstr ""
42904
42905 #. type: table
42906 #: doc/guix.texi:23946
42907 msgid "Instruct the initial RAM disk as well as the @command{modprobe} command (from the kmod package) to refuse to load @var{modules}. @var{modules} must be a comma-separated list of module names---e.g., @code{usbkbd,9pnet}."
42908 msgstr ""
42909
42910 #. type: item
42911 #: doc/guix.texi:23947
42912 #, no-wrap
42913 msgid "--repl"
42914 msgstr ""
42915
42916 #. type: table
42917 #: doc/guix.texi:23953
42918 msgid "Start a read-eval-print loop (REPL) from the initial RAM disk before it tries to load kernel modules and to mount the root file system. Our marketing team calls it @dfn{boot-to-Guile}. The Schemer in you will love it. @xref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}, for more information on Guile's REPL."
42919 msgstr ""
42920
42921 #. type: Plain text
42922 #: doc/guix.texi:23959
42923 msgid "Now that you know all the features that initial RAM disks produced by @code{base-initrd} and @code{raw-initrd} provide, here is how to use it and customize it further."
42924 msgstr ""
42925
42926 #. type: deffn
42927 #: doc/guix.texi:23962
42928 #, no-wrap
42929 msgid "{Scheme Procedure} raw-initrd @var{file-systems} @"
42930 msgstr ""
42931
42932 #. type: deffn
42933 #: doc/guix.texi:23975
42934 msgid "[#:linux-modules '()] [#:mapped-devices '()] @ [#:keyboard-layout #f] @ [#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f] Return a derivation that builds a raw initrd. @var{file-systems} is a list of file systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @code{--root}. @var{linux-modules} is a list of kernel modules to be loaded at boot time. @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are mounted (@pxref{Mapped Devices}). @var{helper-packages} is a list of packages to be copied in the initrd. It may include @code{e2fsck/static} or other packages needed by the initrd to check the root file system."
42935 msgstr ""
42936
42937 #. type: deffn
42938 #: doc/guix.texi:23981 doc/guix.texi:24005
42939 msgid "When true, @var{keyboard-layout} is a @code{<keyboard-layout>} record denoting the desired console keyboard layout. This is done before @var{mapped-devices} are set up and before @var{file-systems} are mounted such that, should the user need to enter a passphrase or use the REPL, this happens using the intended keyboard layout."
42940 msgstr ""
42941
42942 #. type: deffn
42943 #: doc/guix.texi:23985
42944 msgid "When @var{qemu-networking?} is true, set up networking with the standard QEMU parameters. When @var{virtio?} is true, load additional modules so that the initrd can be used as a QEMU guest with para-virtualized I/O drivers."
42945 msgstr ""
42946
42947 #. type: deffn
42948 #: doc/guix.texi:23988
42949 msgid "When @var{volatile-root?} is true, the root file system is writable but any changes to it are lost."
42950 msgstr ""
42951
42952 #. type: deffn
42953 #: doc/guix.texi:23990
42954 #, no-wrap
42955 msgid "{Scheme Procedure} base-initrd @var{file-systems} @"
42956 msgstr ""
42957
42958 #. type: deffn
42959 #: doc/guix.texi:23999
42960 msgid "[#:mapped-devices '()] [#:keyboard-layout #f] @ [#:qemu-networking? #f] [#:volatile-root? #f] @ [#:linux-modules '()] Return as a file-like object a generic initrd, with kernel modules taken from @var{linux}. @var{file-systems} is a list of file-systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @code{--root}. @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are mounted."
42961 msgstr ""
42962
42963 #. type: deffn
42964 #: doc/guix.texi:24007
42965 msgid "@var{qemu-networking?} and @var{volatile-root?} behaves as in @code{raw-initrd}."
42966 msgstr ""
42967
42968 #. type: deffn
42969 #: doc/guix.texi:24012
42970 msgid "The initrd is automatically populated with all the kernel modules necessary for @var{file-systems} and for the given options. Additional kernel modules can be listed in @var{linux-modules}. They will be added to the initrd, and loaded at boot time in the order in which they appear."
42971 msgstr ""
42972
42973 #. type: Plain text
42974 #: doc/guix.texi:24019
42975 msgid "Needless to say, the initrds we produce and use embed a statically-linked Guile, and the initialization program is a Guile program. That gives a lot of flexibility. The @code{expression->initrd} procedure builds such an initrd, given the program to run in that initrd."
42976 msgstr ""
42977
42978 #. type: deffn
42979 #: doc/guix.texi:24020
42980 #, no-wrap
42981 msgid "{Scheme Procedure} expression->initrd @var{exp} @"
42982 msgstr ""
42983
42984 #. type: deffn
42985 #: doc/guix.texi:24026
42986 msgid "[#:guile %guile-static-stripped] [#:name \"guile-initrd\"] Return as a file-like object a Linux initrd (a gzipped cpio archive) containing @var{guile} and that evaluates @var{exp}, a G-expression, upon booting. All the derivations referenced by @var{exp} are automatically copied to the initrd."
42987 msgstr ""
42988
42989 #. type: cindex
42990 #: doc/guix.texi:24032
42991 #, no-wrap
42992 msgid "boot loader"
42993 msgstr ""
42994
42995 #. type: Plain text
42996 #: doc/guix.texi:24039
42997 msgid "The operating system supports multiple bootloaders. The bootloader is configured using @code{bootloader-configuration} declaration. All the fields of this structure are bootloader agnostic except for one field, @code{bootloader} that indicates the bootloader to be configured and installed."
42998 msgstr ""
42999
43000 #. type: Plain text
43001 #: doc/guix.texi:24044
43002 msgid "Some of the bootloaders do not honor every field of @code{bootloader-configuration}. For instance, the extlinux bootloader does not support themes and thus ignores the @code{theme} field."
43003 msgstr ""
43004
43005 #. type: deftp
43006 #: doc/guix.texi:24045
43007 #, no-wrap
43008 msgid "{Data Type} bootloader-configuration"
43009 msgstr ""
43010
43011 #. type: deftp
43012 #: doc/guix.texi:24047
43013 msgid "The type of a bootloader configuration declaration."
43014 msgstr ""
43015
43016 #. type: cindex
43017 #: doc/guix.texi:24051
43018 #, no-wrap
43019 msgid "EFI, bootloader"
43020 msgstr ""
43021
43022 #. type: cindex
43023 #: doc/guix.texi:24052
43024 #, no-wrap
43025 msgid "UEFI, bootloader"
43026 msgstr ""
43027
43028 #. type: cindex
43029 #: doc/guix.texi:24053
43030 #, no-wrap
43031 msgid "BIOS, bootloader"
43032 msgstr ""
43033
43034 #. type: table
43035 #: doc/guix.texi:24057
43036 msgid "The bootloader to use, as a @code{bootloader} object. For now @code{grub-bootloader}, @code{grub-efi-bootloader}, @code{extlinux-bootloader} and @code{u-boot-bootloader} are supported."
43037 msgstr ""
43038
43039 #. type: table
43040 #: doc/guix.texi:24063
43041 msgid "@code{grub-efi-bootloader} allows to boot on modern systems using the @dfn{Unified Extensible Firmware Interface} (UEFI). This is what you should use if the installation image contains a @file{/sys/firmware/efi} directory when you boot it on your system."
43042 msgstr ""
43043
43044 #. type: table
43045 #: doc/guix.texi:24067
43046 msgid "@code{grub-bootloader} allows you to boot in particular Intel-based machines in ``legacy'' BIOS mode."
43047 msgstr ""
43048
43049 #. type: cindex
43050 #: doc/guix.texi:24068
43051 #, no-wrap
43052 msgid "ARM, bootloaders"
43053 msgstr ""
43054
43055 #. type: cindex
43056 #: doc/guix.texi:24069
43057 #, no-wrap
43058 msgid "AArch64, bootloaders"
43059 msgstr ""
43060
43061 #. type: table
43062 #: doc/guix.texi:24074
43063 msgid "Available bootloaders are described in @code{(gnu bootloader @dots{})} modules. In particular, @code{(gnu bootloader u-boot)} contains definitions of bootloaders for a wide range of ARM and AArch64 systems, using the @uref{https://www.denx.de/wiki/U-Boot/, U-Boot bootloader}."
43064 msgstr ""
43065
43066 #. type: table
43067 #: doc/guix.texi:24078
43068 msgid "This is a string denoting the target onto which to install the bootloader."
43069 msgstr ""
43070
43071 #. type: table
43072 #: doc/guix.texi:24085
43073 msgid "The interpretation depends on the bootloader in question. For @code{grub-bootloader}, for example, it should be a device name understood by the bootloader @command{installer} command, such as @code{/dev/sda} or @code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}). For @code{grub-efi-bootloader}, it should be the mount point of the EFI file system, usually @file{/boot/efi}."
43074 msgstr ""
43075
43076 #. type: item
43077 #: doc/guix.texi:24086
43078 #, no-wrap
43079 msgid "@code{menu-entries} (default: @code{()})"
43080 msgstr ""
43081
43082 #. type: table
43083 #: doc/guix.texi:24090
43084 msgid "A possibly empty list of @code{menu-entry} objects (see below), denoting entries to appear in the bootloader menu, in addition to the current system entry and the entry pointing to previous system generations."
43085 msgstr ""
43086
43087 #. type: item
43088 #: doc/guix.texi:24091
43089 #, no-wrap
43090 msgid "@code{default-entry} (default: @code{0})"
43091 msgstr ""
43092
43093 #. type: table
43094 #: doc/guix.texi:24094
43095 msgid "The index of the default boot menu entry. Index 0 is for the entry of the current system."
43096 msgstr ""
43097
43098 #. type: item
43099 #: doc/guix.texi:24095
43100 #, no-wrap
43101 msgid "@code{timeout} (default: @code{5})"
43102 msgstr ""
43103
43104 #. type: table
43105 #: doc/guix.texi:24098
43106 msgid "The number of seconds to wait for keyboard input before booting. Set to 0 to boot immediately, and to -1 to wait indefinitely."
43107 msgstr ""
43108
43109 #. type: cindex
43110 #: doc/guix.texi:24099
43111 #, no-wrap
43112 msgid "keyboard layout, for the bootloader"
43113 msgstr ""
43114
43115 #. type: table
43116 #: doc/guix.texi:24103
43117 msgid "If this is @code{#f}, the bootloader's menu (if any) uses the default keyboard layout, usually US@tie{}English (``qwerty'')."
43118 msgstr ""
43119
43120 #. type: table
43121 #: doc/guix.texi:24106
43122 msgid "Otherwise, this must be a @code{keyboard-layout} object (@pxref{Keyboard Layout})."
43123 msgstr ""
43124
43125 #. type: quotation
43126 #: doc/guix.texi:24110
43127 msgid "This option is currently ignored by bootloaders other than @code{grub} and @code{grub-efi}."
43128 msgstr ""
43129
43130 #. type: item
43131 #: doc/guix.texi:24112
43132 #, no-wrap
43133 msgid "@code{theme} (default: @var{#f})"
43134 msgstr ""
43135
43136 #. type: table
43137 #: doc/guix.texi:24116
43138 msgid "The bootloader theme object describing the theme to use. If no theme is provided, some bootloaders might use a default theme, that's true for GRUB."
43139 msgstr ""
43140
43141 #. type: item
43142 #: doc/guix.texi:24117
43143 #, no-wrap
43144 msgid "@code{terminal-outputs} (default: @code{'gfxterm})"
43145 msgstr ""
43146
43147 #. type: table
43148 #: doc/guix.texi:24124
43149 msgid "The output terminals used for the bootloader boot menu, as a list of symbols. GRUB accepts the values: @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{gfxterm}, @code{vga_text}, @code{mda_text}, @code{morse}, and @code{pkmodem}. This field corresponds to the GRUB variable @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual})."
43150 msgstr ""
43151
43152 #. type: item
43153 #: doc/guix.texi:24125
43154 #, no-wrap
43155 msgid "@code{terminal-inputs} (default: @code{'()})"
43156 msgstr ""
43157
43158 #. type: table
43159 #: doc/guix.texi:24133
43160 msgid "The input terminals used for the bootloader boot menu, as a list of symbols. For GRUB, the default is the native platform terminal as determined at run-time. GRUB accepts the values: @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{at_keyboard}, and @code{usb_keyboard}. This field corresponds to the GRUB variable @code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual})."
43161 msgstr ""
43162
43163 #. type: item
43164 #: doc/guix.texi:24134
43165 #, no-wrap
43166 msgid "@code{serial-unit} (default: @code{#f})"
43167 msgstr ""
43168
43169 #. type: table
43170 #: doc/guix.texi:24138
43171 msgid "The serial unit used by the bootloader, as an integer from 0 to 3. For GRUB, it is chosen at run-time; currently GRUB chooses 0, which corresponds to COM1 (@pxref{Serial terminal,,, grub,GNU GRUB manual})."
43172 msgstr ""
43173
43174 #. type: item
43175 #: doc/guix.texi:24139
43176 #, no-wrap
43177 msgid "@code{serial-speed} (default: @code{#f})"
43178 msgstr ""
43179
43180 #. type: table
43181 #: doc/guix.texi:24143
43182 msgid "The speed of the serial interface, as an integer. For GRUB, the default value is chosen at run-time; currently GRUB chooses 9600@tie{}bps (@pxref{Serial terminal,,, grub,GNU GRUB manual})."
43183 msgstr ""
43184
43185 #. type: cindex
43186 #: doc/guix.texi:24147
43187 #, no-wrap
43188 msgid "dual boot"
43189 msgstr ""
43190
43191 #. type: cindex
43192 #: doc/guix.texi:24148
43193 #, no-wrap
43194 msgid "boot menu"
43195 msgstr ""
43196
43197 #. type: Plain text
43198 #: doc/guix.texi:24154
43199 msgid "Should you want to list additional boot menu entries @i{via} the @code{menu-entries} field above, you will need to create them with the @code{menu-entry} form. For example, imagine you want to be able to boot another distro (hard to imagine!), you can define a menu entry along these lines:"
43200 msgstr ""
43201
43202 #. type: example
43203 #: doc/guix.texi:24161
43204 #, no-wrap
43205 msgid ""
43206 "(menu-entry\n"
43207 " (label \"The Other Distro\")\n"
43208 " (linux \"/boot/old/vmlinux-2.6.32\")\n"
43209 " (linux-arguments '(\"root=/dev/sda2\"))\n"
43210 " (initrd \"/boot/old/initrd\"))\n"
43211 msgstr ""
43212
43213 #. type: Plain text
43214 #: doc/guix.texi:24164
43215 msgid "Details below."
43216 msgstr ""
43217
43218 #. type: deftp
43219 #: doc/guix.texi:24165
43220 #, no-wrap
43221 msgid "{Data Type} menu-entry"
43222 msgstr ""
43223
43224 #. type: deftp
43225 #: doc/guix.texi:24167
43226 msgid "The type of an entry in the bootloader menu."
43227 msgstr ""
43228
43229 #. type: table
43230 #: doc/guix.texi:24172
43231 msgid "The label to show in the menu---e.g., @code{\"GNU\"}."
43232 msgstr ""
43233
43234 #. type: code{#1}
43235 #: doc/guix.texi:24173
43236 #, no-wrap
43237 msgid "linux"
43238 msgstr ""
43239
43240 #. type: table
43241 #: doc/guix.texi:24175
43242 msgid "The Linux kernel image to boot, for example:"
43243 msgstr ""
43244
43245 #. type: example
43246 #: doc/guix.texi:24178
43247 #, no-wrap
43248 msgid "(file-append linux-libre \"/bzImage\")\n"
43249 msgstr ""
43250
43251 #. type: table
43252 #: doc/guix.texi:24183
43253 msgid "For GRUB, it is also possible to specify a device explicitly in the file path using GRUB's device naming convention (@pxref{Naming convention,,, grub, GNU GRUB manual}), for example:"
43254 msgstr ""
43255
43256 #. type: example
43257 #: doc/guix.texi:24186
43258 #, no-wrap
43259 msgid "\"(hd0,msdos1)/boot/vmlinuz\"\n"
43260 msgstr ""
43261
43262 #. type: table
43263 #: doc/guix.texi:24190
43264 msgid "If the device is specified explicitly as above, then the @code{device} field is ignored entirely."
43265 msgstr ""
43266
43267 #. type: item
43268 #: doc/guix.texi:24191
43269 #, no-wrap
43270 msgid "@code{linux-arguments} (default: @code{()})"
43271 msgstr ""
43272
43273 #. type: table
43274 #: doc/guix.texi:24194
43275 msgid "The list of extra Linux kernel command-line arguments---e.g., @code{(\"console=ttyS0\")}."
43276 msgstr ""
43277
43278 #. type: table
43279 #: doc/guix.texi:24198
43280 msgid "A G-Expression or string denoting the file name of the initial RAM disk to use (@pxref{G-Expressions})."
43281 msgstr ""
43282
43283 #. type: item
43284 #: doc/guix.texi:24198
43285 #, no-wrap
43286 msgid "@code{device} (default: @code{#f})"
43287 msgstr ""
43288
43289 #. type: table
43290 #: doc/guix.texi:24201
43291 msgid "The device where the kernel and initrd are to be found---i.e., for GRUB, @dfn{root} for this menu entry (@pxref{root,,, grub, GNU GRUB manual})."
43292 msgstr ""
43293
43294 #. type: table
43295 #: doc/guix.texi:24207
43296 msgid "This may be a file system label (a string), a file system UUID (a bytevector, @pxref{File Systems}), or @code{#f}, in which case the bootloader will search the device containing the file specified by the @code{linux} field (@pxref{search,,, grub, GNU GRUB manual}). It must @emph{not} be an OS device name such as @file{/dev/sda1}."
43297 msgstr ""
43298
43299 #. type: Plain text
43300 #: doc/guix.texi:24214
43301 msgid "For now only GRUB has theme support. GRUB themes are created using the @code{grub-theme} form, which is not documented yet."
43302 msgstr ""
43303
43304 #. type: defvr
43305 #: doc/guix.texi:24219
43306 msgid "This is the default GRUB theme used by the operating system if no @code{theme} field is specified in @code{bootloader-configuration} record."
43307 msgstr ""
43308
43309 #. type: defvr
43310 #: doc/guix.texi:24222
43311 msgid "It comes with a fancy background image displaying the GNU and Guix logos."
43312 msgstr ""
43313
43314 #. type: section
43315 #: doc/guix.texi:24226
43316 #, no-wrap
43317 msgid "Invoking @code{guix system}"
43318 msgstr ""
43319
43320 #. type: Plain text
43321 #: doc/guix.texi:24231
43322 msgid "Once you have written an operating system declaration as seen in the previous section, it can be @dfn{instantiated} using the @command{guix system} command. The synopsis is:"
43323 msgstr ""
43324
43325 #. type: example
43326 #: doc/guix.texi:24234
43327 #, no-wrap
43328 msgid "guix system @var{options}@dots{} @var{action} @var{file}\n"
43329 msgstr ""
43330
43331 #. type: Plain text
43332 #: doc/guix.texi:24240
43333 msgid "@var{file} must be the name of a file containing an @code{operating-system} declaration. @var{action} specifies how the operating system is instantiated. Currently the following values are supported:"
43334 msgstr ""
43335
43336 #. type: item
43337 #: doc/guix.texi:24242
43338 #, no-wrap
43339 msgid "search"
43340 msgstr ""
43341
43342 #. type: table
43343 #: doc/guix.texi:24245
43344 msgid "Display available service type definitions that match the given regular expressions, sorted by relevance:"
43345 msgstr ""
43346
43347 #. type: example
43348 #: doc/guix.texi:24257
43349 #, no-wrap
43350 msgid ""
43351 "$ guix system search console font\n"
43352 "name: console-fonts\n"
43353 "location: gnu/services/base.scm:729:2\n"
43354 "extends: shepherd-root\n"
43355 "description: Install the given fonts on the specified ttys (fonts are\n"
43356 "+ per virtual console on GNU/Linux). The value of this service is a list\n"
43357 "+ of tty/font pairs like:\n"
43358 "+ \n"
43359 "+ '((\"tty1\" . \"LatGrkCyr-8x16\"))\n"
43360 "relevance: 20\n"
43361 "\n"
43362 msgstr ""
43363
43364 #. type: example
43365 #: doc/guix.texi:24263
43366 #, no-wrap
43367 msgid ""
43368 "name: mingetty\n"
43369 "location: gnu/services/base.scm:1048:2\n"
43370 "extends: shepherd-root\n"
43371 "description: Provide console login using the `mingetty' program.\n"
43372 "relevance: 2\n"
43373 "\n"
43374 msgstr ""
43375
43376 #. type: example
43377 #: doc/guix.texi:24270
43378 #, no-wrap
43379 msgid ""
43380 "name: login\n"
43381 "location: gnu/services/base.scm:775:2\n"
43382 "extends: pam\n"
43383 "description: Provide a console log-in service as specified by its\n"
43384 "+ configuration value, a `login-configuration' object.\n"
43385 "relevance: 2\n"
43386 "\n"
43387 msgstr ""
43388
43389 #. type: example
43390 #: doc/guix.texi:24272
43391 #, no-wrap
43392 msgid "@dots{}\n"
43393 msgstr ""
43394
43395 #. type: table
43396 #: doc/guix.texi:24277
43397 msgid "As for @command{guix package --search}, the result is written in @code{recutils} format, which makes it easy to filter the output (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual})."
43398 msgstr ""
43399
43400 #. type: item
43401 #: doc/guix.texi:24278
43402 #, no-wrap
43403 msgid "reconfigure"
43404 msgstr ""
43405
43406 #. type: table
43407 #: doc/guix.texi:24283
43408 msgid "Build the operating system described in @var{file}, activate it, and switch to it@footnote{This action (and the related actions @code{switch-generation} and @code{roll-back}) are usable only on systems already running Guix System.}."
43409 msgstr ""
43410
43411 #. type: table
43412 #: doc/guix.texi:24290
43413 msgid "This effects all the configuration specified in @var{file}: user accounts, system services, global package list, setuid programs, etc. The command starts system services specified in @var{file} that are not currently running; if a service is currently running this command will arrange for it to be upgraded the next time it is stopped (e.g.@: by @code{herd stop X} or @code{herd restart X})."
43414 msgstr ""
43415
43416 #. type: table
43417 #: doc/guix.texi:24296
43418 msgid "This command creates a new generation whose number is one greater than the current generation (as reported by @command{guix system list-generations}). If that generation already exists, it will be overwritten. This behavior mirrors that of @command{guix package} (@pxref{Invoking guix package})."
43419 msgstr ""
43420
43421 #. type: table
43422 #: doc/guix.texi:24301
43423 msgid "It also adds a bootloader menu entry for the new OS configuration, ---unless @option{--no-bootloader} is passed. For GRUB, it moves entries for older configurations to a submenu, allowing you to choose an older system generation at boot time should you need it."
43424 msgstr ""
43425
43426 #. type: quotation
43427 #: doc/guix.texi:24309
43428 msgid "It is highly recommended to run @command{guix pull} once before you run @command{guix system reconfigure} for the first time (@pxref{Invoking guix pull}). Failing to do that you would see an older version of Guix once @command{reconfigure} has completed."
43429 msgstr ""
43430
43431 #. type: item
43432 #: doc/guix.texi:24311
43433 #, no-wrap
43434 msgid "switch-generation"
43435 msgstr ""
43436
43437 #. type: table
43438 #: doc/guix.texi:24320
43439 msgid "Switch to an existing system generation. This action atomically switches the system profile to the specified system generation. It also rearranges the system's existing bootloader menu entries. It makes the menu entry for the specified system generation the default, and it moves the entries for the other generatiors to a submenu, if supported by the bootloader being used. The next time the system boots, it will use the specified system generation."
43440 msgstr ""
43441
43442 #. type: table
43443 #: doc/guix.texi:24324
43444 msgid "The bootloader itself is not being reinstalled when using this command. Thus, the installed bootloader is used with an updated configuration file."
43445 msgstr ""
43446
43447 #. type: table
43448 #: doc/guix.texi:24328
43449 msgid "The target generation can be specified explicitly by its generation number. For example, the following invocation would switch to system generation 7:"
43450 msgstr ""
43451
43452 #. type: example
43453 #: doc/guix.texi:24331
43454 #, no-wrap
43455 msgid "guix system switch-generation 7\n"
43456 msgstr ""
43457
43458 #. type: table
43459 #: doc/guix.texi:24339
43460 msgid "The target generation can also be specified relative to the current generation with the form @code{+N} or @code{-N}, where @code{+3} means ``3 generations ahead of the current generation,'' and @code{-1} means ``1 generation prior to the current generation.'' When specifying a negative value such as @code{-1}, you must precede it with @code{--} to prevent it from being parsed as an option. For example:"
43461 msgstr ""
43462
43463 #. type: example
43464 #: doc/guix.texi:24342
43465 #, no-wrap
43466 msgid "guix system switch-generation -- -1\n"
43467 msgstr ""
43468
43469 #. type: table
43470 #: doc/guix.texi:24350
43471 msgid "Currently, the effect of invoking this action is @emph{only} to switch the system profile to an existing generation and rearrange the bootloader menu entries. To actually start using the target system generation, you must reboot after running this action. In the future, it will be updated to do the same things as @command{reconfigure}, like activating and deactivating services."
43472 msgstr ""
43473
43474 #. type: table
43475 #: doc/guix.texi:24352
43476 msgid "This action will fail if the specified generation does not exist."
43477 msgstr ""
43478
43479 #. type: item
43480 #: doc/guix.texi:24353
43481 #, no-wrap
43482 msgid "roll-back"
43483 msgstr ""
43484
43485 #. type: table
43486 #: doc/guix.texi:24359
43487 msgid "Switch to the preceding system generation. The next time the system boots, it will use the preceding system generation. This is the inverse of @command{reconfigure}, and it is exactly the same as invoking @command{switch-generation} with an argument of @code{-1}."
43488 msgstr ""
43489
43490 #. type: table
43491 #: doc/guix.texi:24363
43492 msgid "Currently, as with @command{switch-generation}, you must reboot after running this action to actually start using the preceding system generation."
43493 msgstr ""
43494
43495 #. type: item
43496 #: doc/guix.texi:24364
43497 #, no-wrap
43498 msgid "delete-generations"
43499 msgstr ""
43500
43501 #. type: cindex
43502 #: doc/guix.texi:24365
43503 #, no-wrap
43504 msgid "deleting system generations"
43505 msgstr ""
43506
43507 #. type: cindex
43508 #: doc/guix.texi:24366
43509 #, no-wrap
43510 msgid "saving space"
43511 msgstr ""
43512
43513 #. type: table
43514 #: doc/guix.texi:24370
43515 msgid "Delete system generations, making them candidates for garbage collection (@pxref{Invoking guix gc}, for information on how to run the ``garbage collector'')."
43516 msgstr ""
43517
43518 #. type: table
43519 #: doc/guix.texi:24374
43520 msgid "This works in the same way as @command{guix package --delete-generations} (@pxref{Invoking guix package, @code{--delete-generations}}). With no arguments, all system generations but the current one are deleted:"
43521 msgstr ""
43522
43523 #. type: example
43524 #: doc/guix.texi:24377
43525 #, no-wrap
43526 msgid "guix system delete-generations\n"
43527 msgstr ""
43528
43529 #. type: table
43530 #: doc/guix.texi:24381
43531 msgid "You can also select the generations you want to delete. The example below deletes all the system generations that are more than two month old:"
43532 msgstr ""
43533
43534 #. type: example
43535 #: doc/guix.texi:24384
43536 #, no-wrap
43537 msgid "guix system delete-generations 2m\n"
43538 msgstr ""
43539
43540 #. type: table
43541 #: doc/guix.texi:24389
43542 msgid "Running this command automatically reinstalls the bootloader with an updated list of menu entries---e.g., the ``old generations'' sub-menu in GRUB no longer lists the generations that have been deleted."
43543 msgstr ""
43544
43545 #. type: table
43546 #: doc/guix.texi:24394
43547 msgid "Build the derivation of the operating system, which includes all the configuration files and programs needed to boot and run the system. This action does not actually install anything."
43548 msgstr ""
43549
43550 #. type: item
43551 #: doc/guix.texi:24395
43552 #, no-wrap
43553 msgid "init"
43554 msgstr ""
43555
43556 #. type: table
43557 #: doc/guix.texi:24399
43558 msgid "Populate the given directory with all the files necessary to run the operating system specified in @var{file}. This is useful for first-time installations of Guix System. For instance:"
43559 msgstr ""
43560
43561 #. type: example
43562 #: doc/guix.texi:24402
43563 #, no-wrap
43564 msgid "guix system init my-os-config.scm /mnt\n"
43565 msgstr ""
43566
43567 #. type: table
43568 #: doc/guix.texi:24409
43569 msgid "copies to @file{/mnt} all the store items required by the configuration specified in @file{my-os-config.scm}. This includes configuration files, packages, and so on. It also creates other essential files needed for the system to operate correctly---e.g., the @file{/etc}, @file{/var}, and @file{/run} directories, and the @file{/bin/sh} file."
43570 msgstr ""
43571
43572 #. type: table
43573 #: doc/guix.texi:24413
43574 msgid "This command also installs bootloader on the target specified in @file{my-os-config}, unless the @option{--no-bootloader} option was passed."
43575 msgstr ""
43576
43577 #. type: item
43578 #: doc/guix.texi:24414
43579 #, no-wrap
43580 msgid "vm"
43581 msgstr ""
43582
43583 #. type: cindex
43584 #: doc/guix.texi:24415 doc/guix.texi:24683
43585 #, no-wrap
43586 msgid "virtual machine"
43587 msgstr ""
43588
43589 #. type: cindex
43590 #: doc/guix.texi:24416
43591 #, no-wrap
43592 msgid "VM"
43593 msgstr ""
43594
43595 #. type: anchor{#1}
43596 #: doc/guix.texi:24420
43597 msgid "guix system vm"
43598 msgstr ""
43599
43600 #. type: table
43601 #: doc/guix.texi:24420
43602 msgid "Build a virtual machine that contains the operating system declared in @var{file}, and return a script to run that virtual machine (VM)."
43603 msgstr ""
43604
43605 #. type: quotation
43606 #: doc/guix.texi:24428
43607 msgid "The @code{vm} action and others below can use KVM support in the Linux-libre kernel. Specifically, if the machine has hardware virtualization support, the corresponding KVM kernel module should be loaded, and the @file{/dev/kvm} device node must exist and be readable and writable by the user and by the build users of the daemon (@pxref{Build Environment Setup})."
43608 msgstr ""
43609
43610 #. type: table
43611 #: doc/guix.texi:24433
43612 msgid "Arguments given to the script are passed to QEMU as in the example below, which enables networking and requests 1@tie{}GiB of RAM for the emulated machine:"
43613 msgstr ""
43614
43615 #. type: example
43616 #: doc/guix.texi:24436
43617 #, no-wrap
43618 msgid "$ /gnu/store/@dots{}-run-vm.sh -m 1024 -net user\n"
43619 msgstr ""
43620
43621 #. type: table
43622 #: doc/guix.texi:24439
43623 msgid "The VM shares its store with the host system."
43624 msgstr ""
43625
43626 #. type: table
43627 #: doc/guix.texi:24444
43628 msgid "Additional file systems can be shared between the host and the VM using the @code{--share} and @code{--expose} command-line options: the former specifies a directory to be shared with write access, while the latter provides read-only access to the shared directory."
43629 msgstr ""
43630
43631 #. type: table
43632 #: doc/guix.texi:24448
43633 msgid "The example below creates a VM in which the user's home directory is accessible read-only, and where the @file{/exchange} directory is a read-write mapping of @file{$HOME/tmp} on the host:"
43634 msgstr ""
43635
43636 #. type: example
43637 #: doc/guix.texi:24452
43638 #, no-wrap
43639 msgid ""
43640 "guix system vm my-config.scm \\\n"
43641 " --expose=$HOME --share=$HOME/tmp=/exchange\n"
43642 msgstr ""
43643
43644 #. type: table
43645 #: doc/guix.texi:24457
43646 msgid "On GNU/Linux, the default is to boot directly to the kernel; this has the advantage of requiring only a very tiny root disk image since the store of the host can then be mounted."
43647 msgstr ""
43648
43649 #. type: table
43650 #: doc/guix.texi:24463
43651 msgid "The @code{--full-boot} option forces a complete boot sequence, starting with the bootloader. This requires more disk space since a root image containing at least the kernel, initrd, and bootloader data files must be created. The @code{--image-size} option can be used to specify the size of the image."
43652 msgstr ""
43653
43654 #. type: cindex
43655 #: doc/guix.texi:24464
43656 #, no-wrap
43657 msgid "System images, creation in various formats"
43658 msgstr ""
43659
43660 #. type: cindex
43661 #: doc/guix.texi:24465
43662 #, no-wrap
43663 msgid "Creating system images in various formats"
43664 msgstr ""
43665
43666 #. type: item
43667 #: doc/guix.texi:24466
43668 #, no-wrap
43669 msgid "vm-image"
43670 msgstr ""
43671
43672 #. type: itemx
43673 #: doc/guix.texi:24467
43674 #, no-wrap
43675 msgid "disk-image"
43676 msgstr ""
43677
43678 #. type: itemx
43679 #: doc/guix.texi:24468
43680 #, no-wrap
43681 msgid "docker-image"
43682 msgstr ""
43683
43684 #. type: table
43685 #: doc/guix.texi:24476
43686 msgid "Return a virtual machine, disk image, or Docker image of the operating system declared in @var{file} that stands alone. By default, @command{guix system} estimates the size of the image needed to store the system, but you can use the @option{--image-size} option to specify a value. Docker images are built to contain exactly what they need, so the @option{--image-size} option is ignored in the case of @code{docker-image}."
43687 msgstr ""
43688
43689 #. type: table
43690 #: doc/guix.texi:24479
43691 msgid "You can specify the root file system type by using the @option{--file-system-type} option. It defaults to @code{ext4}."
43692 msgstr ""
43693
43694 #. type: table
43695 #: doc/guix.texi:24483
43696 msgid "When using @code{vm-image}, the returned image is in qcow2 format, which the QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for more information on how to run the image in a virtual machine."
43697 msgstr ""
43698
43699 #. type: table
43700 #: doc/guix.texi:24488
43701 msgid "When using @code{disk-image}, a raw disk image is produced; it can be copied as is to a USB stick, for instance. Assuming @code{/dev/sdc} is the device corresponding to a USB stick, one can copy the image to it using the following command:"
43702 msgstr ""
43703
43704 #. type: example
43705 #: doc/guix.texi:24491
43706 #, no-wrap
43707 msgid "# dd if=$(guix system disk-image my-os.scm) of=/dev/sdc\n"
43708 msgstr ""
43709
43710 #. type: table
43711 #: doc/guix.texi:24498
43712 msgid "When using @code{docker-image}, a Docker image is produced. Guix builds the image from scratch, not from a pre-existing Docker base image. As a result, it contains @emph{exactly} what you define in the operating system configuration file. You can then load the image and launch a Docker container using commands like the following:"
43713 msgstr ""
43714
43715 #. type: example
43716 #: doc/guix.texi:24504
43717 #, no-wrap
43718 msgid ""
43719 "image_id=\"$(docker load < guix-system-docker-image.tar.gz)\"\n"
43720 "docker run -e GUIX_NEW_SYSTEM=/var/guix/profiles/system \\\\\n"
43721 " --entrypoint /var/guix/profiles/system/profile/bin/guile \\\\\n"
43722 " $image_id /var/guix/profiles/system/boot\n"
43723 msgstr ""
43724
43725 #. type: table
43726 #: doc/guix.texi:24514
43727 msgid "This command starts a new Docker container from the specified image. It will boot the Guix system in the usual manner, which means it will start any services you have defined in the operating system configuration. Depending on what you run in the Docker container, it may be necessary to give the container additional permissions. For example, if you intend to build software using Guix inside of the Docker container, you may need to pass the @option{--privileged} option to @code{docker run}."
43728 msgstr ""
43729
43730 #. type: table
43731 #: doc/guix.texi:24522
43732 msgid "Return a script to run the operating system declared in @var{file} within a container. Containers are a set of lightweight isolation mechanisms provided by the kernel Linux-libre. Containers are substantially less resource-demanding than full virtual machines since the kernel, shared objects, and other resources can be shared with the host system; this also means they provide thinner isolation."
43733 msgstr ""
43734
43735 #. type: table
43736 #: doc/guix.texi:24526
43737 msgid "Currently, the script must be run as root in order to support more than a single user and group. The container shares its store with the host system."
43738 msgstr ""
43739
43740 #. type: table
43741 #: doc/guix.texi:24530
43742 msgid "As with the @code{vm} action (@pxref{guix system vm}), additional file systems to be shared between the host and container can be specified using the @option{--share} and @option{--expose} options:"
43743 msgstr ""
43744
43745 #. type: example
43746 #: doc/guix.texi:24534
43747 #, no-wrap
43748 msgid ""
43749 "guix system container my-config.scm \\\n"
43750 " --expose=$HOME --share=$HOME/tmp=/exchange\n"
43751 msgstr ""
43752
43753 #. type: quotation
43754 #: doc/guix.texi:24538
43755 msgid "This option requires Linux-libre 3.19 or newer."
43756 msgstr ""
43757
43758 #. type: Plain text
43759 #: doc/guix.texi:24545
43760 msgid "@var{options} can contain any of the common build options (@pxref{Common Build Options}). In addition, @var{options} can contain one of the following:"
43761 msgstr ""
43762
43763 #. type: table
43764 #: doc/guix.texi:24554
43765 msgid "Consider the operating-system @var{expr} evaluates to. This is an alternative to specifying a file which evaluates to an operating system. This is used to generate the Guix system installer @pxref{Building the Installation Image})."
43766 msgstr ""
43767
43768 #. type: table
43769 #: doc/guix.texi:24559
43770 msgid "Attempt to build for @var{system} instead of the host system type. This works as per @command{guix build} (@pxref{Invoking guix build})."
43771 msgstr ""
43772
43773 #. type: item
43774 #: doc/guix.texi:24560
43775 #, no-wrap
43776 msgid "--derivation"
43777 msgstr ""
43778
43779 #. type: table
43780 #: doc/guix.texi:24564
43781 msgid "Return the derivation file name of the given operating system without building anything."
43782 msgstr ""
43783
43784 #. type: item
43785 #: doc/guix.texi:24565
43786 #, no-wrap
43787 msgid "--file-system-type=@var{type}"
43788 msgstr ""
43789
43790 #. type: table
43791 #: doc/guix.texi:24569
43792 msgid "For the @code{disk-image} action, create a file system of the given @var{type} on the image."
43793 msgstr ""
43794
43795 #. type: table
43796 #: doc/guix.texi:24571
43797 msgid "When this option is omitted, @command{guix system} uses @code{ext4}."
43798 msgstr ""
43799
43800 #. type: cindex
43801 #: doc/guix.texi:24572
43802 #, no-wrap
43803 msgid "ISO-9660 format"
43804 msgstr ""
43805
43806 #. type: cindex
43807 #: doc/guix.texi:24573
43808 #, no-wrap
43809 msgid "CD image format"
43810 msgstr ""
43811
43812 #. type: cindex
43813 #: doc/guix.texi:24574
43814 #, no-wrap
43815 msgid "DVD image format"
43816 msgstr ""
43817
43818 #. type: table
43819 #: doc/guix.texi:24577
43820 msgid "@code{--file-system-type=iso9660} produces an ISO-9660 image, suitable for burning on CDs and DVDs."
43821 msgstr ""
43822
43823 #. type: item
43824 #: doc/guix.texi:24578
43825 #, no-wrap
43826 msgid "--image-size=@var{size}"
43827 msgstr ""
43828
43829 #. type: table
43830 #: doc/guix.texi:24583
43831 msgid "For the @code{vm-image} and @code{disk-image} actions, create an image of the given @var{size}. @var{size} may be a number of bytes, or it may include a unit as a suffix (@pxref{Block size, size specifications,, coreutils, GNU Coreutils})."
43832 msgstr ""
43833
43834 #. type: table
43835 #: doc/guix.texi:24587
43836 msgid "When this option is omitted, @command{guix system} computes an estimate of the image size as a function of the size of the system declared in @var{file}."
43837 msgstr ""
43838
43839 #. type: item
43840 #: doc/guix.texi:24593
43841 #, no-wrap
43842 msgid "--skip-checks"
43843 msgstr ""
43844
43845 #. type: table
43846 #: doc/guix.texi:24595
43847 msgid "Skip pre-installation safety checks."
43848 msgstr ""
43849
43850 #. type: table
43851 #: doc/guix.texi:24602
43852 msgid "By default, @command{guix system init} and @command{guix system reconfigure} perform safety checks: they make sure the file systems that appear in the @code{operating-system} declaration actually exist (@pxref{File Systems}), and that any Linux kernel modules that may be needed at boot time are listed in @code{initrd-modules} (@pxref{Initial RAM Disk}). Passing this option skips these tests altogether."
43853 msgstr ""
43854
43855 #. type: cindex
43856 #: doc/guix.texi:24603
43857 #, no-wrap
43858 msgid "on-error"
43859 msgstr ""
43860
43861 #. type: cindex
43862 #: doc/guix.texi:24604
43863 #, no-wrap
43864 msgid "on-error strategy"
43865 msgstr ""
43866
43867 #. type: cindex
43868 #: doc/guix.texi:24605
43869 #, no-wrap
43870 msgid "error strategy"
43871 msgstr ""
43872
43873 #. type: item
43874 #: doc/guix.texi:24606
43875 #, no-wrap
43876 msgid "--on-error=@var{strategy}"
43877 msgstr ""
43878
43879 #. type: table
43880 #: doc/guix.texi:24609
43881 msgid "Apply @var{strategy} when an error occurs when reading @var{file}. @var{strategy} may be one of the following:"
43882 msgstr ""
43883
43884 #. type: item
43885 #: doc/guix.texi:24611
43886 #, no-wrap
43887 msgid "nothing-special"
43888 msgstr ""
43889
43890 #. type: table
43891 #: doc/guix.texi:24613
43892 msgid "Report the error concisely and exit. This is the default strategy."
43893 msgstr ""
43894
43895 #. type: item
43896 #: doc/guix.texi:24614
43897 #, no-wrap
43898 msgid "backtrace"
43899 msgstr ""
43900
43901 #. type: table
43902 #: doc/guix.texi:24616
43903 msgid "Likewise, but also display a backtrace."
43904 msgstr ""
43905
43906 #. type: item
43907 #: doc/guix.texi:24617
43908 #, no-wrap
43909 msgid "debug"
43910 msgstr ""
43911
43912 #. type: table
43913 #: doc/guix.texi:24623
43914 msgid "Report the error and enter Guile's debugger. From there, you can run commands such as @code{,bt} to get a backtrace, @code{,locals} to display local variable values, and more generally inspect the state of the program. @xref{Debug Commands,,, guile, GNU Guile Reference Manual}, for a list of available debugging commands."
43915 msgstr ""
43916
43917 #. type: Plain text
43918 #: doc/guix.texi:24630
43919 msgid "Once you have built, configured, re-configured, and re-re-configured your Guix installation, you may find it useful to list the operating system generations available on disk---and that you can choose from the bootloader boot menu:"
43920 msgstr ""
43921
43922 #. type: item
43923 #: doc/guix.texi:24633
43924 #, no-wrap
43925 msgid "list-generations"
43926 msgstr ""
43927
43928 #. type: table
43929 #: doc/guix.texi:24638
43930 msgid "List a summary of each generation of the operating system available on disk, in a human-readable way. This is similar to the @option{--list-generations} option of @command{guix package} (@pxref{Invoking guix package})."
43931 msgstr ""
43932
43933 #. type: table
43934 #: doc/guix.texi:24643
43935 msgid "Optionally, one can specify a pattern, with the same syntax that is used in @command{guix package --list-generations}, to restrict the list of generations displayed. For instance, the following command displays generations that are up to 10 days old:"
43936 msgstr ""
43937
43938 #. type: example
43939 #: doc/guix.texi:24646
43940 #, no-wrap
43941 msgid "$ guix system list-generations 10d\n"
43942 msgstr ""
43943
43944 #. type: Plain text
43945 #: doc/guix.texi:24653
43946 msgid "The @command{guix system} command has even more to offer! The following sub-commands allow you to visualize how your system services relate to each other:"
43947 msgstr ""
43948
43949 #. type: anchor{#1}
43950 #: doc/guix.texi:24655
43951 msgid "system-extension-graph"
43952 msgstr ""
43953
43954 #. type: item
43955 #: doc/guix.texi:24657
43956 #, no-wrap
43957 msgid "extension-graph"
43958 msgstr ""
43959
43960 #. type: table
43961 #: doc/guix.texi:24662
43962 msgid "Emit in Dot/Graphviz format to standard output the @dfn{service extension graph} of the operating system defined in @var{file} (@pxref{Service Composition}, for more information on service extensions.)"
43963 msgstr ""
43964
43965 #. type: table
43966 #: doc/guix.texi:24664
43967 msgid "The command:"
43968 msgstr ""
43969
43970 #. type: example
43971 #: doc/guix.texi:24667
43972 #, no-wrap
43973 msgid "$ guix system extension-graph @var{file} | dot -Tpdf > services.pdf\n"
43974 msgstr ""
43975
43976 #. type: table
43977 #: doc/guix.texi:24670
43978 msgid "produces a PDF file showing the extension relations among services."
43979 msgstr ""
43980
43981 #. type: anchor{#1}
43982 #: doc/guix.texi:24672
43983 msgid "system-shepherd-graph"
43984 msgstr ""
43985
43986 #. type: item
43987 #: doc/guix.texi:24672
43988 #, no-wrap
43989 msgid "shepherd-graph"
43990 msgstr ""
43991
43992 #. type: table
43993 #: doc/guix.texi:24677
43994 msgid "Emit in Dot/Graphviz format to standard output the @dfn{dependency graph} of shepherd services of the operating system defined in @var{file}. @xref{Shepherd Services}, for more information and for an example graph."
43995 msgstr ""
43996
43997 #. type: section
43998 #: doc/guix.texi:24681
43999 #, no-wrap
44000 msgid "Running Guix in a Virtual Machine"
44001 msgstr ""
44002
44003 #. type: Plain text
44004 #: doc/guix.texi:24690
44005 msgid "To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image distributed at @url{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.xz}. This image is a compressed image in QCOW format. You will first need to decompress with @command{xz -d}, and then you can pass it to an emulator such as QEMU (see below for details)."
44006 msgstr ""
44007
44008 #. type: Plain text
44009 #: doc/guix.texi:24696
44010 msgid "This image boots the Xfce graphical environment and it contains some commonly-used tools. You can install more software in the image by running @command{guix package} in a terminal (@pxref{Invoking guix package}). You can also reconfigure the system based on its initial configuration file available as @file{/etc/config.scm} (@pxref{Using the Configuration System})."
44011 msgstr ""
44012
44013 #. type: Plain text
44014 #: doc/guix.texi:24701
44015 msgid "Instead of using this pre-built image, one can also build their own virtual machine image using @command{guix system vm-image} (@pxref{Invoking guix system}). The returned image is in qcow2 format, which the @uref{https://qemu.org/, QEMU emulator} can efficiently use."
44016 msgstr ""
44017
44018 #. type: cindex
44019 #: doc/guix.texi:24702
44020 #, no-wrap
44021 msgid "QEMU"
44022 msgstr ""
44023
44024 #. type: Plain text
44025 #: doc/guix.texi:24709
44026 msgid "If you built your own image, you must copy it out of the store (@pxref{The Store}) and give yourself permission to write to the copy before you can use it. When invoking QEMU, you must choose a system emulator that is suitable for your hardware platform. Here is a minimal QEMU invocation that will boot the result of @command{guix system vm-image} on x86_64 hardware:"
44027 msgstr ""
44028
44029 #. type: example
44030 #: doc/guix.texi:24716
44031 #, no-wrap
44032 msgid ""
44033 "$ qemu-system-x86_64 \\\n"
44034 " -net user -net nic,model=virtio \\\n"
44035 " -enable-kvm -m 512 \\\n"
44036 " -device virtio-blk,drive=myhd \\\n"
44037 " -drive if=none,file=/tmp/qemu-image,id=myhd\n"
44038 msgstr ""
44039
44040 #. type: Plain text
44041 #: doc/guix.texi:24719
44042 msgid "Here is what each of these options means:"
44043 msgstr ""
44044
44045 #. type: item
44046 #: doc/guix.texi:24721
44047 #, no-wrap
44048 msgid "qemu-system-x86_64"
44049 msgstr ""
44050
44051 #. type: table
44052 #: doc/guix.texi:24724
44053 msgid "This specifies the hardware platform to emulate. This should match the host."
44054 msgstr ""
44055
44056 #. type: item
44057 #: doc/guix.texi:24725
44058 #, no-wrap
44059 msgid "-net user"
44060 msgstr ""
44061
44062 #. type: table
44063 #: doc/guix.texi:24729
44064 msgid "Enable the unprivileged user-mode network stack. The guest OS can access the host but not vice versa. This is the simplest way to get the guest OS online."
44065 msgstr ""
44066
44067 #. type: item
44068 #: doc/guix.texi:24730
44069 #, no-wrap
44070 msgid "-net nic,model=virtio"
44071 msgstr ""
44072
44073 #. type: table
44074 #: doc/guix.texi:24735
44075 msgid "You must create a network interface of a given model. If you do not create a NIC, the boot will fail. Assuming your hardware platform is x86_64, you can get a list of available NIC models by running @command{qemu-system-x86_64 -net nic,model=help}."
44076 msgstr ""
44077
44078 #. type: item
44079 #: doc/guix.texi:24736
44080 #, no-wrap
44081 msgid "-enable-kvm"
44082 msgstr ""
44083
44084 #. type: table
44085 #: doc/guix.texi:24740
44086 msgid "If your system has hardware virtualization extensions, enabling the virtual machine support (KVM) of the Linux kernel will make things run faster."
44087 msgstr ""
44088
44089 #. type: item
44090 #: doc/guix.texi:24742
44091 #, no-wrap
44092 msgid "-m 1024"
44093 msgstr ""
44094
44095 #. type: table
44096 #: doc/guix.texi:24745
44097 msgid "RAM available to the guest OS, in mebibytes. Defaults to 128@tie{}MiB, which may be insufficient for some operations."
44098 msgstr ""
44099
44100 #. type: item
44101 #: doc/guix.texi:24746
44102 #, no-wrap
44103 msgid "-device virtio-blk,drive=myhd"
44104 msgstr ""
44105
44106 #. type: table
44107 #: doc/guix.texi:24751
44108 msgid "Create a @code{virtio-blk} drive called ``myhd''. @code{virtio-blk} is a ``paravirtualization'' mechanism for block devices that allows QEMU to achieve better performance than if it were emulating a complete disk drive. See the QEMU and KVM documentation for more info."
44109 msgstr ""
44110
44111 #. type: item
44112 #: doc/guix.texi:24752
44113 #, no-wrap
44114 msgid "-drive if=none,file=/tmp/qemu-image,id=myhd"
44115 msgstr ""
44116
44117 #. type: table
44118 #: doc/guix.texi:24755
44119 msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store the the ``myhd'' drive."
44120 msgstr ""
44121
44122 #. type: Plain text
44123 #: doc/guix.texi:24765
44124 msgid "The default @command{run-vm.sh} script that is returned by an invocation of @command{guix system vm} does not add a @command{-net user} flag by default. To get network access from within the vm add the @code{(dhcp-client-service)} to your system definition and start the VM using @command{`guix system vm config.scm` -net user}. An important caveat of using @command{-net user} for networking is that @command{ping} will not work, because it uses the ICMP protocol. You'll have to use a different command to check for network connectivity, for example @command{guix download}."
44125 msgstr ""
44126
44127 #. type: subsection
44128 #: doc/guix.texi:24766
44129 #, no-wrap
44130 msgid "Connecting Through SSH"
44131 msgstr ""
44132
44133 #. type: Plain text
44134 #: doc/guix.texi:24774
44135 msgid "To enable SSH inside a VM you need to add an SSH server like @code{openssh-service-type} to your VM (@pxref{Networking Services, @code{openssh-service-type}}). In addition you need to forward the SSH port, 22 by default, to the host. You can do this with"
44136 msgstr ""
44137
44138 #. type: example
44139 #: doc/guix.texi:24777
44140 #, no-wrap
44141 msgid "`guix system vm config.scm` -net user,hostfwd=tcp::10022-:22\n"
44142 msgstr ""
44143
44144 #. type: Plain text
44145 #: doc/guix.texi:24780
44146 msgid "To connect to the VM you can run"
44147 msgstr ""
44148
44149 #. type: example
44150 #: doc/guix.texi:24783
44151 #, no-wrap
44152 msgid "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022\n"
44153 msgstr ""
44154
44155 #. type: Plain text
44156 #: doc/guix.texi:24790
44157 msgid "The @command{-p} tells @command{ssh} the port you want to connect to. @command{-o UserKnownHostsFile=/dev/null} prevents @command{ssh} from complaining every time you modify your @command{config.scm} file and the @command{-o StrictHostKeyChecking=no} prevents you from having to allow a connection to an unknown host every time you connect."
44158 msgstr ""
44159
44160 #. type: subsection
44161 #: doc/guix.texi:24791
44162 #, no-wrap
44163 msgid "Using @command{virt-viewer} with Spice"
44164 msgstr ""
44165
44166 #. type: Plain text
44167 #: doc/guix.texi:24797
44168 msgid "As an alternative to the default @command{qemu} graphical client you can use the @command{remote-viewer} from the @command{virt-viewer} package. To connect pass the @command{-spice port=5930,disable-ticketing} flag to @command{qemu}. See previous section for further information on how to do this."
44169 msgstr ""
44170
44171 #. type: Plain text
44172 #: doc/guix.texi:24800
44173 msgid "Spice also allows you to do some nice stuff like share your clipboard with your VM. To enable that you'll also have to pass the following flags to @command{qemu}:"
44174 msgstr ""
44175
44176 #. type: example
44177 #: doc/guix.texi:24806
44178 #, no-wrap
44179 msgid ""
44180 "-device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5\n"
44181 "-chardev spicevmc,name=vdagent,id=vdagent\n"
44182 "-device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,\n"
44183 "name=com.redhat.spice.0\n"
44184 msgstr ""
44185
44186 #. type: Plain text
44187 #: doc/guix.texi:24809
44188 msgid "You'll also need to add the @pxref{Miscellaneous Services, Spice service}."
44189 msgstr ""
44190
44191 #. type: Plain text
44192 #: doc/guix.texi:24816
44193 msgid "The previous sections show the available services and how one can combine them in an @code{operating-system} declaration. But how do we define them in the first place? And what is a service anyway?"
44194 msgstr ""
44195
44196 #. type: cindex
44197 #: doc/guix.texi:24828
44198 #, no-wrap
44199 msgid "daemons"
44200 msgstr ""
44201
44202 #. type: Plain text
44203 #: doc/guix.texi:24841
44204 msgid "Here we define a @dfn{service} as, broadly, something that extends the functionality of the operating system. Often a service is a process---a @dfn{daemon}---started when the system boots: a secure shell server, a Web server, the Guix build daemon, etc. Sometimes a service is a daemon whose execution can be triggered by another daemon---e.g., an FTP server started by @command{inetd} or a D-Bus service activated by @command{dbus-daemon}. Occasionally, a service does not map to a daemon. For instance, the ``account'' service collects user accounts and makes sure they exist when the system runs; the ``udev'' service collects device management rules and makes them available to the eudev daemon; the @file{/etc} service populates the @file{/etc} directory of the system."
44205 msgstr ""
44206
44207 #. type: cindex
44208 #: doc/guix.texi:24842
44209 #, no-wrap
44210 msgid "service extensions"
44211 msgstr ""
44212
44213 #. type: Plain text
44214 #: doc/guix.texi:24854
44215 msgid "Guix system services are connected by @dfn{extensions}. For instance, the secure shell service @emph{extends} the Shepherd---the initialization system, running as PID@tie{}1---by giving it the command lines to start and stop the secure shell daemon (@pxref{Networking Services, @code{openssh-service-type}}); the UPower service extends the D-Bus service by passing it its @file{.service} specification, and extends the udev service by passing it device management rules (@pxref{Desktop Services, @code{upower-service}}); the Guix daemon service extends the Shepherd by passing it the command lines to start and stop the daemon, and extends the account service by passing it a list of required build user accounts (@pxref{Base Services})."
44216 msgstr ""
44217
44218 #. type: Plain text
44219 #: doc/guix.texi:24858
44220 msgid "All in all, services and their ``extends'' relations form a directed acyclic graph (DAG). If we represent services as boxes and extensions as arrows, a typical system might provide something like this:"
44221 msgstr ""
44222
44223 #. type: Plain text
44224 #: doc/guix.texi:24860
44225 msgid "@image{images/service-graph,,5in,Typical service extension graph.}"
44226 msgstr ""
44227
44228 #. type: cindex
44229 #: doc/guix.texi:24861
44230 #, no-wrap
44231 msgid "system service"
44232 msgstr ""
44233
44234 #. type: Plain text
44235 #: doc/guix.texi:24869
44236 msgid "At the bottom, we see the @dfn{system service}, which produces the directory containing everything to run and boot the system, as returned by the @command{guix system build} command. @xref{Service Reference}, to learn about the other service types shown here. @xref{system-extension-graph, the @command{guix system extension-graph} command}, for information on how to generate this representation for a particular operating system definition."
44237 msgstr ""
44238
44239 #. type: cindex
44240 #: doc/guix.texi:24870
44241 #, no-wrap
44242 msgid "service types"
44243 msgstr ""
44244
44245 #. type: Plain text
44246 #: doc/guix.texi:24876
44247 msgid "Technically, developers can define @dfn{service types} to express these relations. There can be any number of services of a given type on the system---for instance, a system running two instances of the GNU secure shell server (lsh) has two instances of @code{lsh-service-type}, with different parameters."
44248 msgstr ""
44249
44250 #. type: Plain text
44251 #: doc/guix.texi:24879
44252 msgid "The following section describes the programming interface for service types and services."
44253 msgstr ""
44254
44255 #. type: Plain text
44256 #: doc/guix.texi:24886
44257 msgid "A @dfn{service type} is a node in the DAG described above. Let us start with a simple example, the service type for the Guix build daemon (@pxref{Invoking guix-daemon}):"
44258 msgstr ""
44259
44260 #. type: example
44261 #: doc/guix.texi:24896
44262 #, no-wrap
44263 msgid ""
44264 "(define guix-service-type\n"
44265 " (service-type\n"
44266 " (name 'guix)\n"
44267 " (extensions\n"
44268 " (list (service-extension shepherd-root-service-type guix-shepherd-service)\n"
44269 " (service-extension account-service-type guix-accounts)\n"
44270 " (service-extension activation-service-type guix-activation)))\n"
44271 " (default-value (guix-configuration))))\n"
44272 msgstr ""
44273
44274 #. type: Plain text
44275 #: doc/guix.texi:24900
44276 msgid "It defines three things:"
44277 msgstr ""
44278
44279 #. type: enumerate
44280 #: doc/guix.texi:24904
44281 msgid "A name, whose sole purpose is to make inspection and debugging easier."
44282 msgstr ""
44283
44284 #. type: enumerate
44285 #: doc/guix.texi:24909
44286 msgid "A list of @dfn{service extensions}, where each extension designates the target service type and a procedure that, given the parameters of the service, returns a list of objects to extend the service of that type."
44287 msgstr ""
44288
44289 #. type: enumerate
44290 #: doc/guix.texi:24912
44291 msgid "Every service type has at least one service extension. The only exception is the @dfn{boot service type}, which is the ultimate service."
44292 msgstr ""
44293
44294 #. type: enumerate
44295 #: doc/guix.texi:24915
44296 msgid "Optionally, a default value for instances of this type."
44297 msgstr ""
44298
44299 #. type: Plain text
44300 #: doc/guix.texi:24918
44301 msgid "In this example, @code{guix-service-type} extends three services:"
44302 msgstr ""
44303
44304 #. type: item
44305 #: doc/guix.texi:24920
44306 #, no-wrap
44307 msgid "shepherd-root-service-type"
44308 msgstr ""
44309
44310 #. type: table
44311 #: doc/guix.texi:24925
44312 msgid "The @code{guix-shepherd-service} procedure defines how the Shepherd service is extended. Namely, it returns a @code{<shepherd-service>} object that defines how @command{guix-daemon} is started and stopped (@pxref{Shepherd Services})."
44313 msgstr ""
44314
44315 #. type: item
44316 #: doc/guix.texi:24926
44317 #, no-wrap
44318 msgid "account-service-type"
44319 msgstr ""
44320
44321 #. type: table
44322 #: doc/guix.texi:24931
44323 msgid "This extension for this service is computed by @code{guix-accounts}, which returns a list of @code{user-group} and @code{user-account} objects representing the build user accounts (@pxref{Invoking guix-daemon})."
44324 msgstr ""
44325
44326 #. type: item
44327 #: doc/guix.texi:24932
44328 #, no-wrap
44329 msgid "activation-service-type"
44330 msgstr ""
44331
44332 #. type: table
44333 #: doc/guix.texi:24936
44334 msgid "Here @code{guix-activation} is a procedure that returns a gexp, which is a code snippet to run at ``activation time''---e.g., when the service is booted."
44335 msgstr ""
44336
44337 #. type: Plain text
44338 #: doc/guix.texi:24939
44339 msgid "A service of this type is instantiated like this:"
44340 msgstr ""
44341
44342 #. type: example
44343 #: doc/guix.texi:24945
44344 #, no-wrap
44345 msgid ""
44346 "(service guix-service-type\n"
44347 " (guix-configuration\n"
44348 " (build-accounts 5)\n"
44349 " (use-substitutes? #f)))\n"
44350 msgstr ""
44351
44352 #. type: Plain text
44353 #: doc/guix.texi:24953
44354 msgid "The second argument to the @code{service} form is a value representing the parameters of this specific service instance. @xref{guix-configuration-type, @code{guix-configuration}}, for information about the @code{guix-configuration} data type. When the value is omitted, the default value specified by @code{guix-service-type} is used:"
44355 msgstr ""
44356
44357 #. type: example
44358 #: doc/guix.texi:24956
44359 #, no-wrap
44360 msgid "(service guix-service-type)\n"
44361 msgstr ""
44362
44363 #. type: Plain text
44364 #: doc/guix.texi:24960
44365 msgid "@code{guix-service-type} is quite simple because it extends other services but is not extensible itself."
44366 msgstr ""
44367
44368 #. type: Plain text
44369 #: doc/guix.texi:24964
44370 msgid "The service type for an @emph{extensible} service looks like this:"
44371 msgstr ""
44372
44373 #. type: example
44374 #: doc/guix.texi:24971
44375 #, no-wrap
44376 msgid ""
44377 "(define udev-service-type\n"
44378 " (service-type (name 'udev)\n"
44379 " (extensions\n"
44380 " (list (service-extension shepherd-root-service-type\n"
44381 " udev-shepherd-service)))\n"
44382 "\n"
44383 msgstr ""
44384
44385 #. type: example
44386 #: doc/guix.texi:24979
44387 #, no-wrap
44388 msgid ""
44389 " (compose concatenate) ;concatenate the list of rules\n"
44390 " (extend (lambda (config rules)\n"
44391 " (match config\n"
44392 " (($ <udev-configuration> udev initial-rules)\n"
44393 " (udev-configuration\n"
44394 " (udev udev) ;the udev package to use\n"
44395 " (rules (append initial-rules rules)))))))))\n"
44396 msgstr ""
44397
44398 #. type: Plain text
44399 #: doc/guix.texi:24985
44400 msgid "This is the service type for the @uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device management daemon}. Compared to the previous example, in addition to an extension of @code{shepherd-root-service-type}, we see two new fields:"
44401 msgstr ""
44402
44403 #. type: item
44404 #: doc/guix.texi:24987
44405 #, no-wrap
44406 msgid "compose"
44407 msgstr ""
44408
44409 #. type: table
44410 #: doc/guix.texi:24990
44411 msgid "This is the procedure to @dfn{compose} the list of extensions to services of this type."
44412 msgstr ""
44413
44414 #. type: table
44415 #: doc/guix.texi:24993
44416 msgid "Services can extend the udev service by passing it lists of rules; we compose those extensions simply by concatenating them."
44417 msgstr ""
44418
44419 #. type: item
44420 #: doc/guix.texi:24994
44421 #, no-wrap
44422 msgid "extend"
44423 msgstr ""
44424
44425 #. type: table
44426 #: doc/guix.texi:24997
44427 msgid "This procedure defines how the value of the service is @dfn{extended} with the composition of the extensions."
44428 msgstr ""
44429
44430 #. type: table
44431 #: doc/guix.texi:25002
44432 msgid "Udev extensions are composed into a list of rules, but the udev service value is itself a @code{<udev-configuration>} record. So here, we extend that record by appending the list of rules it contains to the list of contributed rules."
44433 msgstr ""
44434
44435 #. type: table
44436 #: doc/guix.texi:25008
44437 msgid "This is a string giving an overview of the service type. The string can contain Texinfo markup (@pxref{Overview,,, texinfo, GNU Texinfo}). The @command{guix system search} command searches these strings and displays them (@pxref{Invoking guix system})."
44438 msgstr ""
44439
44440 #. type: Plain text
44441 #: doc/guix.texi:25013
44442 msgid "There can be only one instance of an extensible service type such as @code{udev-service-type}. If there were more, the @code{service-extension} specifications would be ambiguous."
44443 msgstr ""
44444
44445 #. type: Plain text
44446 #: doc/guix.texi:25016
44447 msgid "Still here? The next section provides a reference of the programming interface for services."
44448 msgstr ""
44449
44450 #. type: Plain text
44451 #: doc/guix.texi:25024
44452 msgid "We have seen an overview of service types (@pxref{Service Types and Services}). This section provides a reference on how to manipulate services and service types. This interface is provided by the @code{(gnu services)} module."
44453 msgstr ""
44454
44455 #. type: deffn
44456 #: doc/guix.texi:25025
44457 #, no-wrap
44458 msgid "{Scheme Procedure} service @var{type} [@var{value}]"
44459 msgstr ""
44460
44461 #. type: deffn
44462 #: doc/guix.texi:25029
44463 msgid "Return a new service of @var{type}, a @code{<service-type>} object (see below.) @var{value} can be any object; it represents the parameters of this particular service instance."
44464 msgstr ""
44465
44466 #. type: deffn
44467 #: doc/guix.texi:25033
44468 msgid "When @var{value} is omitted, the default value specified by @var{type} is used; if @var{type} does not specify a default value, an error is raised."
44469 msgstr ""
44470
44471 #. type: deffn
44472 #: doc/guix.texi:25035
44473 msgid "For instance, this:"
44474 msgstr ""
44475
44476 #. type: example
44477 #: doc/guix.texi:25038
44478 #, no-wrap
44479 msgid "(service openssh-service-type)\n"
44480 msgstr ""
44481
44482 #. type: deffn
44483 #: doc/guix.texi:25042
44484 msgid "is equivalent to this:"
44485 msgstr ""
44486
44487 #. type: example
44488 #: doc/guix.texi:25046
44489 #, no-wrap
44490 msgid ""
44491 "(service openssh-service-type\n"
44492 " (openssh-configuration))\n"
44493 msgstr ""
44494
44495 #. type: deffn
44496 #: doc/guix.texi:25050
44497 msgid "In both cases the result is an instance of @code{openssh-service-type} with the default configuration."
44498 msgstr ""
44499
44500 #. type: deffn
44501 #: doc/guix.texi:25052
44502 #, no-wrap
44503 msgid "{Scheme Procedure} service? @var{obj}"
44504 msgstr ""
44505
44506 #. type: deffn
44507 #: doc/guix.texi:25054
44508 msgid "Return true if @var{obj} is a service."
44509 msgstr ""
44510
44511 #. type: deffn
44512 #: doc/guix.texi:25056
44513 #, no-wrap
44514 msgid "{Scheme Procedure} service-kind @var{service}"
44515 msgstr ""
44516
44517 #. type: deffn
44518 #: doc/guix.texi:25058
44519 msgid "Return the type of @var{service}---i.e., a @code{<service-type>} object."
44520 msgstr ""
44521
44522 #. type: deffn
44523 #: doc/guix.texi:25060
44524 #, no-wrap
44525 msgid "{Scheme Procedure} service-value @var{service}"
44526 msgstr ""
44527
44528 #. type: deffn
44529 #: doc/guix.texi:25063
44530 msgid "Return the value associated with @var{service}. It represents its parameters."
44531 msgstr ""
44532
44533 #. type: Plain text
44534 #: doc/guix.texi:25066
44535 msgid "Here is an example of how a service is created and manipulated:"
44536 msgstr ""
44537
44538 #. type: example
44539 #: doc/guix.texi:25075
44540 #, no-wrap
44541 msgid ""
44542 "(define s\n"
44543 " (service nginx-service-type\n"
44544 " (nginx-configuration\n"
44545 " (nginx nginx)\n"
44546 " (log-directory log-directory)\n"
44547 " (run-directory run-directory)\n"
44548 " (file config-file))))\n"
44549 "\n"
44550 msgstr ""
44551
44552 #. type: example
44553 #: doc/guix.texi:25078
44554 #, no-wrap
44555 msgid ""
44556 "(service? s)\n"
44557 "@result{} #t\n"
44558 "\n"
44559 msgstr ""
44560
44561 #. type: example
44562 #: doc/guix.texi:25081
44563 #, no-wrap
44564 msgid ""
44565 "(eq? (service-kind s) nginx-service-type)\n"
44566 "@result{} #t\n"
44567 msgstr ""
44568
44569 #. type: Plain text
44570 #: doc/guix.texi:25091
44571 msgid "The @code{modify-services} form provides a handy way to change the parameters of some of the services of a list such as @code{%base-services} (@pxref{Base Services, @code{%base-services}}). It evaluates to a list of services. Of course, you could always use standard list combinators such as @code{map} and @code{fold} to do that (@pxref{SRFI-1, List Library,, guile, GNU Guile Reference Manual}); @code{modify-services} simply provides a more concise form for this common pattern."
44572 msgstr ""
44573
44574 #. type: deffn
44575 #: doc/guix.texi:25092
44576 #, no-wrap
44577 msgid "{Scheme Syntax} modify-services @var{services} @"
44578 msgstr ""
44579
44580 #. type: deffn
44581 #: doc/guix.texi:25094
44582 msgid "(@var{type} @var{variable} => @var{body}) @dots{}"
44583 msgstr ""
44584
44585 #. type: deffn
44586 #: doc/guix.texi:25097
44587 msgid "Modify the services listed in @var{services} according to the given clauses. Each clause has the form:"
44588 msgstr ""
44589
44590 #. type: example
44591 #: doc/guix.texi:25100
44592 #, no-wrap
44593 msgid "(@var{type} @var{variable} => @var{body})\n"
44594 msgstr ""
44595
44596 #. type: deffn
44597 #: doc/guix.texi:25107
44598 msgid "where @var{type} is a service type---e.g., @code{guix-service-type}---and @var{variable} is an identifier that is bound within the @var{body} to the service parameters---e.g., a @code{guix-configuration} instance---of the original service of that @var{type}."
44599 msgstr ""
44600
44601 #. type: deffn
44602 #: doc/guix.texi:25114
44603 msgid "The @var{body} should evaluate to the new service parameters, which will be used to configure the new service. This new service will replace the original in the resulting list. Because a service's service parameters are created using @code{define-record-type*}, you can write a succinct @var{body} that evaluates to the new service parameters by using the @code{inherit} feature that @code{define-record-type*} provides."
44604 msgstr ""
44605
44606 #. type: deffn
44607 #: doc/guix.texi:25116
44608 msgid "@xref{Using the Configuration System}, for example usage."
44609 msgstr ""
44610
44611 #. type: Plain text
44612 #: doc/guix.texi:25123
44613 msgid "Next comes the programming interface for service types. This is something you want to know when writing new service definitions, but not necessarily when simply looking for ways to customize your @code{operating-system} declaration."
44614 msgstr ""
44615
44616 #. type: deftp
44617 #: doc/guix.texi:25124
44618 #, no-wrap
44619 msgid "{Data Type} service-type"
44620 msgstr ""
44621
44622 #. type: cindex
44623 #: doc/guix.texi:25125
44624 #, no-wrap
44625 msgid "service type"
44626 msgstr ""
44627
44628 #. type: deftp
44629 #: doc/guix.texi:25128
44630 msgid "This is the representation of a @dfn{service type} (@pxref{Service Types and Services})."
44631 msgstr ""
44632
44633 #. type: table
44634 #: doc/guix.texi:25132
44635 msgid "This is a symbol, used only to simplify inspection and debugging."
44636 msgstr ""
44637
44638 #. type: code{#1}
44639 #: doc/guix.texi:25133
44640 #, no-wrap
44641 msgid "extensions"
44642 msgstr ""
44643
44644 #. type: table
44645 #: doc/guix.texi:25135
44646 msgid "A non-empty list of @code{<service-extension>} objects (see below)."
44647 msgstr ""
44648
44649 #. type: item
44650 #: doc/guix.texi:25136
44651 #, no-wrap
44652 msgid "@code{compose} (default: @code{#f})"
44653 msgstr ""
44654
44655 #. type: table
44656 #: doc/guix.texi:25140
44657 msgid "If this is @code{#f}, then the service type denotes services that cannot be extended---i.e., services that do not receive ``values'' from other services."
44658 msgstr ""
44659
44660 #. type: table
44661 #: doc/guix.texi:25144
44662 msgid "Otherwise, it must be a one-argument procedure. The procedure is called by @code{fold-services} and is passed a list of values collected from extensions. It may return any single value."
44663 msgstr ""
44664
44665 #. type: item
44666 #: doc/guix.texi:25145
44667 #, no-wrap
44668 msgid "@code{extend} (default: @code{#f})"
44669 msgstr ""
44670
44671 #. type: table
44672 #: doc/guix.texi:25147
44673 msgid "If this is @code{#f}, services of this type cannot be extended."
44674 msgstr ""
44675
44676 #. type: table
44677 #: doc/guix.texi:25153
44678 msgid "Otherwise, it must be a two-argument procedure: @code{fold-services} calls it, passing it the initial value of the service as the first argument and the result of applying @code{compose} to the extension values as the second argument. It must return a value that is a valid parameter value for the service instance."
44679 msgstr ""
44680
44681 #. type: deftp
44682 #: doc/guix.texi:25156
44683 msgid "@xref{Service Types and Services}, for examples."
44684 msgstr ""
44685
44686 #. type: deffn
44687 #: doc/guix.texi:25158
44688 #, no-wrap
44689 msgid "{Scheme Procedure} service-extension @var{target-type} @"
44690 msgstr ""
44691
44692 #. type: deffn
44693 #: doc/guix.texi:25164
44694 msgid "@var{compute} Return a new extension for services of type @var{target-type}. @var{compute} must be a one-argument procedure: @code{fold-services} calls it, passing it the value associated with the service that provides the extension; it must return a valid value for the target service."
44695 msgstr ""
44696
44697 #. type: deffn
44698 #: doc/guix.texi:25166
44699 #, no-wrap
44700 msgid "{Scheme Procedure} service-extension? @var{obj}"
44701 msgstr ""
44702
44703 #. type: deffn
44704 #: doc/guix.texi:25168
44705 msgid "Return true if @var{obj} is a service extension."
44706 msgstr ""
44707
44708 #. type: Plain text
44709 #: doc/guix.texi:25174
44710 msgid "Occasionally, you might want to simply extend an existing service. This involves creating a new service type and specifying the extension of interest, which can be verbose; the @code{simple-service} procedure provides a shorthand for this."
44711 msgstr ""
44712
44713 #. type: deffn
44714 #: doc/guix.texi:25175
44715 #, no-wrap
44716 msgid "{Scheme Procedure} simple-service @var{name} @var{target} @var{value}"
44717 msgstr ""
44718
44719 #. type: deffn
44720 #: doc/guix.texi:25179
44721 msgid "Return a service that extends @var{target} with @var{value}. This works by creating a singleton service type @var{name}, of which the returned service is an instance."
44722 msgstr ""
44723
44724 #. type: deffn
44725 #: doc/guix.texi:25182
44726 msgid "For example, this extends mcron (@pxref{Scheduled Job Execution}) with an additional job:"
44727 msgstr ""
44728
44729 #. type: example
44730 #: doc/guix.texi:25186
44731 #, no-wrap
44732 msgid ""
44733 "(simple-service 'my-mcron-job mcron-service-type\n"
44734 " #~(job '(next-hour (3)) \"guix gc -F 2G\"))\n"
44735 msgstr ""
44736
44737 #. type: Plain text
44738 #: doc/guix.texi:25196
44739 msgid "At the core of the service abstraction lies the @code{fold-services} procedure, which is responsible for ``compiling'' a list of services down to a single directory that contains everything needed to boot and run the system---the directory shown by the @command{guix system build} command (@pxref{Invoking guix system}). In essence, it propagates service extensions down the service graph, updating each node parameters on the way, until it reaches the root node."
44740 msgstr ""
44741
44742 #. type: deffn
44743 #: doc/guix.texi:25197
44744 #, no-wrap
44745 msgid "{Scheme Procedure} fold-services @var{services} @"
44746 msgstr ""
44747
44748 #. type: deffn
44749 #: doc/guix.texi:25201
44750 msgid "[#:target-type @var{system-service-type}] Fold @var{services} by propagating their extensions down to the root of type @var{target-type}; return the root service adjusted accordingly."
44751 msgstr ""
44752
44753 #. type: Plain text
44754 #: doc/guix.texi:25205
44755 msgid "Lastly, the @code{(gnu services)} module also defines several essential service types, some of which are listed below."
44756 msgstr ""
44757
44758 #. type: defvr
44759 #: doc/guix.texi:25206
44760 #, no-wrap
44761 msgid "{Scheme Variable} system-service-type"
44762 msgstr ""
44763
44764 #. type: defvr
44765 #: doc/guix.texi:25209
44766 msgid "This is the root of the service graph. It produces the system directory as returned by the @command{guix system build} command."
44767 msgstr ""
44768
44769 #. type: defvr
44770 #: doc/guix.texi:25211
44771 #, no-wrap
44772 msgid "{Scheme Variable} boot-service-type"
44773 msgstr ""
44774
44775 #. type: defvr
44776 #: doc/guix.texi:25214
44777 msgid "The type of the ``boot service'', which produces the @dfn{boot script}. The boot script is what the initial RAM disk runs when booting."
44778 msgstr ""
44779
44780 #. type: defvr
44781 #: doc/guix.texi:25216
44782 #, no-wrap
44783 msgid "{Scheme Variable} etc-service-type"
44784 msgstr ""
44785
44786 #. type: defvr
44787 #: doc/guix.texi:25220
44788 msgid "The type of the @file{/etc} service. This service is used to create files under @file{/etc} and can be extended by passing it name/file tuples such as:"
44789 msgstr ""
44790
44791 #. type: example
44792 #: doc/guix.texi:25223
44793 #, no-wrap
44794 msgid "(list `(\"issue\" ,(plain-file \"issue\" \"Welcome!\\n\")))\n"
44795 msgstr ""
44796
44797 #. type: defvr
44798 #: doc/guix.texi:25227
44799 msgid "In this example, the effect would be to add an @file{/etc/issue} file pointing to the given file."
44800 msgstr ""
44801
44802 #. type: defvr
44803 #: doc/guix.texi:25229
44804 #, no-wrap
44805 msgid "{Scheme Variable} setuid-program-service-type"
44806 msgstr ""
44807
44808 #. type: defvr
44809 #: doc/guix.texi:25233
44810 msgid "Type for the ``setuid-program service''. This service collects lists of executable file names, passed as gexps, and adds them to the set of setuid-root programs on the system (@pxref{Setuid Programs})."
44811 msgstr ""
44812
44813 #. type: defvr
44814 #: doc/guix.texi:25235
44815 #, no-wrap
44816 msgid "{Scheme Variable} profile-service-type"
44817 msgstr ""
44818
44819 #. type: defvr
44820 #: doc/guix.texi:25239
44821 msgid "Type of the service that populates the @dfn{system profile}---i.e., the programs under @file{/run/current-system/profile}. Other services can extend it by passing it lists of packages to add to the system profile."
44822 msgstr ""
44823
44824 #. type: cindex
44825 #: doc/guix.texi:25245
44826 #, no-wrap
44827 msgid "shepherd services"
44828 msgstr ""
44829
44830 #. type: cindex
44831 #: doc/guix.texi:25246
44832 #, no-wrap
44833 msgid "PID 1"
44834 msgstr ""
44835
44836 #. type: cindex
44837 #: doc/guix.texi:25247
44838 #, no-wrap
44839 msgid "init system"
44840 msgstr ""
44841
44842 #. type: Plain text
44843 #: doc/guix.texi:25253
44844 msgid "The @code{(gnu services shepherd)} module provides a way to define services managed by the GNU@tie{}Shepherd, which is the initialization system---the first process that is started when the system boots, also known as PID@tie{}1 (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual})."
44845 msgstr ""
44846
44847 #. type: Plain text
44848 #: doc/guix.texi:25259
44849 msgid "Services in the Shepherd can depend on each other. For instance, the SSH daemon may need to be started after the syslog daemon has been started, which in turn can only happen once all the file systems have been mounted. The simple operating system defined earlier (@pxref{Using the Configuration System}) results in a service graph like this:"
44850 msgstr ""
44851
44852 #. type: Plain text
44853 #: doc/guix.texi:25261
44854 msgid "@image{images/shepherd-graph,,5in,Typical shepherd service graph.}"
44855 msgstr ""
44856
44857 #. type: Plain text
44858 #: doc/guix.texi:25265
44859 msgid "You can actually generate such a graph for any operating system definition using the @command{guix system shepherd-graph} command (@pxref{system-shepherd-graph, @command{guix system shepherd-graph}})."
44860 msgstr ""
44861
44862 #. type: Plain text
44863 #: doc/guix.texi:25269
44864 msgid "The @code{%shepherd-root-service} is a service object representing PID@tie{}1, of type @code{shepherd-root-service-type}; it can be extended by passing it lists of @code{<shepherd-service>} objects."
44865 msgstr ""
44866
44867 #. type: deftp
44868 #: doc/guix.texi:25270
44869 #, no-wrap
44870 msgid "{Data Type} shepherd-service"
44871 msgstr ""
44872
44873 #. type: deftp
44874 #: doc/guix.texi:25272
44875 msgid "The data type representing a service managed by the Shepherd."
44876 msgstr ""
44877
44878 #. type: code{#1}
44879 #: doc/guix.texi:25274
44880 #, no-wrap
44881 msgid "provision"
44882 msgstr ""
44883
44884 #. type: table
44885 #: doc/guix.texi:25276
44886 msgid "This is a list of symbols denoting what the service provides."
44887 msgstr ""
44888
44889 #. type: table
44890 #: doc/guix.texi:25281
44891 msgid "These are the names that may be passed to @command{herd start}, @command{herd status}, and similar commands (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the @code{provides} slot,, shepherd, The GNU Shepherd Manual}, for details."
44892 msgstr ""
44893
44894 #. type: item
44895 #: doc/guix.texi:25282
44896 #, no-wrap
44897 msgid "@code{requirements} (default: @code{'()})"
44898 msgstr ""
44899
44900 #. type: table
44901 #: doc/guix.texi:25284
44902 msgid "List of symbols denoting the Shepherd services this one depends on."
44903 msgstr ""
44904
44905 #. type: cindex
44906 #: doc/guix.texi:25285
44907 #, no-wrap
44908 msgid "one-shot services, for the Shepherd"
44909 msgstr ""
44910
44911 #. type: table
44912 #: doc/guix.texi:25290
44913 msgid "Whether this service is @dfn{one-shot}. One-shot services stop immediately after their @code{start} action has completed. @xref{Slots of services,,, shepherd, The GNU Shepherd Manual}, for more info."
44914 msgstr ""
44915
44916 #. type: item
44917 #: doc/guix.texi:25291
44918 #, no-wrap
44919 msgid "@code{respawn?} (default: @code{#t})"
44920 msgstr ""
44921
44922 #. type: table
44923 #: doc/guix.texi:25294
44924 msgid "Whether to restart the service when it stops, for instance when the underlying process dies."
44925 msgstr ""
44926
44927 #. type: code{#1}
44928 #: doc/guix.texi:25295
44929 #, no-wrap
44930 msgid "start"
44931 msgstr ""
44932
44933 #. type: itemx
44934 #: doc/guix.texi:25296
44935 #, no-wrap
44936 msgid "@code{stop} (default: @code{#~(const #f)})"
44937 msgstr ""
44938
44939 #. type: table
44940 #: doc/guix.texi:25302
44941 msgid "The @code{start} and @code{stop} fields refer to the Shepherd's facilities to start and stop processes (@pxref{Service De- and Constructors,,, shepherd, The GNU Shepherd Manual}). They are given as G-expressions that get expanded in the Shepherd configuration file (@pxref{G-Expressions})."
44942 msgstr ""
44943
44944 #. type: item
44945 #: doc/guix.texi:25303
44946 #, no-wrap
44947 msgid "@code{actions} (default: @code{'()})"
44948 msgstr ""
44949
44950 #. type: cindex
44951 #: doc/guix.texi:25304
44952 #, no-wrap
44953 msgid "actions, of Shepherd services"
44954 msgstr ""
44955
44956 #. type: table
44957 #: doc/guix.texi:25309
44958 msgid "This is a list of @code{shepherd-action} objects (see below) defining @dfn{actions} supported by the service, in addition to the standard @code{start} and @code{stop} actions. Actions listed here become available as @command{herd} sub-commands:"
44959 msgstr ""
44960
44961 #. type: example
44962 #: doc/guix.texi:25312
44963 #, no-wrap
44964 msgid "herd @var{action} @var{service} [@var{arguments}@dots{}]\n"
44965 msgstr ""
44966
44967 #. type: table
44968 #: doc/guix.texi:25316
44969 msgid "A documentation string, as shown when running:"
44970 msgstr ""
44971
44972 #. type: example
44973 #: doc/guix.texi:25319
44974 #, no-wrap
44975 msgid "herd doc @var{service-name}\n"
44976 msgstr ""
44977
44978 #. type: table
44979 #: doc/guix.texi:25323
44980 msgid "where @var{service-name} is one of the symbols in @code{provision} (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual})."
44981 msgstr ""
44982
44983 #. type: item
44984 #: doc/guix.texi:25324
44985 #, no-wrap
44986 msgid "@code{modules} (default: @code{%default-modules})"
44987 msgstr ""
44988
44989 #. type: table
44990 #: doc/guix.texi:25327
44991 msgid "This is the list of modules that must be in scope when @code{start} and @code{stop} are evaluated."
44992 msgstr ""
44993
44994 #. type: deftp
44995 #: doc/guix.texi:25331
44996 #, no-wrap
44997 msgid "{Data Type} shepherd-action"
44998 msgstr ""
44999
45000 #. type: deftp
45001 #: doc/guix.texi:25334
45002 msgid "This is the data type that defines additional actions implemented by a Shepherd service (see above)."
45003 msgstr ""
45004
45005 #. type: table
45006 #: doc/guix.texi:25338
45007 msgid "Symbol naming the action."
45008 msgstr ""
45009
45010 #. type: table
45011 #: doc/guix.texi:25341
45012 msgid "This is a documentation string for the action. It can be viewed by running:"
45013 msgstr ""
45014
45015 #. type: example
45016 #: doc/guix.texi:25344
45017 #, no-wrap
45018 msgid "herd doc @var{service} action @var{action}\n"
45019 msgstr ""
45020
45021 #. type: item
45022 #: doc/guix.texi:25346
45023 #, no-wrap
45024 msgid "procedure"
45025 msgstr ""
45026
45027 #. type: table
45028 #: doc/guix.texi:25350
45029 msgid "This should be a gexp that evaluates to a procedure of at least one argument, which is the ``running value'' of the service (@pxref{Slots of services,,, shepherd, The GNU Shepherd Manual})."
45030 msgstr ""
45031
45032 #. type: deftp
45033 #: doc/guix.texi:25354
45034 msgid "The following example defines an action called @code{say-hello} that kindly greets the user:"
45035 msgstr ""
45036
45037 #. type: example
45038 #: doc/guix.texi:25363
45039 #, no-wrap
45040 msgid ""
45041 "(shepherd-action\n"
45042 " (name 'say-hello)\n"
45043 " (documentation \"Say hi!\")\n"
45044 " (procedure #~(lambda (running . args)\n"
45045 " (format #t \"Hello, friend! arguments: ~s\\n\"\n"
45046 " args)\n"
45047 " #t)))\n"
45048 msgstr ""
45049
45050 #. type: deftp
45051 #: doc/guix.texi:25366
45052 msgid "Assuming this action is added to the @code{example} service, then you can do:"
45053 msgstr ""
45054
45055 #. type: example
45056 #: doc/guix.texi:25372
45057 #, no-wrap
45058 msgid ""
45059 "# herd say-hello example\n"
45060 "Hello, friend! arguments: ()\n"
45061 "# herd say-hello example a b c\n"
45062 "Hello, friend! arguments: (\"a\" \"b\" \"c\")\n"
45063 msgstr ""
45064
45065 #. type: deftp
45066 #: doc/guix.texi:25377
45067 msgid "This, as you can see, is a fairly sophisticated way to say hello. @xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, for more info on actions."
45068 msgstr ""
45069
45070 #. type: defvr
45071 #: doc/guix.texi:25379
45072 #, no-wrap
45073 msgid "{Scheme Variable} shepherd-root-service-type"
45074 msgstr ""
45075
45076 #. type: defvr
45077 #: doc/guix.texi:25381
45078 msgid "The service type for the Shepherd ``root service''---i.e., PID@tie{}1."
45079 msgstr ""
45080
45081 #. type: defvr
45082 #: doc/guix.texi:25385
45083 msgid "This is the service type that extensions target when they want to create shepherd services (@pxref{Service Types and Services}, for an example). Each extension must pass a list of @code{<shepherd-service>}."
45084 msgstr ""
45085
45086 #. type: defvr
45087 #: doc/guix.texi:25387
45088 #, no-wrap
45089 msgid "{Scheme Variable} %shepherd-root-service"
45090 msgstr ""
45091
45092 #. type: defvr
45093 #: doc/guix.texi:25389
45094 msgid "This service represents PID@tie{}1."
45095 msgstr ""
45096
45097 #. type: cindex
45098 #: doc/guix.texi:25395
45099 #, no-wrap
45100 msgid "documentation, searching for"
45101 msgstr ""
45102
45103 #. type: cindex
45104 #: doc/guix.texi:25396
45105 #, no-wrap
45106 msgid "searching for documentation"
45107 msgstr ""
45108
45109 #. type: cindex
45110 #: doc/guix.texi:25397
45111 #, no-wrap
45112 msgid "Info, documentation format"
45113 msgstr ""
45114
45115 #. type: cindex
45116 #: doc/guix.texi:25398
45117 #, no-wrap
45118 msgid "man pages"
45119 msgstr ""
45120
45121 #. type: cindex
45122 #: doc/guix.texi:25399
45123 #, no-wrap
45124 msgid "manual pages"
45125 msgstr ""
45126
45127 #. type: Plain text
45128 #: doc/guix.texi:25406
45129 msgid "In most cases packages installed with Guix come with documentation. There are two main documentation formats: ``Info'', a browseable hypertext format used for GNU software, and ``manual pages'' (or ``man pages''), the linear documentation format traditionally found on Unix. Info manuals are accessed with the @command{info} command or with Emacs, and man pages are accessed using @command{man}."
45130 msgstr ""
45131
45132 #. type: Plain text
45133 #: doc/guix.texi:25410
45134 msgid "You can look for documentation of software installed on your system by keyword. For example, the following command searches for information about ``TLS'' in Info manuals:"
45135 msgstr ""
45136
45137 #. type: example
45138 #: doc/guix.texi:25418
45139 #, no-wrap
45140 msgid ""
45141 "$ info -k TLS\n"
45142 "\"(emacs)Network Security\" -- STARTTLS\n"
45143 "\"(emacs)Network Security\" -- TLS\n"
45144 "\"(gnutls)Core TLS API\" -- gnutls_certificate_set_verify_flags\n"
45145 "\"(gnutls)Core TLS API\" -- gnutls_certificate_set_verify_function\n"
45146 "@dots{}\n"
45147 msgstr ""
45148
45149 #. type: Plain text
45150 #: doc/guix.texi:25422
45151 msgid "The command below searches for the same keyword in man pages:"
45152 msgstr ""
45153
45154 #. type: example
45155 #: doc/guix.texi:25428
45156 #, no-wrap
45157 msgid ""
45158 "$ man -k TLS\n"
45159 "SSL (7) - OpenSSL SSL/TLS library\n"
45160 "certtool (1) - GnuTLS certificate tool\n"
45161 "@dots {}\n"
45162 msgstr ""
45163
45164 #. type: Plain text
45165 #: doc/guix.texi:25434
45166 msgid "These searches are purely local to your computer so you have the guarantee that documentation you find corresponds to what you have actually installed, you can access it off-line, and your privacy is respected."
45167 msgstr ""
45168
45169 #. type: Plain text
45170 #: doc/guix.texi:25437
45171 msgid "Once you have these results, you can view the relevant documentation by running, say:"
45172 msgstr ""
45173
45174 #. type: example
45175 #: doc/guix.texi:25440
45176 #, no-wrap
45177 msgid "$ info \"(gnutls)Core TLS API\"\n"
45178 msgstr ""
45179
45180 #. type: Plain text
45181 #: doc/guix.texi:25444
45182 msgid "or:"
45183 msgstr ""
45184
45185 #. type: example
45186 #: doc/guix.texi:25447
45187 #, no-wrap
45188 msgid "$ man certtool\n"
45189 msgstr ""
45190
45191 #. type: Plain text
45192 #: doc/guix.texi:25455
45193 msgid "Info manuals contain sections and indices as well as hyperlinks like those found in Web pages. The @command{info} reader (@pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}) and its Emacs counterpart (@pxref{Misc Help,,, emacs, The GNU Emacs Manual}) provide intuitive key bindings to navigate manuals. @xref{Getting Started,,, info, Info: An Introduction}, for an introduction to Info navigation."
45194 msgstr ""
45195
45196 #. type: cindex
45197 #: doc/guix.texi:25459
45198 #, no-wrap
45199 msgid "debugging files"
45200 msgstr ""
45201
45202 #. type: Plain text
45203 #: doc/guix.texi:25465
45204 msgid "Program binaries, as produced by the GCC compilers for instance, are typically written in the ELF format, with a section containing @dfn{debugging information}. Debugging information is what allows the debugger, GDB, to map binary code to source code; it is required to debug a compiled program in good conditions."
45205 msgstr ""
45206
45207 #. type: Plain text
45208 #: doc/guix.texi:25473
45209 msgid "The problem with debugging information is that is takes up a fair amount of disk space. For example, debugging information for the GNU C Library weighs in at more than 60 MiB. Thus, as a user, keeping all the debugging info of all the installed programs is usually not an option. Yet, space savings should not come at the cost of an impediment to debugging---especially in the GNU system, which should make it easier for users to exert their computing freedom (@pxref{GNU Distribution})."
45210 msgstr ""
45211
45212 #. type: Plain text
45213 #: doc/guix.texi:25480
45214 msgid "Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a mechanism that allows users to get the best of both worlds: debugging information can be stripped from the binaries and stored in separate files. GDB is then able to load debugging information from those files, when they are available (@pxref{Separate Debug Files,,, gdb, Debugging with GDB})."
45215 msgstr ""
45216
45217 #. type: Plain text
45218 #: doc/guix.texi:25488
45219 msgid "The GNU distribution takes advantage of this by storing debugging information in the @code{lib/debug} sub-directory of a separate package output unimaginatively called @code{debug} (@pxref{Packages with Multiple Outputs}). Users can choose to install the @code{debug} output of a package when they need it. For instance, the following command installs the debugging information for the GNU C Library and for GNU Guile:"
45220 msgstr ""
45221
45222 #. type: example
45223 #: doc/guix.texi:25491
45224 #, no-wrap
45225 msgid "guix install glibc:debug guile:debug\n"
45226 msgstr ""
45227
45228 #. type: Plain text
45229 #: doc/guix.texi:25497
45230 msgid "GDB must then be told to look for debug files in the user's profile, by setting the @code{debug-file-directory} variable (consider setting it from the @file{~/.gdbinit} file, @pxref{Startup,,, gdb, Debugging with GDB}):"
45231 msgstr ""
45232
45233 #. type: example
45234 #: doc/guix.texi:25500
45235 #, no-wrap
45236 msgid "(gdb) set debug-file-directory ~/.guix-profile/lib/debug\n"
45237 msgstr ""
45238
45239 #. type: Plain text
45240 #: doc/guix.texi:25504
45241 msgid "From there on, GDB will pick up debugging information from the @code{.debug} files under @file{~/.guix-profile/lib/debug}."
45242 msgstr ""
45243
45244 #. type: Plain text
45245 #: doc/guix.texi:25511
45246 msgid "In addition, you will most likely want GDB to be able to show the source code being debugged. To do that, you will have to unpack the source code of the package of interest (obtained with @code{guix build --source}, @pxref{Invoking guix build}), and to point GDB to that source directory using the @code{directory} command (@pxref{Source Path, @code{directory},, gdb, Debugging with GDB})."
45247 msgstr ""
45248
45249 #. type: Plain text
45250 #: doc/guix.texi:25520
45251 msgid "The @code{debug} output mechanism in Guix is implemented by the @code{gnu-build-system} (@pxref{Build Systems}). Currently, it is opt-in---debugging information is available only for the packages with definitions explicitly declaring a @code{debug} output. This may be changed to opt-out in the future if our build farm servers can handle the load. To check whether a package has a @code{debug} output, use @command{guix package --list-available} (@pxref{Invoking guix package})."
45252 msgstr ""
45253
45254 #. type: cindex
45255 #: doc/guix.texi:25525
45256 #, no-wrap
45257 msgid "security updates"
45258 msgstr ""
45259
45260 #. type: Plain text
45261 #: doc/guix.texi:25534
45262 msgid "Occasionally, important security vulnerabilities are discovered in software packages and must be patched. Guix developers try hard to keep track of known vulnerabilities and to apply fixes as soon as possible in the @code{master} branch of Guix (we do not yet provide a ``stable'' branch containing only security updates.) The @command{guix lint} tool helps developers find out about vulnerable versions of software packages in the distribution:"
45263 msgstr ""
45264
45265 #. type: smallexample
45266 #: doc/guix.texi:25541
45267 #, no-wrap
45268 msgid ""
45269 "$ guix lint -c cve\n"
45270 "gnu/packages/base.scm:652:2: glibc@@2.21: probably vulnerable to CVE-2015-1781, CVE-2015-7547\n"
45271 "gnu/packages/gcc.scm:334:2: gcc@@4.9.3: probably vulnerable to CVE-2015-5276\n"
45272 "gnu/packages/image.scm:312:2: openjpeg@@2.1.0: probably vulnerable to CVE-2016-1923, CVE-2016-1924\n"
45273 "@dots{}\n"
45274 msgstr ""
45275
45276 #. type: Plain text
45277 #: doc/guix.texi:25544
45278 msgid "@xref{Invoking guix lint}, for more information."
45279 msgstr ""
45280
45281 #. type: quotation
45282 #: doc/guix.texi:25548
45283 msgid "As of version @value{VERSION}, the feature described below is considered ``beta''."
45284 msgstr ""
45285
45286 #. type: Plain text
45287 #: doc/guix.texi:25558
45288 msgid "Guix follows a functional package management discipline (@pxref{Introduction}), which implies that, when a package is changed, @emph{every package that depends on it} must be rebuilt. This can significantly slow down the deployment of fixes in core packages such as libc or Bash, since basically the whole distribution would need to be rebuilt. Using pre-built binaries helps (@pxref{Substitutes}), but deployment may still take more time than desired."
45289 msgstr ""
45290
45291 #. type: cindex
45292 #: doc/guix.texi:25559
45293 #, no-wrap
45294 msgid "grafts"
45295 msgstr ""
45296
45297 #. type: Plain text
45298 #: doc/guix.texi:25567
45299 msgid "To address this, Guix implements @dfn{grafts}, a mechanism that allows for fast deployment of critical updates without the costs associated with a whole-distribution rebuild. The idea is to rebuild only the package that needs to be patched, and then to ``graft'' it onto packages explicitly installed by the user and that were previously referring to the original package. The cost of grafting is typically very low, and order of magnitudes lower than a full rebuild of the dependency chain."
45300 msgstr ""
45301
45302 #. type: cindex
45303 #: doc/guix.texi:25568
45304 #, no-wrap
45305 msgid "replacements of packages, for grafts"
45306 msgstr ""
45307
45308 #. type: Plain text
45309 #: doc/guix.texi:25574
45310 msgid "For instance, suppose a security update needs to be applied to Bash. Guix developers will provide a package definition for the ``fixed'' Bash, say @code{bash-fixed}, in the usual way (@pxref{Defining Packages}). Then, the original package definition is augmented with a @code{replacement} field pointing to the package containing the bug fix:"
45311 msgstr ""
45312
45313 #. type: example
45314 #: doc/guix.texi:25581
45315 #, no-wrap
45316 msgid ""
45317 "(define bash\n"
45318 " (package\n"
45319 " (name \"bash\")\n"
45320 " ;; @dots{}\n"
45321 " (replacement bash-fixed)))\n"
45322 msgstr ""
45323
45324 #. type: Plain text
45325 #: doc/guix.texi:25591
45326 msgid "From there on, any package depending directly or indirectly on Bash---as reported by @command{guix gc --requisites} (@pxref{Invoking guix gc})---that is installed is automatically ``rewritten'' to refer to @code{bash-fixed} instead of @code{bash}. This grafting process takes time proportional to the size of the package, usually less than a minute for an ``average'' package on a recent machine. Grafting is recursive: when an indirect dependency requires grafting, then grafting ``propagates'' up to the package that the user is installing."
45327 msgstr ""
45328
45329 #. type: Plain text
45330 #: doc/guix.texi:25599
45331 msgid "Currently, the length of the name and version of the graft and that of the package it replaces (@code{bash-fixed} and @code{bash} in the example above) must be equal. This restriction mostly comes from the fact that grafting works by patching files, including binary files, directly. Other restrictions may apply: for instance, when adding a graft to a package providing a shared library, the original shared library and its replacement must have the same @code{SONAME} and be binary-compatible."
45332 msgstr ""
45333
45334 #. type: Plain text
45335 #: doc/guix.texi:25603
45336 msgid "The @option{--no-grafts} command-line option allows you to forcefully avoid grafting (@pxref{Common Build Options, @option{--no-grafts}}). Thus, the command:"
45337 msgstr ""
45338
45339 #. type: example
45340 #: doc/guix.texi:25606
45341 #, no-wrap
45342 msgid "guix build bash --no-grafts\n"
45343 msgstr ""
45344
45345 #. type: Plain text
45346 #: doc/guix.texi:25610
45347 msgid "returns the store file name of the original Bash, whereas:"
45348 msgstr ""
45349
45350 #. type: example
45351 #: doc/guix.texi:25613
45352 #, no-wrap
45353 msgid "guix build bash\n"
45354 msgstr ""
45355
45356 #. type: Plain text
45357 #: doc/guix.texi:25618
45358 msgid "returns the store file name of the ``fixed'', replacement Bash. This allows you to distinguish between the two variants of Bash."
45359 msgstr ""
45360
45361 #. type: Plain text
45362 #: doc/guix.texi:25621
45363 msgid "To verify which Bash your whole profile refers to, you can run (@pxref{Invoking guix gc}):"
45364 msgstr ""
45365
45366 #. type: example
45367 #: doc/guix.texi:25624
45368 #, no-wrap
45369 msgid "guix gc -R `readlink -f ~/.guix-profile` | grep bash\n"
45370 msgstr ""
45371
45372 #. type: Plain text
45373 #: doc/guix.texi:25629
45374 msgid "@dots{} and compare the store file names that you get with those above. Likewise for a complete Guix system generation:"
45375 msgstr ""
45376
45377 #. type: example
45378 #: doc/guix.texi:25632
45379 #, no-wrap
45380 msgid "guix gc -R `guix system build my-config.scm` | grep bash\n"
45381 msgstr ""
45382
45383 #. type: Plain text
45384 #: doc/guix.texi:25636
45385 msgid "Lastly, to check which Bash running processes are using, you can use the @command{lsof} command:"
45386 msgstr ""
45387
45388 #. type: example
45389 #: doc/guix.texi:25639
45390 #, no-wrap
45391 msgid "lsof | grep /gnu/store/.*bash\n"
45392 msgstr ""
45393
45394 #. type: cindex
45395 #: doc/guix.texi:25647
45396 #, no-wrap
45397 msgid "bootstrapping"
45398 msgstr ""
45399
45400 #. type: Plain text
45401 #: doc/guix.texi:25657
45402 msgid "Bootstrapping in our context refers to how the distribution gets built ``from nothing''. Remember that the build environment of a derivation contains nothing but its declared inputs (@pxref{Introduction}). So there's an obvious chicken-and-egg problem: how does the first package get built? How does the first compiler get compiled? Note that this is a question of interest only to the curious hacker, not to the regular user, so you can shamelessly skip this section if you consider yourself a ``regular user''."
45403 msgstr ""
45404
45405 #. type: cindex
45406 #: doc/guix.texi:25658 doc/guix.texi:25780
45407 #, no-wrap
45408 msgid "bootstrap binaries"
45409 msgstr ""
45410
45411 #. type: Plain text
45412 #: doc/guix.texi:25668
45413 msgid "The GNU system is primarily made of C code, with libc at its core. The GNU build system itself assumes the availability of a Bourne shell and command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and `grep'. Furthermore, build programs---programs that run @code{./configure}, @code{make}, etc.---are written in Guile Scheme (@pxref{Derivations}). Consequently, to be able to build anything at all, from scratch, Guix relies on pre-built binaries of Guile, GCC, Binutils, libc, and the other packages mentioned above---the @dfn{bootstrap binaries}."
45414 msgstr ""
45415
45416 #. type: Plain text
45417 #: doc/guix.texi:25671
45418 msgid "These bootstrap binaries are ``taken for granted'', though we can also re-create them if needed (more on that later)."
45419 msgstr ""
45420
45421 #. type: unnumberedsec
45422 #: doc/guix.texi:25672
45423 #, no-wrap
45424 msgid "Preparing to Use the Bootstrap Binaries"
45425 msgstr ""
45426
45427 #. type: Plain text
45428 #: doc/guix.texi:25677
45429 msgid "@image{images/bootstrap-graph,6in,,Dependency graph of the early bootstrap derivations}"
45430 msgstr ""
45431
45432 #. type: Plain text
45433 #: doc/guix.texi:25682
45434 msgid "The figure above shows the very beginning of the dependency graph of the distribution, corresponding to the package definitions of the @code{(gnu packages bootstrap)} module. A similar figure can be generated with @command{guix graph} (@pxref{Invoking guix graph}), along the lines of:"
45435 msgstr ""
45436
45437 #. type: example
45438 #: doc/guix.texi:25687
45439 #, no-wrap
45440 msgid ""
45441 "guix graph -t derivation \\\n"
45442 " -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \\\n"
45443 " | dot -Tps > t.ps\n"
45444 msgstr ""
45445
45446 #. type: Plain text
45447 #: doc/guix.texi:25696
45448 msgid "At this level of detail, things are slightly complex. First, Guile itself consists of an ELF executable, along with many source and compiled Scheme files that are dynamically loaded when it runs. This gets stored in the @file{guile-2.0.7.tar.xz} tarball shown in this graph. This tarball is part of Guix's ``source'' distribution, and gets inserted into the store with @code{add-to-store} (@pxref{The Store})."
45449 msgstr ""
45450
45451 #. type: Plain text
45452 #: doc/guix.texi:25705
45453 msgid "But how do we write a derivation that unpacks this tarball and adds it to the store? To solve this problem, the @code{guile-bootstrap-2.0.drv} derivation---the first one that gets built---uses @code{bash} as its builder, which runs @code{build-bootstrap-guile.sh}, which in turn calls @code{tar} to unpack the tarball. Thus, @file{bash}, @file{tar}, @file{xz}, and @file{mkdir} are statically-linked binaries, also part of the Guix source distribution, whose sole purpose is to allow the Guile tarball to be unpacked."
45454 msgstr ""
45455
45456 #. type: Plain text
45457 #: doc/guix.texi:25717
45458 msgid "Once @code{guile-bootstrap-2.0.drv} is built, we have a functioning Guile that can be used to run subsequent build programs. Its first task is to download tarballs containing the other pre-built binaries---this is what the @code{.tar.xz.drv} derivations do. Guix modules such as @code{ftp-client.scm} are used for this purpose. The @code{module-import.drv} derivations import those modules in a directory in the store, using the original layout. The @code{module-import-compiled.drv} derivations compile those modules, and write them in an output directory with the right layout. This corresponds to the @code{#:modules} argument of @code{build-expression->derivation} (@pxref{Derivations})."
45459 msgstr ""
45460
45461 #. type: Plain text
45462 #: doc/guix.texi:25721
45463 msgid "Finally, the various tarballs are unpacked by the derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, etc., at which point we have a working C tool chain."
45464 msgstr ""
45465
45466 #. type: unnumberedsec
45467 #: doc/guix.texi:25723
45468 #, no-wrap
45469 msgid "Building the Build Tools"
45470 msgstr ""
45471
45472 #. type: Plain text
45473 #: doc/guix.texi:25732
45474 msgid "Bootstrapping is complete when we have a full tool chain that does not depend on the pre-built bootstrap tools discussed above. This no-dependency requirement is verified by checking whether the files of the final tool chain contain references to the @file{/gnu/store} directories of the bootstrap inputs. The process that leads to this ``final'' tool chain is described by the package definitions found in the @code{(gnu packages commencement)} module."
45475 msgstr ""
45476
45477 #. type: Plain text
45478 #: doc/guix.texi:25739
45479 msgid "The @command{guix graph} command allows us to ``zoom out'' compared to the graph above, by looking at the level of package objects instead of individual derivations---remember that a package may translate to several derivations, typically one derivation to download its source, one to build the Guile modules it needs, and one to actually build the package from source. The command:"
45480 msgstr ""
45481
45482 #. type: example
45483 #: doc/guix.texi:25744
45484 #, no-wrap
45485 msgid ""
45486 "guix graph -t bag \\\n"
45487 " -e '(@@@@ (gnu packages commencement)\n"
45488 " glibc-final-with-bootstrap-bash)' | dot -Tps > t.ps\n"
45489 msgstr ""
45490
45491 #. type: Plain text
45492 #: doc/guix.texi:25751
45493 msgid "produces the dependency graph leading to the ``final'' C library@footnote{You may notice the @code{glibc-intermediate} label, suggesting that it is not @emph{quite} final, but as a good approximation, we will consider it final.}, depicted below."
45494 msgstr ""
45495
45496 #. type: Plain text
45497 #: doc/guix.texi:25753
45498 msgid "@image{images/bootstrap-packages,6in,,Dependency graph of the early packages}"
45499 msgstr ""
45500
45501 #. type: Plain text
45502 #: doc/guix.texi:25759
45503 msgid "The first tool that gets built with the bootstrap binaries is GNU@tie{}Make---noted @code{make-boot0} above---which is a prerequisite for all the following packages. From there Findutils and Diffutils get built."
45504 msgstr ""
45505
45506 #. type: Plain text
45507 #: doc/guix.texi:25764
45508 msgid "Then come the first-stage Binutils and GCC, built as pseudo cross tools---i.e., with @code{--target} equal to @code{--host}. They are used to build libc. Thanks to this cross-build trick, this libc is guaranteed not to hold any reference to the initial tool chain."
45509 msgstr ""
45510
45511 #. type: Plain text
45512 #: doc/guix.texi:25770
45513 msgid "From there the final Binutils and GCC (not shown above) are built. GCC uses @code{ld} from the final Binutils, and links programs against the just-built libc. This tool chain is used to build the other packages used by Guix and by the GNU Build System: Guile, Bash, Coreutils, etc."
45514 msgstr ""
45515
45516 #. type: Plain text
45517 #: doc/guix.texi:25776
45518 msgid "And voilà! At this point we have the complete set of build tools that the GNU Build System expects. These are in the @code{%final-inputs} variable of the @code{(gnu packages commencement)} module, and are implicitly used by any package that uses @code{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}})."
45519 msgstr ""
45520
45521 #. type: unnumberedsec
45522 #: doc/guix.texi:25778
45523 #, no-wrap
45524 msgid "Building the Bootstrap Binaries"
45525 msgstr ""
45526
45527 #. type: Plain text
45528 #: doc/guix.texi:25785
45529 msgid "Because the final tool chain does not depend on the bootstrap binaries, those rarely need to be updated. Nevertheless, it is useful to have an automated way to produce them, should an update occur, and this is what the @code{(gnu packages make-bootstrap)} module provides."
45530 msgstr ""
45531
45532 #. type: Plain text
45533 #: doc/guix.texi:25789
45534 msgid "The following command builds the tarballs containing the bootstrap binaries (Guile, Binutils, GCC, libc, and a tarball containing a mixture of Coreutils and other basic command-line tools):"
45535 msgstr ""
45536
45537 #. type: example
45538 #: doc/guix.texi:25792
45539 #, no-wrap
45540 msgid "guix build bootstrap-tarballs\n"
45541 msgstr ""
45542
45543 #. type: Plain text
45544 #: doc/guix.texi:25797
45545 msgid "The generated tarballs are those that should be referred to in the @code{(gnu packages bootstrap)} module mentioned at the beginning of this section."
45546 msgstr ""
45547
45548 #. type: Plain text
45549 #: doc/guix.texi:25803
45550 msgid "Still here? Then perhaps by now you've started to wonder: when do we reach a fixed point? That is an interesting question! The answer is unknown, but if you would like to investigate further (and have significant computational and storage resources to do so), then let us know."
45551 msgstr ""
45552
45553 #. type: unnumberedsec
45554 #: doc/guix.texi:25804
45555 #, no-wrap
45556 msgid "Reducing the Set of Bootstrap Binaries"
45557 msgstr ""
45558
45559 #. type: Plain text
45560 #: doc/guix.texi:25812
45561 msgid "Our bootstrap binaries currently include GCC, Guile, etc. That's a lot of binary code! Why is that a problem? It's a problem because these big chunks of binary code are practically non-auditable, which makes it hard to establish what source code produced them. Every unauditable binary also leaves us vulnerable to compiler backdoors as described by Ken Thompson in the 1984 paper @emph{Reflections on Trusting Trust}."
45562 msgstr ""
45563
45564 #. type: Plain text
45565 #: doc/guix.texi:25818
45566 msgid "This is mitigated by the fact that our bootstrap binaries were generated from an earlier Guix revision. Nevertheless it lacks the level of transparency that we get in the rest of the package dependency graph, where Guix always gives us a source-to-binary mapping. Thus, our goal is to reduce the set of bootstrap binaries to the bare minimum."
45567 msgstr ""
45568
45569 #. type: Plain text
45570 #: doc/guix.texi:25824
45571 msgid "The @uref{http://bootstrappable.org, Bootstrappable.org web site} lists on-going projects to do that. One of these is about replacing the bootstrap GCC with a sequence of assemblers, interpreters, and compilers of increasing complexity, which could be built from source starting from a simple and auditable assembler. Your help is welcome!"
45572 msgstr ""
45573
45574 #. type: chapter
45575 #: doc/guix.texi:25827
45576 #, no-wrap
45577 msgid "Porting to a New Platform"
45578 msgstr ""
45579
45580 #. type: Plain text
45581 #: doc/guix.texi:25836
45582 msgid "As discussed above, the GNU distribution is self-contained, and self-containment is achieved by relying on pre-built ``bootstrap binaries'' (@pxref{Bootstrapping}). These binaries are specific to an operating system kernel, CPU architecture, and application binary interface (ABI). Thus, to port the distribution to a platform that is not yet supported, one must build those bootstrap binaries, and update the @code{(gnu packages bootstrap)} module to use them on that platform."
45583 msgstr ""
45584
45585 #. type: Plain text
45586 #: doc/guix.texi:25841
45587 msgid "Fortunately, Guix can @emph{cross compile} those bootstrap binaries. When everything goes well, and assuming the GNU tool chain supports the target platform, this can be as simple as running a command like this one:"
45588 msgstr ""
45589
45590 #. type: example
45591 #: doc/guix.texi:25844
45592 #, no-wrap
45593 msgid "guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs\n"
45594 msgstr ""
45595
45596 #. type: Plain text
45597 #: doc/guix.texi:25851
45598 msgid "For this to work, the @code{glibc-dynamic-linker} procedure in @code{(gnu packages bootstrap)} must be augmented to return the right file name for libc's dynamic linker on that platform; likewise, @code{system->linux-architecture} in @code{(gnu packages linux)} must be taught about the new platform."
45599 msgstr ""
45600
45601 #. type: Plain text
45602 #: doc/guix.texi:25860
45603 msgid "Once these are built, the @code{(gnu packages bootstrap)} module needs to be updated to refer to these binaries on the target platform. That is, the hashes and URLs of the bootstrap tarballs for the new platform must be added alongside those of the currently supported platforms. The bootstrap Guile tarball is treated specially: it is expected to be available locally, and @file{gnu/local.mk} has rules to download it for the supported architectures; a rule for the new platform must be added as well."
45604 msgstr ""
45605
45606 #. type: Plain text
45607 #: doc/guix.texi:25869
45608 msgid "In practice, there may be some complications. First, it may be that the extended GNU triplet that specifies an ABI (like the @code{eabi} suffix above) is not recognized by all the GNU tools. Typically, glibc recognizes some of these, whereas GCC uses an extra @code{--with-abi} configure flag (see @code{gcc.scm} for examples of how to handle this). Second, some of the required packages could fail to build for that platform. Lastly, the generated binaries could be broken for some reason."
45609 msgstr ""
45610
45611 #. type: include
45612 #: doc/guix.texi:25871
45613 #, no-wrap
45614 msgid "contributing.texi"
45615 msgstr "contributing.zh_CN.texi"
45616
45617 #. type: Plain text
45618 #: doc/guix.texi:25884
45619 msgid "Guix is based on the @uref{https://nixos.org/nix/, Nix package manager}, which was designed and implemented by Eelco Dolstra, with contributions from other people (see the @file{nix/AUTHORS} file in Guix.) Nix pioneered functional package management, and promoted unprecedented features, such as transactional package upgrades and rollbacks, per-user profiles, and referentially transparent build processes. Without this work, Guix would not exist."
45620 msgstr ""
45621
45622 #. type: Plain text
45623 #: doc/guix.texi:25887
45624 msgid "The Nix-based software distributions, Nixpkgs and NixOS, have also been an inspiration for Guix."
45625 msgstr ""
45626
45627 #. type: Plain text
45628 #: doc/guix.texi:25893
45629 msgid "GNU@tie{}Guix itself is a collective work with contributions from a number of people. See the @file{AUTHORS} file in Guix for more information on these fine people. The @file{THANKS} file lists people who have helped by reporting bugs, taking care of the infrastructure, providing artwork and themes, making suggestions, and more---thank you!"
45630 msgstr ""
45631
45632 #. type: cindex
45633 #: doc/guix.texi:25898
45634 #, no-wrap
45635 msgid "license, GNU Free Documentation License"
45636 msgstr ""
45637
45638 #. type: include
45639 #: doc/guix.texi:25899
45640 #, no-wrap
45641 msgid "fdl-1.3.texi"
45642 msgstr ""
45643
45644 #~ msgid "The @code{guix} package must remain available in @code{root}'s profile, or it would become subject to garbage collection---in which case you would find yourself badly handicapped by the lack of the @command{guix} command. In other words, do not remove @code{guix} by running @code{guix package -r guix}."
45645 #~ msgstr "@code{guix}软件包必须保留在@code{root}的profile里,否则它会被垃圾回收清理掉--那时你会发现缺少@command{guix}命令。换句话说,不要用@code{guix package -r guix}命令删除@code{guix}。"