[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#60068] [PATCH 1/2] guix-install.sh: Add GUIX_ALLOW_OVERWRITE enviro
From: |
Maxim Cournoyer |
Subject: |
[bug#60068] [PATCH 1/2] guix-install.sh: Add GUIX_ALLOW_OVERWRITE environment variable. |
Date: |
Wed, 14 Dec 2022 13:25:06 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
Hi Tobias,
Tobias Geerinckx-Rice <me@tobias.gr> writes:
> Hi Maxim,
>
> Nice! More steps towards world domination.
Eh :-)
> Maxim Cournoyer 写道:
>> +# Environment variables
>
> These sound like they should be command-line arguments.
I agree, but that'd require a loop, or GNU getopt, and I'm not motivated
enough in the moment to re-design it :-). When we get there, we could
add an --uninstall option too.
> […]
>
> Actually, I'm not totally sold on GUIX_ALLOW_OVERWRITE. It's not
> solving much a problem.
The problem it solves for me was that I needed to use 'guix pack'd
dependencies such as gpg, glibc for getent, and shadow's
groupadd/useradd, etc. to satisfy the install script dependencies on my
weird target OS (minimal busybox embedded OS); which are needed to be
unpacked under /gnu, thus conflicting with the requirement that /gnu
doesn't exist.
I tried a relocatable pack, but it didn't work, at least for gpg (file
not found error).
> Instead, the error message could be specific about what it considers a
> ‘previous Guix installation’ — which would be a good idea regardless —
> and tell the admin exactly what needs to be removed to continue.
>
>> "groupadd"
>> + "useradd"
>
> Good catch, but separate patch. (♪)
OK!
>> - if [[ -e "/var/guix" || -e "/gnu" ]]; then
>> + if [[ -z $GUIX_ALLOW_OVERWRITE && (-e /var/guix || -e /gnu) ]];
>> then
>> die "A previous Guix installation was found. Refusing
>> to overwrite."
>> + else
>> + _msg "${WAR}Overwriting existing installation!"
>> fi
>> cd "$tmp_path"
>> - tar --extract --file "$pkg" && _msg "${PAS}unpacked archive"
>> -
>> _msg "${INF}Installing /var/guix and /gnu..."
>> - mv "${tmp_path}/var/guix" /var/
>> - mv "${tmp_path}/gnu" /
>> + tar --extract --file "$pkg" -C /
>
> I'm still in favour of using something like ‘mktemp -d /gnu.XXXXXX’
> here if there's no security flaw I missed. WDYT?
>
> If the overwrite functionality is kept, we should remove the old
> directories before re-populating them.
Hopefully the reason the above makes more sense is also covered by my
use case explanation above.
Is the use case/change motivation a bit clearer now?
--
Thanks,
Maxim
- [bug#60068] [PATCH 1/2] guix-install.sh: Add GUIX_ALLOW_OVERWRITE environment variable., Maxim Cournoyer, 2022/12/14
- [bug#60068] [PATCH 1/2] guix-install.sh: Add GUIX_ALLOW_OVERWRITE environment variable., Tobias Geerinckx-Rice, 2022/12/14
- [bug#60068] [PATCH 1/2] guix-install.sh: Add GUIX_ALLOW_OVERWRITE environment variable.,
Maxim Cournoyer <=
- [bug#60068] [PATCH v2 1/3] guix-install.sh: Add missing "useradd" command., Maxim Cournoyer, 2022/12/14
- [bug#60068] [PATCH v2 3/3] guix-install.sh: Directly exit in case of errors in chk_require., Maxim Cournoyer, 2022/12/14
- [bug#60068] bug#60069: [PATCH 2/2] guix-install.sh: Directly exit in case of errors in chk_require., Ludovic Courtès, 2022/12/15