Fryboyter

Es ist auch möglich Arch Linux zu nutzen wenn man ein Leben hat

Gestern wurde auf gnulinux.ch ein Artikel bezüglich OS Entscheidungsbäume veröffentlicht. Dieser ist, hoffentlich, nicht ganz ernst gemeint. Trotzdem möchte ich bezüglich Arch Linux meinen Senft (ja in Franken ist es Senft nicht Senf) abgeben.

Um Arch Linux ranken sich viel Mythen. Und somit auch viel Bullshit. Wie zum Beispiel, dass man nur etwas lernt, wenn man beispielsweise Arch Linux nutzt. Ja das ist Bullshit. Ein Großteil meiner Kenntnisse zum Thema Linux habe ich mir beispielsweise unter Mandrake / Mandriva angeeignet. Was damals sozusagen das Ubuntu dieser Zeit war. Seit ich Arch nutze, ist natürlich einiges hinzugekommen. Aber nicht, weil ich Arch nutze, sondern weil ich eben bestimmte Probleme lösen oder bestimmte Aufgaben erfüllen musste. Aber egal, darum geht es nicht.

Es geht darum, dass viele behaupten, dass Arch Linux von Leuten genutzt wird die kein echtes Leben haben. Zum Beispiel, weil man nach fast jedem Update etwas reparieren muss. Bullshit!

Ich nutze Arch Linux seit ca. 2010 auf mehreren Rechnern mit unterschiedlicher Konfiguration. Sowohl was die Hard- als auch die Software betrifft. Und ich kann beim besten Willen nicht sagen, wann es das letzte Mal wegen eines Updates Probleme gab. Ich nutze Arch Linux sogar für Server im privaten Bereich.

Ich installiere nicht mehrmals täglich irgendwelche Updates. Bei manchen Rechnern installiere ich Updates sogar nur einmal die Woche, da ich diese nur am Wochenende nutze.

Vor einem Update prüfe ich, ob etwas unter https://archlinux.org/news/ veröffentlicht wurde, was meine Installationen betrifft. Um dies zu automatisieren, nutze ich Informant. Wenn es der Fall sein sollte, berücksichtige ich dies. Ohne Wenn und Aber.

