* Feedback of the GNU Guix manual
@ 2024-01-14 15:01 Christian Miller
2024-01-15 17:52 ` Matt
` (3 more replies)
0 siblings, 4 replies; 69+ messages in thread
From: Christian Miller @ 2024-01-14 15:01 UTC (permalink / raw)
To: guix-devel
Hello,
I read through the GNU Guix manual on revision
ee7c9d254117fa470686210ad2ef5e7f1ba4fefc with Emacs in TTY mode.
As a beginner, the manual was helpful and I learned lot's of stuff.
Though it felt heartless. No consistency and sometimes the structure
is confusing (especially the contributing part, since it tries to get
GNU Guix System and GNU Guix under one section and it was kinda
confusing for me).
Overall it was a better experience than reading the Emacs manual. The
Emacs manual may have a better consistent style but it was hard to
understand. Felt like it assumed people would know stuff which I did
not do.
It seems that there is no style guide. Sometimes default values are
mentioned and sometimes not. Also some use uppercase and other use
lowercase for type of variable. There is also Scheme code which is
most of the time in the old style notation. For me as a beginner,
this was confusing.
I will mention lot's of style issues since at that time I did not know
it is in such a bad state.
Here are some things I noticed:
** Binary installation L73
Guix system should be Guix System
** Binary Installation L88 and L95
~root is weird. Should be root or simply ~ for the user profile which
would be root as root user.
** 2.4 Setting up the deamon
Seems like an issue with info. Have seen this in the Emacs manual as
well. There is also sometimes see see (doc)
L15 See also see Substitutes.
** 3.7 After System Installation
L27 Libera_Chat, why the underscore. It is colored as well for me so
I guess this is a special char. Should be anways just Libera Chat
** 3.8 Installing Guix in a Virtual Machine
L25 in an vm should be in a vm
** 6.4 L60 packages should be package
The outputs of a packages are listed in the third column of the output
of ‘guix package --list-available’ (*note Invoking guix package::).
** 6.7 L37 true for Guix System as well?
The result of running ‘guix pull’ is a “profile” available under
‘~/.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 (*note Documentation::):
export PATH="$HOME/.config/guix/current/bin:$PATH"
export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
** 6.8 Maybe just mention the actual movie for people that never have seen or heard of it
(1) If you don’t know what a DeLorean is, consider traveling back to
the 1980’s. (Back to the Future (1985))
** 7.1 should be variant-packages (not sure anymore, those notices I made are several weeks old)
The output of ‘guix describe’ above shows that we’re now running
Generation 19 and that it includes both Guix and packages from the
‘variant-personal-packages’ channel (*note Invoking guix describe::).
** 8.1
See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.7&id=6eb3c3d0a52dca337e327ae8868ca1f44a712e02
You may pass any ‘guix shell’ option, but there’s one caveat: the
Linux kernel has a limit of 127 bytes on shebang length.
** 8.1
this is done automatically on Guix System. Should be mentioned?
‘guix shell’ defines the ‘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 ‘.bashrc’ (*note (bash)Bash Startup Files::):
if [ -n "$GUIX_ENVIRONMENT" ]
then
export PS1="\u@\h \w [dev]\$ "
fi
... or to browse the profile:
$ ls "$GUIX_ENVIRONMENT/bin"
** 8.2
Time to remove?
Being deprecated, ‘guix environment’ is slated for eventual
removal, but the Guix project is committed to keeping it until May
1st, 2023. Please get in touch with us at <guix-devel@gnu.org> if
you would like to discuss it.
** 8.3
L47 they they
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 ‘--relocatable’ option (see below).
This option produces “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
** 9
missing application word for apis.
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.
** 9.5 build system
texlive-build-system
located in located in
It also generates font metrics (i.e., ‘.tfm’ files) out of Metafont
files whenever possible. Likewise, it can also create TeX formats
(i.e., ‘.fmt’ files) listed in the ‘#:create-formats’ argument, and
generate a symbolic link from ‘bin/’ directory to any script
located in located in ‘texmf-dist/scripts/’, provided its file name
is listed in ‘#:link-scripts’ argument.
** 10.1.3 bottom
shouldn't this be on "a" instead of "an" x86 machine?
So for instance, imagine you want to see the build log of GDB on
‘aarch64’, but you are actually on an ‘x86_64’ machine:
$ guix build --log-file gdb -s aarch64-linux
https://ci.guix.gnu.org/log/...-gdb-7.10
** 10.1.4 L38
remove word "run" for easier understanding
In such cases, you may need to run inspect the build process from
within a container similar to the one the build daemon creates:
** 10.3
Someone on IRC mentioned that using guix downloaded could be abused as
of it sees (the website) the user agent and returns a different source.
** 10.4 L141
command command
The command command below imports metadata for the Cairo R package:
** 10.4 L195
command command
The command command below imports metadata for the ‘fontspec’ TeX
package:
** 10.4 L373
package repository urls is mentioned twice
‘elm’
Import metadata from the Elm package repository
package.elm-lang.org (https://package.elm-lang.org), as in this
example:
** 10.4 L433
package repo url mentioned twice (name missing)
‘go’
Import metadata for a Go module using proxy.golang.org
(https://proxy.golang.org).
** 10.9 L59
it possible it to
This makes it possible it to profile disk usage of store items that are
not even on disk, only available remotely.
** 10.16 L34
guix shell not guix environment
In this example we see that ‘guix-daemon’ has three clients: ‘guix
environment’, ‘guix publish’, and the Cuirass continuous integration
** Emacs info next using space
On chapter "Conecpt Index" at the bottom, it should jump to the next
node called "Programming Index" but instead it goes to "12.12 Name
Service Switch L21"
** 12.1
mention that generations are linear just like guix package roll-back
did it.
Although the ‘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 ‘guix system roll-back’), since the
operation might overwrite a later generation (*note Invoking guix
system::).
** 12.9.1 Base Services L933
Here is AN example sounds better
Here is example of switching from ‘mingetty-service-type’ to
‘greetd-service-type’, and how different terminals could be:
** 12.9.1 Base Services L561
This is a list but it is interpreted as a footnotes
Suppose you would like to fetch substitutes from
‘guix.example.org’ in addition to ‘ci.guix.gnu.org’. You will
need to do two things: (1) add ‘guix.example.org’ to
‘substitute-urls’, and (2) authorize its signing key, having
** 12.9.4 Networking Setup L283
It's value must be a [...]
-- Variable: connman-service-type
This is the service type to run Connman (https://01.org/connman), a
network connection manager.
Its value must be an ‘connman-configuration’ record as in this
example:
** 12.9.5 Networking Services L89
why the #?
‘driver’ (default: ‘"nl80211"’)
The driver interface type. ‘"nl80211"’ is used with all Linux
mac80211 drivers. Use ‘"none"’ if building hostapd as a
standalone RADIUS server that does # not control any
wireless/wired driver.
** 12.9.5 L109
Uppercase for new sentences (rearange text, make it look more clean)
same for nftables as well
This is the service type to set up an iptables configuration.
iptables is a packet filtering framework supported by the Linux
** 12.9.5
normally this is always the first entry and not the last
‘ntp’ (default: ‘ntp’)
The NTP package to use.
** 12.9.5 233
gnu is not highlighted as URL
(constraint-from '("www.gnu.org"))
(constraints-from '("https://www.google.com/"))))
** 12.9.5 L611
default are in uppercase as #F instead of #f.
same for webssh
** 12.9.5 L1078
[...] for the configuration of Avahi.
-- Data Type: avahi-configuration
Data type representation the configuration for Avahi.
** 12.9.5 L1216
adynamic? probably meant a dynamic
‘autoconf?’ (default: ‘#f’)
Whether to use automatic mode. Enabling it makes Yggdrasil
use adynamic IP and peer with IPv6 neighbors.
is HJSON correct?
‘config-file’ (default: ‘"/etc/yggdrasil-private.conf"’)
What HJSON file to load sensitive data from. This is where
** 12.9.5
expect gnu lsh, there is no type information
** 12.9.7 x window
double space
" -SecurityTypes None"))
** 12.9.9 Desktop Services L694
quote in value
• ‘"15c0a148-c273-11ea-b3de-0242ac130004’: BlueZ
Experimental LL privacy,
** 12.9.10 Sound Services L26
uppercase letter instead of lowercase
‘pulseaudio?’ (default: #T)
** 12.9.11 L79
Which other methods do exist?
‘method’ (default: ‘'store’)
Indexing method for ‘guix locate’. The default value,
‘'store’, yields a more complete database but is relatively
expensive in terms of CPU and input/output.
** 12.9.12 L37
missing default
‘postgresql’
PostgreSQL package to use for the service.
** 12.9.13 L1275
valid values are passwd and static but the default is someting else.
How?
-- getmail-retriever-configuration parameter: string type
The type of mail retriever to use. Valid values include
‘passwd’ and ‘static’.
Defaults to ‘"SimpleIMAPSSLRetriever"’.
** 12.9.13 Dovecot
Dovecot has many entries "same as [...]" "defaults to [...]". I don't
know if this is good since if one would change the defaults of a
variable the docs would be wrong (except it does it automatically).
** 12.9.14 L379
is just AN empty string
For example, if your ‘prosody.cfg.lua’ is just the empty string, you
could instantiate a prosody service like this:
** 12.9.19 LDAP L207
connection weird symbol.
-- nslcd-configuration parameter: maybe-number idle-timelimit
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.
Defaults to ‘disabled’.
** 12.9.19 LDAP L237
authentication weird symbol
-- nslcd-configuration parameter: maybe-string tls-cacertdir
Specifies the directory containing X.509 certificates for peer
authen‐ tication. This parameter is ignored when using GnuTLS.
Defaults to ‘disabled’.
** 12.9.19 LDAP L434
Normally booleans are #f or #t
‘selinux’ (default: ‘#false’) (type: boolean)
Enables SELinux detection and integration during the
installation of this instance. If set to ‘#true’, ‘dscreate’
auto-detects whether SELinux is enabled.
** 12.9.20 Web Services L29 and L155
formatting of string-join elements
(simple-service 'www.example.com-server httpd-service-type
(list
(httpd-virtualhost
"*:80"
(list (string-join '("ServerName www.example.com"
"DocumentRoot /srv/http/www.example.com")
"\n")))))
** 12.9.20 Web Services NGINX
Sometimes it is called NGinx. But isn't it either NGINX or nginx? It
was also named as Nginx. Sometimes it is 'nginx'.
** 12.9.20 Web Services Mumi
#true instead of #t
‘mailer?’ (default: ‘#true’)
Whether to enable or disable the mailer component.
** 12.9.23 VNC Services L125
should be #t instead of #true in the description.
‘localhost?’ (default: ‘#t’) (type: boolean)
Only allow connections from the same machine. It is set to
#true by default for security, which means SSH or another
secure means should be used to expose the remote port.
** 12.9.27 Continous Integretation L135
before argument is a weird symbol.
To enable this build mode a ‘cuirass-remote-server-configuration’
record must be passed as ‘remote-server’ argument of the
‘cuirass-configuration’ record. The
‘cuirass-remote-server-configuration’ record is described below.
** 12.9.29 Audio Services L75
two different variables that do the same thing.
‘music-directory’ (type: maybe-string)
The directory to scan for music files.
‘music-dir’ (type: maybe-string)
The directory to scan for music files.
‘playlist-directory’ (type: maybe-string)
The directory to store playlists.
‘playlist-dir’ (type: maybe-string)
The directory to store playlists.
** 12.9.29 Audio Services L289
missing new line
‘user’ (default: ‘%mympd-user’) (type: user-account)
Owner of the ‘mympd’ process.
The default ‘%mympd-user’ is a system user with the name
“mympd”, who is a part of the group GROUP (see below).
‘group’ (default: ‘%mympd-group’) (type: user-group)
Owner group of the ‘mympd’ process.
The default ‘%mympd-group’ is a system group with name
“mympd”.
‘work-directory’ (default: ‘"/var/lib/mympd"’) (type: string)
Where myMPD will store its data.
** 12.9.30 Virtualization Services L969
#true instead of #t
(ganeti-os
(name "guix")
(variants (local-file "ganeti-guix-variants"
#:recursive? #true)))
** 12.9.31 Version Control Services L385
config- file weird syntax
-- cgit-configuration parameter: file-object include
Name of a configfile to include before the rest of the current
config- file is parsed.
Defaults to ‘""’.
Just an empty string instead of the empty string L858
For example, if your ‘cgitrc’ is just the empty string, you could
instantiate a cgit service like this:
(service cgit-service-type
(opaque-cgit-configuration
(cgitrc "")))
Default values are in UPPERCASE L859
-- Data Type: gitolite-configuration
Data type representing the configuration for
‘gitolite-service-type’.
** 12.9.32 PAM Mount Service
Uses old style.
** 12.9.37 Misc Services
Dictionary Service UPPERCASE values for default variables.
Shouldn't this be gets banned instead of get banned? L574
‘max-retry’ (type: maybe-integer)
The number of failures before a host get banned (e.g.
‘(max-retry 5)’).
** 12.11 Bootloader Configuration L74
Instead of tftp info detects ftp.
If you plan to use an NFS root file system as well (actually
if you mount the store from an NFS share), then the TFTP
server needs to serve the file ‘/boot/grub/grub.cfg’ and other
files from the store (like GRUBs background image, the kernel
(*note ‘kernel’: operating-system Reference.) and the initrd
(*note ‘initrd’: operating-system Reference.)), too. All
these files from the store will be accessed by GRUB through
TFTP with their normal store path, for example as
‘tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz’.
Uppercase default value L171
‘theme’ (default: #F)
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.
random + at the end L271
‘multiboot-arguments’ (default: ‘'()’)
The list of extra command-line arguments for the
multiboot-kernel.
For example, when running in QEMU it can be useful to use a
text-based console (use options ‘--nographic’ ‘--serial
mon:stdio’):
'("console=com0")
To use the new and still experimental rumpdisk user-level disk
driver (https://darnassus.sceen.net/~hurd-web/rump_kernel/)
instead of GNU Mach’s in-kernel IDE driver, set
‘kernel-arguments’ to:
'("noide")
Of course, these options can be combined:
'("console=com0" "noide")
+
** 12.12 Invoking Guix system L88
, -unless
It also adds a bootloader menu entry for the new OS configuration,
—unless ‘--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.
** Service Reference L177
It lists some services that were already mentioned in the Services
chapter. Wouldn't it be better to just reference to this, to have one
source of truth?
At the core of the service abstraction lies the ‘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 ‘guix system build’ command (*note
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.
** Guix home
it is called "dotfiles" and on the next chapter it is called "dot
files".
** Essential Home Server L85
Explain DAG acronym.
-- Variable: home-service-type
The root of home services DAG, it generates a folder, which later
will be symlinked to ‘~/.guix-home’, it contains configurations,
profile with binaries and libraries, and some necessary scripts to
glue things together.
** Shells Home Services
Add the code as well. Was the case for system services.
You would then add ‘bash-fancy-prompt-service’ to the list in the
‘services’ field of your ‘home-environment’. The reference of
‘home-bash-extension’ follows.
Inputrc Profile Service
The example code uses the old style.
(service home-inputrc-service-type
(home-inputrc-configuration
(key-bindings
`(("Control-l" . "clear-screen")))
(variables
`(("bell-style" . "visible")
("colored-completion-prefix" . #t)
("editing-mode" . "vi")
("show-mode-in-prompt" . #t)))
(conditional-constructs
`(("$if mode=vi" .
,(home-inputrc-configuration
(variables
`(("colored-stats" . #t)
("enable-bracketed-paste" . #t)))))
("$else" .
,(home-inputrc-configuration
(variables
`(("show-all-if-ambiguous" . #t)))))
("endif" . #t)
("$include" . "/etc/inputrc")
("$include" . ,(file-append
(specification->package "readline")
"/etc/inputrc"))))))
** Secure Shell
Weird syntax. Can't we just have 'no, 'confirm, 'ask or 'yes?
‘add-keys-to-agent’ (default: ‘``no''’)
This string specifies whether keys should be automatically
added to a running ssh-agent. If this option is set to
‘``yes''’ and a key is loaded from a file, the key and its
passphrase are added to the agent with the default lifetime,
as if by ‘ssh-add’. If this option is set to ‘``ask''’, ‘ssh’
will require confirmation. If this option is set to
‘``confirm''’, each use of the key must be confirmed. If this
option is set to ‘``no''’, no keys are added to the agent.
Alternately, this option may be specified as a time interval
to specify the key’s lifetime in ‘ssh-agent’, after which it
will automatically be removed. The argument must be ‘``no''’,
‘``yes''’, ‘``confirm''’ (optionally followed by a time
interval), ‘``ask''’ or a time interval.
** Desktop Home Services L32
Geolocation provider— why the hyphen.
‘location-provider’ (default: ‘geoclue2’) (type: symbol)
Geolocation provider—‘'manual’ or ‘'geoclue2’. In the former
case, you must also specify the ‘latitude’ and ‘longitude’
fields so Redshift can determine daytime at your place. In
the latter case, the Geoclue system service must be running;
it will be queried for location information.
** Mail Home Services L101
cmd should be CMD, since it as a parameter.
‘password-eval’ (type: maybe-string)
Set the password for authentication to the output (stdout) of
the command cmd.
** 17.1
should be is that IT takes up a fair
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
** Full Source Bootstrap L68
to to
Work is ongoing to to bring these bootstraps to the ‘arm-linux’ and
‘aarch64-linux’ architectures and to the Hurd.
** Preparitng to use Bootstrap binaries L152
of of
Our first major achievement is the replacement of of GCC, the GNU C
Library and Binutils by MesCC-Tools (a simple hex linker and macro
** 22 Contributing
There is a weird symbol after Libera.
This project is a cooperative effort, and we need your help to make it
grow! Please get in touch with us on <guix-devel@gnu.org> and ‘#guix’
on the Libera Chat IRC network. We welcome ideas, bug reports, patches,
and anything that may be helpful to the project. We particularly
welcome help on packaging (*note Packaging Guidelines::).
** Version Numers L59
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.7&id=6eb3c3d0a52dca337e327ae8868ca1f44a712e02
It is a good idea to strip commit identifiers in the ‘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). There are helper functions for doing this for packages using
‘git-fetch’ or ‘hg-fetch’ (see below). It is best to use the full
commit identifiers in ‘origin’s, though, to avoid ambiguities. A
typical package definition may look like this:
** Elm Packages
It says it is not required but at the same time it says it is
required, or do I understand this wrong? (I like those prefixes
anyways, they keep it organized and makes finding packages easier.)
Elm applications can be named like other software: their names need not
mention Elm.
To form the Guix package name from the upstream name, we follow a
convention similar to Python packages (*note Python Modules::), adding
an ‘elm-’ prefix unless the name would already begin with ‘elm-’.
** Formatting Code L18
Shouldn't it be know?
If you do not use Emacs, please make sure to let your editor knows
these rules.
Also, I read in the manual this:
‘create-mount-point?’ (default: ‘#f’)
When true, the mount point is created if it does not exist
yet.
and my config is this:
(file-system
(mount-point "/home/cm/entertainment")
(device (uuid
"8112eb2f-5a42-4bb9-b097-501a468c1573"
'btrfs))
(type "btrfs"))
though if I reinstall my system on a new drive, the /entertainment
directory is automatically created as root and therefore whole
/home/cm is owned by root which breaks the shell of the home user.
--
Christian Miller
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-14 15:01 Feedback of the GNU Guix manual Christian Miller
@ 2024-01-15 17:52 ` Matt
2024-01-15 22:05 ` Christian Miller
2024-01-18 19:44 ` Maxim Cournoyer
2024-04-10 14:05 ` Fix grammar and markup (was " Matt
` (2 subsequent siblings)
3 siblings, 2 replies; 69+ messages in thread
From: Matt @ 2024-01-15 17:52 UTC (permalink / raw)
To: Christian Miller; +Cc: guix-devel
I care about this. How can I help?
- Convert the notes into patches?
- Proofread any patches that derive from Christian's efforts?
---- On Sun, 14 Jan 2024 16:01:58 +0100 Christian Miller wrote ---
> I read through the GNU Guix manual on revision
> ee7c9d254117fa470686210ad2ef5e7f1ba4fefc with Emacs in TTY mode.
What's TTY mode? M-x tty <tab> reveals nothing for me.
> As a beginner, the manual was helpful and I learned lot's of stuff.
> Though it felt heartless. No consistency and sometimes the structure
> is confusing (especially the contributing part, since it tries to get
> GNU Guix System and GNU Guix under one section and it was kinda
> confusing for me).
Thank you for sharing your experience. I'm sorry it wasn't more positive. I've found it challenging to read as well.
> It seems that there is no style guide. Sometimes default values are
> mentioned and sometimes not. Also some use uppercase and other use
> lowercase for type of variable. There is also Scheme code which is
> most of the time in the old style notation. For me as a beginner,
> this was confusing.
The GNU project has several:
- https://www.gnu.org/prep/standards/html_node/Documentation.html
- https://www.fsf.org/licensing/gnu-press/GNU-Press-styleguide.pdf
> I will mention lot's of style issues since at that time I did not know
> it is in such a bad state.
I respectfully disagree that it's in bad taste to mention them. I find such feedback helpful towards correcting the problems you experience. I appreciate you taking the time to write them all up. It's nice to know someone reads the manual! :)
--
Matt Trzcinski
Emacs Org contributor (ob-shell)
Learn more about Org mode at https://orgmode.org
Support Org development at https://liberapay.com/org-mode
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-15 17:52 ` Matt
@ 2024-01-15 22:05 ` Christian Miller
2024-01-18 19:44 ` Maxim Cournoyer
1 sibling, 0 replies; 69+ messages in thread
From: Christian Miller @ 2024-01-15 22:05 UTC (permalink / raw)
To: Matt; +Cc: guix-devel
> I care about this. How can I help?
I don't know. I would also create patches but don't know if it should
be a huge patch or multiple ones, or maybe even it's own branch.
> What's TTY mode? M-x tty <tab> reveals nothing for me.
Mode is probably the wrong word. It basically is just running
"emacsclient --tty". I sometimes use Emacs in a Linux console, since
I like how it looks (also helps in learning the keybindings and
actually using them, since it forces me to not use the mouse). I
mentioned it, since it changes how the documentation is rendered. For
example, there will be no pictures since there is no graphics in a
Linux console.
> I appreciate you taking the time to write them all up.
Thanks.
--
Christian Miller
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-15 17:52 ` Matt
2024-01-15 22:05 ` Christian Miller
@ 2024-01-18 19:44 ` Maxim Cournoyer
2024-01-19 21:01 ` Matt
1 sibling, 1 reply; 69+ messages in thread
From: Maxim Cournoyer @ 2024-01-18 19:44 UTC (permalink / raw)
To: Matt; +Cc: Christian Miller, guix-devel
Hi Matt!
Matt <matt@excalamus.com> writes:
> I care about this. How can I help?
>
> - Convert the notes into patches?
> - Proofread any patches that derive from Christian's efforts?
That would be a good way to help, yes! It'll be easier to review if
each distinct problem is fixed in its own commit (patch).
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-18 19:44 ` Maxim Cournoyer
@ 2024-01-19 21:01 ` Matt
2024-01-26 23:59 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-01-19 21:01 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: Christian Miller, guix-devel
---- On Thu, 18 Jan 2024 20:44:53 +0100 Maxim Cournoyer wrote ---
> That would be a good way to help, yes! It'll be easier to review if
> each distinct problem is fixed in its own commit (patch).
Now that I've looked more closely at it, I completely agree.
I suggest we take them point-by-point and move on only after we've completed each one in turn.
** Binary installation L73
Guix system should be Guix System
*** Comment
Line 73 in the info file, section "Binary Installation" corresponds to
line 825 in =doc/guix.texi=.
=15efd5a7f4:doc/guix.texi= reads,
#+begin_quote
Do _not_ unpack the tarball on a working Guix system since that would
overwrite its own essential files.
#+end_quote
I see several issues with this sentence. In order of severity:
1. the sentence isn't necessary
2. the problem is moving, not unpacking
3. the sentence confuses the subject
4. (reported) the word "system" is unclear
At this point in the manual, the reader has downloaded a Guix tarball
and has just been instructed to unpack and move the extracted files.
The sentence warns that moving =/tmp/var/guix= to =/var/= and
=/tmp/gnu= to =/= will overwrite files already there from an existing
Guix installation.
**** 1. the sentence isn't necessary
Is there ever a circumstance where a Guix installation, from a binary
or as a System, would need to install Guix from the tarball?
Unless there's a reason for a Guix user to follow the steps in "Binary
Installation," I suggest we remove this sentence and revise the
introduction paragraph to make sure current Guix users skip this
section.
--
Matt Trzcinski
Emacs Org contributor (ob-shell)
Learn more about Org mode at https://orgmode.org
Support Org development at https://liberapay.com/org-mode
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-19 21:01 ` Matt
@ 2024-01-26 23:59 ` Matt
2024-02-18 12:35 ` Matt
` (2 more replies)
0 siblings, 3 replies; 69+ messages in thread
From: Matt @ 2024-01-26 23:59 UTC (permalink / raw)
To: Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel
[-- Attachment #1: Type: text/plain, Size: 3689 bytes --]
Friendly bump.
Attached is a suggested diff.
A previous suggestion was made to change "system" to the proper noun "System", as in the "Guix System", within the Binary Installation section. The change would occur in a warning that moving unpacked binary tarballs as directed on existing Guix installations will overwrite system files.
The suggested capitalization would be improper since the "system" referred to is "an arbitrary system" and not specifically the Guix System.
The broader context is that the change suggested occurs within the Binary Installation section. Since, there is no apparent reason why a user of an existing Guix installation would need to perform a binary installation, this patch removes the warning sentence (containing the confusing usage of "system") and moves it to the beginning of the section so that readers may understand the risk at the start and to decide whether this section applies to them before reading further.
The change also corrects the overly broad term "arbitrary system" to the specific "Linux or Hurd-based system." Guix does not work with BSD, Haiku, Windows, or Darwin systems. While installing Guix on these systems may be possible, by some definitions of "install", doing so for an end-user would be silly, since it wouldn't function as expected.
The change also more accurately lists the requirements. Previously, it was stated that only tar and Xz are required. This is false since Guix requires a Linux or Hurd-based system.
The explanation of "a self-contained tarball providing binaries for Guix and for all its dependencies" was reduced to the simpler "archived binaries." Generally, "tarball" is imprecise, hence the need to explain what it contains in this context. Further, it's jargon, may not be familiar to some readers, and isn't relevant to the point of the introduction, that Guix may be installed without needing to compile and why that might be desirable.
Specific mention of installing Guix's dependencies was removed. Guix being installed implies that its dependencies are also installed.
The warning line was added in commit:
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=5dc3ce5f6c7990f44143f8e9bb9a873a014a82e4.
The warning orginates from this commit:
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=09722b11e5e618028051d5f6d14eb13529dc7100
I see no associated issue referenced in the commits. I assume the warning is simply being cautious.
#+begin_src diff
diff --git a/doc/guix.texi b/doc/guix.texi
index 4af830aed7..16349d4ec1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -732,14 +732,16 @@ ready to use it.
@cindex installing Guix from binaries
@cindex installer script
-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.
+This section describes how to install Guix from archived binaries. Such
+installations are often quicker than building from source, which is
+described in the next sections. Binary installations require a Linux or
+Hurd-based system with GNU@tie{}tar and Xz.
+
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@c Note duplicated from the ``Installation'' node.
-@quotation Note
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
#+end_src
[-- Attachment #2: 0001-binary-installation.diff --]
[-- Type: application/octet-stream, Size: 1213 bytes --]
diff --git a/doc/guix.texi b/doc/guix.texi
index 4af830aed7..16349d4ec1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -732,14 +732,16 @@ ready to use it.
@cindex installing Guix from binaries
@cindex installer script
-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.
+This section describes how to install Guix from archived binaries. Such
+installations are often quicker than building from source, which is
+described in the next sections. Binary installations require a Linux or
+Hurd-based system with GNU@tie{}tar and Xz.
+
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@c Note duplicated from the ``Installation'' node.
-@quotation Note
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
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-26 23:59 ` Matt
@ 2024-02-18 12:35 ` Matt
2024-02-18 13:55 ` Josselin Poiret
2024-02-21 17:20 ` Maxim Cournoyer
2 siblings, 0 replies; 69+ messages in thread
From: Matt @ 2024-02-18 12:35 UTC (permalink / raw)
To: Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel
Friendly bump. Awaiting feedback or guidance.
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-26 23:59 ` Matt
2024-02-18 12:35 ` Matt
@ 2024-02-18 13:55 ` Josselin Poiret
2024-02-21 18:27 ` Matt
2024-02-21 17:20 ` Maxim Cournoyer
2 siblings, 1 reply; 69+ messages in thread
From: Josselin Poiret @ 2024-02-18 13:55 UTC (permalink / raw)
To: Matt, Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel
[-- Attachment #1: Type: text/plain, Size: 1037 bytes --]
Hi Matt,
Matt <matt@excalamus.com> writes:
> The explanation of "a self-contained tarball providing binaries for Guix and for all its dependencies" was reduced to the simpler "archived binaries." Generally, "tarball" is imprecise, hence the need to explain what it contains in this context. Further, it's jargon, may not be familiar to some readers, and isn't relevant to the point of the introduction, that Guix may be installed without needing to compile and why that might be desirable.
>
> Specific mention of installing Guix's dependencies was removed. Guix being installed implies that its dependencies are also installed.
I don't agree here: it's often the case in Linux-land that binary
archives are provided without their dependencies included, assuming that
the user already has them, often by installing them via their own
package manager. Keeping the mention that it is self-contained and that
the dependencies are also included might clarify the situation for some
users.
Best,
--
Josselin Poiret
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 682 bytes --]
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-01-26 23:59 ` Matt
2024-02-18 12:35 ` Matt
2024-02-18 13:55 ` Josselin Poiret
@ 2024-02-21 17:20 ` Maxim Cournoyer
2024-02-21 18:36 ` Matt
2 siblings, 1 reply; 69+ messages in thread
From: Maxim Cournoyer @ 2024-02-21 17:20 UTC (permalink / raw)
To: Matt; +Cc: Christian Miller, guix-devel, Josselin Poiret
Hi Matt,
Thanks for the follow-up.
Matt <matt@excalamus.com> writes:
[...]
> #+begin_src diff
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 4af830aed7..16349d4ec1 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -732,14 +732,16 @@ ready to use it.
>
> @cindex installing Guix from binaries
> @cindex installer script
> -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.
> +This section describes how to install Guix from archived binaries. Such
> +installations are often quicker than building from source, which is
> +described in the next sections. Binary installations require a Linux or
> +Hurd-based system with GNU@tie{}tar and Xz.
Like Josselin, I prefer to keep the mention that the tarball archive
includes the transitive dependencies of Guix (it's explicit; "archived
binaries" is a bit vague to my taste).
As for the Linux or Hurd-based system, that seems like a good idea to
make things explicit.
I've pushed your adjusted suggestions with commit ec9c8b0c1a.
Thank you!
--
Maxim
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-02-18 13:55 ` Josselin Poiret
@ 2024-02-21 18:27 ` Matt
0 siblings, 0 replies; 69+ messages in thread
From: Matt @ 2024-02-21 18:27 UTC (permalink / raw)
To: Josselin Poiret; +Cc: Maxim Cournoyer, Christian Miller, guix-devel
[-- Attachment #1: Type: text/plain, Size: 1914 bytes --]
---- On Sun, 18 Feb 2024 14:55:46 +0100 Josselin Poiret wrote ---
> Matt matt@excalamus.com> writes:
>
> > Specific mention of installing Guix's dependencies was removed. Guix being installed implies that its dependencies are also installed.
>
> I don't agree here: it's often the case in Linux-land that binary
> archives are provided without their dependencies included, assuming that
> the user already has them, often by installing them via their own
> package manager. Keeping the mention that it is self-contained and that
> the dependencies are also included might clarify the situation for some
> users.
Thank you for the feedback.
I opted for only "self-contained" which seems to imply that dependencies are available, in addition to other things, perhaps like setting an environment or pathing. If "self-contained" is distinct from "includes dependencies," we could append something like "...and includes all dependencies" to the last sentence.
I also tried to distinguish that it's the installation *process* which requires GNU-tar and Xz and not the final installation, since that's self-contained.
Otherwise, I tried to simplify the language:
- archived binaries -> a binary archive
- are often quicker -> often go faster
- which is described in the next sections -> described later
This version has fewer words and one more sentence. However, each sentence has a single, hopefully clear, point:
1. What this section is about? Installing from a binary archive.
2. Why you might want this section? It's faster than building.
3. What's needed? A Linux or Hurd-system with GNU-tar and Xz.
4. What do you get? A self-contained Guix installation.
Original: Region has 5 lines, 3 sentences, 51 words, and 301 characters
v2: Region has 5 lines, 4 sentences, 45 words, and 292 characters
If this is good, I can write up a commit message and format the change as a patch.
[-- Attachment #2: v2-0001-binary-installation.diff --]
[-- Type: application/octet-stream, Size: 1249 bytes --]
diff --git a/doc/guix.texi b/doc/guix.texi
index 9966a8e697..a5558300fa 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -732,14 +732,17 @@ ready to use it.
@cindex installing Guix from binaries
@cindex installer script
-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.
+This section describes how to install Guix from a binary archive. Such
+installations often go faster than building from source, described
+later. Guix requires a Linux or Hurd-based system and unpacking the
+archive requires GNU@tie{}tar and Xz. The resulting installation is
+self-contained.
+
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@c Note duplicated from the ``Installation'' node.
-@quotation Note
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
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-02-21 17:20 ` Maxim Cournoyer
@ 2024-02-21 18:36 ` Matt
2024-02-23 2:46 ` Maxim Cournoyer
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-02-21 18:36 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: Christian Miller, guix-devel, Josselin Poiret
---- On Wed, 21 Feb 2024 18:20:19 +0100 Maxim Cournoyer wrote ---
> Thanks for the follow-up.
Thank you! Seems like we were looking at it at about the same time :)
> Like Josselin, I prefer to keep the mention that the tarball archive
> includes the transitive dependencies of Guix (it's explicit; "archived
> binaries" is a bit vague to my taste).
I tried to address that in the diff I wrote up before I saw your message. I agree, "archived binaries" is awkward. I changed it in my update.
> I've pushed your adjusted suggestions with commit ec9c8b0c1a.
Cool. I'll work on the next item in the list. Please let me know if there's something more regarding this item based on the v2 update.
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-02-21 18:36 ` Matt
@ 2024-02-23 2:46 ` Maxim Cournoyer
2024-02-23 18:37 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: Maxim Cournoyer @ 2024-02-23 2:46 UTC (permalink / raw)
To: Matt; +Cc: Christian Miller, guix-devel, Josselin Poiret
Hi Matt,
Matt <matt@excalamus.com> writes:
> ---- On Wed, 21 Feb 2024 18:20:19 +0100 Maxim Cournoyer wrote ---
>
> > Thanks for the follow-up.
>
> Thank you! Seems like we were looking at it at about the same time :)
>
> > Like Josselin, I prefer to keep the mention that the tarball archive
> > includes the transitive dependencies of Guix (it's explicit; "archived
> > binaries" is a bit vague to my taste).
>
> I tried to address that in the diff I wrote up before I saw your message. I agree, "archived binaries" is awkward. I changed it in my update.
>
> > I've pushed your adjusted suggestions with commit ec9c8b0c1a.
>
> Cool. I'll work on the next item in the list. Please let me know if there's something more regarding this item based on the v2 update.
Great, sounds good. I've checked your v2 update, but opted to keep
things as they are (following my own edition of your initial work, which
was committed).
Thank you for your efforts!
--
Maxim
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-02-23 2:46 ` Maxim Cournoyer
@ 2024-02-23 18:37 ` Matt
2024-03-02 13:34 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-02-23 18:37 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: Christian Miller, guix-devel, Josselin Poiret
---- On Fri, 23 Feb 2024 03:46:29 +0100 Maxim Cournoyer wrote ---
> Great, sounds good. I've checked your v2 update, but opted to keep
> things as they are (following my own edition of your initial work, which
> was committed).
No problem, I think what you did looks good.
> Thank you for your efforts!
Likewise, excited to be working on this.
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Feedback of the GNU Guix manual
2024-02-23 18:37 ` Matt
@ 2024-03-02 13:34 ` Matt
2024-03-06 17:15 ` doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual) pelzflorian (Florian Pelz)
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-03-02 13:34 UTC (permalink / raw)
To: Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 3623 bytes --]
We're working through a list of feedback one item at a time:
https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00117.html
We have completed an item and are ready to work on the next one:
#+begin_quote
,** Binary Installation L88 and L95
~root is weird. Should be root or simply ~ for the user profile which would be root as root user.
#+end_quote
I agree. I found it weird at first, too.
Two thoughts:
1. The use of "~root" is intentional
2. Section 2.1 Binary Install can be refactored to remove the reported confusion as well as the tarpit of shell related details
*1. The use of "~root" is intentional*
According to the Bash info and man pages, "~root" is a TILDE-PREFIX with "root" as the LOGIN NAME. The TILDE-PREFIX is replaced with the home directory associated with the specified LOGIN NAME.
Using "~root" solves the problem of operations happening in the wrong location. It ensures that commands reference the 'root' user's home directory.
- (original issue) https://lists.gnu.org/archive/html/guix-devel/2015-06/msg00085.html
- (separate issue) https://bugs.gnu.org/30728
*2. Section 2.1 Binary Install needs refactoring*
The Binary Installation section tries to solve the problem of guiding readers to install Guix as quickly and painlessly as possible. This began as a step-by-step process which was later automated by 'guix-install.sh'. Over 6 years, 12 people have worked to make 'guix-install.sh' robust. Because of these efforts, Section 2.1 Binary Installation has effectively become high level documentation for how 'guix-install.sh' works.
Like any code comment tends to drift out of sync with the source code, the current presentation of binary installations has become inconsistent and redundant. Using 'guix-install.sh' is the recommended method for binary installation. It's the first thing mentioned by Section 2 Installation and one of the first things mentioned by Section 2.1 Binary Installation. It's inconsistent to say, "This is how to do it" and then proceed to explain how to *not* use the recommended method.
Key information, like the recommended installation method and the definition of "foreign distro", are improperly hidden inside notes. Note blocks act as comments which, by definition, are secondary to the main point. The main point is to use 'guix-install.sh' on foreign distros which don't provide their own packages for Guix.
The attached diff addresses these issues. It fixes the root issue (pun intended) of whether or not to expect readers to understand '~root', as well as unmentioned issues also related to shell-specific knowledge like, "What does it mean to 'source'?" Readers interested in those details may read the code for 'guix-install.sh'.
The diff does the following:
- Clarifies at the top level that installing on a foreign distro has two methods: using packaged binaries and building from source
- Places the overwrite warning at the top level node and binary installation level node
- Moves the definition of "foreign distro" out of quotation
- Moves the foreign distro installation instructions out of quotation
- Summarizes the steps 'guix-install.sh' follows rather than trying to detail them
- Splits the requirements between system requirements for binary installations, GNU/Linux or GNU/Hurd, and requirements for running 'guix-install.sh', tar, wget, Xz
- Removes redundant instructions to use 'guix-install.sh'
- Places directions for 'guix-install.sh' after directions to use distribution-specific package managers, giving preference to those simpler install processes over the more manual 'guix-install.sh' process
[-- Attachment #2: v01-refactor-binary-installation-section.diff --]
[-- Type: application/octet-stream, Size: 11940 bytes --]
diff --git a/doc/guix.texi b/doc/guix.texi
index f6476e0d81..6322cc6fe9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -690,20 +690,25 @@ to join! @xref{Contributing}, for information about how you can help.
@chapter Installation
@cindex installing Guix
+@cindex foreign distro
+@cindex Guix System
+You can install the Guix package management tool on top of an existing
+GNU/Linux or GNU/Hurd system, referred to as a @dfn{foreign distro}, or
+as a standalone operating system distribution, the
+@dfn{Guix@tie{}System}. This section is concerned with the installation
+of Guix on a foreign distro. If, instead, you want to install the
+complete GNU operating system, @pxref{System Installation}.
-@quotation Note
-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.
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@end quotation
-@cindex foreign distro
+The following sections describe two methods of installation, binary
+installation and building from source. They describe the software
+requirements of Guix, as well as how to install it manually and get
+ready to use it.
+
@cindex directories related to foreign distro
When installed on a foreign distro, GNU@tie{}Guix complements the available
tools without interference. Its data lives exclusively in two directories,
@@ -713,11 +718,6 @@ such as @file{/etc}, are left untouched.
Once installed, Guix can be updated by running @command{guix pull}
(@pxref{Invoking guix pull}).
-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.
-
@menu
* Binary Installation:: Getting Guix running in no time!
* Requirements:: Software needed to build and run Guix.
@@ -736,254 +736,57 @@ ready to use it.
This section describes how to install Guix 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. Binary installation requires a system using a Hurd or Linux
-kernel; the GNU@tie{}tar and Xz commands must also be available.
+sections.
@quotation Important
This section only applies to systems without Guix. Following it for
existing Guix installations will overwrite important system files.
+@end quotation
-@c Note duplicated from the ``Installation'' node.
-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. As root, you can thus run this:
-
-@example
-cd /tmp
-wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
-chmod +x guix-install.sh
-./guix-install.sh
-@end example
+Some distributions, such as Debian, Ubuntu, and openSUSE, provide Guix
+through their own package managers. The version of Guix may be older
+than @value{VERSION} but you can update it afterwards by running
+@samp{guix pull}).
-If you're running Debian or a derivative such as Ubuntu, you can instead
-install the package (it might be a version older than @value{VERSION}
-but you can update it afterwards by running @samp{guix pull}):
+For Debian and Ubuntu-based systems call:
@example
sudo apt install guix
@end example
-Likewise on openSUSE:
+Likewise on openSUSE run:
@example
sudo zypper install guix
@end example
-When you're done, @pxref{Application Setup} for extra configuration you
-might need, and @ref{Getting Started} for your first steps!
-@end quotation
-
-Installing goes along these lines:
-
-@enumerate
-@item
-@cindex downloading Guix binary
-Download the binary tarball from
-@indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz},
-where @code{x86_64-linux} can be replaced with @code{i686-linux} for an
-@code{i686} (32-bits) machine already running the kernel Linux, and so on
-(@pxref{GNU Distribution}).
-
-@c The following is somewhat duplicated in ``System Installation''.
-Make sure to download the associated @file{.sig} file and to verify the
-authenticity of the tarball against it, along these lines:
-
-@example
-$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-$ gpg --verify guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-@end example
+The Guix project also provides a shell script, @file{guix-install.sh},
+which automates the binary installation process without use of a foreign
+distro package
+manager@footnote{@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh}}.
+Use of @file{guix-install.sh} requires Bash, GNU@tie{}tar, wget, and Xz.
-If that command fails because you do not have the required public key,
-then run this command to import it:
+The script does the following:
-@example
-$ wget '@value{OPENPGP-SIGNING-KEY-URL}' \
- -qO - | gpg --import -
-@end example
-
-@noindent
-and rerun the @code{gpg --verify} command.
-
-Take note that a warning like ``This key is not certified with a trusted
-signature!'' is normal.
-
-@c end authentication part
+@itemize
+@item Downloads and extracts the binary tarball
+@item Sets up the build daemon
+@item Makes the ‘guix’ command available to non-root users
+@item Configures substitute servers
+@end itemize
-@item
-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:
+As root, run:
@example
# cd /tmp
-# tar --warning=no-timestamp -xf \
- /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
-# mv var/guix /var/ && mv gnu /
-@end example
-
-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).
-
-Do @emph{not} unpack the tarball on a working Guix system since that
-would overwrite its own essential files.
-
-The @option{--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 1 (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.
-
-@item
-Make the profile available under @file{~root/.config/guix/current}, which is
-where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
-
-@example
-# mkdir -p ~root/.config/guix
-# ln -sf /var/guix/profiles/per-user/root/current-guix \
- ~root/.config/guix/current
-@end example
-
-Source @file{etc/profile} to augment @env{PATH} and other relevant
-environment variables:
-
-@example
-# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
- source $GUIX_PROFILE/etc/profile
-@end example
-
-@item
-Create the group and user accounts for build users as explained below
-(@pxref{Build Environment Setup}).
-
-@item
-Run the daemon, and set it to automatically start on boot.
-
-If your host distro uses the systemd init system, this can be achieved
-with these commands:
-
-@c Versions of systemd that supported symlinked service files are not
-@c yet widely deployed, so we should suggest that users copy the service
-@c files into place.
-@c
-@c See this thread for more information:
-@c https://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \
- ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
- /etc/systemd/system/
-# systemctl enable --now gnu-store.mount guix-daemon
-@end example
-
-You may also want to arrange for @command{guix gc} to run periodically:
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/guix-gc.service \
- ~root/.config/guix/current/lib/systemd/system/guix-gc.timer \
- /etc/systemd/system/
-# systemctl enable --now guix-gc.timer
-@end example
-
-You may want to edit @file{guix-gc.service} to adjust the command line
-options to fit your needs (@pxref{Invoking guix gc}).
-
-If your host distro uses the Upstart init system:
-
-@example
-# initctl reload-configuration
-# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
- /etc/init/
-# start guix-daemon
-@end example
-
-Otherwise, you can still start the daemon manually with:
-
-@example
-# ~root/.config/guix/current/bin/guix-daemon \
- --build-users-group=guixbuild
-@end example
-
-@item
-Make the @command{guix} command available to other users on the machine,
-for instance with:
-
-@example
-# mkdir -p /usr/local/bin
-# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
-@end example
-
-It is also a good idea to make the Info version of this manual available
-there:
-
-@example
-# mkdir -p /usr/local/share/info
-# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
- do ln -s $i ; done
-@end example
-
-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).
-
-@item
-@cindex substitutes, authorization thereof
-To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
-@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
-authorize them:
-
-@example
-# guix archive --authorize < \
- ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-1}.pub
-# guix archive --authorize < \
- ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
-@end example
-
-@quotation Note
-If you do not enable substitutes, Guix will end up building
-@emph{everything} from source on your machine, making each installation
-and upgrade very expensive. @xref{On Trusting Binaries}, for a
-discussion of reasons why one might want do disable substitutes.
-@end quotation
-
-@item
-Each user may need to perform a few additional steps to make their Guix
-environment ready for use, @pxref{Application Setup}.
-@end enumerate
-
-Voilà, the installation is complete!
-
-You can confirm that Guix is working by installing a sample package into
-the root profile:
-
-@example
-# guix install hello
-@end example
-
-The binary installation tarball can be (re)produced and verified simply
-by running the following command in the Guix source tree:
-
-@example
-make guix-binary.@var{system}.tar.xz
-@end example
-
-@noindent
-...@: which, in turn, runs:
-
-@example
-guix pack -s @var{system} --localstatedir \
- --profile-name=current-guix guix
+# wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+# chmod +x guix-install.sh
+# ./guix-install.sh
@end example
-@xref{Invoking guix pack}, for more info on this handy tool.
+When you're done installing Guix, @pxref{Application Setup} for extra
+configuration you might need, and @ref{Getting Started} for your first
+steps!
@node Requirements
@section Requirements
^ permalink raw reply related [flat|nested] 69+ messages in thread
* doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual)
2024-03-02 13:34 ` Matt
@ 2024-03-06 17:15 ` pelzflorian (Florian Pelz)
2024-03-06 19:42 ` Matt
2024-03-06 21:29 ` doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual) Vagrant Cascadian
0 siblings, 2 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-06 17:15 UTC (permalink / raw)
To: Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
Thank you Matt for the suggested diff.
Yes, I agree some simplification as you suggested would be beneficial,
so that the description of Binary Installation looks as simple as it
really is. (In particular, I have witnessed people, to whom I had
suggested Guix, fail at trying Guix because they tried Guix System on a
not libre-friendly laptop, when they could/should have tried Binary
Installation.)
> - Places
> directions for 'guix-install.sh' after directions to use
> distribution-specific package managers, giving preference to those
> simpler install processes over the more manual 'guix-install.sh'
> process
I don’t feel qualified to judge, but is this the preference? Arch wiki
advises against the Arch AUR package: “Therefore, after updating Guix
once, the AUR advantage really turns into a disadvantage, as there will
be many unnecessary files in the /usr file tree that are part of the
Guix AUR package but that are never used by Guix anymore. Therefore,
consider using the manual installation.” [0]
The reason of existence for these distribution packages is probably
similar to the reason why the Binary Installation section exists.
As for the suggested diff where much of Binary Installation gets
removed,
> -@item
> -@cindex substitutes, authorization thereof
> -To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
> -@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
> -authorize them:
> -
> -@example
> -# guix archive --authorize < \
> - ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-1}.pub
> -# guix archive --authorize < \
> - ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
> -@end example
> -
> -@quotation Note
> -If you do not enable substitutes, Guix will end up building
> -@emph{everything} from source on your machine, making each installation
> -and upgrade very expensive. @xref{On Trusting Binaries}, for a
> -discussion of reasons why one might want do disable substitutes.
> -@end quotation
I disagree with this chunk. This must stay. Not enabling substitutes
is an option in guix-install.sh and the Guix System installer. Users
might want to enable substitutes later on.
Regards,
Florian
[0] https://wiki.archlinux.org/title/Guix
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual)
2024-03-06 17:15 ` doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual) pelzflorian (Florian Pelz)
@ 2024-03-06 19:42 ` Matt
2024-03-06 20:52 ` doc: Removing much of Binary Installation Suhail Singh
2024-03-07 17:03 ` pelzflorian (Florian Pelz)
2024-03-06 21:29 ` doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual) Vagrant Cascadian
1 sibling, 2 replies; 69+ messages in thread
From: Matt @ 2024-03-06 19:42 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 3905 bytes --]
---- On Wed, 06 Mar 2024 18:15:05 +0100 pelzflorian (Florian Pelz) wrote ---
> Thank you Matt for the suggested diff.
Thank you for taking the time to review it!
> > - Places directions for 'guix-install.sh' after directions to use distribution-specific package managers, giving preference to those simpler install processes over the more manual 'guix-install.sh' process
>
> I don’t feel qualified to judge, but is this the preference? Arch wiki advises against the Arch AUR package: “Therefore, after updating Guix once, the AUR advantage really turns into a disadvantage, as there will be many unnecessary files in the /usr file tree that are part of the Guix AUR package but that are never used by Guix anymore. Therefore, consider using the manual installation.” [0]
>
> [0] https://wiki.archlinux.org/title/Guix
Good question, I wondered about this after I submitted.
The current manual has instructions for using the Debian, Ubuntu, and openSUSE package managers. These instructions are given after the recommendation for =guix-install.sh= along with the transition:
"If you’re running Debian or a derivative such as Ubuntu, you can instead install the package..."
"Instead" means "in place of something previously mentioned." So, as written, installing with =guix-install.sh= and installing with those specific package managers have equal levels of recommendation.
Since users of foreign systems are likely familiar with the corresponding foreign package managers, in addition to their use being one step versus four, I vote that they appear first.
This is good information about the situation with Arch. Maybe this is why Arch isn't mentioned?
I wonder if we should have similar concerns about the Debian and openSUSE packages?
> The reason of existence for these distribution packages is probably similar to the reason why the Binary Installation section exists.
>
> As for the suggested diff where much of Binary Installation gets removed,
>
> > -@item
> > -@cindex substitutes, authorization thereof
> > -To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
> > -@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
> > -authorize them:
> > -
> > -@example
> > -# guix archive --authorize < \
> > - ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-1}.pub
> > -# guix archive --authorize < \
> > - ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
> > -@end example
> > -
> > -@quotation Note
> > -If you do not enable substitutes, Guix will end up building
> > -@emph{everything} from source on your machine, making each installation
> > -and upgrade very expensive. @xref{On Trusting Binaries}, for a
> > -discussion of reasons why one might want do disable substitutes.
> > -@end quotation
>
> I disagree with this chunk. This must stay. Not enabling substitutes is an option in guix-install.sh and the Guix System installer. Users might want to enable substitutes later on.
Excellent point.
I have updated the patch with the following:
- Add commas in appropriate places; after "For...Ubuntu-based systems", "Likewise", and the 'or' within the list of substitutes
- Remove ')' from after 'guix pull'
- Clarify that 'guix-install.sh' guides users through the steps. Previously, it was unclear if the script ran without user input.
- Add the substitute server setup with the following changes:
+ Make explicit that the default for binary installations is to build everything
+ Change "for a discussion of reasons why one might want do disable substitutes" (note the 'do' typo) to "for a discussion why this is the default". This aims to state it positively and encourage people to consider the reasons.
- Emphasize that the substitute authorization code is an example and may need modification
[-- Attachment #2: v02-refactor-binary-installation-section.diff --]
[-- Type: application/octet-stream, Size: 12248 bytes --]
diff --git a/doc/guix.texi b/doc/guix.texi
index 87fe9f803c..cc9b07c152 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -691,20 +691,25 @@ to join! @xref{Contributing}, for information about how you can help.
@chapter Installation
@cindex installing Guix
+@cindex foreign distro
+@cindex Guix System
+You can install the Guix package management tool on top of an existing
+GNU/Linux or GNU/Hurd system, referred to as a @dfn{foreign distro}, or
+as a standalone operating system distribution, the
+@dfn{Guix@tie{}System}. This section is concerned with the installation
+of Guix on a foreign distro. If, instead, you want to install the
+complete GNU operating system, @pxref{System Installation}.
-@quotation Note
-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.
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@end quotation
-@cindex foreign distro
+The following sections describe two methods of installation, binary
+installation and building from source. They describe the software
+requirements of Guix, as well as how to install it manually and get
+ready to use it.
+
@cindex directories related to foreign distro
When installed on a foreign distro, GNU@tie{}Guix complements the available
tools without interference. Its data lives exclusively in two directories,
@@ -714,11 +719,6 @@ such as @file{/etc}, are left untouched.
Once installed, Guix can be updated by running @command{guix pull}
(@pxref{Invoking guix pull}).
-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.
-
@menu
* Binary Installation:: Getting Guix running in no time!
* Requirements:: Software needed to build and run Guix.
@@ -737,209 +737,63 @@ ready to use it.
This section describes how to install Guix 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. Binary installation requires a system using a Hurd or Linux
-kernel; the GNU@tie{}tar and Xz commands must also be available.
+sections.
@quotation Important
This section only applies to systems without Guix. Following it for
existing Guix installations will overwrite important system files.
+@end quotation
-@c Note duplicated from the ``Installation'' node.
-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. As root, you can thus run this:
-
-@example
-cd /tmp
-wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
-chmod +x guix-install.sh
-./guix-install.sh
-@end example
+Some distributions, such as Debian, Ubuntu, and openSUSE provide Guix
+through their own package managers. The version of Guix may be older
+than @value{VERSION} but you can update it afterwards by running
+@samp{guix pull}.
-If you're running Debian or a derivative such as Ubuntu, you can instead
-install the package (it might be a version older than @value{VERSION}
-but you can update it afterwards by running @samp{guix pull}):
+For Debian and Ubuntu-based systems, call:
@example
sudo apt install guix
@end example
-Likewise on openSUSE:
+Likewise, on openSUSE:
@example
sudo zypper install guix
@end example
-When you're done, @pxref{Application Setup} for extra configuration you
-might need, and @ref{Getting Started} for your first steps!
-@end quotation
-
-Installing goes along these lines:
-
-@enumerate
-@item
-@cindex downloading Guix binary
-Download the binary tarball from
-@indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz},
-where @code{x86_64-linux} can be replaced with @code{i686-linux} for an
-@code{i686} (32-bits) machine already running the kernel Linux, and so on
-(@pxref{GNU Distribution}).
-
-@c The following is somewhat duplicated in ``System Installation''.
-Make sure to download the associated @file{.sig} file and to verify the
-authenticity of the tarball against it, along these lines:
-
-@example
-$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-$ gpg --verify guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-@end example
-
-If that command fails because you do not have the required public key,
-then run this command to import it:
-
-@example
-$ wget '@value{OPENPGP-SIGNING-KEY-URL}' \
- -qO - | gpg --import -
-@end example
-
-@noindent
-and rerun the @code{gpg --verify} command.
+The Guix project also provides a shell script, @file{guix-install.sh},
+which automates the binary installation process without use of a foreign
+distro package
+manager@footnote{@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh}}.
+Use of @file{guix-install.sh} requires Bash, GNU@tie{}tar, wget, and Xz.
-Take note that a warning like ``This key is not certified with a trusted
-signature!'' is normal.
+The script guides you through the following:
-@c end authentication part
+@itemize
+@item Download and extract the binary tarball
+@item Set up the build daemon
+@item Make the ‘guix’ command available to non-root users
+@item Configure substitute servers
+@end itemize
-@item
-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:
+As root, run:
@example
# cd /tmp
-# tar --warning=no-timestamp -xf \
- /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
-# mv var/guix /var/ && mv gnu /
-@end example
-
-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).
-
-Do @emph{not} unpack the tarball on a working Guix system since that
-would overwrite its own essential files.
-
-The @option{--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 1 (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.
-
-@item
-Make the profile available under @file{~root/.config/guix/current}, which is
-where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
-
-@example
-# mkdir -p ~root/.config/guix
-# ln -sf /var/guix/profiles/per-user/root/current-guix \
- ~root/.config/guix/current
-@end example
-
-Source @file{etc/profile} to augment @env{PATH} and other relevant
-environment variables:
-
-@example
-# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
- source $GUIX_PROFILE/etc/profile
-@end example
-
-@item
-Create the group and user accounts for build users as explained below
-(@pxref{Build Environment Setup}).
-
-@item
-Run the daemon, and set it to automatically start on boot.
-
-If your host distro uses the systemd init system, this can be achieved
-with these commands:
-
-@c Versions of systemd that supported symlinked service files are not
-@c yet widely deployed, so we should suggest that users copy the service
-@c files into place.
-@c
-@c See this thread for more information:
-@c https://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \
- ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
- /etc/systemd/system/
-# systemctl enable --now gnu-store.mount guix-daemon
-@end example
-
-You may also want to arrange for @command{guix gc} to run periodically:
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/guix-gc.service \
- ~root/.config/guix/current/lib/systemd/system/guix-gc.timer \
- /etc/systemd/system/
-# systemctl enable --now guix-gc.timer
-@end example
-
-You may want to edit @file{guix-gc.service} to adjust the command line
-options to fit your needs (@pxref{Invoking guix gc}).
-
-If your host distro uses the Upstart init system:
-
-@example
-# initctl reload-configuration
-# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
- /etc/init/
-# start guix-daemon
-@end example
-
-Otherwise, you can still start the daemon manually with:
-
-@example
-# ~root/.config/guix/current/bin/guix-daemon \
- --build-users-group=guixbuild
-@end example
-
-@item
-Make the @command{guix} command available to other users on the machine,
-for instance with:
-
-@example
-# mkdir -p /usr/local/bin
-# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
+# wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+# chmod +x guix-install.sh
+# ./guix-install.sh
@end example
-It is also a good idea to make the Info version of this manual available
-there:
-
-@example
-# mkdir -p /usr/local/share/info
-# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
- do ln -s $i ; done
-@end example
-
-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).
+@quotation Note
+By default, binary installations of Guix build @emph{everything} from
+source. This makes each installation and upgrade very expensive.
+@xref{On Trusting Binaries} for a discussion of why this is the default.
-@item
@cindex substitutes, authorization thereof
To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
-@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
-authorize them:
+@code{@value{SUBSTITUTE-SERVER-2}}, or a mirror (@pxref{Substitutes}),
+you must authorize them. For example,
@example
# guix archive --authorize < \
@@ -947,44 +801,11 @@ authorize them:
# guix archive --authorize < \
~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
@end example
-
-@quotation Note
-If you do not enable substitutes, Guix will end up building
-@emph{everything} from source on your machine, making each installation
-and upgrade very expensive. @xref{On Trusting Binaries}, for a
-discussion of reasons why one might want do disable substitutes.
@end quotation
-@item
-Each user may need to perform a few additional steps to make their Guix
-environment ready for use, @pxref{Application Setup}.
-@end enumerate
-
-Voilà, the installation is complete!
-
-You can confirm that Guix is working by installing a sample package into
-the root profile:
-
-@example
-# guix install hello
-@end example
-
-The binary installation tarball can be (re)produced and verified simply
-by running the following command in the Guix source tree:
-
-@example
-make guix-binary.@var{system}.tar.xz
-@end example
-
-@noindent
-...@: which, in turn, runs:
-
-@example
-guix pack -s @var{system} --localstatedir \
- --profile-name=current-guix guix
-@end example
-
-@xref{Invoking guix pack}, for more info on this handy tool.
+When you're done installing Guix, @pxref{Application Setup} for extra
+configuration you might need, and @ref{Getting Started} for your first
+steps!
@node Requirements
@section Requirements
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: doc: Removing much of Binary Installation
2024-03-06 19:42 ` Matt
@ 2024-03-06 20:52 ` Suhail Singh
2024-03-06 21:18 ` Suhail Singh
2024-03-07 17:03 ` pelzflorian (Florian Pelz)
1 sibling, 1 reply; 69+ messages in thread
From: Suhail Singh @ 2024-03-06 20:52 UTC (permalink / raw)
To: Matt
Cc: pelzflorian (Florian Pelz), Maxim Cournoyer, Christian Miller,
guix-devel, Josselin Poiret
Matt <matt@excalamus.com> writes:
> I wonder if we should have similar concerns about the Debian and
> openSUSE packages?
FWIW, as an openSUSE Tumbleweed user, I believe Tumbleweed users who
don't care if there is an easy way to uninstall Guix would be better
served by using =guix-install.sh= as opposed to =zypper=. The issues of
"unnecessary files" applies to Tumbleweed as well (and I believe the
same would be true for Debian as well).
In addition, the manpages can get out of sync. The reason for the
latter is that doing =sudo -i guix pull --fallback= doesn't generate
manpages. However, the version of Guix installed via =zypper= does
install manpages (presumably generated via =help2man=). As such, after
updating Guix, running something like =man guix= results in outdated
manpage being shown. If Guix installation is done via
=guix-install.sh=, no manpage is shown which, in my opinion, is the
lesser evil.
On a related note, it would help if Guix would install manpages in
addition to infopages. Not sure if this omission constitutes a bug or a
missing feature.
--
Suhail
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: Removing much of Binary Installation
2024-03-06 20:52 ` doc: Removing much of Binary Installation Suhail Singh
@ 2024-03-06 21:18 ` Suhail Singh
0 siblings, 0 replies; 69+ messages in thread
From: Suhail Singh @ 2024-03-06 21:18 UTC (permalink / raw)
To: Matt
Cc: pelzflorian (Florian Pelz), Maxim Cournoyer, Christian Miller,
guix-devel, Josselin Poiret
Suhail Singh <suhailsingh247@gmail.com> writes:
> FWIW, as an openSUSE Tumbleweed user, I believe Tumbleweed users who
> don't care if there is an easy way to uninstall Guix would be better
> served by using =guix-install.sh= as opposed to =zypper=.
Btw, for completeness, on Tumbleweed, the user needs to take some
additional steps to ensure that restoring a previous Tumbleweed snapshot
doesn't revert Guix state. Unless I'm misremembering, these steps are
needed regardless of whether =zypper= or =guix-install.sh= was used to
install Guix.
--
Suhail
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual)
2024-03-06 17:15 ` doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual) pelzflorian (Florian Pelz)
2024-03-06 19:42 ` Matt
@ 2024-03-06 21:29 ` Vagrant Cascadian
1 sibling, 0 replies; 69+ messages in thread
From: Vagrant Cascadian @ 2024-03-06 21:29 UTC (permalink / raw)
To: pelzflorian (Florian Pelz), Matt
Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 1831 bytes --]
On 2024-03-06, pelzflorian (Florian Pelz) wrote:
> I don’t feel qualified to judge, but is this the preference? Arch wiki
> advises against the Arch AUR package: “Therefore, after updating Guix
> once, the AUR advantage really turns into a disadvantage, as there will
> be many unnecessary files in the /usr file tree that are part of the
> Guix AUR package but that are never used by Guix anymore. Therefore,
> consider using the manual installation.” [0]
>
> The reason of existence for these distribution packages is probably
> similar to the reason why the Binary Installation section exists.
Indeed, after the first guix pull, most of the packaged files are no
longer used.
As the one who packaged and maintains guix in Debian, my main motivation
was and is to have a trust path from debian; mainly not having to
manually verify the signatures of the manual installation method (I
would hazard to guess that the percentage of people who actually do
manually verify signatures is disturbingly small).
The guix-daemon should continue to work from the packaged version,
although as guix develops more and more features; how long an old
version can be expected to continue to work remains an open question.
I cannot say I have done a *great* job at maintaining guix in Debian,
but hopefully at least a passable job. Although there are some annoying
things that probably need to be fixed:
https://bugs.debian.org/1064748
a.k.a.
https://issues.guix.gnu.org/69518
... or backported to Debian stable:
https://bugs.debian.org/1036304
https://bugs.debian.org/1038916
I have found a fair number of issues (especially typos!) to fix in
upstream guix as a result of packaging it for Debian, so if nothing
else, it is some quality assurance! :)
live well,
vagrant
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: Removing much of Binary Installation
2024-03-06 19:42 ` Matt
2024-03-06 20:52 ` doc: Removing much of Binary Installation Suhail Singh
@ 2024-03-07 17:03 ` pelzflorian (Florian Pelz)
2024-03-10 11:09 ` doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation) Matt
1 sibling, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-07 17:03 UTC (permalink / raw)
To: Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
Hello Matt and all. As a more proper review, I first tried
guix-install.sh on a Debian GNU/Hurd VM. It fails, telling me:
[1709825168.049]: [ INFO ] init system is: sysv-init
[1709825168.059]: [ FAIL ] Unsupported CPU type: i686-AT386
The script guix-install.sh cannot be used on any GNU/Hurd system.
Vagrant’s guix package is missing on Debian GNU/Hurd as well, which is
fine of course, but we should not claim otherwise. Therefore, could you
change it like the old instructions and only talk about GNU/Linux?
> If, instead, you want to install the complete GNU operating system,
> @pxref{System Installation}.
Maybe better say “complete Guix operating system”? *complete* GNU
operating system maybe should only be used for GNU/Hurd.
You suggested in your mail:
Matt <matt@excalamus.com> writes:
> Readers interested
> in those details may read the code for 'guix-install.sh'.
Could you add this suggestion to your diff?
Further:
IIRC, you are removing the manual installation. Therefore, the sentence
would have to be removed: “The following sections describe two methods
of installation, binary installation and building from source.”
Also,
Matt <matt@excalamus.com> writes:
> - Add commas in appropriate places; after "For...Ubuntu-based
> systems", "Likewise", and the 'or' within the list of substitutes
I’m not a native speaker, but I believe the commas are not necessary.
There particularly does not need to be an Oxford comma before ‘or’.
There could be, but there is no reason to change it.
Similarly, IMO the nuances are more appropriate in the old wording “For
Debian or a derivative such as Ubuntu,” rather than your change “For
Debian and Ubuntu-based systems”.
At the beginning, “You can install the Guix package management tool on
top of an existing” makes it appear as if Guix were not a distribution.
It is both a tool and a distro. A distro does not need to be an OS.
For example, MSYS2 is a distribution. I therefore nitpickingly prefer
“You can install Guix”. Admittedly, the wording was vague before,
perhaps deliberately.
“Use of @file{guix-install.sh} requires Bash, GNU@tie{}tar, wget, and
Xz.” is incomplete when applied to guix-install.sh, which also requires
GnuPG.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-07 17:03 ` pelzflorian (Florian Pelz)
@ 2024-03-10 11:09 ` Matt
2024-03-10 20:42 ` Vagrant Cascadian
2024-03-11 15:54 ` pelzflorian (Florian Pelz)
0 siblings, 2 replies; 69+ messages in thread
From: Matt @ 2024-03-10 11:09 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 8581 bytes --]
I realigned the subject. It was previously changed to "doc: Removing much of Binary Installation" which is misleading. The topic is how to clarify installation based on reported confusion, not about removing text. The reported confusion was on the use of '~root'. Explicit mention of '~root' is only necessary when the manual details how 'guix-install.sh' works. Since 'guix-install.sh' is the recommended method of installation, such level of detail is unnecessary, inappropriate, and impractical. The suggested changes address the issue, only incidentally, by removing text.
I respond to Suhail Singh, Vagrant Cascadian, and pelzflorian in order.
---- On Wed, 06 Mar 2024 22:18:33 +0100 Suhail Singh wrote ---
> Suhail Singh suhailsingh247@gmail.com> writes:
>
> > FWIW, as an openSUSE Tumbleweed user, I believe Tumbleweed users who don't care if there is an easy way to uninstall Guix would be better served by using =guix-install.sh= as opposed to =zypper=.
> Btw, for completeness, on Tumbleweed, the user needs to take some additional steps to ensure that restoring a previous Tumbleweed snapshot doesn't revert Guix state. Unless I'm misremembering, these steps are needed regardless of whether =zypper= or =guix-install.sh= was used to install Guix.
Thank you for this. I want to follow up with Vagrant and Florian first before responding more fully.
---- On Wed, 06 Mar 2024 22:29:23 +0100 Vagrant Cascadian wrote ---
> As the one who packaged and maintains guix in Debian...
Thank you for doing this work!
> The guix-daemon should continue to work from the packaged version, although as guix develops more and more features; how long an old version can be expected to continue to work remains an open question.
I was under the impression that Guix installed through a foreign package manager is able to update with 'guix pull'. This is what the current documentation says,
"If you’re running Debian or a derivative such as Ubuntu, you can instead install the package (it might be a version older than 0.0-git but you can update it afterwards by running ‘guix pull’):"
Is this correct? Does 'guix pull' update Guix when installed through a foreign package manager?
---- On Thu, 07 Mar 2024 18:03:50 +0100 pelzflorian (Florian Pelz) wrote ---
> I first tried guix-install.sh on a Debian GNU/Hurd VM. It fails, telling me:
>
> [1709825168.049]: [ INFO ] init system is: sysv-init
> [1709825168.059]: [ FAIL ] Unsupported CPU type: i686-AT386
>
> The script guix-install.sh cannot be used on any GNU/Hurd system.
Thanks for taking the time to test 'guix-install.sh' on Hurd. This looks like a bug.
> Vagrant’s guix package is missing on Debian GNU/Hurd as well, which is fine of course, but we should not claim otherwise.
Updated to specify "distributions" as "GNU/Linux distributions".
> Therefore, could you change it like the old instructions and only talk about GNU/Linux?
I don't think that's appropriate. Guix supports GNU/Linux and GNU/Hurd and the installation section needs to cover both.
There are two issues here:
1) Up to this point, the manual doesn't make clear that current GNU/Hurd support is limited
I've duplicated the footnote from the 'operating-system Reference' section which explains the current status of GNU/Hurd support: https://guix.gnu.org/en/manual/devel/en/html_node/operating_002dsystem-Reference.html
2) 'guix-install.sh' has a bug preventing installation on GNU/Hurd
Any takers?
> > If, instead, you want to install the complete GNU operating system, @pxref{System Installation}.
>
> Maybe better say “complete Guix operating system”? *complete* GNU operating system maybe should only be used for GNU/Hurd.
That line is directly copied from the current manual: https://guix.gnu.org/en/manual/en/html_node/Installation.html#FOOT4
I saw this and I agree with you. It would be better stated as something like you suggest. My intent was to do this in a separate patch.
> You suggested in your mail:
>
> Matt matt@excalamus.com> writes:
> > Readers interested in those details may read the code for 'guix-install.sh'.
>
> Could you add this suggestion to your diff?
I don't see that as relevant to the reader. The ability to read the source is implicit in it being provided, which it is.
> IIRC, you are removing the manual installation.
Yes? No? I'm not sure how to respond.
The suggested changes remove superfluous commentary on the recommended binary installation process which create confusion.
The challenge in directly responding to your statement is there's not a clear cut-off between "install" and "configure." To install, generally, means something like "situate artifacts so the user can make use of them". Often, this is simply adding a directory to PATH. Guix isn't that simple. It requires setting up the store, var/guix, configuring the demon, setting up profiles, and other things. That's all part of "so the user can make use of them" which is more "configuration" than "installation". Which specific configuration is necessary, however, depends on the system and the user. Detailing that at the level of "type this, type that" requires many caveats, explanations, and updates that don't really address the core topic: get Guix on a reader's system so that they can use it. That, as far as I can tell, is the fundamental reason why 'guix-install.sh' exists.
What do you think is lost that isn't captured by the following bulleted list?
+The script guides you through the following:
+@itemize
+@item Download and extract the binary tarball
+@item Set up the build daemon
+@item Make the ‘guix’ command available to non-root users
+@item Configure substitute servers
+@end itemize
> Therefore, the sentence would have to be removed: “The following sections describe two methods of installation, binary installation and building from source.”
I've removed that sentence for a different reason. I also revised the sentence, "This is often quicker than installing from source, which is described in the next sections", to simply, "described later".
The reason is that Chapter 2 doesn't currently explain building or installing from source. Building and installing from source is currently covered much later in Section 22.1. Whether or not the Installation section should cover building from source is a separate issue and shouldn't be part of this discussion.
> Also,
>
> Matt matt@excalamus.com> writes:
> > - Add commas in appropriate places; after "For...Ubuntu-based systems", "Likewise", and the 'or' within the list of substitutes
>
> I’m not a native speaker, but I believe the commas are not necessary. There particularly does not need to be an Oxford comma before ‘or’. There could be, but there is no reason to change it.
Ah, the One True Brace Style of natural language :)
I think there's already enough controversy in this thread. I've changed it back :)
> Similarly, IMO the nuances are more appropriate in the old wording “For Debian or a derivative such as Ubuntu,” rather than your change “For Debian and Ubuntu-based systems”.
The current wording is, "If you're running Debian or a derivative such as Ubuntu..." None of the suggested changes include the wording you give.
What are the nuances? If they matter, we should probably make them explicit.
> At the beginning, “You can install the Guix package management tool on top of an existing” makes it appear as if Guix were not a distribution. It is both a tool and a distro. A distro does not need to be an OS. For example, MSYS2 is a distribution. I therefore nitpickingly prefer “You can install Guix”. Admittedly, the wording was vague before, perhaps deliberately.
I don't follow you. The complete sentence is:
"You can install the Guix package management tool on top of an existing GNU/Linux or GNU/Hurd system, referred to as a foreign distro, or as a standalone operating system distribution, the Guix System."
What about that is unclear?
> “Use of @file{guix-install.sh} requires Bash, GNU@tie{}tar, wget, and Xz.” is incomplete when applied to guix-install.sh, which also requires GnuPG.
Added! Thank you.
An updated diff is included. I tried to split it into separate commits but couldn't. That's very, very hard and probably impossible to do in an independent way. My hope is that we can settle on language for this topic and try for a more step-wise approach on the next feedback item.
[-- Attachment #2: v03-refactor-binary-installation-section.diff --]
[-- Type: application/octet-stream, Size: 12622 bytes --]
diff --git a/doc/guix.texi b/doc/guix.texi
index 858d5751bf..9113cd0152 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -691,20 +691,23 @@ to join! @xref{Contributing}, for information about how you can help.
@chapter Installation
@cindex installing Guix
+@cindex foreign distro
+@cindex Guix System
+You can install the Guix package management tool on top of an existing
+GNU/Linux or GNU/Hurd system@footnote{Currently only the Linux-libre
+kernel is fully supported. Using GNU@tie{}mach with the GNU@tie{}Hurd
+is experimental and only available when building a virtual machine disk
+image.}, referred to as a @dfn{foreign distro}, or as a standalone
+operating system distribution, the @dfn{Guix@tie{}System}. This section
+is concerned with the installation of Guix on a foreign distro. If,
+instead, you want to install the complete GNU operating system,
+@pxref{System Installation}.
-@quotation Note
-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.
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@end quotation
-@cindex foreign distro
@cindex directories related to foreign distro
When installed on a foreign distro, GNU@tie{}Guix complements the available
tools without interference. Its data lives exclusively in two directories,
@@ -714,11 +717,6 @@ such as @file{/etc}, are left untouched.
Once installed, Guix can be updated by running @command{guix pull}
(@pxref{Invoking guix pull}).
-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.
-
@menu
* Binary Installation:: Getting Guix running in no time!
* Requirements:: Software needed to build and run Guix.
@@ -736,210 +734,64 @@ ready to use it.
@cindex installer script
This section describes how to install Guix 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. Binary installation requires a system using a Hurd or Linux
-kernel; the GNU@tie{}tar and Xz commands must also be available.
+quicker than installing from source, described later.
@quotation Important
This section only applies to systems without Guix. Following it for
existing Guix installations will overwrite important system files.
+@end quotation
-@c Note duplicated from the ``Installation'' node.
-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. As root, you can thus run this:
-
-@example
-cd /tmp
-wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
-chmod +x guix-install.sh
-./guix-install.sh
-@end example
+Some GNU/Linux distributions, such as Debian, Ubuntu, and openSUSE
+provide Guix through their own package managers. The version of Guix
+may be older than @value{VERSION} but you can update it afterwards by
+running @samp{guix pull}.
-If you're running Debian or a derivative such as Ubuntu, you can instead
-install the package (it might be a version older than @value{VERSION}
-but you can update it afterwards by running @samp{guix pull}):
+For Debian and Ubuntu-based systems, call:
@example
sudo apt install guix
@end example
-Likewise on openSUSE:
+Likewise, on openSUSE:
@example
sudo zypper install guix
@end example
-When you're done, @pxref{Application Setup} for extra configuration you
-might need, and @ref{Getting Started} for your first steps!
-@end quotation
-
-Installing goes along these lines:
+The Guix project also provides a shell script, @file{guix-install.sh},
+which automates the binary installation process without use of a foreign
+distro package
+manager@footnote{@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh}}.
+Use of @file{guix-install.sh} requires Bash, GnuPG, GNU@tie{}tar, wget,
+and Xz.
-@enumerate
-@item
-@cindex downloading Guix binary
-Download the binary tarball from
-@indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz},
-where @code{x86_64-linux} can be replaced with @code{i686-linux} for an
-@code{i686} (32-bits) machine already running the kernel Linux, and so on
-(@pxref{GNU Distribution}).
-
-@c The following is somewhat duplicated in ``System Installation''.
-Make sure to download the associated @file{.sig} file and to verify the
-authenticity of the tarball against it, along these lines:
-
-@example
-$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-$ gpg --verify guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-@end example
+The script guides you through the following:
-If that command fails because you do not have the required public key,
-then run this command to import it:
-
-@example
-$ wget '@value{OPENPGP-SIGNING-KEY-URL}' \
- -qO - | gpg --import -
-@end example
-
-@noindent
-and rerun the @code{gpg --verify} command.
-
-Take note that a warning like ``This key is not certified with a trusted
-signature!'' is normal.
-
-@c end authentication part
+@itemize
+@item Download and extract the binary tarball
+@item Set up the build daemon
+@item Make the ‘guix’ command available to non-root users
+@item Configure substitute servers
+@end itemize
-@item
-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:
+As root, run:
@example
# cd /tmp
-# tar --warning=no-timestamp -xf \
- /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
-# mv var/guix /var/ && mv gnu /
+# wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+# chmod +x guix-install.sh
+# ./guix-install.sh
@end example
-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).
-
-Do @emph{not} unpack the tarball on a working Guix system since that
-would overwrite its own essential files.
-
-The @option{--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 1 (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.
-
-@item
-Make the profile available under @file{~root/.config/guix/current}, which is
-where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
-
-@example
-# mkdir -p ~root/.config/guix
-# ln -sf /var/guix/profiles/per-user/root/current-guix \
- ~root/.config/guix/current
-@end example
-
-Source @file{etc/profile} to augment @env{PATH} and other relevant
-environment variables:
-
-@example
-# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
- source $GUIX_PROFILE/etc/profile
-@end example
-
-@item
-Create the group and user accounts for build users as explained below
-(@pxref{Build Environment Setup}).
-
-@item
-Run the daemon, and set it to automatically start on boot.
-
-If your host distro uses the systemd init system, this can be achieved
-with these commands:
-
-@c Versions of systemd that supported symlinked service files are not
-@c yet widely deployed, so we should suggest that users copy the service
-@c files into place.
-@c
-@c See this thread for more information:
-@c https://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \
- ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
- /etc/systemd/system/
-# systemctl enable --now gnu-store.mount guix-daemon
-@end example
-
-You may also want to arrange for @command{guix gc} to run periodically:
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/guix-gc.service \
- ~root/.config/guix/current/lib/systemd/system/guix-gc.timer \
- /etc/systemd/system/
-# systemctl enable --now guix-gc.timer
-@end example
-
-You may want to edit @file{guix-gc.service} to adjust the command line
-options to fit your needs (@pxref{Invoking guix gc}).
-
-If your host distro uses the Upstart init system:
-
-@example
-# initctl reload-configuration
-# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
- /etc/init/
-# start guix-daemon
-@end example
-
-Otherwise, you can still start the daemon manually with:
-
-@example
-# ~root/.config/guix/current/bin/guix-daemon \
- --build-users-group=guixbuild
-@end example
-
-@item
-Make the @command{guix} command available to other users on the machine,
-for instance with:
-
-@example
-# mkdir -p /usr/local/bin
-# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
-@end example
-
-It is also a good idea to make the Info version of this manual available
-there:
-
-@example
-# mkdir -p /usr/local/share/info
-# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
- do ln -s $i ; done
-@end example
-
-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).
+@quotation Note
+By default, binary installations of Guix build @emph{everything} from
+source. This makes each installation and upgrade very expensive.
+@xref{On Trusting Binaries} for a discussion of why this is the default.
-@item
@cindex substitutes, authorization thereof
To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
-authorize them:
+you must authorize them. For example,
@example
# guix archive --authorize < \
@@ -947,44 +799,11 @@ authorize them:
# guix archive --authorize < \
~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
@end example
-
-@quotation Note
-If you do not enable substitutes, Guix will end up building
-@emph{everything} from source on your machine, making each installation
-and upgrade very expensive. @xref{On Trusting Binaries}, for a
-discussion of reasons why one might want do disable substitutes.
@end quotation
-@item
-Each user may need to perform a few additional steps to make their Guix
-environment ready for use, @pxref{Application Setup}.
-@end enumerate
-
-Voilà, the installation is complete!
-
-You can confirm that Guix is working by installing a sample package into
-the root profile:
-
-@example
-# guix install hello
-@end example
-
-The binary installation tarball can be (re)produced and verified simply
-by running the following command in the Guix source tree:
-
-@example
-make guix-binary.@var{system}.tar.xz
-@end example
-
-@noindent
-...@: which, in turn, runs:
-
-@example
-guix pack -s @var{system} --localstatedir \
- --profile-name=current-guix guix
-@end example
-
-@xref{Invoking guix pack}, for more info on this handy tool.
+When you're done installing Guix, @pxref{Application Setup} for extra
+configuration you might need, and @ref{Getting Started} for your first
+steps!
@node Requirements
@section Requirements
@@ -17643,6 +17462,7 @@ configuration (@pxref{Using the Configuration System}).
@table @asis
@item @code{kernel} (default: @code{linux-libre})
+@c footnote duplicated in @pxref{Installation}
The package object of the operating system kernel to
use@footnote{Currently only the Linux-libre kernel is fully supported.
Using GNU@tie{}mach with the GNU@tie{}Hurd is experimental and only
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-10 11:09 ` doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation) Matt
@ 2024-03-10 20:42 ` Vagrant Cascadian
2024-03-10 23:21 ` Suhail Singh
2024-03-11 15:54 ` pelzflorian (Florian Pelz)
1 sibling, 1 reply; 69+ messages in thread
From: Vagrant Cascadian @ 2024-03-10 20:42 UTC (permalink / raw)
To: Matt, pelzflorian (Florian Pelz)
Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 1655 bytes --]
On 2024-03-10, matt@excalamus.com wrote:
> ---- On Wed, 06 Mar 2024 22:29:23 +0100 Vagrant Cascadian wrote ---
>> As the one who packaged and maintains guix in Debian...
>
> Thank you for doing this work!
>
>> The guix-daemon should continue to work from the packaged version, although as guix develops more and more features; how long an old version can be expected to continue to work remains an open question.
>
> I was under the impression that Guix installed through a foreign package manager is able to update with 'guix pull'. This is what the current documentation says,
>
> "If you’re running Debian or a derivative such as Ubuntu, you can instead install the package (it might be a version older than 0.0-git but you can update it afterwards by running ‘guix pull’):"
>
> Is this correct? Does 'guix pull' update Guix when installed through a foreign package manager?
Yes, with the guix packages provided by Debian, generally I would
recommend doing "guix pull" to get current packages (a lot has changed
since guix 1.4!) ... but "guix pull" does not update the running
guix-daemon; that is not the responsibility of "guix pull".
There is also the classic issue of updating PATH and other environment
variables after the first "guix pull" but that is not unique to the
packages from Debian.
A newly pulled guix should continue to remain compatible with older
guix-daemon to some extent, but it may be missing new guix-daemon
features (and possibly security updates, though those are grounds for
getting it fixed in the package), and possibly someday may no longer be
compatible.
live well,
vagrant
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-10 20:42 ` Vagrant Cascadian
@ 2024-03-10 23:21 ` Suhail Singh
2024-03-11 1:58 ` Vagrant Cascadian
0 siblings, 1 reply; 69+ messages in thread
From: Suhail Singh @ 2024-03-10 23:21 UTC (permalink / raw)
To: Vagrant Cascadian
Cc: Matt, pelzflorian (Florian Pelz), Maxim Cournoyer,
Christian Miller, guix-devel, Josselin Poiret
Vagrant Cascadian <vagrant@debian.org> writes:
> but "guix pull" does not update the running guix-daemon;
Just to be clear, however, if one were to do =sudo -i guix pull=
instead, followed by =systemctl restart guix-daemon.service= it /would/
update the running guix-daemon on Debian, correct? Or is that not the
case? In other words, on Debian, does the systemd unit reference
=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon= ?
--
Suhail
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-10 23:21 ` Suhail Singh
@ 2024-03-11 1:58 ` Vagrant Cascadian
2024-03-11 4:27 ` John Kehayias
0 siblings, 1 reply; 69+ messages in thread
From: Vagrant Cascadian @ 2024-03-11 1:58 UTC (permalink / raw)
To: Suhail Singh
Cc: Matt, pelzflorian (Florian Pelz), Maxim Cournoyer,
Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 877 bytes --]
On 2024-03-10, Suhail Singh wrote:
> Vagrant Cascadian <vagrant@debian.org> writes:
>> but "guix pull" does not update the running guix-daemon;
>
> Just to be clear, however, if one were to do =sudo -i guix pull=
> instead, followed by =systemctl restart guix-daemon.service= it /would/
> update the running guix-daemon on Debian, correct? Or is that not the
> case?
No, out of the box guix-daemon is provided by the Debian guix package.
> In other words, on Debian, does the systemd unit reference
> =/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon= ?
But you could provide an override pointing at whatever guix-daemon you
want, of course! :)
Once you do that, you may as well remove the Debian packaged guix,
although users that have not yet run "guix pull" would need to guess
where to find guix, as there will be no guix on PATH.
live well,
vagrant
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-11 1:58 ` Vagrant Cascadian
@ 2024-03-11 4:27 ` John Kehayias
2024-03-11 19:15 ` Vagrant Cascadian
0 siblings, 1 reply; 69+ messages in thread
From: John Kehayias @ 2024-03-11 4:27 UTC (permalink / raw)
To: Vagrant Cascadian
Cc: Suhail Singh, Matt, pelzflorian (Florian Pelz), Maxim Cournoyer,
Christian Miller, guix-devel, Josselin Poiret
Hi vagrant,
On Sunday, March 10th, 2024 at 9:58 PM, Vagrant Cascadian <vagrant@debian.org> wrote:
>
>
> On 2024-03-10, Suhail Singh wrote:
>
> > Vagrant Cascadian vagrant@debian.org writes:
> >
> > > but "guix pull" does not update the running guix-daemon;
> >
> > Just to be clear, however, if one were to do =sudo -i guix pull=
> > instead, followed by =systemctl restart guix-daemon.service= it /would/
> > update the running guix-daemon on Debian, correct? Or is that not the
> > case?
>
>
> No, out of the box guix-daemon is provided by the Debian guix package.
>
That means the instructions to update the guix daemon in the manual, <https://guix.gnu.org/en/manual/devel/en/html_node/Upgrading-Guix.html> is incorrect or doesn't work? Or am I misunderstanding what you meant here?
(I know in the past some discussions have come up about older guix-daemon on foreign distros, presumably because the packages there don't get updated and a user wouldn't think to upgrade guix separately? But it seems you are saying you can't upgrade without modifying the e.g. systemd service definition? This is also important for security updates to guix itself, of course.)
> > In other words, on Debian, does the systemd unit reference
> > =/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon= ?
>
>
> But you could provide an override pointing at whatever guix-daemon you
> want, of course! :)
>
> Once you do that, you may as well remove the Debian packaged guix,
> although users that have not yet run "guix pull" would need to guess
> where to find guix, as there will be no guix on PATH.
>
>
> live well,
> vagrant
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-10 11:09 ` doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation) Matt
2024-03-10 20:42 ` Vagrant Cascadian
@ 2024-03-11 15:54 ` pelzflorian (Florian Pelz)
2024-03-16 10:47 ` Matt
1 sibling, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-11 15:54 UTC (permalink / raw)
To: Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
Hi Matt. I would almost want to push your changes, but we still
disagree on some wordings.
Also,
Matt <matt@excalamus.com> writes:
> I realigned the subject. It was previously changed to "doc: Removing
> much of Binary Installation" which is misleading. The topic is how to
> clarify installation based on reported confusion, not about removing
> text. The reported confusion was on the use of '~root'. Explicit
> mention of '~root' is only necessary when the manual details how
> 'guix-install.sh' works. Since 'guix-install.sh' is the recommended
> method of installation, such level of detail is unnecessary,
> inappropriate, and impractical. The suggested changes address the
> issue, only incidentally, by removing text.
Yes, however the removal means that we should move the sections
* 2.2 Requirements
* 2.3 Running the Test Suite
to the Contributing manual in doc/contributing.texi. WDYT? You said,
it could be a separate discussion, but in my opinion it would be part of
the same patch.
> +@cindex foreign distro
> +@cindex Guix System
“@cindex Guix System” is inappropriate, because instructions on Guix
System are not here.
> +You can install the Guix package management tool on top of an existing
> +GNU/Linux or GNU/Hurd system@footnote{Currently only the Linux-libre
> +kernel is fully supported. […]
No.
First of all, using guix-install.sh as per your instructions, one
installs the Guix distribution *and* package management tool. Either
say “You can install the Guix package management tool and distribution”
or “You can install Guix”.
Next, I believe Guix cannot currently be built on existing GNU/Hurd
systems, because guile-fibers does not work. I do not really know
enough, but I would not mention Hurd support. Additionally “only the
Linux-libre kernel” is incorrect, because running Guix on non-libre
Linux is fully supported. Running Guix System there is not supported
(by us).
>> You suggested in your mail:
>>
>> Matt matt@excalamus.com> writes:
>> > Readers interested in those details may read the code for 'guix-install.sh'.
>>
>> Could you add this suggestion to your diff?
>
> I don't see that as relevant to the reader. The ability to read the
> source is implicit in it being provided, which it is.
Yes, you are right.
> The suggested changes remove superfluous commentary on the recommended
> binary installation process which create confusion.
“remove superfluous commentary” could be part of a commit message for
your changes, if you agree.
> What do you think is lost that isn't captured by the following bulleted list?
>
> +The script guides you through the following:
> +@itemize
> +@item Download and extract the binary tarball
> +@item Set up the build daemon
> +@item Make the ‘guix’ command available to non-root users
> +@item Configure substitute servers
> +@end itemize
The list is fine.
>> Therefore, the sentence would have to be removed: “The following
>> sections describe two methods of installation, binary installation
>> and building from source.”
>
> I've removed that sentence for a different reason. I also revised the
> sentence, "This is often quicker than installing from source, which is
> described in the next sections", to simply, "described later".
>
> The reason is that Chapter 2 doesn't currently explain building or
> installing from source. Building and installing from source is
> currently covered much later in Section 22.1. Whether or not the
> Installation section should cover building from source is a separate
> issue and shouldn't be part of this discussion.
This could be:
described later (@pxref{Building from Git}).
>> Matt matt@excalamus.com> writes:
>> > - Add commas in appropriate places; after "For...Ubuntu-based
>> > systems", "Likewise", and the 'or' within the list of substitutes
>>
>> I’m not a native speaker, but I believe the commas are not
>> necessary. There particularly does not need to be an Oxford comma
>> before ‘or’. There could be, but there is no reason to change it.
>
> Ah, the One True Brace Style of natural language :)
>
> I think there's already enough controversy in this thread. I've changed it back :)
:D However, please also do not change:
> -Likewise on openSUSE:
> +Likewise, on openSUSE:
>> Similarly, IMO the nuances are more appropriate in the old wording
>> “For Debian or a derivative such as Ubuntu,” rather than your change
>> “For Debian and Ubuntu-based systems”.
>
> The current wording is, "If you're running Debian or a derivative such
> as Ubuntu..." None of the suggested changes include the wording you
> give.
>
> What are the nuances? If they matter, we should probably make them explicit.
The nuance is that Ubuntu is a derivative of Debian. It can be
bootstrapped with Debian’s dpkg, although I did not follow a recent
e-mail thread on how to do this from a Guix-provided dpkg.
> +@quotation Note
> +By default, binary installations of Guix build @emph{everything} from
> +source. This makes each installation and upgrade very expensive.
> +@xref{On Trusting Binaries} for a discussion of why this is the default.
> […]
> -
> -@quotation Note
> -If you do not enable substitutes, Guix will end up building
> -@emph{everything} from source on your machine, making each installation
> -and upgrade very expensive. @xref{On Trusting Binaries}, for a
> -discussion of reasons why one might want do disable substitutes.
> @end quotation
Better not change the wording? I believe enabling substitutes is not
the default.
IMHO The discussion about whether Upgrading Guix should recommend to
edit the systemd service of the Debian guix package is for a separate
second patch.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-11 4:27 ` John Kehayias
@ 2024-03-11 19:15 ` Vagrant Cascadian
0 siblings, 0 replies; 69+ messages in thread
From: Vagrant Cascadian @ 2024-03-11 19:15 UTC (permalink / raw)
To: John Kehayias
Cc: Suhail Singh, Matt, pelzflorian (Florian Pelz), Maxim Cournoyer,
Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 2536 bytes --]
On 2024-03-11, John Kehayias wrote:
> On Sunday, March 10th, 2024 at 9:58 PM, Vagrant Cascadian <vagrant@debian.org> wrote:
>> On 2024-03-10, Suhail Singh wrote:
>>
>> > Vagrant Cascadian vagrant@debian.org writes:
>> >
>> > > but "guix pull" does not update the running guix-daemon;
>> >
>> > Just to be clear, however, if one were to do =sudo -i guix pull=
>> > instead, followed by =systemctl restart guix-daemon.service= it /would/
>> > update the running guix-daemon on Debian, correct? Or is that not the
>> > case?
>>
>>
>> No, out of the box guix-daemon is provided by the Debian guix package.
>>
>
> That means the instructions to update the guix daemon in the manual,
> <https://guix.gnu.org/en/manual/devel/en/html_node/Upgrading-Guix.html>
> is incorrect or doesn't work? Or am I misunderstanding what you meant
> here?
I presume it works fine if you install from the GNU Guix binary tarball,
but not with the Debian guix packages without configuring systemd or
whatever init system to use the guix daemon provided by "guix pull".
> (I know in the past some discussions have come up about older
> guix-daemon on foreign distros, presumably because the packages there
> don't get updated and a user wouldn't think to upgrade guix
> separately? But it seems you are saying you can't upgrade without
> modifying the e.g. systemd service definition? This is also important
> for security updates to guix itself, of course.)
As with other packages in Debian, security updates would, at least in
theory, be uploaded via Debian's security update process, like any other
package in Debian... unless you actually configure it to work like the
instructions above (e.g. add a systemd override).
At least once, I pulled patches from guix upstream into the Debian
package to resolve security issues in the Debian packages.
Just to be absolutely clear here, "guix pull" and whatnot works fine;
that part of upgrading is no different than Guix System or Guix Binary
installation on a foreign distro.
live well,
vagrant
>> > In other words, on Debian, does the systemd unit reference
>> > =/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon= ?
>>
>>
>> But you could provide an override pointing at whatever guix-daemon you
>> want, of course! :)
>>
>> Once you do that, you may as well remove the Debian packaged guix,
>> although users that have not yet run "guix pull" would need to guess
>> where to find guix, as there will be no guix on PATH.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-11 15:54 ` pelzflorian (Florian Pelz)
@ 2024-03-16 10:47 ` Matt
2024-03-16 14:05 ` pelzflorian (Florian Pelz)
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-03-16 10:47 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
[-- Attachment #1: Type: text/plain, Size: 10598 bytes --]
There are several actions which we have deferred and other topics
which still need to be addressed, such as those raised by Vagrant and
Suhail. My hope is to 1) resolve and merge this immediate patch, as
we appear to be converging on a consensus, 2) discuss how we could
better handle documentation changes than how I've handled them here
(that is, in one ever evolving diff), 3) compile a list of deferred
actions, 4) compile a list of deferred topics, and 5) address points 3
and 4 according to 2.
---- On Mon, 11 Mar 2024 16:54:01 +0100 pelzflorian (Florian Pelz) wrote ---
> Hi Matt. I would almost want to push your changes, but we still
> disagree on some wordings.
I'm glad to hear the suggested changes are more acceptable than not.
Let's do what we need to get things right.
> Yes, however the removal means that we should move the sections
>
> * 2.2 Requirements
> * 2.3 Running the Test Suite
>
> to the Contributing manual in doc/contributing.texi. WDYT? You said,
> it could be a separate discussion, but in my opinion it would be part of
> the same patch.
I was thinking of the opposite, of moving "Building from Git" into
Installation. What you say makes more sense and I agree. Since the
suggested patch is already quite complex, I have not added moving
Sections 2.2 and 2.3 to the changes. I propose we make the move in a
separate commit.
> > +@cindex foreign distro
> > +@cindex Guix System
>
> “@cindex Guix System” is inappropriate, because instructions on Guix
> System are not here.
Removed. Good catch!
> > +You can install the Guix package management tool on top of an existing
> > +GNU/Linux or GNU/Hurd system@footnote{Currently only the Linux-libre
> > +kernel is fully supported. […]
>
> No.
>
> First of all, using guix-install.sh as per your instructions, one
> installs the Guix distribution *and* package management tool. Either
> say “You can install the Guix package management tool and distribution”
> or “You can install Guix”.
I'm afraid I don't follow. Where do you see the suggested changes
confusing the installation process for Guix as a distribution and Guix
as a package management tool?
The sentence you quote is the suggested first sentence for the Chapter
2: Installation. The complete sentence reads,
"You can install the Guix package management tool on top of an
existing GNU/Linux or GNU/Hurd system(1), referred to as a "foreign
distro", or as a standalone operating system distribution, the "Guix
System"."
It literally says Guix is a package manager or a distribution. No
mention of 'guix-install.sh' is made on that page.
The current "introduction" to Chapter 2: Installation is this:
"Note: We recommend the use of this <shell installer script> to
install Guix on top of a running GNU/Linux system, thereafter called a
foreign distro. The script automates the download, installation, and
initial configuration of Guix. It should be run as the root user."
https://guix.gnu.org/en/manual/devel/en/html_node/Installation.html
Maybe the diff didn't apply correctly? Maybe it's confusing how the
Texinfo syntax puts the footnote markup in the middle of the source
sentence, even though footnotes render at the bottom of the page?
> Next, I believe Guix cannot currently be built on existing GNU/Hurd
> systems, because guile-fibers does not work. I do not really know
> enough, but I would not mention Hurd support.
The are two issues here, what is said and what should be said.
Regarding what is said, the section we're talking about is for
installing not building. You *can* install the Guix package
management tool on top of an existing GNU/Hurd system. This is
exactly what the suggested changes say, minus the emphasis. As far as
I know, it's true:
1. https://guix.gnu.org/en/blog/2020/a-hello-world-virtual-machine-running-the-hurd/
2. https://guix.gnu.org/en/blog/2020/childhurds-and-substitutes/
Further, the manual already mentions Hurd support:
https://guix.gnu.org/en/manual/devel/en/html_node/operating_002dsystem-Reference.html
Beyond the manual, there are two blog posts (linked above) which have explicit
sections about why it makes sense to develop for Hurd. Code for Hurd
is mainlined with 80 files in the master branch providing Hurd
support.
I get it, it's the Hurd. Running Guix on Hurd was part of a joke.
Correct me if I'm wrong, though: Hurd support wasn't the punchline,
ending support for Linux was. The part that said, "running on the
Hurd was always a goal for Guix" is sincere.
So, what should be said is that Hurd support is limited. Any errors
are bugs, either for Guix or for upstream.
I've updated the footnote to warn that Hurd support is currently
limited.
> Additionally “only the Linux-libre kernel” is incorrect, because
> running Guix on non-libre Linux is fully supported. Running Guix
> System there is not supported (by us).
Excellent point: the package manager is indeed supported on non-free
distros. I had carelessly copied the footnote, and the text containing this
issue, from another section. The update on the previous point,
regarding Hurd support, removes this issue by removing mention of
Linux.
> >> Therefore, the sentence would have to be removed: “The following
> >> sections describe two methods of installation, binary installation
> >> and building from source.”
> >
> > I've removed that sentence for a different reason. I also revised the
> > sentence, "This is often quicker than installing from source, which is
> > described in the next sections", to simply, "described later".
> >
> > The reason is that Chapter 2 doesn't currently explain building or
> > installing from source. Building and installing from source is
> > currently covered much later in Section 22.1. Whether or not the
> > Installation section should cover building from source is a separate
> > issue and shouldn't be part of this discussion.
>
> This could be:
>
> described later (@pxref{Building from Git}).
Updated.
> >> Matt matt@excalamus.com> writes:
> >> > - Add commas in appropriate places; after "For...Ubuntu-based
> >> > systems", "Likewise", and the 'or' within the list of substitutes
> >>
> >> I’m not a native speaker, but I believe the commas are not
> >> necessary. There particularly does not need to be an Oxford comma
> >> before ‘or’. There could be, but there is no reason to change it.
> >
> > Ah, the One True Brace Style of natural language :)
> >
> > I think there's already enough controversy in this thread. I've changed it back :)
>
> :D However, please also do not change:
>
> > -Likewise on openSUSE:
> > +Likewise, on openSUSE:
Corrected.
> >> Similarly, IMO the nuances are more appropriate in the old wording
> >> “For Debian or a derivative such as Ubuntu,” rather than your change
> >> “For Debian and Ubuntu-based systems”.
> >
> > The current wording is, "If you're running Debian or a derivative such
> > as Ubuntu..." None of the suggested changes include the wording you
> > give.
> >
> > What are the nuances? If they matter, we should probably make them explicit.
>
> The nuance is that Ubuntu is a derivative of Debian. It can be
> bootstrapped with Debian’s dpkg, although I did not follow a recent
> e-mail thread on how to do this from a Guix-provided dpkg.
Unless there's something about this nuance which directly affects the
installation process, I don't think the distinction warrants mention.
I opted to ignore the distinction and use "Debian and Ubuntu-based
systems" because many popular distros, such as Ubuntu, Linux Mint,
Zorin OS, Elementary OS, Linux Lite, and Pop!_OS, are known for being
"based on Ubuntu." The relevant information for users of these
systems is not that they're derivatives of Debian, it's that this is
the installation process for such systems.
> > +@quotation Note
> > +By default, binary installations of Guix build @emph{everything} from
> > +source. This makes each installation and upgrade very expensive.
> > +@xref{On Trusting Binaries} for a discussion of why this is the default.
> > […]
> > -
> > -@quotation Note
> > -If you do not enable substitutes, Guix will end up building
> > -@emph{everything} from source on your machine, making each installation
> > -and upgrade very expensive. @xref{On Trusting Binaries}, for a
> > -discussion of reasons why one might want do disable substitutes.
> > @end quotation
>
> Better not change the wording? I believe enabling substitutes is not
> the default.
My assumption is that the vast majority of readers are not installing
Guix on distros whose default is to compile from source. The concept
and jargon of substitutes, let alone the idea of compiling from
source, is likely completely unknown to most readers. Readers likely
expect, what we would call, substitutes to be enabled.
As far as I understand, the default behavior is opposite what most
readers would expect: substitutes are *not* enabled by default for
binary installations of Guix.
The suggested wording avoids the jargon of "substitutes" in favor of
simpler language which directly addresses what the reader likely cares
about: the default Guix behavior is to compile from source which takes
a long time. It also frames the discussion of "On Trusting Binaries"
from the perspective of "the expensive default was decided by careful
consideration." The current wording, "why one might want to disable
substitutes," involves jargon (substitutes) and a negative (disable)
which requires understanding what a substitute is, what the default
is, and whether "disabling" is contrary to the default. That
complexity is unnecessary, as I believe the suggested changes
demonstrate.
I think a valid critique of the suggested changes is "why say 'very
expensive' instead of 'takes a long time'?" The suggestion uses the
phrase "very expensive" instead of "takes a long time" because 1)
"very expensive" is the current language and 2) wall time is only one
of several expenses; others are energy and CPU cycles. This is a
situation where I think it's okay to be non-specific. The point is
"the default behavior may seem undesirable" and the word "expensive"
is typically considered undesirable.
> IMHO The discussion about whether Upgrading Guix should recommend to
> edit the systemd service of the Debian guix package is for a
> separate second patch.
Agreed.
[-- Attachment #2: v04-refactor-binary-installation-section.diff --]
[-- Type: application/octet-stream, Size: 12451 bytes --]
diff --git a/doc/guix.texi b/doc/guix.texi
index 796ac0028f..844e8df135 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -691,20 +691,20 @@ to join! @xref{Contributing}, for information about how you can help.
@chapter Installation
@cindex installing Guix
+@cindex foreign distro
+You can install the Guix package management tool on top of an existing
+GNU/Linux or GNU/Hurd system@footnote{Hurd support is currently
+limited.}, referred to as a @dfn{foreign distro}, or as a standalone
+operating system distribution, the @dfn{Guix@tie{}System}. This section
+is concerned with the installation of Guix on a foreign distro. If,
+instead, you want to install the complete GNU operating system,
+@pxref{System Installation}.
-@quotation Note
-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.
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@end quotation
-@cindex foreign distro
@cindex directories related to foreign distro
When installed on a foreign distro, GNU@tie{}Guix complements the available
tools without interference. Its data lives exclusively in two directories,
@@ -714,11 +714,6 @@ such as @file{/etc}, are left untouched.
Once installed, Guix can be updated by running @command{guix pull}
(@pxref{Invoking guix pull}).
-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.
-
@menu
* Binary Installation:: Getting Guix running in no time!
* Requirements:: Software needed to build and run Guix.
@@ -736,31 +731,20 @@ ready to use it.
@cindex installer script
This section describes how to install Guix 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. Binary installation requires a system using a Hurd or Linux
-kernel; the GNU@tie{}tar and Xz commands must also be available.
+quicker than installing from source, described later (@pxref{Building
+from Git}).
@quotation Important
This section only applies to systems without Guix. Following it for
existing Guix installations will overwrite important system files.
+@end quotation
-@c Note duplicated from the ``Installation'' node.
-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. As root, you can thus run this:
-
-@example
-cd /tmp
-wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
-chmod +x guix-install.sh
-./guix-install.sh
-@end example
+Some GNU/Linux distributions, such as Debian, Ubuntu, and openSUSE
+provide Guix through their own package managers. The version of Guix
+may be older than @value{VERSION} but you can update it afterwards by
+running @samp{guix pull}.
-If you're running Debian or a derivative such as Ubuntu, you can instead
-install the package (it might be a version older than @value{VERSION}
-but you can update it afterwards by running @samp{guix pull}):
+For Debian and Ubuntu-based systems, call:
@example
sudo apt install guix
@@ -772,174 +756,40 @@ Likewise on openSUSE:
sudo zypper install guix
@end example
-When you're done, @pxref{Application Setup} for extra configuration you
-might need, and @ref{Getting Started} for your first steps!
-@end quotation
-
-Installing goes along these lines:
-
-@enumerate
-@item
-@cindex downloading Guix binary
-Download the binary tarball from
-@indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz},
-where @code{x86_64-linux} can be replaced with @code{i686-linux} for an
-@code{i686} (32-bits) machine already running the kernel Linux, and so on
-(@pxref{GNU Distribution}).
-
-@c The following is somewhat duplicated in ``System Installation''.
-Make sure to download the associated @file{.sig} file and to verify the
-authenticity of the tarball against it, along these lines:
-
-@example
-$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-$ gpg --verify guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-@end example
-
-If that command fails because you do not have the required public key,
-then run this command to import it:
-
-@example
-$ wget '@value{OPENPGP-SIGNING-KEY-URL}' \
- -qO - | gpg --import -
-@end example
-
-@noindent
-and rerun the @code{gpg --verify} command.
+The Guix project also provides a shell script, @file{guix-install.sh},
+which automates the binary installation process without use of a foreign
+distro package
+manager@footnote{@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh}}.
+Use of @file{guix-install.sh} requires Bash, GnuPG, GNU@tie{}tar, wget,
+and Xz.
-Take note that a warning like ``This key is not certified with a trusted
-signature!'' is normal.
+The script guides you through the following:
-@c end authentication part
+@itemize
+@item Download and extract the binary tarball
+@item Set up the build daemon
+@item Make the ‘guix’ command available to non-root users
+@item Configure substitute servers
+@end itemize
-@item
-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:
+As root, run:
@example
# cd /tmp
-# tar --warning=no-timestamp -xf \
- /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
-# mv var/guix /var/ && mv gnu /
-@end example
-
-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).
-
-Do @emph{not} unpack the tarball on a working Guix system since that
-would overwrite its own essential files.
-
-The @option{--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 1 (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.
-
-@item
-Make the profile available under @file{~root/.config/guix/current}, which is
-where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
-
-@example
-# mkdir -p ~root/.config/guix
-# ln -sf /var/guix/profiles/per-user/root/current-guix \
- ~root/.config/guix/current
-@end example
-
-Source @file{etc/profile} to augment @env{PATH} and other relevant
-environment variables:
-
-@example
-# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
- source $GUIX_PROFILE/etc/profile
-@end example
-
-@item
-Create the group and user accounts for build users as explained below
-(@pxref{Build Environment Setup}).
-
-@item
-Run the daemon, and set it to automatically start on boot.
-
-If your host distro uses the systemd init system, this can be achieved
-with these commands:
-
-@c Versions of systemd that supported symlinked service files are not
-@c yet widely deployed, so we should suggest that users copy the service
-@c files into place.
-@c
-@c See this thread for more information:
-@c https://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \
- ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
- /etc/systemd/system/
-# systemctl enable --now gnu-store.mount guix-daemon
-@end example
-
-You may also want to arrange for @command{guix gc} to run periodically:
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/guix-gc.service \
- ~root/.config/guix/current/lib/systemd/system/guix-gc.timer \
- /etc/systemd/system/
-# systemctl enable --now guix-gc.timer
-@end example
-
-You may want to edit @file{guix-gc.service} to adjust the command line
-options to fit your needs (@pxref{Invoking guix gc}).
-
-If your host distro uses the Upstart init system:
-
-@example
-# initctl reload-configuration
-# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
- /etc/init/
-# start guix-daemon
-@end example
-
-Otherwise, you can still start the daemon manually with:
-
-@example
-# ~root/.config/guix/current/bin/guix-daemon \
- --build-users-group=guixbuild
-@end example
-
-@item
-Make the @command{guix} command available to other users on the machine,
-for instance with:
-
-@example
-# mkdir -p /usr/local/bin
-# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
+# wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+# chmod +x guix-install.sh
+# ./guix-install.sh
@end example
-It is also a good idea to make the Info version of this manual available
-there:
-
-@example
-# mkdir -p /usr/local/share/info
-# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
- do ln -s $i ; done
-@end example
-
-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).
+@quotation Note
+By default, binary installations of Guix build @emph{everything} from
+source. This makes each installation and upgrade very expensive.
+@xref{On Trusting Binaries} for a discussion of why this is the default.
-@item
@cindex substitutes, authorization thereof
To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
-authorize them:
+you must authorize them. For example,
@example
# guix archive --authorize < \
@@ -947,44 +797,11 @@ authorize them:
# guix archive --authorize < \
~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
@end example
-
-@quotation Note
-If you do not enable substitutes, Guix will end up building
-@emph{everything} from source on your machine, making each installation
-and upgrade very expensive. @xref{On Trusting Binaries}, for a
-discussion of reasons why one might want do disable substitutes.
@end quotation
-@item
-Each user may need to perform a few additional steps to make their Guix
-environment ready for use, @pxref{Application Setup}.
-@end enumerate
-
-Voilà, the installation is complete!
-
-You can confirm that Guix is working by installing a sample package into
-the root profile:
-
-@example
-# guix install hello
-@end example
-
-The binary installation tarball can be (re)produced and verified simply
-by running the following command in the Guix source tree:
-
-@example
-make guix-binary.@var{system}.tar.xz
-@end example
-
-@noindent
-...@: which, in turn, runs:
-
-@example
-guix pack -s @var{system} --localstatedir \
- --profile-name=current-guix guix
-@end example
-
-@xref{Invoking guix pack}, for more info on this handy tool.
+When you're done installing Guix, @pxref{Application Setup} for extra
+configuration you might need, and @ref{Getting Started} for your first
+steps!
@node Requirements
@section Requirements
@@ -17643,6 +17460,7 @@ configuration (@pxref{Using the Configuration System}).
@table @asis
@item @code{kernel} (default: @code{linux-libre})
+@c footnote duplicated in @pxref{Installation}
The package object of the operating system kernel to
use@footnote{Currently only the Linux-libre kernel is fully supported.
Using GNU@tie{}mach with the GNU@tie{}Hurd is experimental and only
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-16 10:47 ` Matt
@ 2024-03-16 14:05 ` pelzflorian (Florian Pelz)
2024-03-17 17:34 ` Ludovic Courtès
2024-03-24 9:27 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)) Matt
0 siblings, 2 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-16 14:05 UTC (permalink / raw)
To: Matt; +Cc: Maxim Cournoyer, Christian Miller, guix-devel, Josselin Poiret
Hello Matt and thank you for your precise wording. You have made clear
the differences:
Matt <matt@excalamus.com> writes:
> There are several actions which we have deferred and other topics
> which still need to be addressed, such as those raised by Vagrant and
> Suhail. My hope is to 1) resolve and merge this immediate patch, as
> we appear to be converging on a consensus, 2) discuss how we could
> better handle documentation changes than how I've handled them here
> (that is, in one ever evolving diff),
I think the diff was quite appropriate. You could make a patch via “git
format-patch” or “git send-email”, which would include a commit message
and which could include a move of sections 2.2 and 2.3 to the
contributing.texi. But it is not necessary for documentation changes.
> 3) compile a list of deferred
> actions, 4) compile a list of deferred topics, and 5) address points 3
> and 4 according to 2.
>
> ---- On Mon, 11 Mar 2024 16:54:01 +0100 pelzflorian (Florian Pelz) wrote ---
>> Yes, however the removal means that we should move the sections
>>
>> * 2.2 Requirements
>> * 2.3 Running the Test Suite
>>
>> to the Contributing manual in doc/contributing.texi. WDYT? You said,
>> it could be a separate discussion, but in my opinion it would be part of
>> the same patch.
>
> I was thinking of the opposite, of moving "Building from Git" into
> Installation. What you say makes more sense and I agree. Since the
> suggested patch is already quite complex, I have not added moving
> Sections 2.2 and 2.3 to the changes. I propose we make the move in a
> separate commit.
Yes, it should probably be a separate commit, to make it possible to
revert it separately.
>> > +@cindex foreign distro
>> > +@cindex Guix System
>>
>> “@cindex Guix System” is inappropriate, because instructions on Guix
>> System are not here.
>
> Removed. Good catch!
>
>> > +You can install the Guix package management tool on top of an existing
>> > +GNU/Linux or GNU/Hurd system@footnote{Currently only the Linux-libre
>> > +kernel is fully supported. […]
>>
>> No.
>>
>> First of all, using guix-install.sh as per your instructions, one
>> installs the Guix distribution *and* package management tool. Either
>> say “You can install the Guix package management tool and distribution”
>> or “You can install Guix”.
>
> I'm afraid I don't follow. Where do you see the suggested changes
> confusing the installation process for Guix as a distribution and Guix
> as a package management tool?
>
> The sentence you quote is the suggested first sentence for the Chapter
> 2: Installation. The complete sentence reads,
>
> "You can install the Guix package management tool on top of an
> existing GNU/Linux or GNU/Hurd system(1), referred to as a "foreign
> distro", or as a standalone operating system distribution, the "Guix
> System"."
>
> It literally says Guix is a package manager or a distribution.
Precisely this terminology is the issue. Nix is a package manager;
Nixpkgs is a distribution. For Guix, Guix is both a package manager and
distribution. Guix System is not a distribution in this sense; Guix is
the distribution. I am aware that some people expect distribution to
mean a self-sufficient operating system, but we should not subscribe to
one side of terminology. (Actually, the term operating system is
complex as well, for example GNU is an operating system and the people
from Robot Operating System call ROS an operating system.)
I would not address Hurd here at all. Hurd support would be important
and is promising, but documentation for it should come after it works on
more than a Childhurd.
> No
> mention of 'guix-install.sh' is made on that page.
I wanted to give an example what I mean, not a suggestion.
>
> The current "introduction" to Chapter 2: Installation is this:
>
> "Note: We recommend the use of this <shell installer script> to
> install Guix on top of a running GNU/Linux system, thereafter called a
> foreign distro. The script automates the download, installation, and
> initial configuration of Guix. It should be run as the root user."
>
> https://guix.gnu.org/en/manual/devel/en/html_node/Installation.html
>
> Maybe the diff didn't apply correctly? Maybe it's confusing how the
> Texinfo syntax puts the footnote markup in the middle of the source
> sentence, even though footnotes render at the bottom of the page?
>
>> Next, I believe Guix cannot currently be built on existing GNU/Hurd
>> systems, because guile-fibers does not work. I do not really know
>> enough, but I would not mention Hurd support.
>
> The are two issues here, what is said and what should be said.
>
> Regarding what is said, the section we're talking about is for
> installing not building. You *can* install the Guix package
> management tool on top of an existing GNU/Hurd system.
Probably a guix pack of the guix package would run, but Debian’s
guile-fibers is not accepted, if I don’t misunderstand.
> […]
>> >> Similarly, IMO the nuances are more appropriate in the old wording
>> >> “For Debian or a derivative such as Ubuntu,” rather than your change
>> >> “For Debian and Ubuntu-based systems”.
>> >
>> > The current wording is, "If you're running Debian or a derivative such
>> > as Ubuntu..." None of the suggested changes include the wording you
>> > give.
>> >
>> > What are the nuances? If they matter, we should probably make them explicit.
>>
>> The nuance is that Ubuntu is a derivative of Debian. It can be
>> bootstrapped with Debian’s dpkg, although I did not follow a recent
>> e-mail thread on how to do this from a Guix-provided dpkg.
>
> Unless there's something about this nuance which directly affects the
> installation process, I don't think the distinction warrants mention.
>
> I opted to ignore the distinction and use "Debian and Ubuntu-based
> systems" because many popular distros, such as Ubuntu, Linux Mint,
> Zorin OS, Elementary OS, Linux Lite, and Pop!_OS, are known for being
> "based on Ubuntu." The relevant information for users of these
> systems is not that they're derivatives of Debian, it's that this is
> the installation process for such systems.
Ubuntu should not get the credits for what Debian is doing. The current
wording “Debian or a derivative such as Ubuntu” is fairer and equally
clear.
>> > +@quotation Note
>> > +By default, binary installations of Guix build @emph{everything} from
>> > +source. This makes each installation and upgrade very expensive.
>> > +@xref{On Trusting Binaries} for a discussion of why this is the default.
>> > […]
>> > -
>> > -@quotation Note
>> > -If you do not enable substitutes, Guix will end up building
>> > -@emph{everything} from source on your machine, making each installation
>> > -and upgrade very expensive. @xref{On Trusting Binaries}, for a
>> > -discussion of reasons why one might want do disable substitutes.
>> > @end quotation
>>
>> Better not change the wording? I believe enabling substitutes is not
>> the default.
>
> My assumption is that the vast majority of readers are not installing
> Guix on distros whose default is to compile from source. The concept
> and jargon of substitutes, let alone the idea of compiling from
> source, is likely completely unknown to most readers. Readers likely
> expect, what we would call, substitutes to be enabled.
>
> As far as I understand, the default behavior is opposite what most
> readers would expect: substitutes are *not* enabled by default for
> binary installations of Guix.
>
> The suggested wording avoids the jargon of "substitutes" in favor of
> simpler language which directly addresses what the reader likely cares
> about: the default Guix behavior is to compile from source which takes
> a long time. It also frames the discussion of "On Trusting Binaries"
> from the perspective of "the expensive default was decided by careful
> consideration." The current wording, "why one might want to disable
> substitutes," involves jargon (substitutes) and a negative (disable)
> which requires understanding what a substitute is, what the default
> is, and whether "disabling" is contrary to the default. That
> complexity is unnecessary, as I believe the suggested changes
> demonstrate.
I just tried now and I had not expected the install script to say:
Permit downloading pre-built package binaries from the project's build
farms? [Y/n]
Getting substitutes unexpectedly is the default (also unlike what you
write) and users can complete the installation without knowing the term,
but they do get asked.
I agree with you now that the wording can be simplified, except it must
be rewritten to that disabling substitutes is an option that is not the
default.
>
> I think a valid critique of the suggested changes is "why say 'very
> expensive' instead of 'takes a long time'?" The suggestion uses the
> phrase "very expensive" instead of "takes a long time" because 1)
> "very expensive" is the current language and 2) wall time is only one
> of several expenses; others are energy and CPU cycles. This is a
> situation where I think it's okay to be non-specific. The point is
> "the default behavior may seem undesirable" and the word "expensive"
> is typically considered undesirable.
I agree that “expensive” is sufficiently understandable.
>> IMHO The discussion about whether Upgrading Guix should recommend to
>> edit the systemd service of the Debian guix package is for a
>> separate second patch.
>
> Agreed.
Otherwise LGTM. Could you send another diff? Would a commit message
like this be okay:
doc: Simplify installation instructions.
* doc/guix.texi (Installation): Direct readers towards the installation
script. Remove superfluous commentary.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)
2024-03-16 14:05 ` pelzflorian (Florian Pelz)
@ 2024-03-17 17:34 ` Ludovic Courtès
2024-03-24 9:27 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)) Matt
1 sibling, 0 replies; 69+ messages in thread
From: Ludovic Courtès @ 2024-03-17 17:34 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: Matt, Maxim Cournoyer, Christian Miller, guix-devel,
Josselin Poiret
Hi,
"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> skribis:
> Otherwise LGTM. Could you send another diff? Would a commit message
> like this be okay:
>
> doc: Simplify installation instructions.
>
> * doc/guix.texi (Installation): Direct readers towards the installation
> script. Remove superfluous commentary.
I’d recommend sending it to guix-patches to make it more visible.
Ludo’.
^ permalink raw reply [flat|nested] 69+ messages in thread
* [bug#69977] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation))
2024-03-16 14:05 ` pelzflorian (Florian Pelz)
2024-03-17 17:34 ` Ludovic Courtès
@ 2024-03-24 9:27 ` Matt
2024-03-24 9:32 ` [bug#69976] " Matt
2024-03-25 19:26 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions pelzflorian (Florian Pelz)
1 sibling, 2 replies; 69+ messages in thread
From: Matt @ 2024-03-24 9:27 UTC (permalink / raw)
To: 69977
Cc: Josselin Poiret, Christian Miller, Maxim Cournoyer,
pelzflorian (Florian Pelz)
[-- Attachment #1: Type: text/plain, Size: 10262 bytes --]
On Ludo's recommendation, I'm submitting this patch set. It fixes issues of confusion raised in feedback on the manual. See this discussion: https://lists.gnu.org/archive/html/guix-devel/2024-03/msg00023.html
I will reply to points raised in that thread here and have CC'd people who have previously shown interest.
---- On Sat, 16 Mar 2024 15:05:13 +0100 pelzflorian (Florian Pelz) wrote ---
> I think the diff was quite appropriate. You could make a patch via “git
> format-patch” or “git send-email”, which would include a commit message
> and which could include a move of sections 2.2 and 2.3 to the
> contributing.texi. But it is not necessary for documentation changes.
See attached.
> >> > Matt matt@excalamus.com> writes:
> >> > +You can install the Guix package management tool on top of an existing
> >> > +GNU/Linux or GNU/Hurd system@footnote{Currently only the Linux-libre
> >> > +kernel is fully supported. […]
> >>
> >> No.
> >>
> >> First of all, using guix-install.sh as per your instructions, one
> >> installs the Guix distribution *and* package management tool. Either
> >> say “You can install the Guix package management tool and distribution”
> >> or “You can install Guix”.
> >
> > I'm afraid I don't follow. Where do you see the suggested changes
> > confusing the installation process for Guix as a distribution and Guix
> > as a package management tool?
> >
> > The sentence you quote is the suggested first sentence for the Chapter
> > 2: Installation. The complete sentence reads,
> >
> > "You can install the Guix package management tool on top of an
> > existing GNU/Linux or GNU/Hurd system(1), referred to as a "foreign
> > distro", or as a standalone operating system distribution, the "Guix
> > System"."
> >
> > It literally says Guix is a package manager or a distribution.
>
> Precisely this terminology is the issue. Nix is a package manager;
> Nixpkgs is a distribution. For Guix, Guix is both a package manager and
> distribution. Guix System is not a distribution in this sense; Guix is
> the distribution. I am aware that some people expect distribution to
> mean a self-sufficient operating system, but we should not subscribe to
> one side of terminology. (Actually, the term operating system is
> complex as well, for example GNU is an operating system and the people
> from Robot Operating System call ROS an operating system.)
Thank you for your feedback. Reading the suggested changes again with fresh eyes, I think I now see your concerns. I see you raise two concerns:
1. A clear distinction between Guix and the Guix System was not made
I have split the suggested sentence, whose current version (v04) is given above, into two. One sentence has the subject of "the package management tool Guix" and the other "the Guix System". You were correct in observing that the suggestion confused the meaning of "Guix". Good catch!
2. The use of "operating system" is inappropriate
The v04 suggestion used "operating system" only because the current manual (bf53001) says in Section 1: Introduction, "If, instead, you want to install the complete GNU operating system..." before linking to "...how to install Guix System on a machine."
I have changed the patch set to say,
"If, instead, you want to install the complete, standalone GNU system distribution..."
This is based off the Section 1: Introduction which calls Guix System a distribution, "...or you can use [Guix] as a standalone operating system distribution, 'Guix System'" and Section 1.2: GNU Distribution which says, "we refer to the standalone distribution as Guix System."
I'm not sure if I've responded to all of your concerns here. Have I missed any?
> I would not address Hurd here at all. Hurd support would be important
> and is promising, but documentation for it should come after it works on
> more than a Childhurd.
You say, "I would not address Hurd *here*" which implies it's valid to address Hurd elsewhere. What's the criteria for deciding whether to address Hurd and how are the reasons I inadequate?
Here are the reasons I gave previously for why we should continue documenting Hurd support:
- The manual already documents Hurd support
- Core developers have published the statement, "running on the Hurd was always a goal for Guix"
- Guix can run on Hurd
- Code exists in the main branch for Hurd support
> > No mention of 'guix-install.sh' is made on that page.
>
> I wanted to give an example what I mean, not a suggestion.
I don't understand what you mean then. The exchange quoted here was part of the "Guix" versus "Guix System" discussion above. Have the updates I've made there addressed this point?
> >> Next, I believe Guix cannot currently be built on existing GNU/Hurd
> >> systems, because guile-fibers does not work. I do not really know
> >> enough, but I would not mention Hurd support.
> >
> > The are two issues here, what is said and what should be said.
> >
> > Regarding what is said, the section we're talking about is for
> > installing not building. You *can* install the Guix package
> > management tool on top of an existing GNU/Hurd system.
>
> Probably a guix pack of the guix package would run, but Debian’s
> guile-fibers is not accepted, if I don’t misunderstand.
What I ask myself is, "Is this a problem or a detail?" I know that probably sounds stupid. However, the question is whether Guix can be installed on Hurd. The answer is, Guix can be installed on Hurd. Everything else, therefore, including guile-fibers or which Hurd, while important in other contexts, is not important to this issue.
> > […]
> >> >> Similarly, IMO the nuances are more appropriate in the old wording
> >> >> “For Debian or a derivative such as Ubuntu,” rather than your change
> >> >> “For Debian and Ubuntu-based systems”.
> >> >
> >> > The current wording is, "If you're running Debian or a derivative such
> >> > as Ubuntu..." None of the suggested changes include the wording you
> >> > give.
> >> >
> >> > What are the nuances? If they matter, we should probably make them explicit.
> >>
> >> The nuance is that Ubuntu is a derivative of Debian. It can be
> >> bootstrapped with Debian’s dpkg, although I did not follow a recent
> >> e-mail thread on how to do this from a Guix-provided dpkg.
> >
> > Unless there's something about this nuance which directly affects the
> > installation process, I don't think the distinction warrants mention.
> >
> > I opted to ignore the distinction and use "Debian and Ubuntu-based
> > systems" because many popular distros, such as Ubuntu, Linux Mint,
> > Zorin OS, Elementary OS, Linux Lite, and Pop!_OS, are known for being
> > "based on Ubuntu." The relevant information for users of these
> > systems is not that they're derivatives of Debian, it's that this is
> > the installation process for such systems.
>
> Ubuntu should not get the credits for what Debian is doing. The current
> wording “Debian or a derivative such as Ubuntu” is fairer and equally
> clear.
Ensuring fairness is everyone's responsiblity. I respect you for accepting this and speaking up. I understand that you're concerned about proper attribution.
AFAIK, Ubuntu gives clear credit to Debian. For example, the Ubuntu website says, "Debian is the rock on which Ubuntu is built." https://ubuntu.com/community/governance/debian They give similarly clear statements elsewhere, too.
My understanding is that many distros call themselves "based on Ubuntu", "built upon Ubuntu", or list Ubuntu as "upstream" because they use packages that are, at minimum, distributed by Ubuntu. That adds value also deserving of credit and which is separate from the value added by Debian. Also, we must not overlook that Debian is itself built upon the work of others, many of whom are not associated with Debian and may not even be aware Debian packages or distributes their work. This is all possible and just because of Free Software. One of the four freedoms is the right to distribute unmodified copies. It depends on the license terms, or lack thereof, whether explicit credit needs to be given. I've not heard of Ubuntu violating any license terms or other legal restrictions requiring attribution.
Am I missing something?
> >> Better not change the wording? I believe enabling substitutes is not
> >> the default.
You are correct! I misunderstood the current manual and wrote that misunderstanding into my suggested changes. I have updated the suggested changes. Thank you for catching this!
> I agree with you now that the wording can be simplified, except it must be rewritten to that disabling substitutes is an option that is not the default.
The term "substitute" is given in the Section 1 Introduction. However, since it's jargon and this is a different chapter, I think it prudent to repeat the definition again as a reminder.
The 'guix-install.sh' script uses the term "pre-built package binaries" instead of "substitute":
"Permit downloading pre-built package binaries from the project's build farms? [Y/n]"
I propose the following. The intent is to match the script's language so that readers may understand the consequences of a 'Y' or 'n' choice. The best place to do this would be in the prompt. However, documenting consequences in the manual seems a reasonable compromise which makes the prompt concise and allows us to link to the "On Trusting Binaries" section.
+By default, 'guix-install.sh' will configure Guix to download pre-built
+package binaries, called @dfn{substitutes} (@pxref{Substitutes}), from
+the project's build farms. If you choose not to permit this, Guix will
+build @emph{everything} from source, making each installation and
+upgrade very expensive. @xref{On Trusting Binaries} for a discussion of
+why you may want to build packages from source.
> Otherwise LGTM. Could you send another diff?
Gladly. I reviewed our past messages and tried to document all the relevant changes in the commit messages.
[-- Attachment #2: 0001-doc-Simplify-installation-instructions.patch --]
[-- Type: application/octet-stream, Size: 14587 bytes --]
From 3bd6b96f2829130d677702fba69bff37ae5ae483 Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Sun, 24 Mar 2024 10:02:40 +0100
Subject: [PATCH 1/3] doc: Simplify installation instructions
* doc/guix.texi (Installation):
- Move the definition of "foreign distro" out of quotation
- Repeat overwrite warning
- Remove superfluous commentary
* doc/guix.texi (Binary Installation):
- Clarify that installing on a foreign distro has two methods: using
packaged binaries and building from source
- Add cross reference to "Building from Git"
- Move the foreign distro installation instructions out of quotation
- Move directions for 'guix-install.sh' after instructions to use
distribution-specific package managers
- Specify "distributions" as "GNU/Linux distributions"
- Add GnuPG as a requirement for 'guix-install.sh'
- Add comma after "Likewise"
- Remove redundant instructions to use 'guix-install.sh'
- Split the requirements between system requirements for binary
installations, GNU/Linux or GNU/Hurd, and requirements for running
'guix-install.sh'
- Clarify that 'guix-install.sh' guides users through the steps
- Summarize the steps 'guix-install.sh' follows rather than try to
detail them
- Make explicit that the 'guix-install.sh' default is to download
substitutes
- Emphasize that the substitute authorization code is an example and
may need modification
Link: <https://lists.gnu.org/archive/html/guix-devel/2024-03/msg00023.html>
---
doc/guix.texi | 280 +++++++++-----------------------------------------
1 file changed, 50 insertions(+), 230 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index eda4084e7f..2b4d3585ba 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -691,20 +691,20 @@ to join! @xref{Contributing}, for information about how you can help.
@chapter Installation
@cindex installing Guix
+@cindex foreign distro
+@cindex Guix System
+You can install the package management tool Guix on top of an existing
+GNU/Linux or GNU/Hurd system@footnote{Hurd support is currently
+limited.}, referred to as a @dfn{foreign distro}. If, instead, you want
+to install the complete, standalone GNU system distribution,
+@dfn{Guix@tie{}System}, @pxref{System Installation}. This section is
+concerned only with the installation of Guix on a foreign distro.
-@quotation Note
-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.
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@end quotation
-@cindex foreign distro
@cindex directories related to foreign distro
When installed on a foreign distro, GNU@tie{}Guix complements the available
tools without interference. Its data lives exclusively in two directories,
@@ -714,11 +714,6 @@ such as @file{/etc}, are left untouched.
Once installed, Guix can be updated by running @command{guix pull}
(@pxref{Invoking guix pull}).
-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.
-
@menu
* Binary Installation:: Getting Guix running in no time!
* Requirements:: Software needed to build and run Guix.
@@ -736,210 +731,68 @@ ready to use it.
@cindex installer script
This section describes how to install Guix 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. Binary installation requires a system using a Hurd or Linux
-kernel; the GNU@tie{}tar and Xz commands must also be available.
+quicker than installing from source, described later (@pxref{Building
+from Git}).
@quotation Important
This section only applies to systems without Guix. Following it for
existing Guix installations will overwrite important system files.
+@end quotation
-@c Note duplicated from the ``Installation'' node.
-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. As root, you can thus run this:
-
-@example
-cd /tmp
-wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
-chmod +x guix-install.sh
-./guix-install.sh
-@end example
+Some GNU/Linux distributions, such as Debian, Ubuntu, and openSUSE
+provide Guix through their own package managers. The version of Guix
+may be older than @value{VERSION} but you can update it afterwards by
+running @samp{guix pull}.
-If you're running Debian or a derivative such as Ubuntu, you can instead
-install the package (it might be a version older than @value{VERSION}
-but you can update it afterwards by running @samp{guix pull}):
+For Debian and Ubuntu-based systems, call:
@example
sudo apt install guix
@end example
-Likewise on openSUSE:
+Likewise, on openSUSE:
@example
sudo zypper install guix
@end example
-When you're done, @pxref{Application Setup} for extra configuration you
-might need, and @ref{Getting Started} for your first steps!
-@end quotation
-
-Installing goes along these lines:
+The Guix project also provides a shell script, @file{guix-install.sh},
+which automates the binary installation process without use of a foreign
+distro package
+manager@footnote{@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh}}.
+Use of @file{guix-install.sh} requires Bash, GnuPG, GNU@tie{}tar, wget,
+and Xz.
-@enumerate
-@item
-@cindex downloading Guix binary
-Download the binary tarball from
-@indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz},
-where @code{x86_64-linux} can be replaced with @code{i686-linux} for an
-@code{i686} (32-bits) machine already running the kernel Linux, and so on
-(@pxref{GNU Distribution}).
-
-@c The following is somewhat duplicated in ``System Installation''.
-Make sure to download the associated @file{.sig} file and to verify the
-authenticity of the tarball against it, along these lines:
-
-@example
-$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-$ gpg --verify guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-@end example
+The script guides you through the following:
-If that command fails because you do not have the required public key,
-then run this command to import it:
-
-@example
-$ wget '@value{OPENPGP-SIGNING-KEY-URL}' \
- -qO - | gpg --import -
-@end example
-
-@noindent
-and rerun the @code{gpg --verify} command.
-
-Take note that a warning like ``This key is not certified with a trusted
-signature!'' is normal.
-
-@c end authentication part
+@itemize
+@item Downloading and extracting the binary tarball
+@item Setting up the build daemon
+@item Making the ‘guix’ command available to non-root users
+@item Configuring substitute servers
+@end itemize
-@item
-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:
+As root, run:
@example
# cd /tmp
-# tar --warning=no-timestamp -xf \
- /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
-# mv var/guix /var/ && mv gnu /
-@end example
-
-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).
-
-Do @emph{not} unpack the tarball on a working Guix system since that
-would overwrite its own essential files.
-
-The @option{--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 1 (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.
-
-@item
-Make the profile available under @file{~root/.config/guix/current}, which is
-where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
-
-@example
-# mkdir -p ~root/.config/guix
-# ln -sf /var/guix/profiles/per-user/root/current-guix \
- ~root/.config/guix/current
-@end example
-
-Source @file{etc/profile} to augment @env{PATH} and other relevant
-environment variables:
-
-@example
-# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
- source $GUIX_PROFILE/etc/profile
-@end example
-
-@item
-Create the group and user accounts for build users as explained below
-(@pxref{Build Environment Setup}).
-
-@item
-Run the daemon, and set it to automatically start on boot.
-
-If your host distro uses the systemd init system, this can be achieved
-with these commands:
-
-@c Versions of systemd that supported symlinked service files are not
-@c yet widely deployed, so we should suggest that users copy the service
-@c files into place.
-@c
-@c See this thread for more information:
-@c https://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \
- ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
- /etc/systemd/system/
-# systemctl enable --now gnu-store.mount guix-daemon
-@end example
-
-You may also want to arrange for @command{guix gc} to run periodically:
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/guix-gc.service \
- ~root/.config/guix/current/lib/systemd/system/guix-gc.timer \
- /etc/systemd/system/
-# systemctl enable --now guix-gc.timer
-@end example
-
-You may want to edit @file{guix-gc.service} to adjust the command line
-options to fit your needs (@pxref{Invoking guix gc}).
-
-If your host distro uses the Upstart init system:
-
-@example
-# initctl reload-configuration
-# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
- /etc/init/
-# start guix-daemon
-@end example
-
-Otherwise, you can still start the daemon manually with:
-
-@example
-# ~root/.config/guix/current/bin/guix-daemon \
- --build-users-group=guixbuild
+# wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+# chmod +x guix-install.sh
+# ./guix-install.sh
@end example
-@item
-Make the @command{guix} command available to other users on the machine,
-for instance with:
-
-@example
-# mkdir -p /usr/local/bin
-# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
-@end example
-
-It is also a good idea to make the Info version of this manual available
-there:
-
-@example
-# mkdir -p /usr/local/share/info
-# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
- do ln -s $i ; done
-@end example
-
-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).
+@quotation Note
+By default, 'guix-install.sh' will configure Guix to download pre-built
+package binaries, called @dfn{substitutes} (@pxref{Substitutes}), from
+the project's build farms. If you choose not to permit this, Guix will
+build @emph{everything} from source, making each installation and
+upgrade very expensive. @xref{On Trusting Binaries} for a discussion of
+why you may want to build packages from source.
-@item
@cindex substitutes, authorization thereof
To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
-@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
-authorize them:
+@code{@value{SUBSTITUTE-SERVER-2}} or a mirror, you must authorize them.
+For example,
@example
# guix archive --authorize < \
@@ -947,45 +800,8 @@ authorize them:
# guix archive --authorize < \
~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
@end example
-
-@quotation Note
-If you do not enable substitutes, Guix will end up building
-@emph{everything} from source on your machine, making each installation
-and upgrade very expensive. @xref{On Trusting Binaries}, for a
-discussion of reasons why one might want do disable substitutes.
@end quotation
-@item
-Each user may need to perform a few additional steps to make their Guix
-environment ready for use, @pxref{Application Setup}.
-@end enumerate
-
-Voilà, the installation is complete!
-
-You can confirm that Guix is working by installing a sample package into
-the root profile:
-
-@example
-# guix install hello
-@end example
-
-The binary installation tarball can be (re)produced and verified simply
-by running the following command in the Guix source tree:
-
-@example
-make guix-binary.@var{system}.tar.xz
-@end example
-
-@noindent
-...@: which, in turn, runs:
-
-@example
-guix pack -s @var{system} --localstatedir \
- --profile-name=current-guix guix
-@end example
-
-@xref{Invoking guix pack}, for more info on this handy tool.
-
@node Requirements
@section Requirements
@@ -1179,6 +995,9 @@ Some of them require a lot of storage space to hold VM images.
Again in case of test failures, please send @email{bug-guix@@gnu.org}
all the details.
+When you're done installing Guix, @pxref{Application Setup} for extra
+configuration you might need, and @ref{Getting Started} for your first
+steps!
@node Setting Up the Daemon
@section Setting Up the Daemon
@@ -17649,6 +17468,7 @@ configuration (@pxref{Using the Configuration System}).
@table @asis
@item @code{kernel} (default: @code{linux-libre})
+@c footnote duplicated in @pxref{Installation}
The package object of the operating system kernel to
use@footnote{Currently only the Linux-libre kernel is fully supported.
Using GNU@tie{}mach with the GNU@tie{}Hurd is experimental and only
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [bug#69976] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation))
2024-03-24 9:27 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)) Matt
@ 2024-03-24 9:32 ` Matt
[not found] ` <87edbitv7l.fsf@gmail.com>
2024-03-25 19:26 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions pelzflorian (Florian Pelz)
1 sibling, 1 reply; 69+ messages in thread
From: Matt @ 2024-03-24 9:32 UTC (permalink / raw)
To: 69976
Cc: Josselin Poiret, Christian Miller, Maxim Cournoyer,
pelzflorian (Florian Pelz)
[-- Attachment #1: Type: text/plain, Size: 90 bytes --]
Ugh. All the patches were not attached to my previous message. Here are all the patches.
[-- Attachment #2: 0001-doc-Simplify-installation-instructions.patch --]
[-- Type: application/octet-stream, Size: 14587 bytes --]
From 3bd6b96f2829130d677702fba69bff37ae5ae483 Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Sun, 24 Mar 2024 10:02:40 +0100
Subject: [PATCH 1/3] doc: Simplify installation instructions
* doc/guix.texi (Installation):
- Move the definition of "foreign distro" out of quotation
- Repeat overwrite warning
- Remove superfluous commentary
* doc/guix.texi (Binary Installation):
- Clarify that installing on a foreign distro has two methods: using
packaged binaries and building from source
- Add cross reference to "Building from Git"
- Move the foreign distro installation instructions out of quotation
- Move directions for 'guix-install.sh' after instructions to use
distribution-specific package managers
- Specify "distributions" as "GNU/Linux distributions"
- Add GnuPG as a requirement for 'guix-install.sh'
- Add comma after "Likewise"
- Remove redundant instructions to use 'guix-install.sh'
- Split the requirements between system requirements for binary
installations, GNU/Linux or GNU/Hurd, and requirements for running
'guix-install.sh'
- Clarify that 'guix-install.sh' guides users through the steps
- Summarize the steps 'guix-install.sh' follows rather than try to
detail them
- Make explicit that the 'guix-install.sh' default is to download
substitutes
- Emphasize that the substitute authorization code is an example and
may need modification
Link: <https://lists.gnu.org/archive/html/guix-devel/2024-03/msg00023.html>
---
doc/guix.texi | 280 +++++++++-----------------------------------------
1 file changed, 50 insertions(+), 230 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index eda4084e7f..2b4d3585ba 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -691,20 +691,20 @@ to join! @xref{Contributing}, for information about how you can help.
@chapter Installation
@cindex installing Guix
+@cindex foreign distro
+@cindex Guix System
+You can install the package management tool Guix on top of an existing
+GNU/Linux or GNU/Hurd system@footnote{Hurd support is currently
+limited.}, referred to as a @dfn{foreign distro}. If, instead, you want
+to install the complete, standalone GNU system distribution,
+@dfn{Guix@tie{}System}, @pxref{System Installation}. This section is
+concerned only with the installation of Guix on a foreign distro.
-@quotation Note
-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.
+@quotation Important
+This section only applies to systems without Guix. Following it for
+existing Guix installations will overwrite important system files.
@end quotation
-@cindex foreign distro
@cindex directories related to foreign distro
When installed on a foreign distro, GNU@tie{}Guix complements the available
tools without interference. Its data lives exclusively in two directories,
@@ -714,11 +714,6 @@ such as @file{/etc}, are left untouched.
Once installed, Guix can be updated by running @command{guix pull}
(@pxref{Invoking guix pull}).
-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.
-
@menu
* Binary Installation:: Getting Guix running in no time!
* Requirements:: Software needed to build and run Guix.
@@ -736,210 +731,68 @@ ready to use it.
@cindex installer script
This section describes how to install Guix 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. Binary installation requires a system using a Hurd or Linux
-kernel; the GNU@tie{}tar and Xz commands must also be available.
+quicker than installing from source, described later (@pxref{Building
+from Git}).
@quotation Important
This section only applies to systems without Guix. Following it for
existing Guix installations will overwrite important system files.
+@end quotation
-@c Note duplicated from the ``Installation'' node.
-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. As root, you can thus run this:
-
-@example
-cd /tmp
-wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
-chmod +x guix-install.sh
-./guix-install.sh
-@end example
+Some GNU/Linux distributions, such as Debian, Ubuntu, and openSUSE
+provide Guix through their own package managers. The version of Guix
+may be older than @value{VERSION} but you can update it afterwards by
+running @samp{guix pull}.
-If you're running Debian or a derivative such as Ubuntu, you can instead
-install the package (it might be a version older than @value{VERSION}
-but you can update it afterwards by running @samp{guix pull}):
+For Debian and Ubuntu-based systems, call:
@example
sudo apt install guix
@end example
-Likewise on openSUSE:
+Likewise, on openSUSE:
@example
sudo zypper install guix
@end example
-When you're done, @pxref{Application Setup} for extra configuration you
-might need, and @ref{Getting Started} for your first steps!
-@end quotation
-
-Installing goes along these lines:
+The Guix project also provides a shell script, @file{guix-install.sh},
+which automates the binary installation process without use of a foreign
+distro package
+manager@footnote{@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh}}.
+Use of @file{guix-install.sh} requires Bash, GnuPG, GNU@tie{}tar, wget,
+and Xz.
-@enumerate
-@item
-@cindex downloading Guix binary
-Download the binary tarball from
-@indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz},
-where @code{x86_64-linux} can be replaced with @code{i686-linux} for an
-@code{i686} (32-bits) machine already running the kernel Linux, and so on
-(@pxref{GNU Distribution}).
-
-@c The following is somewhat duplicated in ``System Installation''.
-Make sure to download the associated @file{.sig} file and to verify the
-authenticity of the tarball against it, along these lines:
-
-@example
-$ wget @value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-$ gpg --verify guix-binary-@value{VERSION}.x86_64-linux.tar.xz.sig
-@end example
+The script guides you through the following:
-If that command fails because you do not have the required public key,
-then run this command to import it:
-
-@example
-$ wget '@value{OPENPGP-SIGNING-KEY-URL}' \
- -qO - | gpg --import -
-@end example
-
-@noindent
-and rerun the @code{gpg --verify} command.
-
-Take note that a warning like ``This key is not certified with a trusted
-signature!'' is normal.
-
-@c end authentication part
+@itemize
+@item Downloading and extracting the binary tarball
+@item Setting up the build daemon
+@item Making the ‘guix’ command available to non-root users
+@item Configuring substitute servers
+@end itemize
-@item
-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:
+As root, run:
@example
# cd /tmp
-# tar --warning=no-timestamp -xf \
- /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
-# mv var/guix /var/ && mv gnu /
-@end example
-
-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).
-
-Do @emph{not} unpack the tarball on a working Guix system since that
-would overwrite its own essential files.
-
-The @option{--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 1 (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.
-
-@item
-Make the profile available under @file{~root/.config/guix/current}, which is
-where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
-
-@example
-# mkdir -p ~root/.config/guix
-# ln -sf /var/guix/profiles/per-user/root/current-guix \
- ~root/.config/guix/current
-@end example
-
-Source @file{etc/profile} to augment @env{PATH} and other relevant
-environment variables:
-
-@example
-# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
- source $GUIX_PROFILE/etc/profile
-@end example
-
-@item
-Create the group and user accounts for build users as explained below
-(@pxref{Build Environment Setup}).
-
-@item
-Run the daemon, and set it to automatically start on boot.
-
-If your host distro uses the systemd init system, this can be achieved
-with these commands:
-
-@c Versions of systemd that supported symlinked service files are not
-@c yet widely deployed, so we should suggest that users copy the service
-@c files into place.
-@c
-@c See this thread for more information:
-@c https://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \
- ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
- /etc/systemd/system/
-# systemctl enable --now gnu-store.mount guix-daemon
-@end example
-
-You may also want to arrange for @command{guix gc} to run periodically:
-
-@example
-# cp ~root/.config/guix/current/lib/systemd/system/guix-gc.service \
- ~root/.config/guix/current/lib/systemd/system/guix-gc.timer \
- /etc/systemd/system/
-# systemctl enable --now guix-gc.timer
-@end example
-
-You may want to edit @file{guix-gc.service} to adjust the command line
-options to fit your needs (@pxref{Invoking guix gc}).
-
-If your host distro uses the Upstart init system:
-
-@example
-# initctl reload-configuration
-# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
- /etc/init/
-# start guix-daemon
-@end example
-
-Otherwise, you can still start the daemon manually with:
-
-@example
-# ~root/.config/guix/current/bin/guix-daemon \
- --build-users-group=guixbuild
+# wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
+# chmod +x guix-install.sh
+# ./guix-install.sh
@end example
-@item
-Make the @command{guix} command available to other users on the machine,
-for instance with:
-
-@example
-# mkdir -p /usr/local/bin
-# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
-@end example
-
-It is also a good idea to make the Info version of this manual available
-there:
-
-@example
-# mkdir -p /usr/local/share/info
-# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
- do ln -s $i ; done
-@end example
-
-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).
+@quotation Note
+By default, 'guix-install.sh' will configure Guix to download pre-built
+package binaries, called @dfn{substitutes} (@pxref{Substitutes}), from
+the project's build farms. If you choose not to permit this, Guix will
+build @emph{everything} from source, making each installation and
+upgrade very expensive. @xref{On Trusting Binaries} for a discussion of
+why you may want to build packages from source.
-@item
@cindex substitutes, authorization thereof
To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}},
-@code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}),
-authorize them:
+@code{@value{SUBSTITUTE-SERVER-2}} or a mirror, you must authorize them.
+For example,
@example
# guix archive --authorize < \
@@ -947,45 +800,8 @@ authorize them:
# guix archive --authorize < \
~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER-2}.pub
@end example
-
-@quotation Note
-If you do not enable substitutes, Guix will end up building
-@emph{everything} from source on your machine, making each installation
-and upgrade very expensive. @xref{On Trusting Binaries}, for a
-discussion of reasons why one might want do disable substitutes.
@end quotation
-@item
-Each user may need to perform a few additional steps to make their Guix
-environment ready for use, @pxref{Application Setup}.
-@end enumerate
-
-Voilà, the installation is complete!
-
-You can confirm that Guix is working by installing a sample package into
-the root profile:
-
-@example
-# guix install hello
-@end example
-
-The binary installation tarball can be (re)produced and verified simply
-by running the following command in the Guix source tree:
-
-@example
-make guix-binary.@var{system}.tar.xz
-@end example
-
-@noindent
-...@: which, in turn, runs:
-
-@example
-guix pack -s @var{system} --localstatedir \
- --profile-name=current-guix guix
-@end example
-
-@xref{Invoking guix pack}, for more info on this handy tool.
-
@node Requirements
@section Requirements
@@ -1179,6 +995,9 @@ Some of them require a lot of storage space to hold VM images.
Again in case of test failures, please send @email{bug-guix@@gnu.org}
all the details.
+When you're done installing Guix, @pxref{Application Setup} for extra
+configuration you might need, and @ref{Getting Started} for your first
+steps!
@node Setting Up the Daemon
@section Setting Up the Daemon
@@ -17649,6 +17468,7 @@ configuration (@pxref{Using the Configuration System}).
@table @asis
@item @code{kernel} (default: @code{linux-libre})
+@c footnote duplicated in @pxref{Installation}
The package object of the operating system kernel to
use@footnote{Currently only the Linux-libre kernel is fully supported.
Using GNU@tie{}mach with the GNU@tie{}Hurd is experimental and only
--
2.41.0
[-- Attachment #3: 0002-doc-Move-Requirements-before-Building-from-Git.patch --]
[-- Type: application/octet-stream, Size: 10072 bytes --]
From 280209be877d7f9b29c3540d0ebe4b9f064f70a2 Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Sun, 24 Mar 2024 10:07:37 +0100
Subject: [PATCH 2/3] doc: Move "Requirements" before "Building from Git"
* doc/contributing.texi (doc/guix.texi): Move "Requirements" before "Building
from Git".
Link: <https://lists.gnu.org/archive/html/guix-devel/2024-03/msg00023.html>
---
doc/contributing.texi | 98 ++++++++++++++++++++++++++++++++++++++++++
doc/guix.texi | 99 -------------------------------------------
2 files changed, 98 insertions(+), 99 deletions(-)
diff --git a/doc/contributing.texi b/doc/contributing.texi
index f5b01f42fd..565be5c6b9 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -20,6 +20,7 @@ on-line communication; they can use any name or pseudonym of their
choice.
@menu
+* Requirements:: Software needed to build and run Guix.
* Building from Git:: The latest and greatest.
* Running Guix Before It Is Installed:: Hacker tricks.
* The Perfect Setup:: The right tools.
@@ -36,6 +37,103 @@ choice.
* Translating Guix:: Make Guix speak your native language.
@end menu
+@node Requirements
+@section Requirements
+
+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.
+
+@cindex official website
+GNU Guix is available for download from its website at
+@url{https://www.gnu.org/software/guix/}.
+
+GNU Guix depends on the following packages:
+
+@itemize
+@item @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x,
+version 3.0.3 or later;
+@item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version
+0.1.0 or later;
+@item
+@uref{https://gitlab.com/gnutls/guile/, Guile-GnuTLS} (@pxref{Guile
+Preparations, how to install the GnuTLS bindings for Guile,,
+gnutls-guile, GnuTLS-Guile})@footnote{The Guile bindings to
+@uref{https://gnutls.org/, GnuTLS} were distributed as part of GnuTLS
+until version 3.7.8 included.};
+@item
+@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0
+or later;
+@item @uref{https://notabug.org/guile-zlib/guile-zlib, Guile-zlib},
+version 0.1.0 or later;
+@item @uref{https://notabug.org/guile-lzlib/guile-lzlib, Guile-lzlib};
+@item @uref{https://www.nongnu.org/guile-avahi/, Guile-Avahi};
+@item
+@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, version 0.5.0
+or later;
+@item @uref{https://git-scm.com, Git} (yes, both!);
+@item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}
+4.3.0 or later;
+@item @url{https://www.gnu.org/software/make/, GNU Make}.
+@end itemize
+
+The following dependencies are optional:
+
+@itemize
+@item
+@c Note: We need at least 0.13.0 for #:nodelay.
+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.13.0 or later.
+
+@item
+@uref{https://notabug.org/guile-zstd/guile-zstd, Guile-zstd}, for zstd
+compression and decompression in @command{guix publish} and for
+substitutes (@pxref{Invoking guix publish}).
+
+@item
+@uref{https://ngyro.com/software/guile-semver.html, Guile-Semver} for
+the @code{crate} importer (@pxref{Invoking guix import}).
+
+@item
+@uref{https://www.nongnu.org/guile-lib/doc/ref/htmlprag/, Guile-Lib} for
+the @code{go} importer (@pxref{Invoking guix import}) and for some of
+the ``updaters'' (@pxref{Invoking guix refresh}).
+
+@item
+When @url{http://www.bzip.org, libbz2} is available,
+@command{guix-daemon} can use it to compress build logs.
+@end itemize
+
+Unless @option{--disable-daemon} was passed to @command{configure}, the
+following packages are also needed:
+
+@itemize
+@item @url{https://gnupg.org/, GNU libgcrypt};
+@item @url{https://sqlite.org, SQLite 3};
+@item @url{https://gcc.gnu.org, GCC's g++}, with support for the
+C++11 standard.
+@end itemize
+
+@cindex state directory
+@cindex localstatedir
+@cindex system configuration directory
+@cindex sysconfdir
+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 @option{--localstatedir} option of the @command{configure}
+script (@pxref{Directory Variables, @code{localstatedir},, standards,
+GNU Coding Standards}). Usually, this @var{localstatedir} option is set
+to the value @file{/var}. The @command{configure} script protects
+against unintended misconfiguration of @var{localstatedir} so you do not
+inadvertently corrupt your store (@pxref{The Store}). The configuration
+directory should also be configured by setting the @option{--sysconfdir}
+option to the @file{/etc} value, which is the location used by Guix to
+store for example the access control list of authorized machines and the
+definition of offload machines.
+
@node Building from Git
@section Building from Git
diff --git a/doc/guix.texi b/doc/guix.texi
index 2b4d3585ba..7a3507388d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -227,7 +227,6 @@ Introduction
Installation
* Binary Installation:: Getting Guix running in no time!
-* Requirements:: Software needed to build and run Guix.
* Running the Test Suite:: Testing Guix.
* Setting Up the Daemon:: Preparing the build daemon's environment.
* Invoking guix-daemon:: Running the build daemon.
@@ -716,7 +715,6 @@ Once installed, Guix can be updated by running @command{guix pull}
@menu
* Binary Installation:: Getting Guix running in no time!
-* Requirements:: Software needed to build and run Guix.
* Running the Test Suite:: Testing Guix.
* Setting Up the Daemon:: Preparing the build daemon's environment.
* Invoking guix-daemon:: Running the build daemon.
@@ -802,103 +800,6 @@ For example,
@end example
@end quotation
-@node Requirements
-@section Requirements
-
-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.
-
-@cindex official website
-GNU Guix is available for download from its website at
-@url{https://www.gnu.org/software/guix/}.
-
-GNU Guix depends on the following packages:
-
-@itemize
-@item @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x,
-version 3.0.3 or later;
-@item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version
-0.1.0 or later;
-@item
-@uref{https://gitlab.com/gnutls/guile/, Guile-GnuTLS} (@pxref{Guile
-Preparations, how to install the GnuTLS bindings for Guile,,
-gnutls-guile, GnuTLS-Guile})@footnote{The Guile bindings to
-@uref{https://gnutls.org/, GnuTLS} were distributed as part of GnuTLS
-until version 3.7.8 included.};
-@item
-@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0
-or later;
-@item @uref{https://notabug.org/guile-zlib/guile-zlib, Guile-zlib},
-version 0.1.0 or later;
-@item @uref{https://notabug.org/guile-lzlib/guile-lzlib, Guile-lzlib};
-@item @uref{https://www.nongnu.org/guile-avahi/, Guile-Avahi};
-@item
-@uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, version 0.5.0
-or later;
-@item @uref{https://git-scm.com, Git} (yes, both!);
-@item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}
-4.3.0 or later;
-@item @url{https://www.gnu.org/software/make/, GNU Make}.
-@end itemize
-
-The following dependencies are optional:
-
-@itemize
-@item
-@c Note: We need at least 0.13.0 for #:nodelay.
-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.13.0 or later.
-
-@item
-@uref{https://notabug.org/guile-zstd/guile-zstd, Guile-zstd}, for zstd
-compression and decompression in @command{guix publish} and for
-substitutes (@pxref{Invoking guix publish}).
-
-@item
-@uref{https://ngyro.com/software/guile-semver.html, Guile-Semver} for
-the @code{crate} importer (@pxref{Invoking guix import}).
-
-@item
-@uref{https://www.nongnu.org/guile-lib/doc/ref/htmlprag/, Guile-Lib} for
-the @code{go} importer (@pxref{Invoking guix import}) and for some of
-the ``updaters'' (@pxref{Invoking guix refresh}).
-
-@item
-When @url{http://www.bzip.org, libbz2} is available,
-@command{guix-daemon} can use it to compress build logs.
-@end itemize
-
-Unless @option{--disable-daemon} was passed to @command{configure}, the
-following packages are also needed:
-
-@itemize
-@item @url{https://gnupg.org/, GNU libgcrypt};
-@item @url{https://sqlite.org, SQLite 3};
-@item @url{https://gcc.gnu.org, GCC's g++}, with support for the
-C++11 standard.
-@end itemize
-
-@cindex state directory
-@cindex localstatedir
-@cindex system configuration directory
-@cindex sysconfdir
-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 @option{--localstatedir} option of the @command{configure}
-script (@pxref{Directory Variables, @code{localstatedir},, standards,
-GNU Coding Standards}). Usually, this @var{localstatedir} option is set
-to the value @file{/var}. The @command{configure} script protects
-against unintended misconfiguration of @var{localstatedir} so you do not
-inadvertently corrupt your store (@pxref{The Store}). The configuration
-directory should also be configured by setting the @option{--sysconfdir}
-option to the @file{/etc} value, which is the location used by Guix to
-store for example the access control list of authorized machines and the
-definition of offload machines.
-
@node Running the Test Suite
@section Running the Test Suite
--
2.41.0
[-- Attachment #4: 0003-doc-Move-Running-the-Test-Suite-after-Building-from-.patch --]
[-- Type: application/octet-stream, Size: 9725 bytes --]
From c88873224a6c5bd4c5e7d29aea234b480a14f250 Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Sun, 24 Mar 2024 10:08:49 +0100
Subject: [PATCH 3/3] doc: Move "Running the Test Suite" after "Building from
Git"
* doc/contributing.texi (doc/guix.texi): Move "Running the Test
Suite" after "Building from Git"
Link: <https://lists.gnu.org/archive/html/guix-devel/2024-03/msg00023.html>
---
doc/contributing.texi | 98 +++++++++++++++++++++++++++++++++++++++++++
doc/guix.texi | 98 -------------------------------------------
2 files changed, 98 insertions(+), 98 deletions(-)
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 565be5c6b9..ee19418cdb 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -22,6 +22,7 @@ choice.
@menu
* Requirements:: Software needed to build and run Guix.
* Building from Git:: The latest and greatest.
+* Running the Test Suite:: Testing Guix.
* Running Guix Before It Is Installed:: Hacker tricks.
* The Perfect Setup:: The right tools.
* Alternative Setups:: Other possible tools that do the job.
@@ -301,6 +302,103 @@ example, the @code{origin} record) has changed, and all of guix needs
to be recompiled to take that change into account. To do so, run
@command{make clean-go} followed by @command{make}.
+@node Running the Test Suite
+@section Running the Test Suite
+
+@cindex test suite
+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:
+
+@example
+make check
+@end example
+
+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.
+
+It is also possible to run a subset of the tests by defining the
+@code{TESTS} makefile variable as in this example:
+
+@example
+make check TESTS="tests/store.scm tests/cpio.scm"
+@end example
+
+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:
+
+@example
+make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no"
+@end example
+
+The underlying SRFI 64 custom Automake test driver used for the 'check'
+test suite (located at @file{build-aux/test-driver.scm}) also allows
+selecting which test cases to run at a finer level, via its
+@option{--select} and @option{--exclude} options. Here's an example, to
+run all the test cases from the @file{tests/packages.scm} test file
+whose names start with ``transaction-upgrade-entry'':
+
+@example
+export SCM_LOG_DRIVER_FLAGS="--select=^transaction-upgrade-entry"
+make check TESTS="tests/packages.scm"
+@end example
+
+Those wishing to inspect the results of failed tests directly from the
+command line can add the @option{--errors-only=yes} option to the
+@code{SCM_LOG_DRIVER_FLAGS} makefile variable and set the @code{VERBOSE}
+Automake makefile variable, as in:
+
+@example
+make check SCM_LOG_DRIVER_FLAGS="--brief=no --errors-only=yes" VERBOSE=1
+@end example
+
+The @option{--show-duration=yes} option can be used to print the
+duration of the individual test cases, when used in combination with
+@option{--brief=no}:
+
+@example
+make check SCM_LOG_DRIVER_FLAGS="--brief=no --show-duration=yes"
+@end example
+
+@xref{Parallel Test Harness,,,automake,GNU Automake} for more
+information about the Automake Parallel Test Harness.
+
+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.
+
+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:
+
+@example
+make check-system
+@end example
+
+@noindent
+or, again, by defining @code{TESTS} to select a subset of tests to run:
+
+@example
+make check-system TESTS="basic mcron"
+@end example
+
+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.
+
+Again in case of test failures, please send @email{bug-guix@@gnu.org}
+all the details.
+
@node Running Guix Before It Is Installed
@section Running Guix Before It Is Installed
diff --git a/doc/guix.texi b/doc/guix.texi
index 7a3507388d..7b2cf0f193 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -227,7 +227,6 @@ Introduction
Installation
* Binary Installation:: Getting Guix running in no time!
-* Running the Test Suite:: Testing Guix.
* Setting Up the Daemon:: Preparing the build daemon's environment.
* Invoking guix-daemon:: Running the build daemon.
* Application Setup:: Application-specific setup.
@@ -715,7 +714,6 @@ Once installed, Guix can be updated by running @command{guix pull}
@menu
* Binary Installation:: Getting Guix running in no time!
-* Running the Test Suite:: Testing Guix.
* Setting Up the Daemon:: Preparing the build daemon's environment.
* Invoking guix-daemon:: Running the build daemon.
* Application Setup:: Application-specific setup.
@@ -800,102 +798,6 @@ For example,
@end example
@end quotation
-@node Running the Test Suite
-@section Running the Test Suite
-
-@cindex test suite
-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:
-
-@example
-make check
-@end example
-
-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.
-
-It is also possible to run a subset of the tests by defining the
-@code{TESTS} makefile variable as in this example:
-
-@example
-make check TESTS="tests/store.scm tests/cpio.scm"
-@end example
-
-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:
-
-@example
-make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no"
-@end example
-
-The underlying SRFI 64 custom Automake test driver used for the 'check'
-test suite (located at @file{build-aux/test-driver.scm}) also allows
-selecting which test cases to run at a finer level, via its
-@option{--select} and @option{--exclude} options. Here's an example, to
-run all the test cases from the @file{tests/packages.scm} test file
-whose names start with ``transaction-upgrade-entry'':
-
-@example
-export SCM_LOG_DRIVER_FLAGS="--select=^transaction-upgrade-entry"
-make check TESTS="tests/packages.scm"
-@end example
-
-Those wishing to inspect the results of failed tests directly from the
-command line can add the @option{--errors-only=yes} option to the
-@code{SCM_LOG_DRIVER_FLAGS} makefile variable and set the @code{VERBOSE}
-Automake makefile variable, as in:
-
-@example
-make check SCM_LOG_DRIVER_FLAGS="--brief=no --errors-only=yes" VERBOSE=1
-@end example
-
-The @option{--show-duration=yes} option can be used to print the
-duration of the individual test cases, when used in combination with
-@option{--brief=no}:
-
-@example
-make check SCM_LOG_DRIVER_FLAGS="--brief=no --show-duration=yes"
-@end example
-
-@xref{Parallel Test Harness,,,automake,GNU Automake} for more
-information about the Automake Parallel Test Harness.
-
-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.
-
-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:
-
-@example
-make check-system
-@end example
-
-@noindent
-or, again, by defining @code{TESTS} to select a subset of tests to run:
-
-@example
-make check-system TESTS="basic mcron"
-@end example
-
-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.
-
-Again in case of test failures, please send @email{bug-guix@@gnu.org}
-all the details.
When you're done installing Guix, @pxref{Application Setup} for extra
configuration you might need, and @ref{Getting Started} for your first
steps!
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [bug#69977] [PATCH] doc: doc-Simplify installation instructions
2024-03-24 9:27 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)) Matt
2024-03-24 9:32 ` [bug#69976] " Matt
@ 2024-03-25 19:26 ` pelzflorian (Florian Pelz)
2024-04-06 8:06 ` Matt
1 sibling, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-03-25 19:26 UTC (permalink / raw)
To: Matt; +Cc: 69977, Christian Miller
Hi Matt, mostly looks good to me.
Matt <matt@excalamus.com> writes:
>---- On Sat, 16 Mar 2024 15:05:13 +0100 pelzflorian (Florian Pelz) wrote ---
>>>> Either
>>>> say “You can install the Guix package management tool and distribution”
>>>> or “You can install Guix”.
>>> You can install the Guix package management tool on top of an
>> Precisely this terminology is the issue. Nix is a package manager;
>> Nixpkgs is a distribution. For Guix, Guix is both a package manager and
>> distribution.[…]
> You can install the package management tool Guix on top of an
Looking at it with fresh eyes myself, your wording is OK. Even though I
still think you have a misunderstanding of the term distribution, there
is no reason for me to insist the term distribution must be explained
here.
> 1. A clear distinction between Guix and the Guix System was not made
>
> I have split the suggested sentence, whose current version (v04) is
> given above, into two. One sentence has the subject of "the package
> management tool Guix" and the other "the Guix System". You were
> correct in observing that the suggestion confused the meaning of
> "Guix". Good catch!
>
> 2. The use of "operating system" is inappropriate
>
> The v04 suggestion used "operating system" only because the current
> manual (bf53001) says in Section 1: Introduction, "If, instead, you
> want to install the complete GNU operating system..." before linking
> to "...how to install Guix System on a machine."
>
> I have changed the patch set to say,
>
> "If, instead, you want to install the complete, standalone GNU system
> distribution..."
I like that you added the word “standalone”. But I prefer the old
ordering where this sentence comes after “This section +is concerned
with the installation of Guix on a foreign distro.”
Looking at how to make an install tarball for Hurd, I noticed that you
removed these important instructions for building the tarball:
> -The binary installation tarball can be (re)produced and verified simply
> -by running the following command in the Guix source tree:
> -
> -@example
> -make guix-binary.@var{system}.tar.xz
> -@end example
> -
> -@noindent
> -...@: which, in turn, runs:
> -
> -@example
> -guix pack -s @var{system} --localstatedir \
> - --profile-name=current-guix guix
> -@end example
> -
> -@xref{Invoking guix pack}, for more info on this handy tool.
> -
> @node Requirements
> @section Requirements
The tarball is needed by guix-install.sh, so the instructions for
building it should stay, because it is what your recommended
guix-install.sh uses. Please keep the instructions for this reason.
No such tarball is released for GNU Hurd yet, and when I tried to build
it for GNU Hurd, it fails, because guile-git cannot be built. Note that
it is possible to instead cross-compile a pack for Hurd, using
“--target=i586-pc-gnu” instead of “-s i586-gnu”, even though I have not
tested if it can be used. Also note that Hurd is quite crashy. Better
just not mention it here.
>> Ubuntu should not get the credits for what Debian is doing. The current
>> wording “Debian or a derivative such as Ubuntu” is fairer and equally
>> clear.
> […]
> My understanding is that many distros call themselves "based on
> Ubuntu", "built upon Ubuntu", or list Ubuntu as "upstream" because
> they use packages that are, at minimum, distributed by Ubuntu.
I believe “Debian or a derivative such as Ubuntu” is a better wording
than “Debian and Ubuntu-based systems”, despite some Ubuntu derivatives
not mentioning Debian or users being aware only of Ubuntu.
> I propose the following. The intent is to match the script's language
> so that readers may understand the consequences of a 'Y' or 'n'
> choice. The best place to do this would be in the prompt. However,
> documenting consequences in the manual seems a reasonable compromise
> which makes the prompt concise and allows us to link to the "On
> Trusting Binaries" section.
>
> +By default, 'guix-install.sh' will configure Guix to download pre-built
> +package binaries, called @dfn{substitutes} (@pxref{Substitutes}), from
> +the project's build farms. If you choose not to permit this, Guix will
> +build @emph{everything} from source, making each installation and
> +upgrade very expensive. @xref{On Trusting Binaries} for a discussion of
> +why you may want to build packages from source.
Good!
> * doc/guix.texi (Installation):
> - Move the definition of "foreign distro" out of quotation
> - Repeat overwrite warning
> - Remove superfluous commentary
>
> * doc/guix.texi (Binary Installation):
> - Clarify that installing on a foreign distro has two methods: using
> packaged binaries and building from source
> - Add cross reference to "Building from Git"
> - Move the foreign distro installation instructions out of quotation
> - Move directions for 'guix-install.sh' after instructions to use
> distribution-specific package managers
> - Specify "distributions" as "GNU/Linux distributions"
> - Add GnuPG as a requirement for 'guix-install.sh'
> - Add comma after "Likewise"
I think this comma (“Likewise, on openSUSE:”) should not be added, since
it does not improve understanding, but it is not really important.
> - Remove redundant instructions to use 'guix-install.sh'
> - Split the requirements between system requirements for binary
> installations, GNU/Linux or GNU/Hurd, and requirements for running
> 'guix-install.sh'
> - Clarify that 'guix-install.sh' guides users through the steps
> - Summarize the steps 'guix-install.sh' follows rather than try to
> detail them
> - Make explicit that the 'guix-install.sh' default is to download
> substitutes
> - Emphasize that the substitute authorization code is an example and
> may need modification
Well these details are good for reviewers, but the commit message is
intended for readers of “git log”. Better keep it short like the other
commits you can view with “cd ~/src/guix; git log doc”.
Could you send another patch without mentioning the Hurd, or do you see
a way to actually run Guix on a foreign GNU/Hurd distribution that you
can document?
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* [bug#69977] [PATCH] doc: doc-Simplify installation instructions
2024-03-25 19:26 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions pelzflorian (Florian Pelz)
@ 2024-04-06 8:06 ` Matt
0 siblings, 0 replies; 69+ messages in thread
From: Matt @ 2024-04-06 8:06 UTC (permalink / raw)
To: pelzflorian (Florian Pelz); +Cc: 69977, Christian Miller
---- On Mon, 25 Mar 2024 20:26:17 +0100 pelzflorian (Florian Pelz) wrote ---
> Hi Matt, mostly looks good to me.
That's good to hear! I would like to address your comments in an updated patch set. Unfortunately, I'm struggling to do that. Between my last message and this one, life happened and changes have been made to guix.texi that prevent the application of patch set you've commented on. I've already spent several hours already trying to figure out a better way to revise my suggestions than retyping everything by hand from HEAD. How can git help me in this situation? Or, am I better off scrapping my old patches and just retyping the changes?
^ permalink raw reply [flat|nested] 69+ messages in thread
* bug#69977: [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation))
[not found] ` <87edbitv7l.fsf@gmail.com>
@ 2024-04-07 8:30 ` pelzflorian (Florian Pelz)
2024-04-10 2:57 ` [bug#69977] " Maxim Cournoyer
0 siblings, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-07 8:30 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: Josselin Poiret, Christian Miller, Matt, 69977-done
Thank you Maxim for the updating and pushing, so that future changes to
the install instructions will be based on Matt’s version.
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
> Hi Matt et al.,
>
> Matt <matt@excalamus.com> writes:
>
>> Ugh. All the patches were not attached to my previous message. Here are all the patches.
>
> Excellent work. Thanks for Florian and others for the comments. I've
> now merged the 3 patches as-is, except for a trivial change to use @file
> to decorate 'guix-install.sh' in the first one.
I have followed up by:
commit 80d364b92b73e6757f2c9a703582519655bb4f5c (HEAD -> master)
Author: Florian Pelz <pelzflorian@pelzflorian.de>
Date: Sun Apr 7 09:39:45 2024 +0200
doc: Restore some of the old installation instructions.
Follow-up to 227e0469dbfec7e47b57d824dcf45a04ac4026c9.
* doc/guix.texi (Binary Installation):
Revert wording for installing the Debian package.
Restore how to reproduce the binary tarball.
Restore how to uninstall.
(copying): Add copyright notice for Matthew Trzcinski.
Change-Id: Ib74199e39bd7a50ac58045f2bc47f61fc04eacb9
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* [bug#69977] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation))
2024-04-07 8:30 ` bug#69977: " pelzflorian (Florian Pelz)
@ 2024-04-10 2:57 ` Maxim Cournoyer
0 siblings, 0 replies; 69+ messages in thread
From: Maxim Cournoyer @ 2024-04-10 2:57 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: Josselin Poiret, Christian Miller, Matt, 69977-done
Hi,
Le 7 avril 2024 04:30:57 GMT-04:00, "pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> a écrit :
>Thank you Maxim for the updating and pushing, so that future changes to
>the install instructions will be based on Matt’s version.
>
>Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
>> Hi Matt et al.,
>>
>> Matt <matt@excalamus.com> writes:
>>
>>> Ugh. All the patches were not attached to my previous message. Here are all the patches.
>>
>> Excellent work. Thanks for Florian and others for the comments. I've
>> now merged the 3 patches as-is, except for a trivial change to use @file
>> to decorate 'guix-install.sh' in the first one.
>
>I have followed up by:
>
>commit 80d364b92b73e6757f2c9a703582519655bb4f5c (HEAD -> master)
>Author: Florian Pelz <pelzflorian@pelzflorian.de>
>Date: Sun Apr 7 09:39:45 2024 +0200
>
> doc: Restore some of the old installation instructions.
>
> Follow-up to 227e0469dbfec7e47b57d824dcf45a04ac4026c9.
>
> * doc/guix.texi (Binary Installation):
> Revert wording for installing the Debian package.
> Restore how to reproduce the binary tarball.
> Restore how to uninstall.
> (copying): Add copyright notice for Matthew Trzcinski.
Sounds good; thank you for the follow-up!
Maxim
^ permalink raw reply [flat|nested] 69+ messages in thread
* Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-01-14 15:01 Feedback of the GNU Guix manual Christian Miller
2024-01-15 17:52 ` Matt
@ 2024-04-10 14:05 ` Matt
2024-04-11 12:59 ` Christian Miller
` (2 more replies)
2024-04-22 18:25 ` [PATCH] Fix typo (Re: " Matt
2024-05-07 19:41 ` [PATCH] doc: Clarify need to update search paths on foreign distro (was " Matt
3 siblings, 3 replies; 69+ messages in thread
From: Matt @ 2024-04-10 14:05 UTC (permalink / raw)
To: guix-devel; +Cc: Christian Miller, pelzflorian, maximcournoyer, dev
[-- Attachment #1: Type: text/plain, Size: 2300 bytes --]
We're working through a list of feedback one item at a time:
https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00117.html
We have completed the first two items.
The next item reported is:
#+begin_quote
2.4 Setting up the deamon
Seems like an issue with info. Have seen this in the Emacs manual as well. There is also sometimes see see (doc)
L15 See also see Substitutes.
#+end_quote
This sounds like the use of an @xref instead of @ref. However, I can't find it in the current version (5a95cf76) of the documentation, nor the reported version (ee7c9d25). The last change to doc/guix.texi at that the reported time was in e5ed1712 (git log -n 1 ee7c9d25 -- doc/guix.texi).
The full reported sentence currently reads,
#+begin_quote
See also @ref{Substitutes}, for information on how to allow the daemon to download pre-built binaries.
#+end_quote
The use of the comma after "Substitutes" is inappropriate, if I have the terminology correct, because "See also Substitutes" is not a participial phrase. "Also" and "information on" are also unnecessary. I suggest the following:
#+begin_quote
See @ref{Substitutes} for how to allow the daemon to download pre-built binaries.
#+end_quote
Searching for "see also" turns up the following in 'Mail Services':
#+begin_quote
See also ssl=required setting.
#+end_quote
This needs "the" before "ssl=required" as it refers to a specific setting. It should probably use the @option or @samp markup:
#+begin_quote
See also the @samp{ssl=required} setting.
#+end_quote
I have opted for @samp because it's used elsewhere for similar items. In the same section is:
#+begin_quote
NOTE: See also @samp{disable-plaintext-auth} setting.
#+end_quote
This too should have "the" before the setting. The "NOTE:" designation is also unnecessary. I suggest:
#+begin_quote
See also the @samp{disable-plaintext-auth} setting.
#+end_quote
Included is a patch which makes these suggested changes.
It was advised to submit the previous patch to guix-patches. I opted to submit this next patch here to keep the thread connected since it's part of a larger discussion (I suppose). If we're agreed that guix-patches is more appropriate, I can submit the next item in a new thread there using the same message format I've been following. Thoughts?
[-- Attachment #2: 0001-doc-Fix-grammar-and-markup.patch --]
[-- Type: application/octet-stream, Size: 1986 bytes --]
From 880264a6887621891a35e637788ddcd63c5bcb54 Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Wed, 10 Apr 2024 15:44:36 +0200
Subject: [PATCH] doc: Fix grammar and markup
doc/guix.texi (Setting Up the Daemon): Remove comma and extra words.
doc/guix.texi (Mail Services): Add definite article to setting. Use
@samp markup on setting.
---
doc/guix.texi | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 5827e0de14..5efbd00984 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -848,8 +848,8 @@ goes through the daemon. For instance, command-line tools such as
daemon (@i{via} remote procedure calls) to instruct it what to do.
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.
+environment. See @ref{Substitutes} for how to allow the daemon to
+download pre-built binaries.
@menu
* Build Environment Setup:: Preparing the isolated build environment.
@@ -26641,7 +26641,7 @@ 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.
+allowed. See also the @samp{ssl=required} setting.
Defaults to @samp{#t}.
@end deftypevr
@@ -26781,7 +26781,7 @@ Defaults to @samp{#f}.
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{otp}, @samp{skey}, and @samp{gss-spnego}. See also the
@samp{disable-plaintext-auth} setting.
@end deftypevr
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-10 14:05 ` Fix grammar and markup (was " Matt
@ 2024-04-11 12:59 ` Christian Miller
2024-04-12 14:41 ` pelzflorian (Florian Pelz)
2024-04-12 20:16 ` Fix grammar and markup (was Re: Feedback of the GNU Guix manual) Ludovic Courtès
2 siblings, 0 replies; 69+ messages in thread
From: Christian Miller @ 2024-04-11 12:59 UTC (permalink / raw)
To: Matt, guix-devel; +Cc: Christian Miller, pelzflorian, maximcournoyer, dev
Hello,
I just want to mention that I am still in CC and my mail server is going
offline. Need to optimize my budget and don't have any time for GNU
anymore because of university.
--
Christian Miller
Am 10/04/2024 um 16:05 schrieb Matt:
> We're working through a list of feedback one item at a time:
> https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00117.html
>
> We have completed the first two items.
>
> The next item reported is:
>
> #+begin_quote
> 2.4 Setting up the deamon
>
> Seems like an issue with info. Have seen this in the Emacs manual as well. There is also sometimes see see (doc)
>
> L15 See also see Substitutes.
> #+end_quote
>
> This sounds like the use of an @xref instead of @ref. However, I can't find it in the current version (5a95cf76) of the documentation, nor the reported version (ee7c9d25). The last change to doc/guix.texi at that the reported time was in e5ed1712 (git log -n 1 ee7c9d25 -- doc/guix.texi).
>
> The full reported sentence currently reads,
>
> #+begin_quote
> See also @ref{Substitutes}, for information on how to allow the daemon to download pre-built binaries.
> #+end_quote
>
> The use of the comma after "Substitutes" is inappropriate, if I have the terminology correct, because "See also Substitutes" is not a participial phrase. "Also" and "information on" are also unnecessary. I suggest the following:
>
> #+begin_quote
> See @ref{Substitutes} for how to allow the daemon to download pre-built binaries.
> #+end_quote
>
> Searching for "see also" turns up the following in 'Mail Services':
>
> #+begin_quote
> See also ssl=required setting.
> #+end_quote
>
> This needs "the" before "ssl=required" as it refers to a specific setting. It should probably use the @option or @samp markup:
>
> #+begin_quote
> See also the @samp{ssl=required} setting.
> #+end_quote
>
> I have opted for @samp because it's used elsewhere for similar items. In the same section is:
>
> #+begin_quote
> NOTE: See also @samp{disable-plaintext-auth} setting.
> #+end_quote
>
> This too should have "the" before the setting. The "NOTE:" designation is also unnecessary. I suggest:
>
> #+begin_quote
> See also the @samp{disable-plaintext-auth} setting.
> #+end_quote
>
> Included is a patch which makes these suggested changes.
>
> It was advised to submit the previous patch to guix-patches. I opted to submit this next patch here to keep the thread connected since it's part of a larger discussion (I suppose). If we're agreed that guix-patches is more appropriate, I can submit the next item in a new thread there using the same message format I've been following. Thoughts?
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-10 14:05 ` Fix grammar and markup (was " Matt
2024-04-11 12:59 ` Christian Miller
@ 2024-04-12 14:41 ` pelzflorian (Florian Pelz)
2024-04-12 19:18 ` Matt
2024-04-12 20:16 ` Fix grammar and markup (was Re: Feedback of the GNU Guix manual) Ludovic Courtès
2 siblings, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-12 14:41 UTC (permalink / raw)
To: Matt; +Cc: guix-devel, maximcournoyer, dev
Pushed as cd557e2d1c83839dd587016279900d31f053efc8.
Matt <matt@excalamus.com> writes:
> The next item reported is:
>
> #+begin_quote
> 2.4 Setting up the deamon
>
> Seems like an issue with info. Have seen this in the Emacs manual as well. There is also sometimes see see (doc)
>
> L15 See also see Substitutes.
> #+end_quote
>
>
> This sounds like the use of an @xref instead of @ref. However, I
> can't find it in the current version (5a95cf76) of the documentation,
> nor the reported version (ee7c9d25). […]
I believe the rendering of @ref was an issue with Emacs that is gone in
latest Emacs.
> It was advised to submit the previous patch to guix-patches. I opted
> to submit this next patch here to keep the thread connected since it's
> part of a larger discussion (I suppose). If we're agreed that
> guix-patches is more appropriate, I can submit the next item in a new
> thread there using the same message format I've been following.
> Thoughts?
I believe guix-devel is OK for such changes.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-12 14:41 ` pelzflorian (Florian Pelz)
@ 2024-04-12 19:18 ` Matt
2024-04-13 12:02 ` pelzflorian (Florian Pelz)
2024-04-14 7:00 ` pelzflorian (Florian Pelz)
0 siblings, 2 replies; 69+ messages in thread
From: Matt @ 2024-04-12 19:18 UTC (permalink / raw)
To: pelzflorian (Florian Pelz); +Cc: guix-devel, maximcournoyer, dev
[-- Attachment #1: Type: text/plain, Size: 942 bytes --]
We're working through a list of feedback one item at a time:
https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00117.html
We have completed the first three items.
The next item reported is:
#+begin_quote
3.7 After System Installation
L27 Libera_Chat, why the underscore. It is colored as well for me so
I guess this is a special char. Should be anways just Libera Chat
#+end_quote
"Libera_Chat" is not, or no longer, in the docs (d3fe763fe3). However, there are two variations present: "Libera Chat" and "Libera.Chat".
The attached change updates "Libera Chat" to the "Libera.Chat" stylization.
The network itself is inconsistent in self-reference and provides no guideline I could find on which form to use. I opted for the "dot" version to make things consistent. Because the URL is https://libera.chat, someone searching for the network by copy-paste may arrive at the homepage more directly than with the non-dot version.
[-- Attachment #2: 0001-doc-Standardize-IRC-stylization.patch --]
[-- Type: application/octet-stream, Size: 839 bytes --]
From a3b8fd62c499325cc2a0127e5e5d4f82cf71492b Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Fri, 12 Apr 2024 21:00:05 +0200
Subject: [PATCH] doc: Standardize IRC stylization
* doc/guix.texi (After System Installation): make references to Libera.Chat
consistent.
---
doc/guix.texi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 5efbd00984..4c8d55f492 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2548,7 +2548,7 @@ This builds a new system @dfn{generation} with the latest packages and
services.
Now, @pxref{Getting Started with the System}, and
-join us on @code{#guix} on the Libera Chat IRC network or on
+join us on @code{#guix} on the Libera.Chat IRC network or on
@email{guix-devel@@gnu.org} to share your experience!
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-10 14:05 ` Fix grammar and markup (was " Matt
2024-04-11 12:59 ` Christian Miller
2024-04-12 14:41 ` pelzflorian (Florian Pelz)
@ 2024-04-12 20:16 ` Ludovic Courtès
2024-04-13 8:22 ` Matt
2 siblings, 1 reply; 69+ messages in thread
From: Ludovic Courtès @ 2024-04-12 20:16 UTC (permalink / raw)
To: Matt; +Cc: guix-devel, Christian Miller, pelzflorian, maximcournoyer, dev
Hi,
Matt <matt@excalamus.com> skribis:
> See @ref{Substitutes} for how to allow the daemon to download pre-built binaries.
Nitpick: this works but I believe the recommended approach is
“@xref{Substitutes} for how…”.
https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Cross-Reference-Commands.html
Thanks for reporting these issues!
Ludo’.
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-12 20:16 ` Fix grammar and markup (was Re: Feedback of the GNU Guix manual) Ludovic Courtès
@ 2024-04-13 8:22 ` Matt
2024-04-13 11:26 ` pelzflorian (Florian Pelz)
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-04-13 8:22 UTC (permalink / raw)
To: "Ludovic Courtès"
Cc: guix-devel, pelzflorian, maximcournoyer, dev
[-- Attachment #1: Type: text/plain, Size: 599 bytes --]
---- On Fri, 12 Apr 2024 22:16:39 +0200 Ludovic Courtès wrote ---
> > See @ref{Substitutes} for how to allow the daemon to download pre-built binaries.
>
> Nitpick: this works but I believe the recommended approach is
> “@xref{Substitutes} for how…”.
>
> https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Cross-Reference-Commands.html
Good catch! I took the opportunity and found several similar issues elsewhere. The attached patch tries to correct them.
> Thanks for reporting these issues!
I appreciate your assistance with these details :)
[-- Attachment #2: 0001-doc-Fix-cross-references.patch --]
[-- Type: application/octet-stream, Size: 3111 bytes --]
From bc8d3654f8c1d3271596d0eafb48b02421236e1c Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Sat, 13 Apr 2024 10:12:05 +0200
Subject: [PATCH] doc: Fix cross-references
* doc/guix.texi (Setting Up the Daemon): use @xref to start sentence.
(Build Systems): capitalize "python" and start parenthesized reference with
@pxref.
(Linux Services): use @xref to start phrase.
(Configuring the Shell): use @xref to start phrase.
---
doc/guix.texi | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 5efbd00984..b117a2d03c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -848,8 +848,8 @@ goes through the daemon. For instance, command-line tools such as
daemon (@i{via} remote procedure calls) to instruct it what to do.
The following sections explain how to prepare the build daemon's
-environment. See @ref{Substitutes} for how to allow the daemon to
-download pre-built binaries.
+environment. @xref{Substitutes} for how to allow the daemon to download
+pre-built binaries.
@menu
* Build Environment Setup:: Preparing the isolated build environment.
@@ -9086,7 +9086,7 @@ package name should be prefixed with the lisp implementation, such as
@code{sbcl-} for @code{asdf-build-system/sbcl}.
Additionally, the corresponding source package should be labeled using
-the same convention as python packages (see @ref{Python Modules}), using
+the same convention as Python packages (@pxref{Python Modules}), using
the @code{cl-} prefix.
In order to create executable programs and images, the build-side
@@ -39603,9 +39603,9 @@ The package providing the @command{fstrim} command.
@item @code{schedule} (default: @code{"0 0 * * 0"}) (type: mcron-time)
Schedule for launching @command{fstrim}. This can be a procedure, a
-list or a string. For additional information, see @ref{Guile
-Syntax,,Job specification,mcron,the mcron manual}. By default this is
-set to run weekly on Sunday at 00:00.
+list or a string. For additional information, @xref{Guile Syntax,,Job
+specification,mcron,the mcron manual}. By default this is set to run
+weekly on Sunday at 00:00.
@item @code{listed-in} (default: @code{'("/etc/fstab" "/proc/self/mountinfo")}) (type: maybe-list-of-strings)
List of files in fstab or kernel mountinfo format. All missing or empty
@@ -44229,9 +44229,9 @@ Guix Home. Otherwise, read it carefully.
There are a few scripts that must be evaluated by a login shell to
activate the home environment. The shell startup files only read by
login shells often have @code{profile} suffix. For more information
-about login shells see @ref{Invoking Bash,,, bash, The GNU Bash
-Reference Manual} and see @ref{Bash Startup Files,,, bash, The GNU Bash
-Reference Manual}.
+about login shells, @xref{Invoking Bash,,, bash, The GNU Bash Reference
+Manual} and @xref{Bash Startup Files,,, bash, The GNU Bash Reference
+Manual}.
The first script that needs to be sourced is @file{setup-environment},
which sets all the necessary environment variables (including variables
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-13 8:22 ` Matt
@ 2024-04-13 11:26 ` pelzflorian (Florian Pelz)
2024-04-14 14:50 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-13 11:26 UTC (permalink / raw)
To: Matt; +Cc: Ludovic Courtès, guix-devel, maximcournoyer, dev
Hello Matt. Thank you for fixing the oversight. However:
Matt <matt@excalamus.com> writes:
> From: Matthew Trzcinski <matt@excalamus.com>
> Date: Sat, 13 Apr 2024 10:12:05 +0200
> Subject: [PATCH] doc: Fix cross-references
>
> * doc/guix.texi (Setting Up the Daemon): use @xref to start sentence.
> (Build Systems): capitalize "python" and start parenthesized reference with
> @pxref.
> (Linux Services): use @xref to start phrase.
@xref produces a capital See instead of see. This should be @pxref.
See the Texinfo manual “info texinfo” or the Web manual Ludo points to.
In info, this will use the word *note instead of *see, but it’s still
right, if Matt you agree.
> (Configuring the Shell): use @xref to start phrase.
This should be @pxref.
Additionally, the commit message’s first sentence should end with a
period. The sentences in the commit message describing a section should
start with a capital letter.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-12 19:18 ` Matt
@ 2024-04-13 12:02 ` pelzflorian (Florian Pelz)
2024-04-14 7:00 ` pelzflorian (Florian Pelz)
1 sibling, 0 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-13 12:02 UTC (permalink / raw)
To: Matt; +Cc: guix-devel, maximcournoyer, dev
Matt <matt@excalamus.com> writes:
> #+begin_quote
> 3.7 After System Installation
> L27 Libera_Chat, why the underscore. It is colored as well for me so
> I guess this is a special char. Should be anways just Libera Chat
> #+end_quote
>
> "Libera_Chat" is not, or no longer, in the docs (d3fe763fe3).
> However, there are two variations present: "Libera Chat" and
> "Libera.Chat".
Currently Libera Chat is written using a non-breaking space. We could
also use @tie{} instead of the special char . I do agree with your
Libera.Chat stylization, will push it later. It will not matter to
search engines, I think.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-12 19:18 ` Matt
2024-04-13 12:02 ` pelzflorian (Florian Pelz)
@ 2024-04-14 7:00 ` pelzflorian (Florian Pelz)
2024-04-19 14:09 ` Creating a documentation team? Ludovic Courtès
1 sibling, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-14 7:00 UTC (permalink / raw)
To: Matt; +Cc: guix-devel, maximcournoyer, dev
Matt <matt@excalamus.com> writes:
> The attached change updates "Libera Chat" to the "Libera.Chat" stylization.
Pushed as df7b569b464c05036871f23d37ba319be78e5f64.
Thanks!
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-13 11:26 ` pelzflorian (Florian Pelz)
@ 2024-04-14 14:50 ` Matt
2024-04-15 12:58 ` pelzflorian (Florian Pelz)
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-04-14 14:50 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: "Ludovic Courtès", guix-devel, maximcournoyer, dev
---- On Sat, 13 Apr 2024 13:26:39 +0200 pelzflorian (Florian Pelz) wrote ---
> @xref produces a capital See instead of see. This should be @pxref.
> See the Texinfo manual “info texinfo” or the Web manual Ludo points to.
>
> In info, this will use the word *note instead of *see, but it’s still
> right, if Matt you agree.
Yes, rereading the linked docs, it is as you say.
The problem is that the Emacs Info reader incorrectly renders cross-references by default. I was reading the Texinfo documentation in Emacs.
The default Emacs rendering of the Texinfo info file looks like:
#+begin_src info
‘@xref’
Used to start a sentence with an Info cross-reference saying ‘see
NAME.’ or with 'See ...' in other output formats.
‘@ref’
Used within or, more often, at the end of a sentence; produces an
Info cross-reference saying ‘see NAME.’, and just the
reference in other output formats, without the preceding 'See'.
#+end_src
Specifically, it misleadingly replaces info file instances of "*Note", which correspond to @xref, with (lowercase 's') "see ".
A workaround is use (setq Info-hide-note-references nil)
I was unable to fix the issue in Emacs and have filed a bug report.
> Additionally, the commit message’s first sentence should end with a
> period. The sentences in the commit message describing a section should
> start with a capital letter.
Thank you for the reminder. I have made a note to check this for my future submissions.
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-14 14:50 ` Matt
@ 2024-04-15 12:58 ` pelzflorian (Florian Pelz)
2024-04-15 18:39 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-15 12:58 UTC (permalink / raw)
To: Matt; +Cc: Ludovic Courtès, guix-devel, maximcournoyer, dev
Matt <matt@excalamus.com> writes:
> The problem is that the Emacs Info reader incorrectly renders
> cross-references by default. I was reading the Texinfo documentation
> in Emacs.
I believe the Emacs errors are historical; looking at Emacs 29.3 as
packaged in Guix, Emacs-Info displays xref properly as See. Display
errors had existed, but in the past only.
Again thank you for tediously working through deficiencies in Guix’ docs.
Do you agree that I should commit your docs correction with @pxref?
I believe it is an improvement over current “see @ref”, even though it
looks different in the info reader.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-15 12:58 ` pelzflorian (Florian Pelz)
@ 2024-04-15 18:39 ` Matt
2024-04-16 6:43 ` pelzflorian (Florian Pelz)
2024-04-17 18:08 ` Maxim Cournoyer
0 siblings, 2 replies; 69+ messages in thread
From: Matt @ 2024-04-15 18:39 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: "Ludovic Courtès", guix-devel, maximcournoyer, dev
---- On Mon, 15 Apr 2024 14:58:50 +0200 pelzflorian (Florian Pelz) wrote ---
> Do you agree that I should commit your docs correction with @pxref?
> I believe it is an improvement over current “see @ref”, even though it
> looks different in the info reader.
Yes, I agree and thank you for double checking. Sorry for not answering you more clearly before! @pxref is the correct command to use within parentheses.
> I believe the Emacs errors are historical; looking at Emacs 29.3 as
> packaged in Guix, Emacs-Info displays xref properly as See. Display
> errors had existed, but in the past only.
I reported it to emacs-devel (it's addressed now) and the issue isn't technically @xrefs; it's the compilation of @xref and @ref, '*Note' and '*note' respectively. Emacs looks at the context around these and renders them as 'See' or 'see' according to what's nearby. The trouble is that the Texinfo documentation intends to show '*Note' and '*note' literally which is an exception to the Emacs logic.
I looked it up and the related Emacs code had been there for like 18 years...I have a knack for finding these kinds of dumb things. I can't decide if it's a superpower or a super-curse. :)
> Again thank you for tediously working through deficiencies in Guix’ docs.
Like Richard Hamming asks, "If what you're working on is not important and it's not likely to lead to important things, why are you working on it?" I think Guix is important! Thanks for sticking with me :)
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-15 18:39 ` Matt
@ 2024-04-16 6:43 ` pelzflorian (Florian Pelz)
2024-04-18 17:15 ` Matt
2024-04-17 18:08 ` Maxim Cournoyer
1 sibling, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-16 6:43 UTC (permalink / raw)
To: Matt; +Cc: Ludovic Courtès, guix-devel, maximcournoyer, dev
Hi Matt. When triple checking, I read in “info "(texinfo)@pxref"”:
In past versions of Texinfo, it was not allowed to write punctuation
after a '@pxref', so it could be used _only_ before a right parenthesis.
This is no longer the case. The effect of '@pxref{NODE-NAME}' is
similar to that of 'see @ref{NODE-NAME}'. However, in many circumstance
the latter is preferrable, as this makes it clear in the Info output
that the word "see" should be present.
Because of this last sentence, my tendency would now be to use @pxref
only for parentheses. (Texinfo is really confusing.) Should I just cut
these changes:
(Linux Services): Use @pxref to start phrase.
(Configuring the Shell): Use @pxref to start phrase.
or is there more that should go in this patch?
Matt <matt@excalamus.com> writes:
> ---- On Mon, 15 Apr 2024 14:58:50 +0200 pelzflorian (Florian Pelz) wrote ---
> > I believe the Emacs errors are historical; looking at Emacs 29.3 as
> > packaged in Guix, Emacs-Info displays xref properly as See. Display
> > errors had existed, but in the past only.
>
> I reported it to emacs-devel (it's addressed now) and the issue isn't
> technically @xrefs; it's the compilation of @xref and @ref, '*Note'
> and '*note' respectively. Emacs looks at the context around these and
> renders them as 'See' or 'see' according to what's nearby. […]
Ohh thank you and them for the fix.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-15 18:39 ` Matt
2024-04-16 6:43 ` pelzflorian (Florian Pelz)
@ 2024-04-17 18:08 ` Maxim Cournoyer
1 sibling, 0 replies; 69+ messages in thread
From: Maxim Cournoyer @ 2024-04-17 18:08 UTC (permalink / raw)
To: Matt; +Cc: pelzflorian (Florian Pelz), Ludovic Courtès, guix-devel, dev
Hi Matt,
Matt <matt@excalamus.com> writes:
> ---- On Mon, 15 Apr 2024 14:58:50 +0200 pelzflorian (Florian Pelz) wrote ---
>
> > Do you agree that I should commit your docs correction with @pxref?
> > I believe it is an improvement over current “see @ref”, even though it
> > looks different in the info reader.
>
> Yes, I agree and thank you for double checking. Sorry for not
> answering you more clearly before! @pxref is the correct command to
> use within parentheses.
>
> > I believe the Emacs errors are historical; looking at Emacs 29.3 as
> > packaged in Guix, Emacs-Info displays xref properly as See. Display
> > errors had existed, but in the past only.
>
> I reported it to emacs-devel (it's addressed now) and the issue isn't
> technically @xrefs; it's the compilation of @xref and @ref, '*Note'
> and '*note' respectively. Emacs looks at the context around these and
> renders them as 'See' or 'see' according to what's nearby. The
> trouble is that the Texinfo documentation intends to show '*Note' and
> '*note' literally which is an exception to the Emacs logic.
>
> I looked it up and the related Emacs code had been there for like 18
> years...I have a knack for finding these kinds of dumb things. I
> can't decide if it's a superpower or a super-curse. :)
Awesome! Definitely a superpower in my book. Thanks for following it
through with the Emacs folks! I'm sure I was bothered by that
inconsistency before but couldn't put my finger on the culprit.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-16 6:43 ` pelzflorian (Florian Pelz)
@ 2024-04-18 17:15 ` Matt
2024-04-19 20:56 ` pelzflorian (Florian Pelz)
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-04-18 17:15 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: guix-devel, maximcournoyer, dev, "Ludovic Courtès"
---- On Tue, 16 Apr 2024 08:43:23 +0200 pelzflorian (Florian Pelz) wrote ---
> Hi Matt. When triple checking, I read in “info "(texinfo)@pxref"”:
>
> In past versions of Texinfo, it was not allowed to write punctuation
> after a '@pxref', so it could be used _only_ before a right parenthesis.
> This is no longer the case. The effect of '@pxref{NODE-NAME}' is
> similar to that of 'see @ref{NODE-NAME}'. However, in many circumstance
> the latter is preferrable, as this makes it clear in the Info output
> that the word "see" should be present.
>
> Because of this last sentence, my tendency would now be to use @pxref
> only for parentheses. (Texinfo is really confusing.) Should I just cut
> these changes:
>
> (Linux Services): Use @pxref to start phrase.
> (Configuring the Shell): Use @pxref to start phrase.
Yes, I agree that cutting those, and using the original "see @ref{}", is what the Texinfo manual says is correct. We should also cut this change:
(Setting Up the Daemon): use @xref to start sentence.
The original was also correct.
The only change that should remain is:
(Build Systems): capitalize "python" and start parenthesized reference with
@pxref.
Thanks for checking that. I had it wrong and I learned something!
^ permalink raw reply [flat|nested] 69+ messages in thread
* Creating a documentation team?
2024-04-14 7:00 ` pelzflorian (Florian Pelz)
@ 2024-04-19 14:09 ` Ludovic Courtès
2024-04-19 15:32 ` Maxim Cournoyer
` (2 more replies)
0 siblings, 3 replies; 69+ messages in thread
From: Ludovic Courtès @ 2024-04-19 14:09 UTC (permalink / raw)
To: pelzflorian (Florian Pelz); +Cc: Matt, guix-devel, maximcournoyer, dev
[-- Attachment #1: Type: text/plain, Size: 426 bytes --]
Hi Florian and all,
I figure you’ve been doing a lot of review and writing of the manual.
Should we create a documentation team, of which you could be a honorary
member? :-)
I feel like ensuring doc consistency, be it regarding the content,
terminology, typography, or use of markup, is a job in its own that
could be best reviewed by people familiar with and interested in those
issues.
WDYT?
Ludo’.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 770 bytes --]
diff --git a/etc/teams.scm b/etc/teams.scm
index d537e83efc..4d65a5476e 100755
--- a/etc/teams.scm
+++ b/etc/teams.scm
@@ -434,6 +434,16 @@ (define-team core
(make-regexp* "^guix/scripts/")
(make-regexp* "^guix/store/"))))
+(define-team documentation
+ (team 'documentation
+ #:name "Documentation"
+ #:description "Documentation: the manual and cookbook."
+ #:scope (list (make-regexp* "\\.texi$")
+ "doc/build.scm"
+ "gnu/system/examples/bare-bones.tmpl"
+ "gnu/system/examples/lightweight-desktop.tmpl"
+ "gnu/system/examples/desktop.tmpl")))
+
(define-team core-packages
(team 'core-packages
#:name "Core packages"
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: Creating a documentation team?
2024-04-19 14:09 ` Creating a documentation team? Ludovic Courtès
@ 2024-04-19 15:32 ` Maxim Cournoyer
2024-04-19 17:32 ` pelzflorian (Florian Pelz)
2024-04-20 8:33 ` Matt
2 siblings, 0 replies; 69+ messages in thread
From: Maxim Cournoyer @ 2024-04-19 15:32 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: pelzflorian (Florian Pelz), Matt, guix-devel, dev
Hi,
Ludovic Courtès <ludo@gnu.org> writes:
> Hi Florian and all,
>
> I figure you’ve been doing a lot of review and writing of the manual.
> Should we create a documentation team, of which you could be a honorary
> member? :-)
>
> I feel like ensuring doc consistency, be it regarding the content,
> terminology, typography, or use of markup, is a job in its own that
> could be best reviewed by people familiar with and interested in those
> issues.
>
> WDYT?
>
> Ludo’.
>
> diff --git a/etc/teams.scm b/etc/teams.scm
> index d537e83efc..4d65a5476e 100755
> --- a/etc/teams.scm
> +++ b/etc/teams.scm
> @@ -434,6 +434,16 @@ (define-team core
> (make-regexp* "^guix/scripts/")
> (make-regexp* "^guix/store/"))))
>
> +(define-team documentation
> + (team 'documentation
> + #:name "Documentation"
> + #:description "Documentation: the manual and cookbook."
> + #:scope (list (make-regexp* "\\.texi$")
> + "doc/build.scm"
> + "gnu/system/examples/bare-bones.tmpl"
> + "gnu/system/examples/lightweight-desktop.tmpl"
> + "gnu/system/examples/desktop.tmpl")))
> +
> (define-team core-packages
> (team 'core-packages
> #:name "Core packages"
I second this. I'd be happy to be added to it.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Creating a documentation team?
2024-04-19 14:09 ` Creating a documentation team? Ludovic Courtès
2024-04-19 15:32 ` Maxim Cournoyer
@ 2024-04-19 17:32 ` pelzflorian (Florian Pelz)
2024-04-20 8:33 ` Matt
2 siblings, 0 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-19 17:32 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Matt, guix-devel, maximcournoyer, dev
Ludovic Courtès <ludo@gnu.org> writes:
> Hi Florian and all,
>
> I figure you’ve been doing a lot of review and writing of the manual.
> Should we create a documentation team, of which you could be a honorary
> member? :-)
Yes, please add this team for documentation. I agree and would like to
be in that team. (Although I am already not able to keep up with all
outstanding doc patches like bug#70202.)
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-18 17:15 ` Matt
@ 2024-04-19 20:56 ` pelzflorian (Florian Pelz)
2024-04-20 8:36 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-19 20:56 UTC (permalink / raw)
To: Matt; +Cc: guix-devel, maximcournoyer, dev, Ludovic Courtès
Hello Matt, pushed as 86fb0e039bf30cf85e2066401f9a384427c47ea8.
I was bold enough to retain the xref change in (Setting Up the Daemon)
prompted by Ludo, because starting a sentence with @xref is recommended
in the Texinfo manual and its examples, while @pxref at the start of a
phrase is not preferrable, according to the “info "(texinfo)@pxref"”.
Again, Texinfo cross-references are complicated.
(In the German translations, I always wrote only @ref, but only because
@xref is not properly translated; Emacs in particular is not
internationalized at all.)
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Creating a documentation team?
2024-04-19 14:09 ` Creating a documentation team? Ludovic Courtès
2024-04-19 15:32 ` Maxim Cournoyer
2024-04-19 17:32 ` pelzflorian (Florian Pelz)
@ 2024-04-20 8:33 ` Matt
2024-05-01 20:34 ` Ludovic Courtès
2 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-04-20 8:33 UTC (permalink / raw)
To: "Ludovic Courtès"
Cc: pelzflorian, guix-devel, maximcournoyer, dev
---- On Fri, 19 Apr 2024 16:09:53 +0200 Ludovic Courtès wrote ---
> Hi Florian and all,
>
> I figure you’ve been doing a lot of review and writing of the manual.
> Should we create a documentation team, of which you could be a honorary
> member? :-)
>
> I feel like ensuring doc consistency, be it regarding the content,
> terminology, typography, or use of markup, is a job in its own that
> could be best reviewed by people familiar with and interested in those
> issues.
I'm in favor of this and would enjoy continuing to help with the docs.
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Fix grammar and markup (was Re: Feedback of the GNU Guix manual)
2024-04-19 20:56 ` pelzflorian (Florian Pelz)
@ 2024-04-20 8:36 ` Matt
0 siblings, 0 replies; 69+ messages in thread
From: Matt @ 2024-04-20 8:36 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: guix-devel, maximcournoyer, dev, "Ludovic Courtès"
---- On Fri, 19 Apr 2024 22:56:13 +0200 pelzflorian (Florian Pelz) wrote ---
> Hello Matt, pushed as 86fb0e039bf30cf85e2066401f9a384427c47ea8.
>
> I was bold enough to retain the xref change in (Setting Up the Daemon)
> prompted by Ludo, because starting a sentence with @xref is recommended
> in the Texinfo manual and its examples, while @pxref at the start of a
> phrase is not preferrable, according to the “info "(texinfo)@pxref"”.
>
> Again, Texinfo cross-references are complicated.
>
> (In the German translations, I always wrote only @ref, but only because
> @xref is not properly translated; Emacs in particular is not
> internationalized at all.)
Sounds good, thank you!
^ permalink raw reply [flat|nested] 69+ messages in thread
* [PATCH] Fix typo (Re: Feedback of the GNU Guix manual)
2024-01-14 15:01 Feedback of the GNU Guix manual Christian Miller
2024-01-15 17:52 ` Matt
2024-04-10 14:05 ` Fix grammar and markup (was " Matt
@ 2024-04-22 18:25 ` Matt
2024-04-22 22:43 ` pelzflorian (Florian Pelz)
2024-05-07 19:41 ` [PATCH] doc: Clarify need to update search paths on foreign distro (was " Matt
3 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-04-22 18:25 UTC (permalink / raw)
Cc: guix-devel, pelzflorian, maximcournoyer, dev
[-- Attachment #1: Type: text/plain, Size: 390 bytes --]
We're working through a list of feedback one item at a time:
https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00117.html
We have completed the first four items.
The next item reported is:
#+begin_quote
3.8 Installing Guix in a Virtual Machine
L25 in an vm should be in a vm
#+end_quote
This is a nice, easy fix, good for me to practice getting the commit formatting correct :)
[-- Attachment #2: 0001-doc-Fix-typo.patch --]
[-- Type: application/octet-stream, Size: 784 bytes --]
From d853c2eb0fea153ac6f6540b3fa4343cd486c5c0 Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Mon, 22 Apr 2024 19:56:26 +0200
Subject: [PATCH] doc: Fix typo.
* doc/guix.texi (Installing Guix in a VM): Change indefinite article.
---
doc/guix.texi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 65af136e61..04e33da1a9 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2583,7 +2583,7 @@ 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.
@item
-Boot the USB installation image in an VM:
+Boot the USB installation image in a VM:
@example
qemu-system-x86_64 -m 1024 -smp 1 -enable-kvm \
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: [PATCH] Fix typo (Re: Feedback of the GNU Guix manual)
2024-04-22 18:25 ` [PATCH] Fix typo (Re: " Matt
@ 2024-04-22 22:43 ` pelzflorian (Florian Pelz)
0 siblings, 0 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-04-22 22:43 UTC (permalink / raw)
To: Matt; +Cc: guix-devel, maximcournoyer, dev
Pushed as b8ccbc942e0ec7baf695d383e575991289c6e033.
Thank you for trudging on through the list.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Creating a documentation team?
2024-04-20 8:33 ` Matt
@ 2024-05-01 20:34 ` Ludovic Courtès
2024-05-02 9:14 ` pelzflorian (Florian Pelz)
2024-05-07 17:57 ` [bug#70823] [PATCH] " Matt
0 siblings, 2 replies; 69+ messages in thread
From: Ludovic Courtès @ 2024-05-01 20:34 UTC (permalink / raw)
To: Matt, pelzflorian, guix-devel, maximcournoyer, dev
Hello!
Thanks Florian, Maxime, and Matt for your feedback.
I’ve added the documentation team locally. I’ll push shortly and let
you add yourselves.
Ludo’.
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: Creating a documentation team?
2024-05-01 20:34 ` Ludovic Courtès
@ 2024-05-02 9:14 ` pelzflorian (Florian Pelz)
2024-05-07 17:57 ` [bug#70823] [PATCH] " Matt
1 sibling, 0 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-02 9:14 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Matt, guix-devel, maximcournoyer, dev
Thank you for creating the team for documentation,
Ludovic Courtès <ludo@gnu.org> writes:
> I’ll push shortly and let
> you add yourselves.
I’ve added myself.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* [bug#70823] [PATCH] Re: Creating a documentation team?
2024-05-01 20:34 ` Ludovic Courtès
2024-05-02 9:14 ` pelzflorian (Florian Pelz)
@ 2024-05-07 17:57 ` Matt
2024-05-11 13:03 ` bug#70823: " pelzflorian (Florian Pelz)
1 sibling, 1 reply; 69+ messages in thread
From: Matt @ 2024-05-07 17:57 UTC (permalink / raw)
To: 70823; +Cc: dev, Ludovic Courtès, pelzflorian, maximcournoyer
[-- Attachment #1: Type: text/plain, Size: 259 bytes --]
---- On Wed, 01 May 2024 22:34:05 +0200 Ludovic Courtès wrote ---
> I’ve added the documentation team locally. I’ll push shortly and let
> you add yourselves.
See attached patch. Happy to continue helping and learning more about Guix :)
[-- Attachment #2: 0001-teams-Add-to-the-documentation-team.patch --]
[-- Type: application/octet-stream, Size: 769 bytes --]
From fe1ccf9bce9e29e3f623c5f99258281ae1e3e29d Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Tue, 7 May 2024 19:40:33 +0200
Subject: [PATCH] teams: Add to the documentation team.
* etc/teams.scm (Matthew Trzcinski): Add to documentation team.
---
etc/teams.scm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/etc/teams.scm b/etc/teams.scm
index 0dc2325c3e..6cf29b74cc 100755
--- a/etc/teams.scm
+++ b/etc/teams.scm
@@ -734,6 +734,10 @@ (define-member (person "Adam Faiz"
"adam.faiz@disroot.org")
games)
+(define-member (person "Matthew Trzcinski"
+ "matt@excalamus.com")
+ documentation)
+
\f
(define (find-team name)
(or (hash-ref %teams (string->symbol name))
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual)
2024-01-14 15:01 Feedback of the GNU Guix manual Christian Miller
` (2 preceding siblings ...)
2024-04-22 18:25 ` [PATCH] Fix typo (Re: " Matt
@ 2024-05-07 19:41 ` Matt
2024-05-07 20:41 ` Vagrant Cascadian
3 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-05-07 19:41 UTC (permalink / raw)
To: guix-devel; +Cc: pelzflorian, dev, maximcournoyer
[-- Attachment #1: Type: text/plain, Size: 1380 bytes --]
We're working through a list of feedback one item at a time:
https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00117.html
We have completed the first five items. The sixth item was fixed already in
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=cb3f833aaa5326e653b128bfd7b13d553f7c2a47
The next item reported is:
#+begin_quote
6.7 L37 true for Guix System as well?
The result of running ‘guix pull’ is a “profile” available under
‘~/.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 (*note Documentation::):
export PATH="$HOME/.config/guix/current/bin:$PATH"
export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
#+end_quote
As far as I know, exporting like this is only necessary on foreign distros.
The attached patch makes this explicit. It also provides information for people unfamiliar with the concept of a "search path" or how shells work by suggesting the exports be added to .bashrc and tries to clarify the consequences of not doing this.
Unnecessary words were struck to reduce the overall word count. According to M-x count-words-region, the patch adds only 6 words (which is less than the 7 needed for "users of Guix on a foreign distro", itself hard to reduce).
[-- Attachment #2: 0001-doc-Clarify-need-to-update-search-paths-on-foreign-d.patch --]
[-- Type: application/octet-stream, Size: 1564 bytes --]
From 61d7fd377f428bf228e77f9e64b9e55e903a63f3 Mon Sep 17 00:00:00 2001
From: Matthew Trzcinski <matt@excalamus.com>
Date: Tue, 7 May 2024 21:30:28 +0200
Subject: [PATCH] doc: Clarify need to update search paths on foreign distro.
* doc/guix.texi (Invoking guix pull): Make explicit the need to update PATH
and INFOPATH on foreign distros after running 'guix pull'. Give example of
where users may make the updates, as well as clearify the explanation why.
---
doc/guix.texi | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 1c1e0164e7..af08dd4046 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -4403,11 +4403,12 @@ 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.
-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}):
+@command{guix pull} creates a new @dfn{profile} in
+@file{~/.config/guix/current} containing the latest Guix. Users of Guix
+on a foreign distro should add this profile to the beginning of their
+search path (for example in @file{.bashrc}) to ensure that
+@command{guix} and @command{info guix} (@pxref{Documentation}) reference
+the latest versions:
@example
export PATH="$HOME/.config/guix/current/bin:$PATH"
--
2.41.0
^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual)
2024-05-07 19:41 ` [PATCH] doc: Clarify need to update search paths on foreign distro (was " Matt
@ 2024-05-07 20:41 ` Vagrant Cascadian
2024-05-10 9:57 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: Vagrant Cascadian @ 2024-05-07 20:41 UTC (permalink / raw)
To: Matt, guix-devel; +Cc: pelzflorian, dev, maximcournoyer
[-- Attachment #1: Type: text/plain, Size: 1488 bytes --]
On 2024-05-07, matt@excalamus.com wrote:
> #+begin_quote
> 6.7 L37 true for Guix System as well?
> The result of running ‘guix pull’ is a “profile” available under
> ‘~/.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 (*note Documentation::):
>
> export PATH="$HOME/.config/guix/current/bin:$PATH"
> export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
> #+end_quote
>
> As far as I know, exporting like this is only necessary on foreign distros.
>
> The attached patch makes this explicit. It also provides information
> for people unfamiliar with the concept of a "search path" or how
> shells work by suggesting the exports be added to .bashrc and tries to
> clarify the consequences of not doing this.
If the foreign distro has /etc/profile.d/*guix.sh installed, as
implemented in the binary guix-install.sh script and also implemented in
the Debian packaging, manually adding this is also arguably not
necessary, unless they are using a shell that does not respect
/etc/profile.d ... which, to my knowledge, is no different from Guix
System really.
There is also the issue of logging out and back in again (or manually
adding the variables for one session), but that seems a little
tangential, and again, is no different for Guix System than on foreign
distros.
live well,
vagrant
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual)
2024-05-07 20:41 ` Vagrant Cascadian
@ 2024-05-10 9:57 ` Matt
2024-05-11 8:14 ` pelzflorian (Florian Pelz)
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-05-10 9:57 UTC (permalink / raw)
To: Vagrant Cascadian; +Cc: guix-devel, pelzflorian, dev, maximcournoyer
<div>
<br /> ---- On Tue, 07 May 2024 22:41:33 +0200 Vagrant Cascadian wrote ---
<br /> > On 2024-05-07, matt@excalamus.com wrote:
<br /> > > #+begin_quote
<br /> > > 6.7 L37 true for Guix System as well?
<br /> > > The result of running ‘guix pull’ is a “profile” available under
<br /> > > ‘~/.config/guix/current’ containing the latest Guix. Thus, make sure to
<br /> > > add it to the beginning of your search path so that you use the latest
<br /> > > version, and similarly for the Info manual (*note Documentation::):
<br /> > >
<br /> > > export PATH="$HOME/.config/guix/current/bin:$PATH"
<br /> > > export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
<br /> > > #+end_quote
<br /> > >
<br /> > > As far as I know, exporting like this is only necessary on foreign distros.
<br /> > >
<br /> > > The attached patch makes this explicit. It also provides information
<br /> > > for people unfamiliar with the concept of a "search path" or how
<br /> > > shells work by suggesting the exports be added to .bashrc and tries to
<br /> > > clarify the consequences of not doing this.
<br /> >
<br /> > If the foreign distro has /etc/profile.d/*guix.sh installed, as
<br /> > implemented in the binary guix-install.sh script and also implemented in
<br /> > the Debian packaging, manually adding this is also arguably not
<br /> > necessary, unless they are using a shell that does not respect
<br /> > /etc/profile.d ... which, to my knowledge, is no different from Guix
<br /> > System really.
<br /> >
<br /> > There is also the issue of logging out and back in again (or manually
<br /> > adding the variables for one session), but that seems a little
<br /> > tangential, and again, is no different for Guix System than on foreign
<br /> > distros.
<br />
<br />Should we remove the advice to update search paths and instead explain (IIUC) how guix.sh is added to /etc/profile.d? Basically, does the reader need to take some action or is there some information about the system that would be relevant for the reader regarding its use or maintenance?</div>
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual)
2024-05-10 9:57 ` Matt
@ 2024-05-11 8:14 ` pelzflorian (Florian Pelz)
2024-05-26 19:47 ` Matt
0 siblings, 1 reply; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-11 8:14 UTC (permalink / raw)
To: Matt; +Cc: Vagrant Cascadian, guix-devel, dev, maximcournoyer
Hello Matt, Vagrant and all. As I understand, we should not advice all
users to add these exports to .bashrc, because users with
guix-install.sh’s sys_create_init_profile or Debian’s
/etc/profile.d/guix.sh do not need it.
Instead, there already is advice for .config/guix/current documented in
the Guix manual’s Getting Started section. The advice should be a
cross-reference that users should follow the steps from Getting Started,
so search paths are set up properly instead of advising to set PATH and
INFOPATH.
The advice of setting PATH really should go away.
Regards,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* bug#70823: [PATCH] Re: Creating a documentation team?
2024-05-07 17:57 ` [bug#70823] [PATCH] " Matt
@ 2024-05-11 13:03 ` pelzflorian (Florian Pelz)
0 siblings, 0 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-05-11 13:03 UTC (permalink / raw)
To: Matt; +Cc: dev, 70823-done, Ludovic Courtès, maximcournoyer
Matt <matt@excalamus.com> writes:
> See attached patch. Happy to continue helping and learning more about Guix :)
Pushed as 9288654773a110156e0bb6fc703a9c24f5bfc527.
I have slightly adjusted the commit message to have the same style as
prior changes to etc/teams.scm.
This means you will get Cc’d on changes to the listed .texi files and
related files, if the sender of the change used git send-email. Feel
free to comment on such mails.
Thank you for joining,
Florian
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual)
2024-05-11 8:14 ` pelzflorian (Florian Pelz)
@ 2024-05-26 19:47 ` Matt
2024-08-09 11:03 ` (No) new profiles section in the manual (was Re: [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual)) pelzflorian (Florian Pelz)
0 siblings, 1 reply; 69+ messages in thread
From: Matt @ 2024-05-26 19:47 UTC (permalink / raw)
To: pelzflorian (Florian Pelz)
Cc: Vagrant Cascadian, guix-devel, dev, maximcournoyer
---- On Sat, 11 May 2024 10:14:15 +0200 pelzflorian (Florian Pelz) wrote ---
> Instead, there already is advice for .config/guix/current documented in
> the Guix manual’s Getting Started section. The advice should be a
> cross-reference that users should follow the steps from Getting Started,
> so search paths are set up properly instead of advising to set PATH and
> INFOPATH.
>
> The advice of setting PATH really should go away.
Sorry for the late and lengthy reply. Life is life and when I returned to the issue I noticed that the problem is really that the concept of profiles could use some revision within the manual. That will make for a rather complex change set. I hoped to have one ready yet, again, life is life. So, here are my thoughts and, after hearing yours, I can put together the necessary changes if my points hold.
I see two fundamental issues:
1. should there be a single point of reference for the concept of "profile" and where should it be?
2. what information about profiles is relevant to addressing the reported issue and where is it?
We'll need to discuss possible solutions because, unfortunately, the concept of "profiles" isn't conveniently documented.
ISSUE 1 - should there be a single point of reference for the concept of "profile" and where should it be?
tl;dr create a new subsection for the profile concept
I find your suggestion reasonable; document concepts in a single place and then favor references to that place. Unfortunately, there is currently no single place of reference for the concept of "profile".
Important facts about profiles are spread across the following sections (a list is given at the end of this section):
- Section 4: Getting Started (1)
- Section 5.1: Features (and isn't indexed there) (1)
- Section 5.2: Invoking 'guix package' (13)
- Section 5.7: Invoking 'guix pull' (3)
- Section 8.8: Search Paths (1)
- Section 9.1: Invoking 'guix build' (1)
- Section 11.3: operating-system Reference (2), and
- Section 11.19.3: Service Reference (1)
Should we make Section 4: Getting Started the common reference point?
I say no. The Getting Started section is intended to help readers get started with Guix and get a feel of what it's like. Therefore, it should contain a simple how-to with minimal explanation. As the GNU Press Styleguide[1] advises,
"Move slowly. Do not impose too much of a cognitive load at once on the reader."
I think the Getting Started section has too much profile information in it as is. For example, GUIX_PYTHONPATH is a convention, hard-coded into package definitions whereas GUIX_PROFILE is a literary shorthand for the concept that multiple profiles may exist and that the profile is the $HOME/.guix-profile in this case.
Of all the sections that discuss profiles, Invoking 'guix package' contains the most information (13 facts). It's also given as the point of reference by 5 other sections:
1. Invoking 'guix pull' (twice)
2. Invoking 'guix shell'
3. Invoking 'guix environment'
4. Invoking 'guix build'
5. operating-system Reference
Should we make Invoking 'guix package' be the common reference point for profiles?
Again, I say no. AFAIU, profiles have two forms: a system profile, sometimes called the global profile, which manages Guix itself and user profiles, including "default" or "current", which dictate package accessibility. While system and user profiles "work exactly" like each other (see Invoking guix pull), there are separate commands for each: 'guix package' is for user profiles and 'guix pull' is for the system profile. It's easy to confuse all this. Therefore, it would be better to have a separate section that explains profiles and let Invoking 'guix package' and Invoking 'guix pull' focus on the command options.
The best common reference point for profiles is in a new section just below Section 5.1: Features. As the Styleguide[1] says,
"Put important notes to the reader in subsections of their own. This tells the reader the notes really are important."
Profiles are first introduced in Section 4: Getting Started. It does a good job introducing the idea and could actually provide less information. The concept, however, is first explained in Section 5.1: Features. The majority of Features is about how profiles are useful and a core concept of Guix. I think we could switch the focus of Features to be about the benefits of the store, the symlink forest, transactions, control of the build environment, and provenance tracking and move the explanation and details of profiles to a new subsection.
Information about profiles grouped by section:
- Getting Started
+ A profile is a directory containing installed packages
- Features (not indexed)
+ A profile is a reference to the store kept in each user's home
directory managed by 'guix package'
- Invoking 'guix package'
+ a profile is a directory of installed packages
+ profiles exist per user
+ there exists a "default" profile
+ guix package operations create and modify profiles
+ profiles are created in $HOME/.guix-profile
+ $HOME/.guix-profile is a symlink
+ In a multi-user setup, user profiles are stored in a place
registered as a "garbage-collector root"
+ there is a notion of "current profile"
+ profiles have generations
+ generations within a profile are linear, starting with a "zeroth
generation", which contains no files apart from its own metadata.
+ multiple profiles may be referenced at a time
+ removing a profile means removing the symlink previously specified
by "guix project --profile" as well as any corresponding '-*-link'
suffixed symlinks
+ profiles are handles on state (that is, the state of which
software is installed and available)
- Invoking guix pull
+ the latest Guix is determined by a profile
+ 'guix pull' and 'guix package' both create profiles and how these
profiles work is similar
+ there are two types of profiles; those managed by 'guix pull' and
those managed by 'guix package'
- Search Paths
+ installing packages in the default profile creates the file
'~/.guix-profile/etc/profile' which defines search path
environment variables
- Invoking 'guix build'
+ modifying the user's profile is the job of 'guix package'
- operating-system Reference
+ the global profile is accessible at '/run/current-system/profile'
+ it is good practice to install non-core utilities in user profiles
- Service Reference
+ the "system profile" is the programs under
'/run/current-system/profile'
ISSUE 2- what information about profiles is relevant to addressing the reported issue and where is it?
tldr; we should create a new subsection rather than expand Getting Started
I'm able to reduce the information necessary to address the reported issue to:
1. the user environment must be configured so that the shell and other applications can find software installed with Guix
2. Guix provides a file, $GUIX_PROFILE/etc/profile, to configure the user environment
3. $GUIX_PROFILE/etc/profile is created for *each* profile
4. $GUIX_PROFILE/etc/profile must be sourced
Section 4: Getting Started explicitly states the first and forth points and implies the second. AFAICT, the third isn't actually in the manual (although it is in the Cookbook)!
I think explaining $GUIX_PROFILE/etc/profile in more detail within Getting Started wouldn't make sense. Therefore, because of this, and the points I made above, we should consider breaking out profiles into their own section.
[1] https://www.fsf.org/licensing/gnu-press/GNU-Press-styleguide.pdf
^ permalink raw reply [flat|nested] 69+ messages in thread
* (No) new profiles section in the manual (was Re: [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual))
2024-05-26 19:47 ` Matt
@ 2024-08-09 11:03 ` pelzflorian (Florian Pelz)
0 siblings, 0 replies; 69+ messages in thread
From: pelzflorian (Florian Pelz) @ 2024-08-09 11:03 UTC (permalink / raw)
To: Matt; +Cc: Vagrant Cascadian, guix-devel, dev, maximcournoyer
Hello Matt. It was wrong of me not to react for so long.
And now, I want to state my disagreement to [1]. You propose / ask
(kind of a wishlist bug) to collect the information about profiles in
one, new section. But because profiles are core Guix behavior and not a
functionality, it seems right to me to keep the information where it is
and just reference it from the concept index, as is the status quo?
In particular, “guix package” is not “for user profiles” and not one
more command supporting profiles. It really is the fundamental CLI
interface of profiles. Therefore the “Invoking guix package” section
should remain the go-to place.
But I would still like to address your patch [2] “[PATCH] doc: Clarify
need to update search paths on foreign distro” by just removing the
duplicate, unnecessary, incomplete instructions. I will send a patch to
the guix-patches mailing list.
Regards,
Florian
[1] https://mail.gnu.org/archive/html/guix-devel/2024-05/msg00200.html
[2] https://mail.gnu.org/archive/html/guix-devel/2024-05/msg00058.html
^ permalink raw reply [flat|nested] 69+ messages in thread
end of thread, other threads:[~2024-08-09 11:04 UTC | newest]
Thread overview: 69+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-14 15:01 Feedback of the GNU Guix manual Christian Miller
2024-01-15 17:52 ` Matt
2024-01-15 22:05 ` Christian Miller
2024-01-18 19:44 ` Maxim Cournoyer
2024-01-19 21:01 ` Matt
2024-01-26 23:59 ` Matt
2024-02-18 12:35 ` Matt
2024-02-18 13:55 ` Josselin Poiret
2024-02-21 18:27 ` Matt
2024-02-21 17:20 ` Maxim Cournoyer
2024-02-21 18:36 ` Matt
2024-02-23 2:46 ` Maxim Cournoyer
2024-02-23 18:37 ` Matt
2024-03-02 13:34 ` Matt
2024-03-06 17:15 ` doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual) pelzflorian (Florian Pelz)
2024-03-06 19:42 ` Matt
2024-03-06 20:52 ` doc: Removing much of Binary Installation Suhail Singh
2024-03-06 21:18 ` Suhail Singh
2024-03-07 17:03 ` pelzflorian (Florian Pelz)
2024-03-10 11:09 ` doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation) Matt
2024-03-10 20:42 ` Vagrant Cascadian
2024-03-10 23:21 ` Suhail Singh
2024-03-11 1:58 ` Vagrant Cascadian
2024-03-11 4:27 ` John Kehayias
2024-03-11 19:15 ` Vagrant Cascadian
2024-03-11 15:54 ` pelzflorian (Florian Pelz)
2024-03-16 10:47 ` Matt
2024-03-16 14:05 ` pelzflorian (Florian Pelz)
2024-03-17 17:34 ` Ludovic Courtès
2024-03-24 9:27 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions (was Re: doc: installation: fix ~root confusion (was Re: doc: Removing much of Binary Installation)) Matt
2024-03-24 9:32 ` [bug#69976] " Matt
[not found] ` <87edbitv7l.fsf@gmail.com>
2024-04-07 8:30 ` bug#69977: " pelzflorian (Florian Pelz)
2024-04-10 2:57 ` [bug#69977] " Maxim Cournoyer
2024-03-25 19:26 ` [bug#69977] [PATCH] doc: doc-Simplify installation instructions pelzflorian (Florian Pelz)
2024-04-06 8:06 ` Matt
2024-03-06 21:29 ` doc: Removing much of Binary Installation (was: Feedback of the GNU Guix manual) Vagrant Cascadian
2024-04-10 14:05 ` Fix grammar and markup (was " Matt
2024-04-11 12:59 ` Christian Miller
2024-04-12 14:41 ` pelzflorian (Florian Pelz)
2024-04-12 19:18 ` Matt
2024-04-13 12:02 ` pelzflorian (Florian Pelz)
2024-04-14 7:00 ` pelzflorian (Florian Pelz)
2024-04-19 14:09 ` Creating a documentation team? Ludovic Courtès
2024-04-19 15:32 ` Maxim Cournoyer
2024-04-19 17:32 ` pelzflorian (Florian Pelz)
2024-04-20 8:33 ` Matt
2024-05-01 20:34 ` Ludovic Courtès
2024-05-02 9:14 ` pelzflorian (Florian Pelz)
2024-05-07 17:57 ` [bug#70823] [PATCH] " Matt
2024-05-11 13:03 ` bug#70823: " pelzflorian (Florian Pelz)
2024-04-12 20:16 ` Fix grammar and markup (was Re: Feedback of the GNU Guix manual) Ludovic Courtès
2024-04-13 8:22 ` Matt
2024-04-13 11:26 ` pelzflorian (Florian Pelz)
2024-04-14 14:50 ` Matt
2024-04-15 12:58 ` pelzflorian (Florian Pelz)
2024-04-15 18:39 ` Matt
2024-04-16 6:43 ` pelzflorian (Florian Pelz)
2024-04-18 17:15 ` Matt
2024-04-19 20:56 ` pelzflorian (Florian Pelz)
2024-04-20 8:36 ` Matt
2024-04-17 18:08 ` Maxim Cournoyer
2024-04-22 18:25 ` [PATCH] Fix typo (Re: " Matt
2024-04-22 22:43 ` pelzflorian (Florian Pelz)
2024-05-07 19:41 ` [PATCH] doc: Clarify need to update search paths on foreign distro (was " Matt
2024-05-07 20:41 ` Vagrant Cascadian
2024-05-10 9:57 ` Matt
2024-05-11 8:14 ` pelzflorian (Florian Pelz)
2024-05-26 19:47 ` Matt
2024-08-09 11:03 ` (No) new profiles section in the manual (was Re: [PATCH] doc: Clarify need to update search paths on foreign distro (was Re: Feedback of the GNU Guix manual)) pelzflorian (Florian Pelz)
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.