theHacker's Blog
– It's just a glitch in the Matrix –
2

Installation von Hugo – einem Static Site Generator

Da ich schon lange unzufrieden mit WordPress bin, suche ich nach Alternativen.

Gestern bin ich über Hugo gestoßen, einen Static Site Generator. In diesem Artikel schildere ich meinen Irrweg, bis ich Hugo erfolgreich installieren konnte.

Hugo hat eine sehr ausführliche Dokumentation zur Installation.

Installation über Paket-Manager

Ich bin es als Ubuntu-Nutzer eigentlich gewöhnt, dass viele Programme, die man im Internet so findet, bereits in der Distribution enthalten sind. So auch Hugo.

Die Dokumentation hat in der Sektion "Debian and Ubuntu" die Standard-Anleitung:

sudo apt-get install hugo

Nachdem ich das ausprobiert habe und mich dem Tutorial gewidmet habe, bin ich nicht besonders weit gekommen. Zwar funktionieren grundsätzliche Aufrufe von hugo, allerdings sobald ich in Schritt 3 das Theme hinzugefügt habe, hat Hugo nur noch Fehler geworfen:

thehacker@ares:/tmp/hugo-test$ hugo server
ERROR 2020/10/25 11:06:13 Current theme does not support Hugo version 0.40.1. Minimum version required is 0.55.0
Building sites … ERROR 2020/10/25 11:06:13 Failed to add template "theme/404.html" in path "/tmp/hugo-test/themes/ananke/layouts/404.html": template: /tmp/hugo-test/themes/ananke/layouts/404.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 Failed to add template "theme/_default/list.html" in path "/tmp/hugo-test/themes/ananke/layouts/_default/list.html": template: /tmp/hugo-test/themes/ananke/layouts/_default/list.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 Failed to add template "theme/_default/single.html" in path "/tmp/hugo-test/themes/ananke/layouts/_default/single.html": template: /tmp/hugo-test/themes/ananke/layouts/_default/single.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 Failed to add template "theme/_default/taxonomy.html" in path "/tmp/hugo-test/themes/ananke/layouts/_default/taxonomy.html": template: /tmp/hugo-test/themes/ananke/layouts/_default/taxonomy.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 Failed to add template "theme/_default/terms.html" in path "/tmp/hugo-test/themes/ananke/layouts/_default/terms.html": template: /tmp/hugo-test/themes/ananke/layouts/_default/terms.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 Failed to add template "theme/index.html" in path "/tmp/hugo-test/themes/ananke/layouts/index.html": template: /tmp/hugo-test/themes/ananke/layouts/index.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 Failed to add template "theme/page/single.html" in path "/tmp/hugo-test/themes/ananke/layouts/page/single.html": template: /tmp/hugo-test/themes/ananke/layouts/page/single.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 Failed to add template "theme/partials/func/GetFeaturedImage.html" in path "/tmp/hugo-test/themes/ananke/layouts/partials/func/GetFeaturedImage.html": template: theme/partials/func/GetFeaturedImage.html:23: unexpected "=" in operand
ERROR 2020/10/25 11:06:13 Failed to add template "theme/partials/social-share.html" in path "/tmp/hugo-test/themes/ananke/layouts/partials/social-share.html": template: theme/partials/social-share.html:15: unexpected "=" in operand
ERROR 2020/10/25 11:06:13 Failed to add template "theme/post/list.html" in path "/tmp/hugo-test/themes/ananke/layouts/post/list.html": template: /tmp/hugo-test/themes/ananke/layouts/post/list.html:10: function "hugo" not defined
ERROR 2020/10/25 11:06:13 theme/partials/func/GetFeaturedImage.html : template: theme/partials/func/GetFeaturedImage.html:23: unexpected "=" in operand
ERROR 2020/10/25 11:06:13 theme/partials/social-share.html : template: theme/partials/social-share.html:15: unexpected "=" in operand
Total in 30 ms
Error: Error building site: logged 13 error(s)

Die Dokumentation hatte schon vorgewarnt, dass die Hugo-Version aus den Distribution sehr alt ist.