Und von Zeit zu Zeit gleiche ich meine Konfigurationsdateien mit den Pacnew-Dateien ab (https://wiki.archlinux.org/title/Pacman/Pacnew_and_Pacsave). Zudem leere ich den Cache von pacman regelmäßig automatisch mittels eines Hooks (https://wiki.archlinux.org/title/pacman#Cleaning_the_package_cache).

Ansonsten nutze ich Arch Linux einfach. Ja, ernsthaft. Arch Linux ist im Grunde genommen eine ganz normale Distribution. Wie beispielsweise OpenSuse. Es ist kein Betriebssystem für die Elite. Oder für Leute ohne echtes Leben. Es ist nur eine Distribution bei der manche Dinge anders funktionieren als bei anderen Distributionen. Wie beispielsweise die Installation.

Dieser Artikel soll nun kein Aufruf sein, dass möglichst viele Nutzer Arch Linux installieren. Nein. Jeder soll die Distribution nutzen die er / sie / es für richtig hält. Dieser Artikel soll nur dazu dienen, Arch Linux zu demystifizieren und somit potenzielle Nutzer zu informieren. Mir persönlich ist es total egal welche Distributionen andere Nutzer einsetzen. Und ich habe mit dem Artikel von gnulinux.ch daher auch kein Problem.

OSBN | Linux

Pkgbuild-Datei automatisch aktualisieren und installieren

Unter Arch habe ich ein paar Pakete installiert, deren Updates teilweise zeitverzögert angeboten werden. Zum Beispiel, weil der jeweilige Paketbetreuer nicht die nötige Zeit hat oder weil er das erste Minor-Release abwarten will. Hugo ist oft solch ein Paket.

Daher installiere ich mir die aktuelle Version oft selbst. Hierfür habe ich das Verzeichnis ~/pkgbuilds/hugo/ erstellt und in diesem die PKGBUILD-Datei gespeichert anhand der darin enthaltenen Anweisungen das Paket installiert wird. Im Falle von Hugo sieht diese aktuell folgendermaßen aus.

pkgname=hugo
pkgver=0.101.0
pkgrel=1
pkgdesc="Fast and Flexible Static Site Generator in Go"
arch=('x86_64')
url="https://gohugo.io/"
license=('Apache')
depends=('glibc')
makedepends=('go' 'git')
optdepends=('python-pygments: syntax-highlight code snippets'
            'python-docutils: reStructuredText support')
source=(${pkgname}-${pkgver}.tar.gz::https://github.com/gohugoio/${pkgname}/archive/v${pkgver}.tar.gz)
sha512sums=('541d0e04e868845119f2b488fd53b92929ea4dc08685d438a2914b41586e204588b193522013e8eed908dc0c3fbc2714aefb1afad0beae875d57d71aadc59c70')

build() {
  cd "${srcdir}"/${pkgname}-${pkgver}
  export CGO_CPPFLAGS="${CPPFLAGS}"
  export CGO_CFLAGS="${CFLAGS}"
  export CGO_CXXFLAGS="${CXXFLAGS}"
  export CGO_LDFLAGS="${LDFLAGS}"
  export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"
  go build -tags extended

  ./hugo gen man
  ./hugo completion bash > ${pkgname}.bash-completion
  ./hugo completion fish > ${pkgname}.fish
  ./hugo completion zsh > ${pkgname}.zsh
}

package() {
  cd "${srcdir}"/${pkgname}-${pkgver}
  install -Dm755 "${pkgname}" "${pkgdir}"/usr/bin/${pkgname}
  install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE

  install -Dm644 "${srcdir}"/${pkgname}-${pkgver}/man/*.1  -t "${pkgdir}"/usr/share/man/man1/
  
  install -Dm644 ${pkgname}.bash-completion "${pkgdir}"/usr/share/bash-completion/completions/${pkgname}
  install -Dm644 ${pkgname}.fish "${pkgdir}"/usr/share/fish/vendor_completions.d/${pkgname}.fish
  install -Dm644 ${pkgname}.zsh "${pkgdir}"/usr/share/zsh/site-functions/_${pkgname}
}

Wurde nun eine neue Version veröffentlicht, trage ich in der PKGBUILD-Datei in der Zeile pkgver= die neue Version ein. Anschließend führe ich im Verzeichnis in dem die Datei liegt, die Befehle updpkgsums PKGBUILD, makepkg -cirs PKGBUILD –noconfirm und rm – .tar. aus.

Der erste Befehl läd die Archivdatei mit dem Sourcecode herunter, erstellt die Prüfsumme der Datei und trägt diese in der PKGBUILD-Datei ein. Der zweite Befehl erstellt anhand der Anweisungen in der PKGBUILD-Datei das Paket und installiert es. Der letzte Befehl löscht sowohl die Archivdatei mit dem Sourcecode sowie das erstellte Paket.

Da ich darin schon ziemlich geübt bin, dauert dies keine Minute. Ich möchte den Vorgang aber trotzdem automatisieren. Daher habe ich mir eine Funktion erstellt.

updpkgbuild () {
	new_ver="$1"
	sed -E "s#(pkgver=).*#\1$new_ver#" -i PKGBUILD
	updpkgsums PKGBUILD
	makepkg -cirs PKGBUILD --noconfirm
	rm -- *.tar.*
}

Mit dieser brauche ich im Verzeichnis der PKGBUILD-Datei nur beispielsweise updpkgbuild 0.102.0 ausführen und Version 0.102.0 des Pakets wird automatisch installiert. Das ganze klappt natürlich nur, wenn nur die Version sowie die Prüfsumme geändert werden muss. Was aber in den meisten Fällen zutrifft.

Die Funktion habe ich für die zsh erstellt. Ob diese auch in anderen Shells wie der bash oder fish funktioniert, kann ich nicht sagen.

OSBN | Linux

Version 0.13.0 des Kommetarsystems Isso veröffentlicht

Bei Isso handelt es ich um ein auf Python basierendes Kommentarsystem, dass man selbst hosten kann, sodass die Kommentare der Nutzer nicht auf Server Dritter gespeichert werden.

Isso hatte lange Zeit zwei Probleme. Zum einen verlief die Entwicklung teilweise etwas schleppend. Und zum anderen, was das größere Problem war, konnte nur eine Person neue Versionen veröffentlichen. Und diese hatte, und hat vermutlich weiterhin, im echten Leben sehr viel zu tun.

Das hat sich seit Version 0.12.6 geändert. Neue Entwickler beteiligen sich und die nötigen Rechte um neue Versionen zu veröffentlichen sind vorhanden. Daher wurde vor etwas weniger als 24 Stunden die Version 0.13.0 veröffentlicht. Die Änderungen sind ziemlich unfangreich und können unter https://isso-comments.de/news/#isso-version-0-13-0-released nachgelesen werden.

Weiterhin ist Isso nun über https://isso-comments.de erreichbar und soll als Gemeinschaftsprojekt weitergeführt werden.

Ich habe die Isso-Instanz, die ich auf fryboyter.de nutze, bereits auf Version 0.13.0 aktualisiert. Ich musste lediglich nachträglich die CSS-Datei aktualisieren, da diese grundlegend von den Isso-Entwicklern überholt wurde.

OSBN

Hugo Extended 0.104.0 für Uberspace.de / CentOS 7

Zum Erstellen von fryboyter.de nutze ich Hugo. Und als Webspace nutze ich uberspace.de. Wenn ich beispielsweise einen neuen Artikel schreibe, erstelle ich für diesen einen Commit, den ich in ein Mercurial-Repository auf den Webspace hochlade. Jeder neue Commit löst dann die Ausführung eines Scripts aus, welches die Seite neu erzeugt.

Das Script nutzt hierfür die fertig kompilierte Version von Hugo die von den Entwicklern angeboten wird und die auf dem Webspace abgespeichert ist. Aufgrund von kürzlich erfolgten Änderungen an der Internetseite benötige ich nun die sogenannte extended Version von Hugo. Die aber leider bei Uberspace.de nicht funktioniert, da dort aktuell CentOS 7 zum Einsatz kommt, sodass einige benötigte Pakete zu stabil sind. Oder anders ausgedrückt zu veraltet sind. Hugo bricht daher mit der folgenden Fehlermeldung ab.

/home/laythos/bin/hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/laythos/bin/hugo)
/home/laythos/bin/hugo: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/laythos/bin/hugo)
/home/laythos/bin/hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/laythos/bin/hugo)

Das Problem ist den Entwicklern bekannt (https://github.com/gohugoio/hugo/issues/9330), aber aus nachvollziehbaren Gründen werden für alte Distributionen keine fertig kompilieren Versionen angeboten.

Also bleiben in dem Fall zwei Möglichkeiten. Man erzeugt die Internetseite jedes Mal lokal und lädt diese beispielsweise mit rsync auf den Webspace. Oder man kompiliert eine Version von Hugo die CentOS 7 unterstützt. Ich habe mich für letzteres entschieden.

Das Kompilieren direkt auf einem Uberspace sollte man allerdings nicht probieren. Denn dort kann man maximal 1,5 GB RAM nutzen. Alles, was mehr braucht, wird automatisch beendet. Was bei Hugo der Fall ist.

Daher habe ich mir von https://www.osboxes.org eine virtuelle Umgebung von CentOS 7 heruntergeladen und mit VirtualBox gestartet. Anschließend habe ich golang sowie gcc-c++ installiert. Ersteres über Umwege, da Go scheinbar nicht in den offiziellen Paketquellen vorhanden ist.

Danach bin ich wie folgt vorgegangen.

wget https://github.com/gohugoio/hugo/archive/refs/tags/v0.97.3.zip
unzip https://github.com/gohugoio/hugo/archive/refs/tags/v0.97.3.zip
cd hugo-0.97.3
CGO_ENABLED=1 go install --tags extended

Mit dem ersten Befehl wir der Sourcecode der derzeit aktuellen Version heruntergeladen. Mit dem zweiten Befehl wird dieser entpackt. Der dritte Befehl wechselt in das betreffende Verzeichnis, in dem die Dateien entpackt wurden. Und der letzte Befehl kompiliert die extended Version von Hugo.

Wenn der letzte Befehl erfolgreich ausgeführt wurde, was je nach Hardware ein paar Minuten dauern kann, sollte man im Verzeichnis ~/go/bin/ die Datei hugo finden. Diese kopiert man dann einfach auf seinen Uberspace. Damit sollte dann das Erzeugen der Internetseite ohne Fehlermeldungen funktionieren.

Unter https://e1.pcloud.link/publink/show?code=kZSMfzZx0nn3yYPAEVOyuhqvPPdgLfvF5ek habe ich die aktuelle von mir erzeugte Version von Hugo die bei Uberspace.de funktioniert hochgeladen. Wer will (und mir vertraut), kann diese gerne nutzen.

info
Zuletzt aktualisiert am 24. September 2022.
Version 0.104.0 erstellt und hochgeladen von Hugo für Uberspcae / CentOS 7.
Allgemein | OSBN

Gehäuse diverser Geräte öffnen

Vor einigen Monaten habe ich mir ein neues Notebook gekauft. Ein Thinkpad E14 Gen 3 um genau zu sein. Unter Linux gibt es nur zwei Probleme. Der Fingerabdrucksensor, den ich nicht benötige, funktioniert aktuell gar nicht. Und es ist eine WLAN-Karte von RealTek verbaut. Was zwar immer noch besser als Broadcom ist, aber eine Karte von Intel wäre besser als alle beide.

Ich habe mir daher die Karte AX200 von Intel gekauft, die unter Linux “out of the box” unterstützt wird und die einfach funktioniert.

Als ich die Karte einbauen wollte, habe ich die Schrauben am Gehäuseboden den Notebooks entfernt. Danach hat sich dieser aber keinen Millimeter bewegt. Lenovo ist, zumindest bei diesem Modell, dazu übergegangen das Ganze noch zusätzlich mit Clips zu sichern. Das ist immer noch besser als das Gehäuse zu verkleben, aber was soll das? Mein altes Thinkpad X230 hatte keine Clips und es ist weder explodiert noch auseinander gefallen. Dafür ist die Hardware im E14 zugegeben besser zugänglich.

In solch einem Fall versuche ich die Clips zu lösen, indem ich beispielsweise mit einer alten Kreditkarte oder einer Telefonkarte (die älteren Leser werden wissen, was ich meine) im Schlitz zwischen dem oberen und unteren Teil des Gehäuses mit etwas Druck entlang fahre und dabei mantraartig den Satz “hoffentlich brechen die Clips nicht ab” wiederhole. Wartungs-Voodoo sozusagen.

Da diese Karten relativ instabil sind, ist diese Lösung keine gute. Auch wenn sie meist funktioniert. Ein Musiker, den ich kenne, hat mir einen verdammt guten Tipp gegeben. Ein Plektrum. Also diese dreieckigen Dinger mit denen man eine Saite einer Gitarre anschlägt. Diese gibt es in verschiedenen Steifigkeiten. Wenn man ein ziemlich hartes Plektrum nimmt, ist das eigentlich ideal um solche Gehäuse zu öffnen.

Aber es gibt doch Reparaturkits von beispielsweise iFixit mit speziellen Tools, um Gehäuse zu öffnen? Ja gibt es. Diese Dinger ähneln verblüffend Plektren. Kosten dafür aber mehr. Und in meinem Fall habe ich schon diverse Schraubendreher, Pinzetten und so weiter, sodass sich ein komplettes Set nicht lohnen würde. Wer also in der gleichen Lage ist wie ich, sollte sich daher eher ein Plektrum kaufen. Oder eines abstauben, wenn er einen Gitarrenspieler kennt.

Was vielleicht auch funktionieren könnte, wäre ein Reifenheber, den man beim Wechsel eines Fahrradreifens nutzt. Ausprobiert habe ich es aber noch nicht.

OSBN | Allgemein