Dzisiaj, w trakcie rutynowej aktualizacji systemu, zobaczyłem nowy błąd.

guix substitute: ostrzeżenie: download from 'http://lan-ip:port/nar/zstd/9drcs5fy1dcr9s22zdjzvglmxcq9gzy6-emacs-subdirs' failed, trying next URL
guix substitute: ostrzeżenie: pobieranie z 'http://lan-ip:port/nar/gzip/9drcs5fy1dcr9s22zdjzvglmxcq9gzy6-emacs-subdirs' nie powiodło się: 404, "Not Found"
retrying download of '/gnu/store/9drcs5fy1dcr9s22zdjzvglmxcq9gzy6-emacs-subdirs' with other substitute URLs...
guix substitute: ostrzeżenie: download from 'http://lan-ip:port/nar/zstd/9drcs5fy1dcr9s22zdjzvglmxcq9gzy6-emacs-subdirs' failed, trying next URL
guix substitute: ostrzeżenie: pobieranie z 'http://lan-ip:port/nar/gzip/9drcs5fy1dcr9s22zdjzvglmxcq9gzy6-emacs-subdirs' nie powiodło się: 404, "Not Found"
guix substitute: błąd: failed to find alternative substitute for '/gnu/store/9drcs5fy1dcr9s22zdjzvglmxcq9gzy6-emacs-subdirs'
substitution of /gnu/store/9drcs5fy1dcr9s22zdjzvglmxcq9gzy6-emacs-subdirs failed
guix system: błąd: some substitutes for the outputs of derivation `/gnu/store/xm7v7vp844pa3d232q3mji2wrk58qqd8-home.drv' failed (usually happens due to networking issues); try `--fallback' to build derivation from source
guix home: błąd: profil '/var/guix/profiles/per-user/marek/guix-home' nie istnieje

Nie miałem pewności, co było faktycznym źródłem tego błędu. Założyłem, że obecna konfiguracja usługi guix wyłącznie wyszukuje zamienniki derywacji na zewnątrz i nie buduje własnych. Serwer zamienników nie buduje derywacji innych systemów. Z czego wynika, że zamienniki derywacji specyficznych dla pozostałych systemów nie są zlecane do budowy.

Najprostszym rozwiązaniem powinno było być uniwersalne włączenie opcji --fallback w usłudze guix. Ta opcja wymusza próbę zbudowania brakującego zamiennika lokalnie.

Modyfikacja działania usługi guix

Dodałem "--fallback" do listy domyślnych opcji usługi guix-daemon.

Rekonfiguracja systemów przebiegła pomyślnie, ale niestety okazało się, że guix-daemon nie rozpoznaje opcji --fallback i przez to nie może się uruchomić.

Przeczytałem jeszcze raz dokumentację wokół tej opcji i dopiero wtedy uświadomiłem sobie, że opcja --fallback dotyczy programu guix, a nie guix-daemon. To był pierwszy raz gdy byłem zmuszony zrozumieć, że to są dwa oddzielne programy.

DO ZROBIENIA Uważam, że załączona wcześniej strona dokumentacji Guix powinna wyraźniej wskazywać na tę różnicę.

Modyfikacja działania programu guix

Nie znając sposobu na centralne definiowanie domyślnych opcji programu guix postanowiłem dodać opcję --fallback do aliasów poleceń aktualizujących.

Po uzupełnieniu odpowiednich łańcuchów znaków i ręcznym wywołaniu usługi guix-daemon bez opcji --fallback rekonfiguracja systemów przebiegła pomyślnie. Tym razem dalsze wywołania programu guix przebiegały poprawnie.

DO ZROBIENIA Teraz, gdy prototyp mechanizmu rozprowadzania zamienników działa prawidłowo, następnym krokiem jest powielenie serwera zamienników na mikroserwerze tak, aby budowa zamienników odbywała się na stacji roboczej, ale te zamienniki były udostępniane z mikroserwera.

DO ZROBIENIA Po rozwiązaniu tego problemu, udostępnienie tych zamienników w internecie powinno być trywialne.