Das Template möchte mindestens Version 0.55.0 (siehe erste Zeile der Fehlermeldungen), ich habe eine 2,5 Jahre-alte Version 0.40.1 in meinem Ubuntu 18.

Installation mit snap

snap to the rescue! Wann immer Pakete aus dem Paket-Manager nicht aktuell genug sind, bieten viele Programme ein snap-Paket an, was wesentlich neuer ist.

Auch Hugo hat einen entsprechenden Passus in der Installationsanleitung:

snap install hugo

Nun haben wir eine aktuelle Version 0.76.5.

Allerdings startet jetzt nicht mal mehr der Server, weil irgendwo Dateirechte fehlen…

Hugo Static Site Generator v0.76.5 linux/amd64 BuildDate: 2020-10-14T19:12:16Z
thehacker@ares:/tmp/hugo-test$ hugo server
Error: open /var/lib/snapd/void: permission denied

Aus dieser Meldung wird man nicht besonders schlau.

In der Dokumentation findet man einen entsprechenden Passus, dass Hugo mit dem snap-Paket nur im User-Home-Verzeichnis schreiben kann.

Diese Einschränkung gefällt mir nicht! Da ich Hugo ja erstmal ausprobieren möchte, verwende ich hier ausschließlich mein /tmp-Verzeichnis.

Manuelle Installation der Binaries

Da Hugo in Go geschrieben ist, d. h. ein kompiliertes Programm ist, kann man sich auch vorkompilierte Binaries von GitHub herunterladen.

Normalerweise mag ich diesen Weg nicht, aber hier führt er zum Erfolg :-)

Auf der Releases-Page auf GitHub finden wir Tarballs für viele verschiedene Plattformen. Das Schöne: Selbst .deb-Pakete liegen da, d. h. so wirklich manuell installieren muss ich das Ganze doch nicht, sondern kann meinen Paket-Manager verwenden.

Mit einem Rechtsklick und "Adresse des Links kopieren" befüll ich die Zwischenablage mit der URL zum Linux-64bit-Debian-Paket. Danach kann ich mit zwei Zeilen das Paket herunterladen und installieren:

wget https://github.com/gohugoio/hugo/releases/download/v0.76.5/hugo_extended_0.76.5_Linux-64bit.deb
sudo dpkg -i hugo_extended_0.76.5_Linux-64bit.deb

Jetzt funktioniert auch das Tutorial und ich kann die Demo-Webseite mit dem Template im Browser aufrufen:


Nutzt du für deinen Blog auch einen Static Site Generator? Nutzt du Hugo oder andere Software?
Hinterlass gerne einen Kommentar, wenn dir dieser Artikel geholfen hat.

Kommentare zu diesem Artikel

    • Danke für deinen Kommentar! :-)

      Ja, Jeykyll hab ich mir auch angeguckt. Zumindest durchgelesen, ausprobiert hab ich es nicht.
      Von den Features her scheinen sie ähnlich mächtig zu sein.

      Ich hab mich dann für Hugo entschieden, weil es wesentlich schneller sein soll.
      Außerdem hat mich Jeykyll etwas abgeschreckt, weil es aus der Ruby-Ecke kommt und ich da weniger Erfahrung hab. Wird sich aber nichts genommen haben; für Hugo musste ich Go-Templates lernen.

      Aktuell bastel ich noch rum, weil in Hugo keine Kommentar-Funktion ist, die mir gefällt. Es gibt zwar eine Lösung, aber das wird in der Cloud gespeichert und kommt folglich nicht in die Tüte! Ich bau mir hierfür selber eine Lösung.

      …komm im Dezember nochmal vorbei und das WordPress-Logo wird wohl schon verschwunden sein :-D

Schreib einen Kommentar zum Artikel

CAPTCHA Das Internet ist leider voller Bots. 🙁 Bitte gib den obenstehenden Code ein.
Falls du den Code nicht lesen kannst oder dir unsicher bist, klick einfach hier, um einen neuen Code zu generieren.

Mit Abschicken des Formulars bestätigst du,
die Datenschutz-Infos gelesen zu haben.