Błąd lokalnej budowy zamienników przy użyciu serwera zamienników w systemie Guix
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.