staging.inyokaproject.org

22. September 2018

Heise berichtete kürzlich, dass immer noch Systeme aktiv sind, die nicht gegen WannaCry abgesichert sind - obwohl Microsoft die Lücke bereits vor Monaten geschlossen hat. In dem Artikel wurden vor allem illegale Installationen ohne Zugang zu Updates als Problem ausgemacht.

Das ist sicherlich nicht falsch, dürfte aber meiner Meinung nach in Zeiten von quasi kostenlos vorinstallierten Windows-Versionen nicht die Masse der Problemfälle ausmachen. Zumal Windows 10 extrem lange als kostenloses Upgrade bereitstand und somit auch keine illegalen Upgrades darunter sein dürften.

Ein erheblicher Teil dürfte auf s. g. Upgradeverweigerer zurückzuführen sein (siehe auch: Kommentar: Betriebssysteme und Programme nie über das Supportende hinaus benutzen!). Dabei handelt es sich um eine sehr heterogene Gruppe, die unter den Anwendern aller Betriebssysteme zu finden ist. Manche sitzen der irrigen Meinung auf, dass alte Systeme aus dem Fokus von Angreifern verschwinden oder keine neuen Sicherheitslücken aufweisen, weil die Sicherheitsmeldungen meist nur aktuell noch unterstützte Systeme aufzählen. Andere halten den Updatevorgang für genau so gefährlich wie die potenziell kriminellen Angreifer, weil man ja böse Verbindungen zu US-amerikanischen Firmen aufbaut. Dabei wird oftmals losgelöst von Fakten argumentiert. Manche sind auch einfach nur zu lethargisch und sitzen das Problem aus. Diese Gruppe ist jedoch nicht so problematisch, da sie meist bei einer Hardwareneuanschaffung wieder auf ein unterstütztes Betriebssystem wechselt.

Die Firmen versuchen zunehmend das Problem durch eine Automatisierung des Updatevorgangs aus der Welt zu schaffen. Alle großen Desktopbetriebssysteme bieten inzwischen eine solche Updateroutine an und aktivieren die Automatisierung des Vorgangs teilweise standardmäßig. Die hartnäckigen Verweigerer wird man damit aber nicht erreichen. Diese Menschen wenden eine erhebliche Energie auf um von den zeitfressenden und schädlichen Updates befreit zu werden. Keine Standardeinstellung oder Konfiguration per Konsole dürfte sie davon abhalten ihr System zu schädigen.


Bilder:

Einleitungs- und Beitragsbild von pixelcreatures via pixabay / Lizenz: CC0 Creative Commons

"

Koha ist eines der besten Open Source Projekte, die ich kenne. Es ist eine sehr flexible Lösung, die etwas Zeit braucht, bis man sich darin zurechtfindet. Einen Großteil der Punkte haben wir aber bereits abgearbeitet, v.a. die Installation (Teil 1) und das bibliografische Framework (Teil 2). Im letzten Teil haben wir einige Bücher aufgenommen. Bevor wir jedoch anfangen können, Bücher oder andere Medien auszuleihen, braucht jedes Buch einen Barcode. Weiterhin müssen wir Regeln für die Ausleihe festlegen. Heute geht es um den Etikettendruck.

Dieser Artikel ist ein Teil einer Serie:

  1. Installation und Einrichtung einer ersten Bibliothek
  2. Das bibliografische Framework
  3. Grundeinstellungen
  4. Buchaufnahme
  5. Drucken von Etiketten
  6. Ausleihkonditionen
  7. Verbinden mit einem Z.39.50 / SRU Server
  8. Benachrichtigungen und Erinnerungen
  9. Mahnungen und Gebühren

Etikettendruck vorbereiten

Für die Barcodes in unserer Bibliothek verwenden wir einfache Klebeetiketten. Als Beispiel nehmen wir einen A4-Bogen mit 27 Etiketten der Größe 55x30mm. Darauf wollen wir unseren Barcode drucken, sowie den Titel und die ISBN des Buches. Für den Etikettendruck müssen wir zwei Dinge erstellen:

  1. ein Layout für das Aussehen des Etiketts, d.h. welche Informationen sollen auf das Etikett gedruckt werden?
  2. ein Template des Etikettenbogens, d.h. wie viele Etiketten sind auf einem Blatt? Welche Größe hat das Etikett? Wie ist der Abstand?

Layout erstellen

Wir erstellen zuerst ein Layout für unser Etikett mit allen Informationen, die wir später neben dem Barcode haben wollen. Dazu gehen wir zu Werkzeuge → Etikettendruck und erstellen mit Neu → Layout eine neue Vorlage.

Nun müssen wir verschiedene Angaben machen:

  • Layoutname → kann frei gewählt werden
  • Barcodetyp → EAN13
  • Layout-Typ → Titel/Barcode (d.h. erst wird der Titel und dann der Barcode gedruckt
  • Bibliographische Daten → Hier wählen wir Listenfelder (d.h. wir können die Marc21-Tags direkt eingeben
  • Datenfelder → 245a, 245b, isbn, issn (Ich hatte anfangs Probleme das Layout so hinzubekommen wie ich es wollte, mit den Datenfeldern und den Marc21-Tags hatte es dann geklappt)
  • Weiter unten können dann noch Angaben zur Schriftgröße und Art gemacht werden (hier muss man etwas experimentieren, wie man es haben will).

Am Ende klicken wir auf Speichern.

Template erstellen

Nachdem wir nun unser Layout für das Etikett erstellt haben, müssen wir Koha noch mitteilen, wie unser Etikettbogen aussieht. Dazu erstellen wir ein neues Template mit Neu → Template.

In der Eingabemaske sind folgende Angaben notwendig:

  • Template-Code und -beschreibung → kann frei gewählt werden
  • Einheiten → mm oder cm, je nachdem, wie man die Maße angeben will (ich habe mm genommen in unserem Beispiel)
  • Seitenhöhe und -breite → Höhe und Breite des Etikettbogens (bei uns A4)
  • Etikettenbreite und -höhe → Größe des Etiketts
  • Oberer Seitenrand → Abstand von oben bis zum Rand des ersten Etiketts
  • Linker Seitenrand → Abstand vom linken Seitenrand bis zum Rand des ersten Etiketts
  • Oberer und Linker Textrand → Abstand des Textes vom Rand des Etiketts
  • Anzahl Spalten und Reihen → Wie viele Reihen und Spalten hat der Bogen (bei 3×9 = 27 Etiketten)
  • Abstand zwischen Spalten → Abstand zwischen den Etiketten (rechts / links)
  • Abstand zwischen den Zeilen → Abstand zwischen den Etiketten (oben/unten)

Am Ende wieder auf Speichern. Statt einem Komma muss ein Punkt verwendet werden, falls man Maße mit Stellen nach dem Komma hat.

Barcodes drucken

Nun haben wir alles vorbereitet und können unsere Barcodes der bereits aufgenommenen Medien ausdrucken. Dazu erstellen wir einen neuen Etiketten-Batch mit Neu → Etiketten-Batch.

Es öffnet sich ein neues Eingabefeld über das wir unsere Barcodes eingeben können. Solange das Eingabefeld leer ist und wir unten auf Exemplare hinzufügen klicken, öffnet sich ein neues Fenster, indem wir einfach die Barcodes unserer Medien suchen können.

Man kann einen Zeitraum angeben, indem man nach aufgenommenen Exemplaren suchen möchte. Nach einem Klick auf Suche bekommt man die Ergebnisse präsentiert:

Da wir alle aufgenommen Exemplare hinzufügen wollen, wählen wir oben Alles auswählen, dann Markierte hinzufügen und zum Schluss Fertig. Nun sind alle unsere Exemplare im Eingabefeld und wir können sie mit Exemplare hinzufügen zu unserem Etiketten-Batch hinzufügen.

Nun können wir mit Gesamten Batch exportieren alle Etiketten in unserem Batch drucken. Es öffnet sich ein Popup. Dort wählen wir unser Etiketten-Layout und das Template aus. Zusätzlich können wir noch angeben, bei welchem Etikett auf dem Bogen der Ausdruck später starten soll. Das ist besonders praktisch, wenn man angefangene Bogen hat.

Abschließend auf Export klicken und wir können anschließend die Druckvorlage als PDF herunterladen.

Fertig sind unsere Barcodes 🙂 Wir können sie nun ausdrucken. Beim Drucken müssen wir darauf achten, dass keine Seitenskalierung oder automatisch auf den Druckbereich verkleinert wird, da sonst du Maße nicht mehr stimmen. Unter Ubuntu sieht das z.B. so aus:

Titel und ISBN helfen uns später das Etikett in das richtige Buch zu kleben.

Fazit

Koha’s Werkzeug zum Etikettendruck ist sehr flexibel einstellbar. Haben wir erstmal unser Layout und Template erstellt, stellt der spätere Druck der Etiketten keine Hürde mehr dar. Ich empfehle auf jeden Fall einige Probedrucke auf normalen Papier, um die Abstände und das Layout der Etiketten zu überprüfen. Im nächsten Teil geht es weiter mit den Ausleihkonditionen.

Kommentar hinzufügen

Der Beitrag Teil 5: Etikettendruck – Wie man Koha installiert und für Schulen einrichtet erschien zuerst auf .:zefanjas:..

19. September 2018

Sogenannte Sicherheits-Softwares sind höchst umstritten, da sie häufig Probleme verursachen. Ein aktuelles Beispiel ist Avast / AVG. Deren Sicherheits-Software legt aktuell Nutzern nicht nur die Entfernung einer offiziellen System-Erweiterung von Mozilla nahe, auch werden Sprachpakete gelöscht, wodurch Firefox-Installationen unbenutzbar werden.

Sicherheits-Software kommt mit einem Versprechen: Sie sollen die Sicherheit der Nutzer verbessern. Doch schießt diese Art von Software dabei immer häufiger über das Ziel hinaus. So bietet beispielsweise fast jeder Hersteller eine Funktion an, welche auf einen Namen wie HTTPS-Scanning oder ähnlich hört, und damit die sicheren HTTPS-Verbindungen des Browsers in Manier einer Schadsoftware (es handelt sich dabei de facto um Man-in-the-Middle-Angriffe!), unterbricht. Tatsächlich ist diese Funktion sogenannter „Sicherheits“-Software nicht nur schlecht für die Sicherheit, sondern sorgt viel zu häufig sogar dafür, dass Firefox-Nutzer überhaupt keine Seiten über HTTPS mehr aufrufen können. Browser-Foren sind voll mit Themen zu diesem Problem. Auch konnten im Rahmen von Googles Project Zero in der Vergangenheit immer wieder schwerwiegende Sicherheits-Defizite in den Softwares praktisch aller großen Namen nachgewiesen werden. Nicht zuletzt haben auch Firefox-Abstürze nicht selten ihre Ursache in dieser Art von Software.

Aktuell macht vor allem Avast / AVG Ärger, und das gleich in zweifacher Weise. Sogenannte System-Erweiterungen sind ein integraler Bestandteil von Firefox, welcher sich dadurch von Core-Funktionalität unterscheidet, dass die System-Erweiterungen unabhängig von Firefox ausgeliefert und aktualisiert werden können. Eine solche System-Erweiterung, die ganz offiziell von Mozilla kommt, hört auf den Namen Telemetry Coverage. Avast / AVG rät seinen Nutzern, diese wegen angeblich schlechter Reputation zu entfernen. Ein Wunder, dass Avast nicht empfiehlt, Firefox gleich komplett zu deinstallieren, könnte man meinen, wo doch Firefox als Ganzes ein Produkt von Mozilla ist und nicht nur diese System-Erweiterung. Bereits in der Vergangenheit ist Avast dadurch aufgefallen, Nutzern zur Entfernung offizieller System-Erweiterungen von Firefox zu raten. Dies hängt also nicht speziell mit dieser einen System-Erweiterung zusammen.

Während der Schaden in diesem Fall gering erscheint, ist der Schaden in einem anderen Fall umso größer. Avast / AVG löscht Sprachpakete von Firefox-Installationen. Die Folge ist in Kombination mit einem Fehler in Firefox 62, welcher die Verwendung der Fallback-Sprache betrifft, verheerend: Firefox zeigt nur noch ein gelbes Fenster mit <window id=“main-window“ in roter Schrift an und kann nicht länger benutzt werden. Wer von diesem Problem betroffen ist, sollte Firefox in der gewünschten Sprache neu installieren – und sich überlegen, ob Avast / AVG wirklich eine Daseinsberechtigung auf seinem System besitzt. Nutzer von Windows zum Beispiel haben mit dem Windows Defender eine deutlich bessere und dazu kostenlose Alternative, welche besser schützt und keine Probleme verursacht.

Avast / Firefox
Bildquelle. Bugzilla@Mozilla

Der Beitrag Avast / AVG macht Firefox-Installationen unbenutzbar erschien zuerst auf soeren-hentzschel.at.

18. September 2018

Mozilla hat heute die erste Version von Firefox Reality veröffentlicht, dem ersten plattformübergreifenden Browser speziell für Virtual, Augemented und Mixed Reality.

Themen wie Virtual Reality, Augemented Reality und Mixed Reality werden uns in den nächsten Jahren noch viel beschäftigen. Längst handelt es sich dabei nicht mehr nur um einen technologischen Trend. Mozilla war bei diesem Thema von Anfang an vorderster Front dabei: Firefox 55 war der erste Desktop-Browser mit Unterstützung für Virtuelle Realität, mit A-Frame bietet Mozilla ein beliebtes Framework für Virtuelle Realität an, welches über zehn Millionen Mal pro Monat genutzt wird, und mit dem WebXR Viewer gibt es von Mozilla eine App für Apple iOS zum Betrachten von Mixed Reality-Inhalten.

Nach der initialen Ankündigung von Firefox Reality im April dieses Jahres steht nun Firefox Reality 1.0 für das HTC Vive, Oculus Rift sowie Google Daydream in den jeweiligen App-Stores zum Download bereit. Bei Firefox Reality handelt es sich um einen eigenen Browser speziell für Virtual, Augmented und Mixed Reality, der von Technologien aus Firefox Quantum und Mozillas Next-Generation-Engine Servo profitiert und natürlich dem gleichen Privatsphäre-Standard folgen soll, den man von Mozilla und Firefox kennt und erwartet.

Wie die bereits bekannten Firefox-Produkte bietet auch Firefox Reality einen privaten Modus an, welcher keine Daten zurücklässt. Da Text-Eingaben in der virtuellen Realität immer noch mühsam sind, ermöglicht Firefox Reality die Text-Eingabe optional auch per Sprache. Und beim Start begrüßt einen Firefox Reality mit einer Sammlung an Videos, Spielen und weiteren VR-Inhalten, welche es dem Anwender ermöglichen, neue VR-Inhalte kennenzulernen und direkt aufzurufen.

Das alles soll erst der Anfang sein. Man habe eine ständig wachsende Liste an Ideen und Funktionen und keinen geringeren Anspruch, als Firefox Reality zum besten Browser für Mixed Reality zu machen. Lesezeichen, 360°-Videos sowie Benutzerkonten werden als Funktionen genannt, welche Mozilla in den nächsten Monaten, neben weiteren Dingen, ergänzen möchte.

Firefox Reality

Firefox Reality

Firefox Reality

Original-Video aufrufen

Der Beitrag Mozilla veröffentlicht neuen Browser Firefox Reality 1.0 erschien zuerst auf soeren-hentzschel.at.

17. September 2018

Wenn sich wegen eines klitzekleinen fehlenden Features die ganze Desktopumgebung disqualifiziert … Was Gnome, Cinnamon oder XFCE können, daran scheitert KDE: komfortable, aber sichere FTP-Verbindungen über das FTPS-Protokoll.

Spätestens seit der DSGVO sollte es jeder mitbekommen haben: Unverschlüsselt sensible Daten durchs Netz schicken ist böse. Das gilt auch für FTP-Verbindungen, wenn man z. B. Daten in Webspace-Verzeichnisse verschieben möchte.


Passwortabfrage nach Eingabe einer FTPS-Adresse in Thunar unter Plasma

Nicht alle, aber viele FTP-Programme unter Linux unterstützten FTPS-Verbindungen. Allerdings klappt es auch mit dem Dateimanager: Wer z. B. mit Gnomes „Dateien“ (Nautilus) oder XFCEs Thunar arbeitet, kann darüber ganz bequem Dateien mit FTPS handhaben. Es reicht, mit Strg+L die Adresszeile zu aktivieren und eine FTPS-Adresse nach diesem Muster einzugeben:

ftps://benutzername@ftp-server.tld

Ein Enter – und schon wird man nach dem Passwort gefragt. Legt man sich dann noch ein Lesezeichen im Dateimanager an und speichert das Passwort dauerhaft in der Passwortverwaltung, hat man künftig einen praktischen Sofort-Zugriff auf entfernte Verzeichnisse und kann mit den Dateien hantieren, als lägen sie auf der lokalen Festplatte. Drag and Drop, verschieben zwischen Fenstern oder auf den Desktop – alles kein Problem und ganz intuitiv.

Kein FTPS unter Plasma

Umso erstaunter ist man daher, wenn man versucht, mit KDEs Dateimanager Dolphin eine FTPS-Verbindung aufzubauen. Das funktioniert nicht. Ausgerechnet Dolphin, das eigentlich den Ruf als eierlegende Wollmilchsau unter den Linux-Dateimanagern genießt, fehlt dieses Feature. Es lassen sich zwar über die Alternative fish:// oder sftp:// SSH-Verbindungen etablieren, jedoch funktioniert dies nicht mit reinen FTPS-Gegenstellen. Und gerade viele Webspaceanbieter bieten nur FTPS als sicheren Übertragungsweg an.


Fehlermeldung in Dolphin beim Versuch, eine FTPS-Adresse zu öffnen

Eine Alternative gibt es dann nicht, es bleibt als Workaround nur die Verwendung eines separaten FTP-Programmes. Die praktische Handhabung in der normalen Dateiverwaltung entfällt dann aber. Und somit auch die Möglichkeit, unter KDE entfernte Verzeichnisse DSGVO-konform in die Lesezeichen aufzunehmen.

Zwar lassen sich Thunar und Nautilus auch unter KDE nutzen – doch die Interaktion funktioniert in diesem Fall auch nur zwischen Fenstern desselben Programmes. Von Thunar oder Nautilus lassen sich über FTPS aufgerufene entfernte Dateien nicht in ein Dolphin-Fenster oder auf den Plasma-Desktop ziehen.

Workaround Nr. 1

Wer dieses Feature benötigt, auf KDE aber trotzdem nicht verzichten will, muss ein wenig basteln. Mit z. B. curlftpfs gelingt das verschlüsselte Einbinden von FTP-Verzeichnissen in Dolphin trotzdem: die FTP-Verbindung verhält sich dann vergleichbar einem USB-Stick, der ins System eingebunden wird – und kann dann in Plasma ganz normal wie jeder andere Datenträger gehandhabt werden – auch mit Dolphin.

Workaround Nr. 2

Alternativ lässt sich das von den Gnome/XFCE-Dateimanagern genutzte Verfahren auch im Terminal aufrufen. Entfernte Verzeichnisse sind dann ebenso über Plasma bzw. Dolphin erreichbar.

15. September 2018

KDE bzw. heute Plasma braucht viele Ressourcen. Diese "Wahrheit" findet sich in jedem Artikel zu KDE-Produkten und Vergleichen von Desktopumgebungen. Auf Basis dieser "Erkenntnis" werden neben zig Neuentwicklungen auch das Festhalten an alten Versionen wie KDE 3.5 gerechtfertigt.

Unter dem Titel-Schlagwort "Mythen" werden her ab und an populäre Behauptungen unter die Lupe genommen.

Die KDE-Entwickler schreiben bereits seit vielen Jahren in die Veröffentlichungshinweise, dass sie am Ressourcenverbrauch arbeiten und diesen optimieren. Seit Plasma 5 ist die Software auch in hohem Maße modular aufgebaut. Sofern die genutzte Distribution die Software sauber paketiert und auf unnötige Abhängigkeiten und Querverweise verzichtet hat, lassen sich sehr individuelle Installationen einrichten - eben auch sehr schlanke Plasma5-Instanzen.

Wenn man mal die Probe macht und eine schlanke KDE Plasma Installation aufsetzt kommt man direkt nach dem Start auf einen belegten Arbeitsspeicher von knapp 270 MB. Ein simulierter Single-Core ist mit ca. 1% im Leerlauf ausgelastet. Grafische Effekte und eine Desktopsuche sind natürlich abgeschaltet, äquivalente ressourcenschonende Desktopumgebungen besitzen so etwas schließlich auch nicht.

Natürlich kann man den Verbrauch nun mit Zusatzbestandteilen wie KDEPIM oder auch LibreOffice oder Firefox beliebig in die Höhe treiben, aber dies gilt auch für die vermeintlich so ressourcenschonenden Oberflächen Xfce oder LXDE.

Viele Anwender scheinen sich hier von optischen Merkmalen leiten zu lassen. Eine schlichte Oberfläche im Windows XP oder 2000-Look muss ja ressourcenschonend sein. Grafisch aufwändig gestaltete Desktops sind "fett" und ziehen Leistung.

Wer das Experiment nachstellen möchte: Folgende Pakete waren unter openSUSE Leap 15.0 installiert. Wie man sieht gäbe es sogar noch Reduktionspotenzial, aber dann auf Kosten der Funktionen wie z. B. der NetworkManager.

GeoIP-1.6.11-lp150.1.4.x86_64
GeoIP-data-1.6.11-lp150.1.4.noarch
Mesa-18.0.2-lp150.17.2.x86_64
Mesa-dri-18.0.2-lp150.17.2.x86_64
Mesa-gallium-18.0.2-lp150.17.2.x86_64
Mesa-libEGL1-18.0.2-lp150.17.2.x86_64
Mesa-libGL1-18.0.2-lp150.17.2.x86_64
Mesa-libglapi0-18.0.2-lp150.17.2.x86_64
Mesa-libva-18.0.2-lp150.17.2.x86_64
ModemManager-1.6.12-lp150.1.4.x86_64
ModemManager-bash-completion-1.6.12-lp150.1.4.x86_64
ModemManager-lang-1.6.12-lp150.1.4.noarch
NetworkManager-1.10.6-lp150.3.1.x86_64
NetworkManager-branding-openSUSE-42.1-lp150.2.2.noarch
NetworkManager-lang-1.10.6-lp150.3.1.noarch
aaa_base-84.87+git20180409.04c9dae-lp150.1.1.x86_64
aaa_base-extras-84.87+git20180409.04c9dae-lp150.1.1.x86_64
accountsservice-0.6.45-lp150.2.5.x86_64
accountsservice-lang-0.6.45-lp150.2.5.noarch
adjtimex-1.29-lp150.1.7.x86_64
adwaita-icon-theme-3.26.1-lp150.1.4.noarch
alsa-plugins-pulse-1.1.5-lp150.1.6.x86_64
appres-1.0.4-lp150.1.3.x86_64
ark-17.12.3-lp150.2.2.x86_64
ark-lang-17.12.3-lp150.2.2.noarch
at-spi2-core-2.26.2-lp150.3.8.x86_64
attica-qt5-5.45.0-lp150.1.1.x86_64
audit-2.8.1-lp150.3.2.x86_64
augeas-1.10.1-lp150.1.1.x86_64
augeas-lenses-1.10.1-lp150.1.1.x86_64
avahi-0.6.32-lp150.3.2.x86_64
avahi-lang-0.6.32-lp150.3.2.noarch
baloo5-file-5.45.0-lp150.2.1.x86_64
baloo5-file-lang-5.45.0-lp150.2.1.noarch
baloo5-imports-5.45.0-lp150.2.1.x86_64
baloo5-imports-lang-5.45.0-lp150.2.1.noarch
baloo5-kioslaves-5.45.0-lp150.2.1.x86_64
baloo5-kioslaves-lang-5.45.0-lp150.2.1.noarch
baloo5-tools-5.45.0-lp150.2.1.x86_64
baloo5-tools-lang-5.45.0-lp150.2.1.noarch
baloo5-widgets-17.12.3-lp150.1.2.x86_64
baloo5-widgets-lang-17.12.3-lp150.1.2.noarch
bash-4.4-lp150.7.8.x86_64
bash-completion-2.7-lp150.2.3.noarch
bash-doc-4.4-lp150.7.8.noarch
bash-lang-4.4-lp150.7.8.noarch
bdftopcf-1.1-lp150.1.3.x86_64
beforelight-1.0.5-lp150.1.3.x86_64
bind-utils-9.11.2-lp150.8.6.1.x86_64
binutils-2.29.1-lp150.4.25.x86_64
bitmap-1.0.8-lp150.1.3.x86_64
blog-2.18-lp150.4.2.x86_64
bluedevil5-5.12.5-lp150.1.1.x86_64
bluedevil5-lang-5.12.5-lp150.1.1.noarch
bluez-5.48-lp150.4.3.1.x86_64
bluez-qt-imports-5.45.0-lp150.1.1.x86_64
bluez-qt-udev-5.45.0-lp150.1.1.x86_64
boost-license1_66_0-1.66.0-lp150.3.3.noarch
branding-openSUSE-15.0-lp150.6.1.noarch
breeze-5.12.5-lp150.1.1.x86_64
breeze5-cursors-5.12.5-lp150.1.1.noarch
breeze5-decoration-5.12.5-lp150.1.1.x86_64
breeze5-icons-5.45.0-lp150.1.11.noarch
breeze5-style-5.12.5-lp150.1.1.x86_64
breeze5-style-lang-5.12.5-lp150.1.1.noarch
breeze5-wallpapers-5.12.5-lp150.1.1.noarch
btrfsprogs-4.15-lp150.1.2.x86_64
btrfsprogs-udev-rules-4.15-lp150.1.2.noarch
bzip2-1.0.6-lp150.3.17.x86_64
ca-certificates-2+git20170807.10b2785-lp150.5.1.noarch
ca-certificates-mozilla-2.26-lp150.3.6.1.noarch
checkmedia-3.7-lp150.1.3.x86_64
chrony-3.2-lp150.5.5.x86_64
coreutils-8.29-lp150.2.2.x86_64
coreutils-lang-8.29-lp150.2.2.noarch
cpio-2.12-lp150.1.48.x86_64
cpio-lang-2.12-lp150.1.48.noarch
cpio-mt-2.12-lp150.1.48.x86_64
cpp-7-lp150.1.50.x86_64
cpp7-7.3.1+r258812-lp150.2.10.x86_64
cracklib-2.9.6-lp150.2.17.x86_64
cracklib-dict-full-2.8.12-lp150.1.6.x86_64
crda-3.18-lp150.1.8.x86_64
cron-4.2-lp150.2.32.x86_64
cronie-1.5.1-lp150.2.32.x86_64
cryptsetup-2.0.1-lp150.1.19.x86_64
cups-config-2.2.7-lp150.2.3.1.x86_64
curl-7.60.0-lp150.2.12.1.x86_64
dbus-1-1.12.2-lp150.1.28.x86_64
dbus-1-glib-0.108-lp150.1.6.x86_64
dbus-1-glib-tool-0.108-lp150.1.6.x86_64
dbus-1-x11-1.12.2-lp150.1.3.x86_64
dejavu-fonts-2.37-lp150.1.8.noarch
desktop-data-openSUSE-15.0.20171024-lp150.2.3.noarch
desktop-file-utils-0.23-lp150.2.5.x86_64
desktop-translations-84.87.20180507.9a26f9e2-lp150.1.1.noarch
device-mapper-1.02.146-lp150.5.1.x86_64
dhcp-4.3.5-lp150.4.1.x86_64
dhcp-client-4.3.5-lp150.4.1.x86_64
diffutils-3.6-lp150.2.2.x86_64
diffutils-lang-3.6-lp150.2.2.noarch
dkms-2.3-lp150.1.3.noarch
dmraid-1.0.0.rc16-lp150.3.4.x86_64
dmz-icon-theme-cursors-11.3.0-lp150.1.6.noarch
dnsmasq-2.78-lp150.1.11.x86_64
docbook-xsl-stylesheets-1.79.2-lp150.1.3.noarch
docbook_4-4.5-lp150.2.3.noarch
dolphin-17.12.3-lp150.1.23.x86_64
dolphin-part-17.12.3-lp150.1.23.x86_64
dolphin-part-lang-17.12.3-lp150.1.23.noarch
dracut-044.1-lp150.14.3.1.x86_64
drkonqi5-5.12.5-lp150.1.1.x86_64
drkonqi5-lang-5.12.5-lp150.1.1.noarch
e2fsprogs-1.43.8-lp150.3.3.1.x86_64
editres-1.0.6-lp150.1.3.x86_64
efibootmgr-14-lp150.2.2.x86_64
elfutils-0.168-lp150.2.48.x86_64
elfutils-lang-0.168-lp150.2.48.noarch
expat-2.2.5-lp150.1.9.x86_64
fdupes-1.61-lp150.1.50.x86_64
ffmpegthumbs-17.12.3-lp150.1.1.x86_64
file-5.32-lp150.5.17.x86_64
file-magic-5.32-lp150.5.17.noarch
filesystem-15.0-lp150.8.3.1.x86_64
fillup-1.42-lp150.2.3.x86_64
findutils-4.6.0-lp150.2.18.x86_64
findutils-lang-4.6.0-lp150.2.18.noarch
fipscheck-1.4.1-lp150.1.37.x86_64
fontconfig-2.12.6-lp150.2.5.x86_64
fonts-config-20160921-lp150.2.3.noarch
fonttosfnt-1.0.5+20170126.aead36f-lp150.1.4.x86_64
frameworkintegration-plugin-5.45.0-lp150.1.2.x86_64
fslsfonts-1.0.5-lp150.1.3.x86_64
fstobdf-1.0.6-lp150.1.3.x86_64
ft2demos-2.9-lp150.2.1.x86_64
ftbench-2.9-lp150.2.1.x86_64
ftdiff-2.9-lp150.2.1.x86_64
ftdump-2.9-lp150.2.1.x86_64
ftgamma-2.9-lp150.2.1.x86_64
ftgrid-2.9-lp150.2.1.x86_64
ftinspect-2.9-lp150.2.1.x86_64
ftlint-2.9-lp150.2.1.x86_64
ftmulti-2.9-lp150.2.1.x86_64
ftstring-2.9-lp150.2.1.x86_64
ftvalid-2.9-lp150.2.1.x86_64
ftview-2.9-lp150.2.1.x86_64
gawk-4.2.1-lp150.1.20.x86_64
gcc-7-lp150.1.50.x86_64
gcc7-7.3.1+r258812-lp150.2.10.x86_64
gconf-polkit-3.2.6-lp150.1.13.x86_64
gconf2-3.2.6-lp150.1.13.x86_64
gconf2-branding-openSUSE-42.3-lp150.1.39.noarch
gconf2-lang-3.2.6-lp150.1.13.noarch
gdb-8.1-lp150.1.11.x86_64
gdk-pixbuf-loader-rsvg-2.42.3-lp150.1.20.x86_64
gdk-pixbuf-query-loaders-2.36.11-lp150.3.4.x86_64
gettext-runtime-0.19.8.1-lp150.2.17.x86_64
gio-branding-openSUSE-42.1-lp150.2.1.noarch
girepository-1_0-1.54.1-lp150.2.10.x86_64
glib-networking-2.54.1-lp150.1.3.x86_64
glib-networking-lang-2.54.1-lp150.1.3.noarch
glib2-lang-2.54.3-lp150.2.6.noarch
glib2-tools-2.54.3-lp150.2.6.x86_64
glibc-2.26-lp150.11.6.120.x86_64
glibc-devel-2.26-lp150.11.6.120.x86_64
glibc-extra-2.26-lp150.11.6.120.x86_64
glibc-locale-2.26-lp150.11.6.120.x86_64
google-noto-fonts-doc-20170919-lp150.2.1.noarch
gpg-pubkey-1abd1afb-54176598
gpg-pubkey-307e3d54-5aaa90a5
gpg-pubkey-39db7c82-5847eb1f
gpg-pubkey-3dbdc284-53674dd4
gpg2-2.2.5-lp150.3.3.1.x86_64
gpg2-lang-2.2.5-lp150.3.3.1.noarch
gptfdisk-1.0.1-lp150.2.1.x86_64
grantlee5-5.1.0-lp150.1.12.x86_64
grep-3.1-lp150.2.10.x86_64
grep-lang-3.1-lp150.2.10.noarch
grub2-2.02-lp150.12.8.x86_64
grub2-branding-openSUSE-15.0-lp150.6.1.noarch
grub2-i386-pc-2.02-lp150.12.8.x86_64
grub2-systemd-sleep-plugin-2.02-lp150.12.8.noarch
grub2-x86_64-efi-2.02-lp150.12.8.x86_64
gsettings-desktop-schemas-3.24.1-lp150.1.8.x86_64
gsettings-desktop-schemas-lang-3.24.1-lp150.1.8.noarch
gstreamer-1.12.5-lp150.1.1.x86_64
gstreamer-lang-1.12.5-lp150.1.1.noarch
gstreamer-plugins-bad-1.12.5-lp150.1.3.x86_64
gstreamer-plugins-bad-lang-1.12.5-lp150.1.3.noarch
gstreamer-plugins-base-1.12.5-lp150.1.1.x86_64
gstreamer-plugins-base-lang-1.12.5-lp150.1.1.noarch
gstreamer-plugins-good-1.12.5-lp150.1.1.x86_64
gstreamer-plugins-good-lang-1.12.5-lp150.1.1.noarch
gstreamer-plugins-libav-1.12.5-lp150.2.1.x86_64
gstreamer-plugins-ugly-1.12.5-lp150.1.1.x86_64
gstreamer-plugins-ugly-lang-1.12.5-lp150.1.1.noarch
gtk3-data-3.22.30-lp150.2.2.noarch
gtk3-lang-3.22.30-lp150.2.2.noarch
gtk3-metatheme-breeze-5.12.6-lp150.2.3.1.noarch
gtk3-schema-3.22.30-lp150.2.2.noarch
gtk3-tools-3.22.30-lp150.2.2.x86_64
gzip-1.9-lp150.2.16.x86_64
hack-fonts-3.003-lp150.1.1.noarch
hardlink-1.0+git.e66999f-lp150.1.8.x86_64
hicolor-icon-theme-0.17-lp150.1.7.noarch
hicolor-icon-theme-branding-openSUSE-42.1-lp150.2.1.noarch
hostname-3.16-lp150.1.8.x86_64
hwinfo-21.53-lp150.1.1.x86_64
iceauth-1.0.7-lp150.1.7.x86_64
ico-1.0.5-lp150.1.1.x86_64
info-6.5-lp150.4.14.x86_64
initviocons-0.5-lp150.1.8.x86_64
insserv-compat-0.1-lp150.2.1.noarch
iproute2-4.12-lp150.4.2.x86_64
iptables-1.6.2-lp150.1.1.x86_64
iputils-s20161105-lp150.5.1.x86_64
irqbalance-1.2.0-lp150.2.9.x86_64
iso_ent-2000.11.03-lp150.1.6.noarch
kactivities5-imports-5.45.0-lp150.1.2.x86_64
kactivitymanagerd-5.12.5-lp150.1.1.x86_64
kactivitymanagerd-lang-5.12.5-lp150.1.1.x86_64
kate-17.12.3-lp150.1.3.x86_64
kate-lang-17.12.3-lp150.1.3.noarch
kate-plugins-17.12.3-lp150.1.3.x86_64
kbd-2.0.4-lp150.6.1.x86_64
kbd-legacy-2.0.4-lp150.6.1.noarch
kcm_sddm-5.12.5-lp150.2.1.x86_64
kcm_sddm-lang-5.12.5-lp150.2.1.noarch
kconf_update5-5.45.0-lp150.1.2.x86_64
kcoreaddons-5.45.0-lp150.1.2.x86_64
kcoreaddons-lang-5.45.0-lp150.1.2.noarch
kdbusaddons-tools-5.45.0-lp150.1.2.x86_64
kde-cli-tools5-5.12.5-lp150.1.1.x86_64
kde-cli-tools5-lang-5.12.5-lp150.1.1.noarch
kde-gtk-config5-5.12.5-lp150.1.1.x86_64
kde-gtk-config5-lang-5.12.5-lp150.1.1.noarch
kde-odf-thumbnail-1.0.0-lp150.1.4.x86_64
kde-user-manager-5.12.6-lp150.2.3.1.x86_64
kde-user-manager-lang-5.12.6-lp150.2.3.1.noarch
kdeclarative-components-5.45.0-lp150.2.1.x86_64
kded-5.45.0-lp150.1.1.x86_64
kded-lang-5.45.0-lp150.1.1.noarch
kdegraphics-thumbnailers-17.12.3-lp150.1.1.x86_64
kdelibs4support-5.45.0-lp150.1.5.x86_64
kdelibs4support-lang-5.45.0-lp150.1.5.noarch
kdenetwork4-filesharing-17.12.3-lp150.1.1.x86_64
kdenetwork4-filesharing-lang-17.12.3-lp150.1.1.noarch
kdialog-17.12.3-lp150.1.1.x86_64
kdialog-lang-17.12.3-lp150.1.1.noarch
kdoctools-5.45.0-lp150.1.8.x86_64
kdoctools-lang-5.45.0-lp150.1.8.noarch
keditbookmarks-17.12.3-lp150.1.2.x86_64
keditbookmarks-lang-17.12.3-lp150.1.2.noarch
kernel-default-4.12.14-lp150.11.4.x86_64
kernel-default-4.12.14-lp150.12.16.1.x86_64
kernel-default-devel-4.12.14-lp150.12.16.1.x86_64
kernel-devel-4.12.14-lp150.12.16.1.noarch
kernel-firmware-20180525-lp150.2.3.1.noarch
kernel-macros-4.12.14-lp150.12.16.1.noarch
kernel-syms-4.12.14-lp150.12.16.1.x86_64
kexec-tools-2.0.16-lp150.3.1.x86_64
kfilemetadata5-5.45.0-lp150.1.1.x86_64
kfilemetadata5-lang-5.45.0-lp150.1.1.noarch
kglobalaccel5-5.45.0-lp150.2.3.1.x86_64
khelpcenter5-17.12.3-lp150.1.3.x86_64
khelpcenter5-lang-17.12.3-lp150.1.3.noarch
khotkeys5-5.12.6-lp150.2.3.1.x86_64
khotkeys5-lang-5.12.6-lp150.2.3.1.noarch
kinfocenter5-5.12.6-lp150.3.3.1.x86_64
kinfocenter5-lang-5.12.6-lp150.3.3.1.noarch
kinit-5.45.0-lp150.1.1.x86_64
kinit-lang-5.45.0-lp150.1.1.noarch
kio-5.45.0-lp150.2.1.x86_64
kio-core-5.45.0-lp150.2.1.x86_64
kio-lang-5.45.0-lp150.2.1.noarch
kirigami2-5.45.0-lp150.1.1.x86_64
kirigami2-lang-5.45.0-lp150.1.1.noarch
kmenuedit5-5.12.5-lp150.1.1.x86_64
kmenuedit5-lang-5.12.5-lp150.1.1.noarch
kmod-25-lp150.3.1.x86_64
kmod-compat-25-lp150.3.1.x86_64
knewstuff-5.45.0-lp150.1.2.x86_64
konsole-17.12.3-lp150.1.3.x86_64
konsole-part-17.12.3-lp150.1.3.x86_64
konsole-part-lang-17.12.3-lp150.1.3.noarch
kpackage-5.45.0-lp150.1.1.x86_64
kpackage-lang-5.45.0-lp150.1.1.noarch
kpartx-0.7.3+67+suse.8f0c27b-lp150.1.1.x86_64
kpeople5-5.45.0-lp150.1.1.x86_64
kpeople5-lang-5.45.0-lp150.1.1.noarch
krb5-1.15.2-lp150.4.4.x86_64
kross-5.45.0-lp150.1.1.x86_64
kross-lang-5.45.0-lp150.1.1.noarch
kscreen5-5.12.6-lp150.2.3.1.x86_64
kscreen5-lang-5.12.6-lp150.2.3.1.noarch
kscreenlocker-5.12.6-lp150.2.3.1.x86_64
kscreenlocker-lang-5.12.6-lp150.2.3.1.noarch
kservice-5.45.0-lp150.1.1.x86_64
kservice-lang-5.45.0-lp150.1.1.noarch
ksshaskpass5-5.12.5-lp150.1.1.x86_64
ksshaskpass5-lang-5.12.5-lp150.1.1.noarch
ksysguard5-5.12.6-lp150.2.3.1.x86_64
ksysguard5-lang-5.12.6-lp150.2.3.1.noarch
ktexteditor-5.45.0-lp150.1.1.x86_64
ktexteditor-lang-5.45.0-lp150.1.1.noarch
kwallet-tools-5.45.0-lp150.1.2.x86_64
kwallet-tools-lang-5.45.0-lp150.1.2.x86_64
kwalletd5-5.45.0-lp150.1.2.x86_64
kwalletd5-lang-5.45.0-lp150.1.2.noarch
kwalletmanager5-17.12.3-lp150.2.1.x86_64
kwalletmanager5-lang-17.12.3-lp150.2.1.noarch
kwayland-5.45.0-lp150.2.3.1.x86_64
kwayland-integration-5.12.5-lp150.1.1.x86_64
kwin5-5.12.6-lp150.2.3.1.x86_64
kwin5-lang-5.12.6-lp150.2.3.1.noarch
lbxproxy-1.0.3-lp150.1.6.x86_64
libAppStreamQt2-0.11.8-lp150.1.5.x86_64
libFLAC8-1.3.2-lp150.1.11.x86_64
libFS6-1.0.7-lp150.1.7.x86_64
libGLU1-9.0.0-lp150.1.6.x86_64
libGeoIP1-1.6.11-lp150.1.4.x86_64
libHalf23-2.2.1-lp150.1.2.x86_64
libICE6-1.0.9-lp150.1.6.x86_64
libIex-2_2-23-2.2.1-lp150.1.2.x86_64
libIlmImf-2_2-23-2.2.1-lp150.1.1.x86_64
libIlmThread-2_2-23-2.2.1-lp150.1.2.x86_64
libKF5Activities5-5.45.0-lp150.1.2.x86_64
libKF5ActivitiesStats1-5.45.0-lp150.1.1.x86_64
libKF5Archive5-5.45.0-lp150.1.1.x86_64
libKF5Attica5-5.45.0-lp150.1.1.x86_64
libKF5Auth5-5.45.0-lp150.2.1.x86_64
libKF5Auth5-lang-5.45.0-lp150.2.1.noarch
libKF5Baloo5-5.45.0-lp150.2.1.x86_64
libKF5BalooEngine5-5.45.0-lp150.2.1.x86_64
libKF5BalooEngine5-lang-5.45.0-lp150.2.1.noarch
libKF5BluezQt6-5.45.0-lp150.1.1.x86_64
libKF5Bookmarks5-5.45.0-lp150.1.1.x86_64
libKF5Bookmarks5-lang-5.45.0-lp150.1.1.noarch
libKF5CalendarEvents5-5.45.0-lp150.2.1.x86_64
libKF5Codecs5-5.45.0-lp150.1.1.x86_64
libKF5Codecs5-lang-5.45.0-lp150.1.1.noarch
libKF5Completion5-5.45.0-lp150.2.1.x86_64
libKF5Completion5-lang-5.45.0-lp150.2.1.noarch
libKF5ConfigCore5-5.45.0-lp150.1.2.x86_64
libKF5ConfigCore5-lang-5.45.0-lp150.1.2.noarch
libKF5ConfigGui5-5.45.0-lp150.1.2.x86_64
libKF5ConfigWidgets5-5.45.0-lp150.1.1.x86_64
libKF5ConfigWidgets5-lang-5.45.0-lp150.1.1.noarch
libKF5CoreAddons5-5.45.0-lp150.1.2.x86_64
libKF5Crash5-5.45.0-lp150.1.1.x86_64
libKF5DBusAddons5-5.45.0-lp150.1.2.x86_64
libKF5DBusAddons5-lang-5.45.0-lp150.1.2.noarch
libKF5Declarative5-5.45.0-lp150.2.1.x86_64
libKF5Declarative5-lang-5.45.0-lp150.2.1.noarch
libKF5DocTools5-5.45.0-lp150.1.8.x86_64
libKF5Emoticons5-5.45.0-lp150.1.1.x86_64
libKF5GlobalAccel5-5.45.0-lp150.2.3.1.x86_64
libKF5GlobalAccel5-lang-5.45.0-lp150.2.3.1.noarch
libKF5GlobalAccelPrivate5-5.45.0-lp150.2.3.1.x86_64
libKF5GuiAddons5-5.45.0-lp150.1.1.x86_64
libKF5Holidays5-5.45.0-lp150.1.1.x86_64
libKF5I18n5-5.45.0-lp150.2.1.x86_64
libKF5I18n5-lang-5.45.0-lp150.2.1.noarch
libKF5IconThemes5-5.45.0-lp150.1.2.x86_64
libKF5IconThemes5-lang-5.45.0-lp150.1.2.noarch
libKF5IdleTime5-5.45.0-lp150.1.1.x86_64
libKF5ItemModels5-5.45.0-lp150.1.1.x86_64
libKF5ItemViews5-5.45.0-lp150.1.1.x86_64
libKF5ItemViews5-lang-5.45.0-lp150.1.1.noarch
libKF5JS5-5.45.0-lp150.1.2.x86_64
libKF5JobWidgets5-5.45.0-lp150.1.1.x86_64
libKF5JobWidgets5-lang-5.45.0-lp150.1.1.noarch
libKF5JsEmbed5-5.45.0-lp150.1.2.x86_64
libKF5JsEmbed5-lang-5.45.0-lp150.1.2.noarch
libKF5KCMUtils5-5.45.0-lp150.1.1.x86_64
libKF5KCMUtils5-lang-5.45.0-lp150.1.1.noarch
libKF5KDELibs4Support5-5.45.0-lp150.1.5.x86_64
libKF5KDcraw5-17.12.3-lp150.1.2.x86_64
libKF5KExiv2-15_0_0-17.12.3-lp150.1.1.x86_64
libKF5KHtml5-5.45.0-lp150.1.1.x86_64
libKF5KHtml5-lang-5.45.0-lp150.1.1.noarch
libKF5Kipi32_0_0-17.12.3-lp150.1.1.x86_64
libKF5Kirigami2-5-5.45.0-lp150.1.1.x86_64
libKF5ModemManagerQt6-5.45.0-lp150.1.1.x86_64
libKF5NetworkManagerQt6-5.45.0-lp150.1.1.x86_64
libKF5NewStuff5-5.45.0-lp150.1.2.x86_64
libKF5NewStuff5-lang-5.45.0-lp150.1.2.noarch
libKF5NewStuffCore5-5.45.0-lp150.1.2.x86_64
libKF5Notifications5-5.45.0-lp150.1.1.x86_64
libKF5Notifications5-lang-5.45.0-lp150.1.1.noarch
libKF5NotifyConfig5-5.45.0-lp150.1.1.x86_64
libKF5NotifyConfig5-lang-5.45.0-lp150.1.1.noarch
libKF5Parts5-5.45.0-lp150.1.1.x86_64
libKF5Parts5-lang-5.45.0-lp150.1.1.noarch
libKF5Prison5-5.45.0-lp150.1.1.x86_64
libKF5Pty5-5.45.0-lp150.1.1.x86_64
libKF5Pty5-lang-5.45.0-lp150.1.1.noarch
libKF5Purpose5-5.45.0-lp150.1.1.x86_64
libKF5PurposeWidgets5-5.45.0-lp150.1.1.x86_64
libKF5QuickAddons5-5.45.0-lp150.2.1.x86_64
libKF5Runner5-5.45.0-lp150.1.1.x86_64
libKF5Screen7-5.12.5-lp150.1.2.x86_64
libKF5Solid5-5.45.0-lp150.2.2.x86_64
libKF5Solid5-lang-5.45.0-lp150.2.2.noarch
libKF5SonnetCore5-5.45.0-lp150.1.2.x86_64
libKF5SonnetCore5-lang-5.45.0-lp150.1.2.noarch
libKF5SonnetUi5-5.45.0-lp150.1.2.x86_64
libKF5Style5-5.45.0-lp150.1.2.x86_64
libKF5Su5-5.45.0-lp150.1.12.x86_64
libKF5Su5-lang-5.45.0-lp150.1.12.noarch
libKF5SyntaxHighlighting5-5.45.0-lp150.1.13.x86_64
libKF5SyntaxHighlighting5-lang-5.45.0-lp150.1.13.noarch
libKF5TextWidgets5-5.45.0-lp150.1.1.x86_64
libKF5TextWidgets5-lang-5.45.0-lp150.1.1.noarch
libKF5ThreadWeaver5-5.45.0-lp150.1.1.x86_64
libKF5UnitConversion5-5.45.0-lp150.1.1.x86_64
libKF5UnitConversion5-lang-5.45.0-lp150.1.1.noarch
libKF5Wallet5-5.45.0-lp150.1.2.x86_64
libKF5WidgetsAddons5-5.45.0-lp150.1.1.x86_64
libKF5WidgetsAddons5-lang-5.45.0-lp150.1.1.noarch
libKF5WindowSystem5-5.45.0-lp150.1.1.x86_64
libKF5WindowSystem5-lang-5.45.0-lp150.1.1.noarch
libKF5XmlGui5-5.45.0-lp150.1.1.x86_64
libKF5XmlGui5-lang-5.45.0-lp150.1.1.noarch
libKF5XmlRpcClient5-5.45.0-lp150.1.1.x86_64
libKF5XmlRpcClient5-lang-5.45.0-lp150.1.1.noarch
libKScreenLocker5-5.12.6-lp150.2.3.1.x86_64
libLLVM5-5.0.1-lp150.6.1.x86_64
libQt5Concurrent5-5.9.4-lp150.4.8.x86_64
libQt5Core5-5.9.4-lp150.4.8.x86_64
libQt5DBus5-5.9.4-lp150.4.8.x86_64
libQt5Gui5-5.9.4-lp150.4.8.x86_64
libQt5Multimedia5-5.9.4-lp150.2.2.x86_64
libQt5Network5-5.9.4-lp150.4.8.x86_64
libQt5OpenGL5-5.9.4-lp150.4.8.x86_64
libQt5Positioning5-5.9.4-lp150.1.5.x86_64
libQt5PrintSupport5-5.9.4-lp150.4.8.x86_64
libQt5QuickControls2-5-5.9.4-lp150.1.4.x86_64
libQt5QuickTemplates2-5-5.9.4-lp150.1.4.x86_64
libQt5Script5-5.9.4-lp150.1.21.x86_64
libQt5Sensors5-5.9.4-lp150.1.4.x86_64
libQt5Sensors5-imports-5.9.4-lp150.1.4.x86_64
libQt5Sql5-5.9.4-lp150.4.8.x86_64
libQt5Sql5-sqlite-5.9.4-lp150.4.8.x86_64
libQt5Svg5-5.9.4-lp150.1.4.x86_64
libQt5Test5-5.9.4-lp150.4.8.x86_64
libQt5WaylandClient5-5.9.4-lp150.2.2.x86_64
libQt5WaylandCompositor5-5.9.4-lp150.2.2.x86_64
libQt5WebChannel5-5.9.4-lp150.1.4.x86_64
libQt5WebChannel5-imports-5.9.4-lp150.1.4.x86_64
libQt5WebKit5-5.212~alpha2-lp150.3.18.x86_64
libQt5WebKit5-imports-5.212~alpha2-lp150.3.18.x86_64
libQt5WebKitWidgets5-5.212~alpha2-lp150.3.18.x86_64
libQt5Widgets5-5.9.4-lp150.4.8.x86_64
libQt5X11Extras5-5.9.4-lp150.1.3.x86_64
libQt5Xml5-5.9.4-lp150.4.8.x86_64
libQt5XmlPatterns5-5.9.4-lp150.1.4.x86_64
libQtQuick5-5.9.4-lp150.1.6.x86_64
libSM6-1.2.2-lp150.1.6.x86_64
libSoundTouch0-1.8.0-lp150.1.12.x86_64
libX11-6-1.6.5-lp150.1.19.x86_64
libX11-data-1.6.5-lp150.1.19.noarch
libX11-xcb1-1.6.5-lp150.1.19.x86_64
libXRes1-1.2.0-lp150.1.3.x86_64
libXTrap6-1.0.1-lp150.1.6.x86_64
libXau6-1.0.8-lp150.1.12.x86_64
libXaw7-1.0.13-lp150.2.3.1.x86_64
libXcomposite1-0.4.4-lp150.1.6.x86_64
libXcursor1-1.1.15-lp150.1.3.x86_64
libXdamage1-1.1.4-lp150.1.6.x86_64
libXdmcp6-1.1.2-lp150.1.7.x86_64
libXext6-1.3.3-lp150.1.6.x86_64
libXfixes3-5.0.3-lp150.1.7.x86_64
libXfont2-2-2.0.3-lp150.1.3.x86_64
libXfontcache1-1.0.5-lp150.1.6.x86_64
libXft2-2.3.2-lp150.1.6.x86_64
libXi6-1.7.9-lp150.1.7.x86_64
libXinerama1-1.1.3-lp150.1.6.x86_64
libXmu6-1.1.2-lp150.1.7.x86_64
libXmuu1-1.1.2-lp150.1.7.x86_64
libXp6-1.0.3-lp150.1.7.x86_64
libXpm4-3.5.12-lp150.1.15.x86_64
libXprintUtil1-1.0.1-lp150.1.6.x86_64
libXrandr2-1.5.1-lp150.2.4.x86_64
libXrender1-0.9.10-lp150.1.7.x86_64
libXss1-1.2.2-lp150.3.1.x86_64
libXt6-1.1.5-lp150.2.7.x86_64
libXtst6-1.2.3-lp150.1.7.x86_64
libXv1-1.0.11-lp150.1.7.x86_64
libXxf86dga1-1.1.4-lp150.1.6.x86_64
libXxf86misc1-1.0.3-lp150.1.6.x86_64
libXxf86vm1-1.1.4-lp150.1.7.x86_64
liba52-0-0.7.5+svn613-lp150.1.9.x86_64
libaccounts-glib0-1.23-lp150.1.7.x86_64
libaccounts-qt5-1-1.15-lp150.1.9.x86_64
libacl1-2.2.52-lp150.2.46.x86_64
libaio1-0.3.109-lp150.1.8.x86_64
libapparmor1-2.12-lp150.5.1.x86_64
libappstream4-0.11.8-lp150.1.5.x86_64
libarchive13-3.3.2-lp150.1.9.x86_64
libargon2-1-0.0+git20171227.670229c-lp150.2.2.x86_64
libasan4-7.3.1+r258812-lp150.2.10.x86_64
libasm1-0.168-lp150.2.48.x86_64
libasound2-1.1.5-lp150.4.3.x86_64
libass9-0.14.0-lp150.1.5.x86_64
libassuan0-2.5.1-lp150.2.2.x86_64
libatasmart4-0.19-lp150.2.9.x86_64
libatk-1_0-0-2.26.1-lp150.2.4.x86_64
libatk-bridge-2_0-0-2.26.1-lp150.2.8.x86_64
libatm1-2.5.2-lp150.1.8.x86_64
libatomic1-7.3.1+r258812-lp150.2.10.x86_64
libatspi0-2.26.2-lp150.3.8.x86_64
libattr1-2.4.47-lp150.2.16.x86_64
libaudit1-2.8.1-lp150.3.17.x86_64
libaugeas0-1.10.1-lp150.1.1.x86_64
libauparse0-2.8.1-lp150.3.17.x86_64
libavahi-client3-0.6.32-lp150.3.2.x86_64
libavahi-common3-0.6.32-lp150.3.2.x86_64
libavahi-core7-0.6.32-lp150.3.2.x86_64
libavcodec57-3.4.4-lp150.9.1.x86_64
libavfilter6-3.4.4-lp150.9.1.x86_64
libavformat57-3.4.4-lp150.9.1.x86_64
libavresample3-3.4.4-lp150.9.1.x86_64
libavutil55-3.4.4-lp150.9.1.x86_64
libbind9-160-9.11.2-lp150.8.6.1.x86_64
libblkid1-2.31.1-lp150.7.6.1.x86_64
libbluetooth3-5.48-lp150.4.3.1.x86_64
libbluray2-1.0.2-lp150.2.5.x86_64
libboost_system1_66_0-1.66.0-lp150.3.3.x86_64
libboost_thread1_66_0-1.66.0-lp150.3.3.x86_64
libbs2b0-3.1.0-lp150.1.8.x86_64
libburn4-1.4.6-lp150.1.9.x86_64
libbz2-1-1.0.6-lp150.3.17.x86_64
libcairo-gobject2-1.15.10-lp150.3.3.1.x86_64
libcairo2-1.15.10-lp150.3.3.1.x86_64
libcanberra0-0.30-lp150.1.12.x86_64
libcap-ng0-0.7.9-lp150.1.19.x86_64
libcap2-2.25-lp150.2.19.x86_64
libcdda_interface0-3.10.2-lp150.1.10.x86_64
libcdda_paranoia0-3.10.2-lp150.1.10.x86_64
libcdio16-0.94-lp150.5.3.1.x86_64
libcelt0-2-0.11.3-lp150.1.14.x86_64
libcilkrts5-7.3.1+r258812-lp150.2.10.x86_64
libcolord2-1.4.2-lp150.1.18.x86_64
libcom_err2-1.43.8-lp150.3.3.1.x86_64
libcrack2-2.9.6-lp150.2.17.x86_64
libcroco-0_6-3-0.6.12-lp150.2.13.x86_64
libcryptsetup12-2.0.1-lp150.1.19.x86_64
libcups2-2.2.7-lp150.2.3.1.x86_64
libcurl4-7.60.0-lp150.2.12.1.x86_64
libdaemon0-0.14-lp150.1.6.x86_64
libdatrie1-0.2.9-lp150.1.9.x86_64
libdb-4_8-4.8.30-lp150.5.10.x86_64
libdbus-1-3-1.12.2-lp150.1.28.x86_64
libdbusmenu-qt5-2-0.9.3+15.10.20150604-lp150.1.14.x86_64
libdc1394-22-2.2.5-lp150.1.13.x86_64
libdevmapper-event1_03-1.02.146-lp150.5.1.x86_64
libdevmapper1_03-1.02.146-lp150.5.1.x86_64
libdmtx0-0.7.4-lp150.1.6.x86_64
libdmx1-1.1.3-lp150.1.6.x86_64
libdns169-9.11.2-lp150.8.6.1.x86_64
libdolphinvcs5-17.12.3-lp150.1.23.x86_64
libdouble-conversion1-2.0.1-lp150.1.8.x86_64
libdrm2-2.4.91-lp150.1.2.x86_64
libdrm_amdgpu1-2.4.91-lp150.1.2.x86_64
libdrm_intel1-2.4.91-lp150.1.2.x86_64
libdrm_nouveau2-2.4.91-lp150.1.2.x86_64
libdrm_radeon1-2.4.91-lp150.1.2.x86_64
libdvdread4-6.0.0-lp150.1.2.x86_64
libdw1-0.168-lp150.2.48.x86_64
libebl-plugins-0.168-lp150.2.48.x86_64
libedit0-3.1.snap20150325-lp150.2.1.x86_64
libeditorconfig0-0.12.1-lp150.2.3.x86_64
libefivar1-31-lp150.1.11.x86_64
libelf-devel-0.168-lp150.2.48.x86_64
libelf1-0.168-lp150.2.48.x86_64
libepoxy0-1.4.3-lp150.2.4.x86_64
libepub0-0.2.2-lp150.1.9.x86_64
libevdev2-1.4.5-lp150.1.8.x86_64
libevent-2_1-8-2.1.8-lp150.2.5.x86_64
libexiv2-26-0.26-lp150.5.3.1.x86_64
libexpat1-2.2.5-lp150.1.9.x86_64
libext2fs2-1.43.8-lp150.3.3.1.x86_64
libfdisk1-2.31.1-lp150.7.6.1.x86_64
libfdk-aac1-0.1.6-lp150.1.1.x86_64
libffi7-3.2.1.git259-lp150.3.3.x86_64
libfftw3-3-3.3.6-lp150.3.3.x86_64
libfipscheck1-1.4.1-lp150.1.37.x86_64
libfontenc1-1.1.3-lp150.1.7.x86_64
libfreebl3-3.36.4-lp150.2.3.1.x86_64
libfreetype6-2.9-lp150.2.1.x86_64
libfribidi0-0.19.6-lp150.1.9.x86_64
libfuse2-2.9.7-lp150.1.30.x86_64
libgbm1-18.0.2-lp150.17.2.x86_64
libgcc_s1-7.3.1+r258812-lp150.2.10.x86_64
libgcrypt20-1.8.2-lp150.5.3.1.x86_64
libgdbm4-1.12-lp150.1.49.x86_64
libgdk_pixbuf-2_0-0-2.36.11-lp150.3.4.x86_64
libgif7-5.1.4-lp150.2.5.x86_64
libgio-2_0-0-2.54.3-lp150.2.6.x86_64
libgirepository-1_0-1-1.54.1-lp150.2.10.x86_64
libgit2-26-0.26.6-lp150.2.3.1.x86_64
libglib-2_0-0-2.54.3-lp150.2.6.x86_64
libglvnd-1.0.0-lp150.1.1.x86_64
libgme0-0.6.2-lp150.1.3.x86_64
libgmodule-2_0-0-2.54.3-lp150.2.6.x86_64
libgmp10-6.1.2-lp150.2.20.x86_64
libgnutls30-3.6.2-lp150.3.2.x86_64
libgobject-2_0-0-2.54.3-lp150.2.6.x86_64
libgomp1-7.3.1+r258812-lp150.2.10.x86_64
libgpg-error0-1.29-lp150.1.2.x86_64
libgpgme11-1.10.0-lp150.2.6.x86_64
libgpgmepp6-1.10.0-lp150.2.6.x86_64
libgps23-3.17-lp150.2.12.x86_64
libgraphene-1_0-0-1.8.0-lp150.1.2.x86_64
libgraphite2-3-1.3.11-lp150.2.1.x86_64
libgraphviz6-2.40.1-lp150.4.30.x86_64
libgsm1-1.0.14-lp150.1.9.x86_64
libgstadaptivedemux-1_0-0-1.12.5-lp150.1.3.x86_64
libgstallocators-1_0-0-1.12.5-lp150.1.1.x86_64
libgstapp-1_0-0-1.12.5-lp150.1.1.x86_64
libgstaudio-1_0-0-1.12.5-lp150.1.1.x86_64
libgstbadaudio-1_0-0-1.12.5-lp150.1.3.x86_64
libgstbadbase-1_0-0-1.12.5-lp150.1.3.x86_64
libgstbadvideo-1_0-0-1.12.5-lp150.1.3.x86_64
libgstbasecamerabinsrc-1_0-0-1.12.5-lp150.1.3.x86_64
libgstcodecparsers-1_0-0-1.12.5-lp150.1.3.x86_64
libgstfft-1_0-0-1.12.5-lp150.1.1.x86_64
libgstgl-1_0-0-1.12.5-lp150.1.3.x86_64
libgstmpegts-1_0-0-1.12.5-lp150.1.3.x86_64
libgstpbutils-1_0-0-1.12.5-lp150.1.1.x86_64
libgstphotography-1_0-0-1.12.5-lp150.1.3.x86_64
libgstreamer-1_0-0-1.12.5-lp150.1.1.x86_64
libgstriff-1_0-0-1.12.5-lp150.1.1.x86_64
libgstrtp-1_0-0-1.12.5-lp150.1.1.x86_64
libgstrtsp-1_0-0-1.12.5-lp150.1.1.x86_64
libgstsdp-1_0-0-1.12.5-lp150.1.1.x86_64
libgsttag-1_0-0-1.12.5-lp150.1.1.x86_64
libgsturidownloader-1_0-0-1.12.5-lp150.1.3.x86_64
libgstvideo-1_0-0-1.12.5-lp150.1.1.x86_64
libgstwayland-1_0-0-1.12.5-lp150.1.3.x86_64
libgthread-2_0-0-2.54.3-lp150.2.6.x86_64
libgtk-3-0-3.22.30-lp150.2.2.x86_64
libgudev-1_0-0-232-lp150.1.11.x86_64
libgypsy0-0.9-lp150.2.5.x86_64
libharfbuzz0-1.7.5-lp150.1.3.x86_64
libhogweed4-3.4-lp150.2.3.x86_64
libhttp_parser2_7_1-2.7.1-lp150.2.3.x86_64
libhunspell-1_6-0-1.6.2-lp150.1.5.x86_64
libhyphen0-2.8.8-lp150.1.7.x86_64
libibus-1_0-5-1.5.17-lp150.3.6.x86_64
libical2-2.0.0-lp150.1.16.x86_64
libicu60_2-60.2-lp150.1.4.x86_64
libicu60_2-ledata-60.2-lp150.1.4.noarch
libidn11-1.34-lp150.1.2.x86_64
libidn2-0-2.0.4-lp150.1.10.x86_64
libimobiledevice6-1.2.0+git20170122.45fda81-lp150.1.14.x86_64
libinput-udev-1.10.5-lp150.1.4.x86_64
libinput10-1.10.5-lp150.1.4.x86_64
libiptc0-1.6.2-lp150.1.1.x86_64
libirs160-9.11.2-lp150.8.6.1.x86_64
libisc166-9.11.2-lp150.8.6.1.x86_64
libisccc160-9.11.2-lp150.8.6.1.x86_64
libisccfg160-9.11.2-lp150.8.6.1.x86_64
libisl15-0.18-lp150.1.49.x86_64
libisoburn1-1.4.6-lp150.1.5.x86_64
libisofs6-1.4.6-lp150.1.8.x86_64
libitm1-7.3.1+r258812-lp150.2.10.x86_64
libjack0-1.9.12-lp150.1.2.x86_64
libjansson4-2.9-lp150.1.8.x86_64
libjasper4-2.0.14-lp150.1.1.x86_64
libjavascriptcoregtk-4_0-18-2.20.3-lp150.2.3.1.x86_64
libjbig2-2.1-lp150.1.14.x86_64
libjemalloc2-5.0.1-lp150.1.12.x86_64
libjpeg8-8.1.2-lp150.3.6.x86_64
libjson-c3-0.13-lp150.1.3.x86_64
libjson-glib-1_0-0-1.4.2-lp150.3.4.x86_64
libjte1-1.20-lp150.1.9.x86_64
libkaccounts1-17.12.3-lp150.1.1.x86_64
libkate1-0.4.1-lp150.2.3.x86_64
libkdecorations2-5-5.12.5-lp150.1.2.x86_64
libkdecorations2private5-5.12.5-lp150.1.2.x86_64
libkerfuffle17-17.12.3-lp150.2.2.x86_64
libkeyutils1-1.5.10-lp150.3.19.x86_64
libkipi-data-17.12.3-lp150.1.1.x86_64
libkmod2-25-lp150.3.1.x86_64
libksba8-1.3.5-lp150.2.2.x86_64
libkscreen2-plugin-5.12.5-lp150.1.2.x86_64
libksysguard5-5.12.6-lp150.2.3.1.x86_64
libksysguard5-helper-5.12.6-lp150.2.3.1.x86_64
libksysguard5-lang-5.12.6-lp150.2.3.1.noarch
libkwalletbackend5-5-5.45.0-lp150.1.2.x86_64
liblbxutil1-1.1.0-lp150.1.6.x86_64
liblcms2-2-2.9-lp150.1.3.x86_64
libldap-2_4-2-2.4.46-lp150.7.1.x86_64
libldap-data-2.4.46-lp150.7.1.noarch
libldapcpp1-0.3.1-lp150.1.10.x86_64
liblilv-0-0-0.24.2-lp150.1.8.x86_64
liblirc_client0-0.9.4c-lp150.2.18.x86_64
liblmdb-0_9_17-0.9.17-lp150.2.6.x86_64
liblrdf2-0.5.0-lp150.1.9.x86_64
liblsan0-7.3.1+r258812-lp150.2.10.x86_64
libltdl7-2.4.6-lp150.1.47.x86_64
liblua5_3-5-5.3.4-lp150.1.46.x86_64
liblvm2app2_2-2.02.177-lp150.5.1.x86_64
liblvm2cmd2_02-2.02.177-lp150.5.1.x86_64
liblwres160-9.11.2-lp150.8.6.1.x86_64
liblz4-1-1.8.0-lp150.1.10.x86_64
liblzma5-5.2.3-lp150.2.16.x86_64
liblzo2-2-2.10-lp150.2.10.x86_64
libmagic1-5.32-lp150.5.17.x86_64
libmbim-1.16.0-lp150.1.3.x86_64
libmbim-glib4-1.16.0-lp150.1.3.x86_64
libmetalink3-0.1.3-lp150.1.7.x86_64
libminizip1-1.2.11-lp150.1.49.x86_64
libmjpegutils-2_0-0-2.0.0-lp150.5.2.x86_64
libmm-glib0-1.6.12-lp150.1.4.x86_64
libmms0-0.6.4-lp150.1.7.x86_64
libmng2-2.0.3-lp150.1.7.x86_64
libmnl0-1.0.4-lp150.1.8.x86_64
libmodman1-2.0.1-lp150.1.6.x86_64
libmount1-2.31.1-lp150.7.6.1.x86_64
libmozjs-52-52.6.0-lp150.1.3.x86_64
libmp3lame0-3.100-lp150.1.5.x86_64
libmpc3-1.1.0-lp150.1.22.x86_64
libmpcdec5-1.2.6-lp150.1.7.x86_64
libmpeg2-0-0.5.1-lp150.1.2.x86_64
libmpeg2encpp-2_0-0-2.0.0-lp150.5.2.x86_64
libmpfr6-4.0.1-lp150.1.21.x86_64
libmpg123-0-1.25.10-lp150.1.1.x86_64
libmplex2-2_0-0-2.0.0-lp150.5.2.x86_64
libmpx2-7.3.1+r258812-lp150.2.10.x86_64
libmpxwrappers2-7.3.1+r258812-lp150.2.10.x86_64
libmtdev1-1.1.5-lp150.1.9.x86_64
libncurses6-6.1-lp150.3.14.x86_64
libndp0-1.6-lp150.1.8.x86_64
libneon27-0.30.2-lp150.2.2.x86_64
libnetfilter_conntrack3-1.0.6-lp150.1.11.x86_64
libnettle6-3.4-lp150.2.3.x86_64
libnewt0_52-0.52.20-lp150.5.5.x86_64
libnfnetlink0-1.0.1-lp150.2.1.x86_64
libnghttp2-14-1.31.1-lp150.1.1.x86_64
libnl-config-3.3.0-lp150.1.14.noarch
libnl3-200-3.3.0-lp150.1.14.x86_64
libnm0-1.10.6-lp150.3.1.x86_64
libnpth0-1.5-lp150.2.1.x86_64
libnsl2-1.2.0-lp150.2.20.x86_64
libnuma1-2.0.11-lp150.2.4.x86_64
libofa0-0.9.3-lp150.1.6.x86_64
libogg0-1.3.2-lp150.1.7.x86_64
libopenal1-1.17.2-lp150.2.2.x86_64
libopenjp2-7-2.3.0-lp150.1.5.x86_64
libopenjpeg1-1.5.2-lp150.2.7.x86_64
libopenssl1_1-1.1.0h-lp150.3.6.1.x86_64
libopus0-1.2.1-lp150.1.11.x86_64
liborc-0_4-0-0.4.28-lp150.1.6.x86_64
libp11-kit0-0.23.2-lp150.2.2.x86_64
libpackagekitqt5-0-0.9.6-lp150.2.1.x86_64
libpango-1_0-0-1.40.14-lp150.1.15.x86_64
libparted0-3.2-lp150.7.2.x86_64
libpcap1-1.8.1-lp150.2.14.x86_64
libpci3-3.5.6-lp150.1.6.x86_64
libpciaccess0-0.14-lp150.1.3.x86_64
libpcre1-8.41-lp150.4.15.x86_64
libphonon4qt5-4.10.1-lp150.1.2.x86_64
libpixman-1-0-0.34.0-lp150.1.8.x86_64
libplist3-2.0.0-lp150.1.10.x86_64
libpng16-16-1.6.34-lp150.1.5.x86_64
libpolkit-qt5-1-1-0.112.0-lp150.1.10.x86_64
libpolkit0-0.114-lp150.2.3.1.x86_64
libpoppler-qt5-1-0.62.0-lp150.2.3.x86_64
libpoppler73-0.62.0-lp150.2.5.x86_64
libpopt0-1.16-lp150.2.15.x86_64
libpostproc54-3.4.4-lp150.9.1.x86_64
libprocps6-3.3.12-lp150.4.1.x86_64
libproxy1-0.4.15-lp150.2.2.x86_64
libproxy1-config-kde-0.4.15-lp150.2.2.x86_64
libproxy1-networkmanager-0.4.15-lp150.2.2.x86_64
libproxy1-pacrunner-webkit-0.4.15-lp150.2.2.x86_64
libpsl5-0.20.1-lp150.1.3.x86_64
libpulse-mainloop-glib0-11.1-lp150.4.1.x86_64
libpulse0-11.1-lp150.4.1.x86_64
libpwquality-lang-1.4.0-lp150.1.3.noarch
libpwquality1-1.4.0-lp150.1.3.x86_64
libpython3_6m1_0-3.6.5-lp150.1.5.x86_64
libqalculate14-2.2.1-lp150.2.1.x86_64
libqca-qt5-2.1.3-lp150.2.8.x86_64
libqca-qt5-plugins-2.1.3-lp150.2.8.x86_64
libqmi-glib5-1.20.0-lp150.1.3.x86_64
libqmi-tools-1.20.0-lp150.1.3.x86_64
libqrencode4-4.0.0-lp150.1.3.x86_64
libqt5-qdbus-5.9.4-lp150.1.22.x86_64
libqt5-qtgraphicaleffects-5.9.4-lp150.1.3.x86_64
libqt5-qtimageformats-5.9.4-lp150.1.4.x86_64
libqt5-qtpaths-5.9.4-lp150.1.22.x86_64
libqt5-qtquickcontrols-5.9.4-lp150.1.3.x86_64
libqt5-qtquickcontrols2-5.9.4-lp150.1.4.x86_64
libqt5-qttranslations-5.9.5-lp150.1.1.x86_64
libqt5-qtvirtualkeyboard-5.9.4-lp150.1.2.x86_64
libqt5-qtwayland-5.9.4-lp150.2.2.x86_64
libqt5-qtwebengine-5.10.1-lp150.2.1.x86_64
libraptor2-0-2.0.15-lp150.1.9.x86_64
libraw1394-11-2.1.1-lp150.1.10.x86_64
libraw16-0.18.9-lp150.1.1.x86_64
libre2-0-20180901-lp150.7.3.1.x86_64
libreadline7-7.0-lp150.7.8.x86_64
libreiserfscore0-3.6.27-lp150.1.10.x86_64
librest-0_7-0-0.8.1-lp150.1.5.x86_64
librsvg-2-2-2.42.3-lp150.1.20.x86_64
libruby2_5-2_5-2.5.0-lp150.2.11.x86_64
libsasl2-3-2.1.26-lp150.3.7.x86_64
libsbc1-1.3-lp150.1.15.x86_64
libschroedinger-1_0-0-1.0.11-lp150.1.9.x86_64
libseccomp2-2.3.2-lp150.1.9.x86_64
libsecret-1-0-0.18.5-lp150.1.11.x86_64
libsecret-lang-0.18.5-lp150.1.11.noarch
libselinux1-2.6-lp150.2.14.x86_64
libsemanage1-2.6-lp150.1.33.x86_64
libsensors4-3.4.0-lp150.2.7.x86_64
libsepol1-2.6-lp150.1.32.x86_64
libserd-0-0-0.28.0-lp150.2.4.x86_64
libsgutils2-1_43-2-1.43-lp150.6.1.x86_64
libsignon-qt5-1-8.59-lp150.1.13.x86_64
libslang2-2.3.1a-lp150.3.3.x86_64
libsmartcols1-2.31.1-lp150.7.6.1.x86_64
libsnappy1-1.1.3-lp150.1.7.x86_64
libsndfile1-1.0.28-lp150.3.3.1.x86_64
libsoftokn3-3.36.4-lp150.2.3.1.x86_64
libsolv-tools-0.6.34-lp150.1.2.x86_64
libsord-0-0-0.16.0-lp150.1.4.x86_64
libsoup-2_4-1-2.62.2-lp150.1.1.x86_64
libsoxr0-0.1.2-lp150.1.7.x86_64
libspandsp2-0.0.6-lp150.1.12.x86_64
libspeex1-1.2-lp150.1.12.x86_64
libspeexdsp1-1.2~rc3-lp150.2.7.x86_64
libsqlite3-0-3.23.1-lp150.1.1.x86_64
libsratom-0-0-0.6.0-lp150.1.5.x86_64
libsrtp1-1.6.0-lp150.2.3.x86_64
libssh2-1-1.8.0-lp150.2.3.x86_64
libssh4-0.7.5-lp150.4.1.x86_64
libstdc++6-7.3.1+r258812-lp150.2.10.x86_64
libstorage-ng-lang-3.3.312-lp150.2.6.1.noarch
libstorage-ng-ruby-3.3.312-lp150.2.6.1.x86_64
libstorage-ng1-3.3.312-lp150.2.6.1.x86_64
libswresample2-3.4.4-lp150.9.1.x86_64
libswscale4-3.4.4-lp150.9.1.x86_64
libsystemd0-234-lp150.20.6.1.x86_64
libtag1-1.11.1-lp150.3.3.1.x86_64
libtasn1-4.13-lp150.2.2.x86_64
libtasn1-6-4.13-lp150.2.2.x86_64
libtdb1-1.3.15-lp150.1.8.x86_64
libteamdctl0-1.27-lp150.2.3.x86_64
libthai-data-0.1.27-lp150.1.3.x86_64
libthai0-0.1.27-lp150.1.3.x86_64
libtheoradec1-1.1.1-lp150.1.7.x86_64
libtheoraenc1-1.1.1-lp150.1.7.x86_64
libtiff5-4.0.9-lp150.4.3.1.x86_64
libtirpc-netconfig-1.0.2-lp150.2.3.1.x86_64
libtirpc3-1.0.2-lp150.2.3.1.x86_64
libts0-1.13-lp150.1.6.x86_64
libtsan0-7.3.1+r258812-lp150.2.10.x86_64
libtwolame0-0.3.13-lp150.1.8.x86_64
libubsan0-7.3.1+r258812-lp150.2.10.x86_64
libudev1-234-lp150.20.6.1.x86_64
libudisks2-0-2.6.5-lp150.1.13.x86_64
libunistring2-0.9.9-lp150.1.1.x86_64
libunwind-1.2.1-lp150.2.1.x86_64
libupower-glib3-0.99.7-lp150.1.6.x86_64
libusb-1_0-0-1.0.21-lp150.1.8.x86_64
libusbmuxd4-1.0.10-lp150.3.6.x86_64
libustr-1_0-1-1.0.4-lp150.2.15.x86_64
libutempter0-1.1.6-lp150.3.19.x86_64
libuuid1-2.31.1-lp150.7.6.1.x86_64
libv4l-1.14.1-lp150.1.5.x86_64
libv4l1-0-1.14.1-lp150.1.5.x86_64
libv4l2-0-1.14.1-lp150.1.5.x86_64
libv4lconvert0-1.14.1-lp150.1.5.x86_64
libva-drm2-2.0.0-lp150.2.4.x86_64
libva-glx2-2.0.0-lp150.2.4.x86_64
libva-x11-2-2.0.0-lp150.2.4.x86_64
libva2-2.0.0-lp150.2.4.x86_64
libvdpau1-1.1.1-lp150.1.9.x86_64
libverto1-0.2.6-lp150.3.15.x86_64
libvidstab1_1-1.1.0-lp150.8.1.x86_64
libvisual-0.4.0-lp150.1.7.x86_64
libvorbis0-1.3.6-lp150.3.3.1.x86_64
libvorbisenc2-1.3.6-lp150.3.3.1.x86_64
libvorbisfile3-1.3.6-lp150.3.3.1.x86_64
libvpx4-1.6.1-lp150.3.6.x86_64
libwacom-data-0.23-lp150.1.9.x86_64
libwacom2-0.23-lp150.1.9.x86_64
libwavpack1-5.1.0-lp150.2.1.x86_64
libwayland-client0-1.14.0-lp150.1.4.x86_64
libwayland-cursor0-1.14.0-lp150.1.4.x86_64
libwayland-egl1-18.0.2-lp150.17.2.x86_64
libwayland-server0-1.14.0-lp150.1.4.x86_64
libwebp6-0.5.0-lp150.1.16.x86_64
libwebpdemux2-0.5.0-lp150.1.16.x86_64
libwebpmux2-0.5.0-lp150.1.16.x86_64
libwebrtc_audio_processing1-0.3-lp150.1.17.x86_64
libwicked-0-6-0.6.47-lp150.1.1.x86_64
libwrap0-7.6-lp150.1.48.x86_64
libx264-152-0.152svn20180305-lp150.3.1.x86_64
libx265-151-2.7-lp150.3.1.x86_64
libx86emu1-1.12-lp150.1.7.x86_64
libxapian30-1.4.5-lp150.1.6.x86_64
libxcb-composite0-1.13-lp150.1.2.x86_64
libxcb-cursor0-0.1.3-lp150.2.6.x86_64
libxcb-damage0-1.13-lp150.1.2.x86_64
libxcb-dpms0-1.13-lp150.1.2.x86_64
libxcb-dri2-0-1.13-lp150.1.2.x86_64
libxcb-dri3-0-1.13-lp150.1.2.x86_64
libxcb-glx0-1.13-lp150.1.2.x86_64
libxcb-icccm4-0.4.1-lp150.1.10.x86_64
libxcb-image0-0.4.0-lp150.1.7.x86_64
libxcb-keysyms1-0.4.0-lp150.1.7.x86_64
libxcb-present0-1.13-lp150.1.2.x86_64
libxcb-randr0-1.13-lp150.1.2.x86_64
libxcb-record0-1.13-lp150.1.2.x86_64
libxcb-render-util0-0.3.9-lp150.1.7.x86_64
libxcb-render0-1.13-lp150.1.2.x86_64
libxcb-shape0-1.13-lp150.1.2.x86_64
libxcb-shm0-1.13-lp150.1.2.x86_64
libxcb-sync1-1.13-lp150.1.2.x86_64
libxcb-util1-0.4.0-lp150.1.7.x86_64
libxcb-xfixes0-1.13-lp150.1.2.x86_64
libxcb-xinerama0-1.13-lp150.1.2.x86_64
libxcb-xkb1-1.13-lp150.1.2.x86_64
libxcb-xv0-1.13-lp150.1.2.x86_64
libxcb1-1.13-lp150.1.2.x86_64
libxkbcommon-x11-0-0.8.0-lp150.1.4.x86_64
libxkbcommon0-0.8.0-lp150.1.4.x86_64
libxkbfile1-1.0.9-lp150.1.6.x86_64
libxml2-2-2.9.7-lp150.1.7.x86_64
libxml2-tools-2.9.7-lp150.1.7.x86_64
libxshmfence1-1.2-lp150.1.7.x86_64
libxslt-tools-1.1.32-lp150.1.6.x86_64
libxslt1-1.1.32-lp150.1.6.x86_64
libxtables12-1.6.2-lp150.1.1.x86_64
libxvidcore4-1.3.5-lp150.1.2.x86_64
libyaml-0-2-0.1.7-lp150.1.3.x86_64
libyui-ncurses-pkg8-2.48.5.2-lp150.2.3.1.x86_64
libyui-ncurses8-2.50.1-lp150.1.2.x86_64
libyui-qt-graph8-2.44.6-lp150.1.11.x86_64
libyui-qt-pkg8-2.45.15-lp150.1.2.x86_64
libyui-qt8-2.49.2-lp150.1.1.x86_64
libyui8-3.4.0-lp150.1.8.x86_64
libz1-1.2.11-lp150.1.49.x86_64
libzbar0-0.10_2013_02_28-lp150.3.3.x86_64
libzimg2-2.7.4-lp150.2.1.x86_64
libzio1-1.06-lp150.2.15.x86_64
libzip5-1.5.1-lp150.1.2.x86_64
libzvbi0-0.2.35-lp150.2.5.x86_64
libzypp-17.3.1-lp150.1.1.x86_64
lifecycle-data-openSUSE-1-lp150.2.1.noarch
linux-glibc-devel-4.15-lp150.1.23.noarch
listres-1.0.4-lp150.1.1.x86_64
logrotate-3.13.0-lp150.2.1.x86_64
lsof-4.91-lp150.1.1.x86_64
lsscsi-0.28-lp150.1.8.x86_64
luit-20150706-lp150.1.6.x86_64
lvm2-2.02.177-lp150.5.1.x86_64
mailx-12.5-lp150.1.12.x86_64
make-4.2.1-lp150.5.25.x86_64
mbimcli-bash-completion-1.16.0-lp150.1.3.x86_64
media-player-info-22-lp150.1.6.noarch
metatheme-breeze-common-5.12.6-lp150.2.3.1.x86_64
milou5-5.12.6-lp150.2.3.1.x86_64
milou5-lang-5.12.6-lp150.2.3.1.noarch
mkcomposecache-1.2.1-lp150.1.6.x86_64
mkfontdir-1.0.7-lp150.1.6.x86_64
mkfontscale-1.1.2-lp150.1.7.x86_64
mobile-broadband-provider-info-20170310-lp150.1.7.noarch
mozilla-nspr-4.19-lp150.1.2.x86_64
mozilla-nss-3.36.4-lp150.2.3.1.x86_64
mozilla-nss-certs-3.36.4-lp150.2.3.1.x86_64
mozilla-nss-tools-3.36.4-lp150.2.3.1.x86_64
mpg123-openal-1.25.10-lp150.1.1.x86_64
mpg123-pulse-1.25.10-lp150.1.1.x86_64
mtools-4.0.18-lp150.1.8.x86_64
nano-2.9.6-lp150.1.1.x86_64
nano-lang-2.9.6-lp150.1.1.noarch
ncurses-utils-6.1-lp150.3.14.x86_64
net-tools-2.0+git20170221.479bb4a-lp150.3.1.x86_64
net-tools-lang-2.0+git20170221.479bb4a-lp150.3.1.noarch
netcfg-11.6-lp150.1.1.noarch
noto-sans-fonts-20170919-lp150.2.1.noarch
nss-mdns-0.10-lp150.1.8.x86_64
numactl-2.0.11-lp150.2.4.x86_64
oclock-1.0.4-lp150.1.1.x86_64
openSUSE-build-key-1.0-lp150.2.1.noarch
openSUSE-release-15.0-lp150.129.1.x86_64
openSUSE-release-ftp-15.0-lp150.129.1.x86_64
openal-soft-1.17.2-lp150.2.2.x86_64
openssh-7.6p1-lp150.7.4.x86_64
openssh-askpass-1.2.4.1-lp150.1.6.x86_64
openssh-helpers-7.6p1-lp150.7.4.x86_64
openssl-1.1.0h-lp150.1.1.noarch
openssl-1_1-1.1.0h-lp150.3.6.1.x86_64
os-prober-1.74-lp150.2.2.x86_64
oxygen5-icon-theme-5.45.0-lp150.1.1.noarch
oxygen5-icon-theme-large-5.45.0-lp150.1.1.noarch
oxygen5-sounds-5.12.5-lp150.1.2.x86_64
p11-kit-0.23.2-lp150.2.2.x86_64
p11-kit-tools-0.23.2-lp150.2.2.x86_64
p7zip-16.02-lp150.4.2.x86_64
pam-1.3.0-lp150.4.6.x86_64
pam-config-0.95-lp150.2.1.x86_64
parted-3.2-lp150.7.2.x86_64
parted-lang-3.2-lp150.7.2.noarch
patterns-base-base-20171206-lp150.15.9.1.x86_64
patterns-base-minimal_base-20171206-lp150.15.9.1.x86_64
patterns-base-x11-20171206-lp150.15.9.1.x86_64
patterns-kde-kde-20170319-lp150.7.1.noarch
patterns-kde-kde_plasma-20170319-lp150.7.1.noarch
patterns-kde-kde_yast-20170319-lp150.7.1.noarch
patterns-yast-yast2_basis-20180409-lp150.3.1.x86_64
pciutils-3.5.6-lp150.1.6.x86_64
pciutils-ids-20171206-lp150.1.3.noarch
perl-5.26.1-lp150.6.3.1.x86_64
perl-Bootloader-0.921-lp150.3.3.1.x86_64
perl-CPAN-Changes-0.400002-lp150.1.7.noarch
perl-Config-Crontab-1.45-lp150.1.7.noarch
perl-Devel-Symdump-2.18-lp150.1.7.noarch
perl-Digest-SHA1-2.13-lp150.1.7.x86_64
perl-Encode-Locale-1.05-lp150.1.7.noarch
perl-File-Listing-6.04-lp150.1.7.noarch
perl-HTML-Parser-3.72-lp150.1.8.x86_64
perl-HTML-Tagset-3.20-lp150.1.6.noarch
perl-HTTP-Cookies-6.04-lp150.1.6.noarch
perl-HTTP-Daemon-6.01-lp150.1.7.noarch
perl-HTTP-Date-6.02-lp150.1.6.noarch
perl-HTTP-Message-6.14-lp150.1.3.noarch
perl-HTTP-Negotiate-6.01-lp150.1.7.noarch
perl-IO-HTML-1.001-lp150.1.7.noarch
perl-IO-Socket-SSL-2.052-lp150.1.3.noarch
perl-LWP-MediaTypes-6.02-lp150.1.7.noarch
perl-LWP-Protocol-https-6.06-lp150.1.7.noarch
perl-Net-DBus-1.1.0-lp150.1.8.x86_64
perl-Net-HTTP-6.17-lp150.1.5.noarch
perl-Net-SSLeay-1.81-lp150.1.9.x86_64
perl-Parse-RecDescent-1.967015-lp150.1.7.x86_64
perl-Pod-Coverage-0.23-lp150.1.7.noarch
perl-Test-Pod-1.51-lp150.1.7.noarch
perl-Test-Pod-Coverage-1.10-lp150.1.7.noarch
perl-TimeDate-2.30-lp150.1.3.noarch
perl-Try-Tiny-0.30-lp150.1.3.noarch
perl-URI-1.73-lp150.1.3.noarch
perl-WWW-RobotRules-6.02-lp150.1.7.noarch
perl-X11-Protocol-0.56-lp150.1.6.x86_64
perl-X500-DN-0.29-lp150.1.6.x86_64
perl-XML-NamespaceSupport-1.12-lp150.1.7.noarch
perl-XML-Parser-2.44-lp150.1.25.x86_64
perl-XML-SAX-0.99-lp150.1.6.x86_64
perl-XML-SAX-Base-1.09-lp150.1.8.noarch
perl-XML-SAX-Expat-0.51-lp150.1.6.noarch
perl-XML-Simple-2.24-lp150.1.7.noarch
perl-XML-Twig-3.52-lp150.1.8.noarch
perl-base-5.26.1-lp150.6.3.1.x86_64
perl-gettext-1.07-lp150.1.49.x86_64
perl-libwww-perl-6.31-lp150.1.3.noarch
permissions-20180125-lp150.2.3.1.x86_64
pesign-0.112-lp150.2.2.x86_64
pesign-obs-integration-10.0-lp150.5.1.x86_64
phonon4qt5-backend-gstreamer-4.9.0-lp150.1.15.x86_64
pigz-2.3.3-lp150.1.8.x86_64
pinentry-1.1.0-lp150.2.4.x86_64
pinentry-qt5-1.1.0-lp150.2.4.x86_64
pkg-config-0.29.2-lp150.1.49.x86_64
plasma-framework-5.45.0-lp150.2.1.x86_64
plasma-framework-components-5.45.0-lp150.2.1.x86_64
plasma-framework-lang-5.45.0-lp150.2.1.noarch
plasma-framework-private-5.45.0-lp150.2.1.x86_64
plasma-nm5-5.12.6-lp150.3.3.1.x86_64
plasma-nm5-lang-5.12.6-lp150.3.3.1.noarch
plasma5-addons-5.12.6-lp150.2.3.1.x86_64
plasma5-addons-lang-5.12.6-lp150.2.3.1.noarch
plasma5-defaults-openSUSE-15.0~git20180504T125857~b35c1c4-lp150.1.1.noarch
plasma5-desktop-5.12.6-lp150.3.3.1.x86_64
plasma5-desktop-lang-5.12.6-lp150.3.3.1.noarch
plasma5-integration-plugin-5.12.6-lp150.2.3.1.x86_64
plasma5-integration-plugin-lang-5.12.6-lp150.2.3.1.noarch
plasma5-pa-5.12.5-lp150.2.1.x86_64
plasma5-pa-lang-5.12.5-lp150.2.1.noarch
plasma5-session-5.12.6-lp150.2.3.1.noarch
plasma5-session-wayland-5.12.6-lp150.2.3.1.noarch
plasma5-theme-openSUSE-15.0~git20180504T125857~b35c1c4-lp150.1.1.noarch
plasma5-workspace-5.12.6-lp150.2.3.1.x86_64
plasma5-workspace-branding-openSUSE-15.0~git20180504T125857~b35c1c4-lp150.1.1.noarch
plasma5-workspace-lang-5.12.6-lp150.2.3.1.noarch
plasma5-workspace-libs-5.12.6-lp150.2.3.1.x86_64
polkit-0.114-lp150.2.3.1.x86_64
polkit-default-privs-13.2-lp150.8.3.1.noarch
polkit-kde-agent-5-5.12.5-lp150.1.1.x86_64
polkit-kde-agent-5-lang-5.12.5-lp150.1.1.noarch
poppler-data-0.4.8-lp150.1.3.noarch
powerdevil5-5.12.5-lp150.1.1.x86_64
powerdevil5-lang-5.12.5-lp150.1.1.noarch
ppp-2.4.7-lp150.3.3.x86_64
procps-3.3.12-lp150.4.1.x86_64
proxymngr-1.0.4-lp150.1.3.x86_64
psmisc-23.0-lp150.4.3.1.x86_64
psmisc-lang-23.0-lp150.4.3.1.noarch
publicsuffix-20180312-lp150.1.1.noarch
pulseaudio-11.1-lp150.4.1.x86_64
pulseaudio-bash-completion-11.1-lp150.4.1.x86_64
pulseaudio-lang-11.1-lp150.4.1.noarch
pulseaudio-module-bluetooth-11.1-lp150.4.1.x86_64
pulseaudio-module-gconf-11.1-lp150.4.1.x86_64
pulseaudio-module-jack-11.1-lp150.4.1.x86_64
pulseaudio-module-lirc-11.1-lp150.4.1.x86_64
pulseaudio-module-x11-11.1-lp150.4.1.x86_64
pulseaudio-module-zeroconf-11.1-lp150.4.1.x86_64
pulseaudio-utils-11.1-lp150.4.1.x86_64
purpose-5.45.0-lp150.1.1.x86_64
purpose-lang-5.45.0-lp150.1.1.noarch
python-rpm-macros-2017.12.22.d9968ab-lp150.1.6.noarch
python3-3.6.5-lp150.1.1.x86_64
python3-appdirs-1.4.3-lp150.1.6.noarch
python3-base-3.6.5-lp150.1.5.x86_64
python3-bind-9.11.2-lp150.8.6.1.noarch
python3-curses-3.6.5-lp150.1.1.x86_64
python3-dbm-3.6.5-lp150.1.1.x86_64
python3-packaging-16.8-lp150.1.6.noarch
python3-pip-10.0.1-lp150.1.2.noarch
python3-ply-3.10-lp150.1.6.noarch
python3-pyparsing-2.2.0-lp150.1.12.noarch
python3-setuptools-38.4.1-lp150.1.3.noarch
python3-six-1.11.0-lp150.2.3.noarch
qqc2-desktop-style-5.45.0-lp150.1.1.x86_64
readline-doc-7.0-lp150.7.8.noarch
rendercheck-1.5-lp150.1.3.x86_64
rgb-1.0.6-lp150.1.7.x86_64
rp-pppoe-3.12-lp150.4.33.x86_64
rpm-4.14.1-lp150.9.3.1.x86_64
rstart-1.0.5-lp150.1.3.x86_64
rtkit-0.11+git.20130926-lp150.1.8.x86_64
ruby-2.5-lp150.1.5.x86_64
ruby-common-2.1-lp150.3.1.noarch
ruby2.5-2.5.0-lp150.2.11.x86_64
ruby2.5-rubygem-abstract_method-1.2.1-lp150.1.9.x86_64
ruby2.5-rubygem-cfa-0.6.4-lp150.1.1.x86_64
ruby2.5-rubygem-cfa_grub2-0.6.5-lp150.1.5.x86_64
ruby2.5-rubygem-cheetah-0.5.0-lp150.1.11.x86_64
ruby2.5-rubygem-fast_gettext-1.6.0-lp150.1.4.x86_64
ruby2.5-rubygem-gem2rpm-0.10.1-lp150.3.30.x86_64
ruby2.5-rubygem-ruby-augeas-0.5.0-lp150.1.12.x86_64
ruby2.5-rubygem-ruby-dbus-0.14.0-lp150.1.6.x86_64
ruby2.5-rubygem-simpleidn-0.0.9-lp150.1.2.x86_64
ruby2.5-stdlib-2.5.0-lp150.2.11.x86_64
sbc-1.3-lp150.1.15.x86_64
sddm-0.17.0-lp150.9.6.1.x86_64
sddm-branding-openSUSE-0.17.0-lp150.9.6.1.x86_64
sddm-theme-openSUSE-15.0~git20180504T125857~b35c1c4-lp150.1.1.noarch
sed-4.4-lp150.2.2.x86_64
sed-lang-4.4-lp150.2.2.noarch
sessreg-1.1.1-lp150.1.7.x86_64
setxkbmap-1.3.1-lp150.1.7.x86_64
sg3_utils-1.43-lp150.6.1.x86_64
sgml-skel-0.7.1-lp150.1.8.noarch
shadow-4.5-lp150.5.20.x86_64
shared-mime-info-1.9-lp150.2.8.x86_64
shared-mime-info-lang-1.9-lp150.2.8.noarch
shim-14-lp150.8.5.1.x86_64
showfont-1.0.5-lp150.1.3.x86_64
smproxy-1.0.6-lp150.1.3.x86_64
solid-imports-5.45.0-lp150.2.2.x86_64
solid-tools-5.45.0-lp150.2.2.x86_64
sonnet-5.45.0-lp150.1.2.x86_64
sound-theme-freedesktop-0.8-lp150.1.7.noarch
spectacle-17.12.3-lp150.2.2.x86_64
spectacle-lang-17.12.3-lp150.2.2.noarch
suse-module-tools-12.4-lp150.1.7.x86_64
syntax-highlighting-5.45.0-lp150.1.13.x86_64
sysconfig-0.84.3-lp150.3.3.2.x86_64
sysconfig-netconfig-0.84.3-lp150.3.3.2.x86_64
system-group-hardware-20170617-lp150.3.34.noarch
system-group-wheel-20170617-lp150.3.34.noarch
system-user-bin-20170617-lp150.3.34.noarch
system-user-daemon-20170617-lp150.3.34.noarch
system-user-lp-20170617-lp150.3.34.noarch
system-user-nobody-20170617-lp150.3.34.noarch
system-user-root-20170617-lp150.1.48.noarch
systemd-234-lp150.20.6.1.x86_64
systemd-bash-completion-234-lp150.20.6.1.noarch
systemd-presets-branding-openSUSE-12.2-lp150.12.1.noarch
systemd-presets-common-SUSE-15-lp150.1.1.noarch
systemd-sysvinit-234-lp150.20.6.1.x86_64
systemsettings5-5.12.5-lp150.1.1.x86_64
systemsettings5-lang-5.12.5-lp150.1.1.noarch
sysuser-shadow-2.0-lp150.2.40.noarch
sysvinit-tools-2.88+-lp150.1.9.x86_64
tar-1.30-lp150.2.3.2.x86_64
tar-lang-1.30-lp150.2.3.2.noarch
tar-rmt-1.30-lp150.2.3.2.x86_64
tcl-8.6.7-lp150.4.20.x86_64
terminfo-base-6.1-lp150.3.14.x86_64
thin-provisioning-tools-0.7.5-lp150.1.8.x86_64
time-1.9-lp150.1.2.x86_64
timezone-2018e-lp150.2.6.1.x86_64
tk-8.6.7-lp150.1.15.x86_64
traceroute-2.0.21-lp150.1.11.x86_64
twm-1.0.10-lp150.1.2.x86_64
ucode-intel-20180807-lp150.2.7.1.x86_64
udev-234-lp150.20.6.1.x86_64
udisks2-2.6.5-lp150.1.13.x86_64
udisks2-lang-2.6.5-lp150.1.13.noarch
unzip-6.00-lp150.3.3.1.x86_64
unzip-doc-6.00-lp150.3.3.1.x86_64
update-alternatives-1.19.0.4-lp150.2.25.x86_64
update-desktop-files-84.87-lp150.1.1.noarch
upower-0.99.7-lp150.1.6.x86_64
upower-lang-0.99.7-lp150.1.6.noarch
usb_modeswitch-2.5.1-lp150.1.9.x86_64
usb_modeswitch-data-2.5.1-lp150.1.9.noarch
usbmuxd-1.1.0-lp150.1.5.x86_64
util-linux-2.31.1-lp150.7.6.1.x86_64
util-linux-lang-2.31.1-lp150.7.6.1.noarch
util-linux-systemd-2.31.1-lp150.7.6.1.x86_64
viewres-1.0.4-lp150.1.3.x86_64
wallpaper-branding-openSUSE-15.0-lp150.6.1.noarch
which-2.21-lp150.2.15.x86_64
wicked-0.6.47-lp150.1.1.x86_64
wicked-service-0.6.47-lp150.1.1.x86_64
wireless-regdb-2018.05.31-lp150.2.6.1.noarch
wpa_supplicant-2.6-lp150.3.3.1.x86_64
x11-tools-0.1-lp150.2.3.noarch
x11perf-1.6.0-lp150.1.4.x86_64
xauth-1.0.10-lp150.1.7.x86_64
xbacklight-1.2.1-lp150.1.3.x86_64
xbiff-1.0.3-lp150.1.6.x86_64
xbitmaps-1.1.1-lp150.1.6.noarch
xcalc-1.0.6-lp150.1.5.x86_64
xclipboard-1.1.3-lp150.1.5.x86_64
xclock-1.0.7-lp150.1.3.x86_64
xcmsdb-1.0.5-lp150.1.3.x86_64
xcompmgr-1.1.7-lp150.1.3.x86_64
xconsole-1.0.7-lp150.1.7.x86_64
xcursor-themes-1.0.4-lp150.1.3.noarch
xcursorgen-1.0.6-lp150.1.7.x86_64
xdbedizzy-1.1.0-lp150.1.3.x86_64
xdg-user-dirs-0.16-lp150.1.7.x86_64
xdg-user-dirs-lang-0.16-lp150.1.7.noarch
xdg-utils-20170508-lp150.3.3.2.noarch
xditview-1.0.4-lp150.1.3.x86_64
xdm-1.1.11-lp150.10.1.x86_64
xdmbgrd-0.6-lp150.1.10.x86_64
xdpyinfo-1.3.2-lp150.1.7.x86_64
xedit-1.2.2-lp150.1.3.x86_64
xev-1.2.2-lp150.1.3.x86_64
xeyes-1.1.1-lp150.1.3.x86_64
xf86-input-evdev-2.10.5-lp150.1.10.x86_64
xf86-input-joystick-1.6.3-lp150.1.8.x86_64
xf86-input-keyboard-1.9.0-lp150.1.8.x86_64
xf86-input-libinput-0.27.1-lp150.1.1.x86_64
xf86-input-mouse-1.9.2-lp150.2.4.x86_64
xf86-input-vmmouse-13.1.0-lp150.1.7.x86_64
xf86-input-void-1.4.1-lp150.1.7.x86_64
xf86-input-wacom-0.34.2-lp150.1.10.x86_64
xf86-video-fbdev-0.4.4-lp150.1.7.x86_64
xf86-video-vesa-2.4.0-lp150.1.1.x86_64
xf86dga-1.0.3-lp150.1.3.x86_64
xfd-1.1.2-lp150.1.3.x86_64
xfindproxy-1.0.4-lp150.1.3.x86_64
xfontsel-1.0.5-lp150.1.3.x86_64
xfs-1.2.0-lp150.2.1.x86_64
xfsinfo-1.0.5-lp150.1.3.x86_64
xfwp-1.0.3-lp150.1.3.x86_64
xgamma-1.0.6-lp150.1.3.x86_64
xgc-1.0.5-lp150.1.3.x86_64
xhost-1.0.7-lp150.1.7.x86_64
xinit-1.4.0-lp150.1.1.x86_64
xinput-1.6.2-lp150.1.3.x86_64
xkbcomp-1.4.1-lp150.1.1.x86_64
xkbevd-1.1.4-lp150.1.3.x86_64
xkbprint-1.0.4-lp150.1.3.x86_64
xkbutils-1.0.4-lp150.1.3.x86_64
xkeyboard-config-2.23.1-lp150.1.2.noarch
xkeyboard-config-lang-2.23.1-lp150.1.2.noarch
xkill-1.0.4-lp150.1.5.x86_64
xli-1.17+git20170726.0bb4fb4-lp150.1.9.x86_64
xload-1.1.3-lp150.1.1.x86_64
xlogo-1.0.4-lp150.1.3.x86_64
xlsatoms-1.1.2-lp150.1.3.x86_64
xlsclients-1.1.3-lp150.1.3.x86_64
xlsfonts-1.0.5-lp150.1.3.x86_64
xmag-1.0.6-lp150.1.5.x86_64
xman-1.1.4-lp150.1.3.x86_64
xmessage-1.0.4-lp150.1.6.x86_64
xmlcharent-0.3-lp150.1.7.noarch
xmodmap-1.0.9-lp150.1.7.x86_64
xmore-1.0.2-lp150.1.3.x86_64
xorg-scripts-1.0.1-lp150.1.3.noarch
xorg-x11-7.6_1-lp150.1.6.noarch
xorg-x11-driver-input-7.6_1-lp150.1.6.noarch
xorg-x11-driver-video-7.6_1-lp150.2.5.x86_64
xorg-x11-essentials-7.6_1-lp150.1.6.noarch
xorg-x11-fonts-7.6-lp150.2.1.noarch
xorg-x11-fonts-core-7.6-lp150.2.1.noarch
xorg-x11-libs-7.6.1-lp150.1.2.noarch
xorg-x11-server-1.19.6-lp150.6.1.x86_64
xorg-x11-server-extra-1.19.6-lp150.6.1.x86_64
xorg-x11-server-wayland-1.19.6-lp150.6.1.x86_64
xorriso-1.4.6-lp150.1.5.x86_64
xplsprinters-1.0.1-lp150.1.3.x86_64
xpr-1.0.5-lp150.1.1.x86_64
xprehashprinterlist-1.0.1-lp150.1.3.x86_64
xprop-1.2.2-lp150.1.6.x86_64
xrandr-1.5.0-lp150.2.7.x86_64
xrdb-1.1.0-lp150.1.6.x86_64
xrefresh-1.0.5-lp150.1.8.x86_64
xrestop-0.4-lp150.1.5.x86_64
xrx-1.0.4-lp150.1.3.x86_64
xscope-1.4.1-lp150.1.3.x86_64
xset-1.2.3-lp150.2.3.x86_64
xsetmode-1.0.0-lp150.1.3.x86_64
xsetpointer-1.0.1-lp150.1.3.x86_64
xsetroot-1.1.1-lp150.1.6.x86_64
xsm-1.0.4-lp150.1.1.x86_64
xstdcmap-1.0.3-lp150.1.3.x86_64
xtables-plugins-1.6.2-lp150.1.1.x86_64
xterm-bin-330-lp150.2.8.x86_64
xtermset-0.5.2-lp150.1.7.x86_64
xtrap-1.0.3-lp150.1.1.x86_64
xvidtune-1.0.3-lp150.1.3.x86_64
xvinfo-1.1.3-lp150.1.3.x86_64
xwd-1.0.6-lp150.1.3.x86_64
xwininfo-1.1.3-lp150.1.3.x86_64
xwud-1.0.5-lp150.1.1.x86_64
xz-5.2.3-lp150.2.16.x86_64
xz-lang-5.2.3-lp150.2.16.noarch
yast2-4.0.79-lp150.2.6.1.x86_64
yast2-bootloader-4.0.35-lp150.2.5.1.x86_64
yast2-branding-openSUSE-4.0.4-lp150.1.1.noarch
yast2-branding-openSUSE-Oxygen-4.0.4-lp150.1.1.noarch
yast2-control-center-4.0.3-lp150.1.1.x86_64
yast2-control-center-qt-4.0.3-lp150.1.1.x86_64
yast2-core-4.0.3-lp150.2.3.1.x86_64
yast2-country-4.0.22-lp150.2.3.1.x86_64
yast2-country-data-4.0.22-lp150.2.3.1.x86_64
yast2-firewall-4.0.25-lp150.1.1.noarch
yast2-hardware-detection-4.0.0-lp150.1.1.x86_64
yast2-installation-4.0.67-lp150.2.9.1.noarch
yast2-ldap-4.0.0-lp150.1.1.x86_64
yast2-mail-4.0.3-lp150.1.2.noarch
yast2-network-4.0.31-lp150.1.1.noarch
yast2-online-update-4.0.0-lp150.1.1.noarch
yast2-online-update-frontend-4.0.0-lp150.1.1.noarch
yast2-packager-4.0.67-lp150.2.6.2.x86_64
yast2-pam-4.0.0-lp150.1.1.noarch
yast2-perl-bindings-4.0.1-lp150.1.1.x86_64
yast2-pkg-bindings-4.0.11-lp150.2.6.1.x86_64
yast2-proxy-4.0.1-lp150.2.3.1.noarch
yast2-ruby-bindings-4.0.6-lp150.1.1.x86_64
yast2-security-4.0.0-lp150.1.1.noarch
yast2-services-manager-4.0.3-lp150.1.3.noarch
yast2-storage-ng-4.0.200-lp150.2.9.1.x86_64
yast2-sysconfig-4.0.0-lp150.1.1.noarch
yast2-trans-de-84.87.20180514.157a0650d-lp150.1.1.noarch
yast2-trans-en-84.87.20180514.157a0650d-lp150.1.1.noarch
yast2-trans-stats-2.19.0-lp150.1.6.noarch
yast2-transfer-4.0.0-lp150.1.1.x86_64
yast2-tune-4.0.0-lp150.1.7.x86_64
yast2-update-4.0.17-lp150.2.3.1.x86_64
yast2-users-4.0.5-lp150.1.1.x86_64
yast2-xml-4.0.0-lp150.1.1.x86_64
yast2-ycp-ui-bindings-4.0.0-lp150.1.4.x86_64
zlib-devel-1.2.11-lp150.1.49.x86_64
zypper-1.14.5-lp150.1.1.x86_64
zypper-aptitude-1.14.5-lp150.1.1.noarch
zypper-lifecycle-plugin-0.6.1490613702.a925823-lp150.2.4.noarch
zypper-log-1.14.5-lp150.1.1.noarch

Bilder:
Einleitungsbild und Beitragsbild von von geralt via pixabay / Lizenz: CC0 Creative Commons

Es gibt unter Linux viele Möglichkeiten Ordner - vor allem für die Cloud - zu verschlüsseln. Das faktische Ausscheiden von EncFS durch zahreiche Sicherheitslücken hat die Zahl eher noch erhöht (siehe auch: Kommentar: Open Source Realitäten - Fallbeispiel EncFS). 

SiriKali bietet eine Oberfläche für viele dieser Lösungen.

SiriKali verwendet Qt als Toolkit, weshalb es sich optisch sehr gut in alle Linux-Desktopumgebungen integriert. SiriKali unterstützt theoretisch eCryptFS, CryFS, gocryptfs und securefs. Die Unterstützung von CryFS ermöglicht zudem eine nahtlose Kooperation mit der Plasma Vault des KDE Projekts (siehe: Plasma Vault - Cloud-Verschlüsselung einfach gemacht).

Die Auswahl der unterstützen Lösungen bedeutet aber eine weitgehende Beschränkung auf Linux-Endgeräte. Lediglich Securefs ist unter Linux, macOS und Windows verfügbar. Mobile Lösungen fehlen zur Zeit vollständig. Plattformübergreifende Verschlüsselung ist daher nur eingeschränkt möglich. Wer das benötigt sollte sich Cryptomator ansehen.

Binärpakete stehen für über den OBS für Debian 9 und 8, sowie für Fedora 24 bis 27, openSUSE Tumbleweed und Ubuntu 16.04 bis 18.04 zur Verfügung.


Bilder:
Einleitungs- und Beitragsbild von kreatikar via pixabay / Lizenz: CC0 Creative Commons

Am 24. September erscheint das jährliche Update von macOS. Dieses Jahr nach der Mojave Wüste benannt. Während sich die Medien auf die Neuerungen an der Oberfläche konzentrieren wird es mit Sicherheit auch wieder Stimmen geben, die veraltete Versionsstände der wichtigen Kommandozeilenwerkzeuge bemängeln. Der Grund dafür liegt in den ungelösten Konflikten zwischen Apple und den FSF-Lizenzen.

FreeBSD Entwickler behaupten gerne mal Apples macOS, wäre die populärste Variante von FreeBSD. Die Behauptung ist so richtig und falsch wie die äquivalente Aussage im Linux-Umfeld, dass Android die beliebteste Linux-Distribution ist.

MacOS ist eine Weiterentwicklung von NeXTStep, das wiederum zumindest teilweise auf einem BSD-Kern basierte. Seit Version MacOS X 10.5 ist das Betriebssystem auch als offizielles Unix zertifiziert. MacOS bzw. dessen freier Kern Darwin haben in einem späteren Entwicklungsschritt Teile des FreeBSD-Userlands integriert und pflegen diese Version unabhängig von FreeBSD weiter.

Als einfacher Anwender kann man die Verwandtschaft vor allem an der Verzeichnisstruktur der Systempartition erkennen, welche die üblichen Unix-Systemordner enthält (/bin, /sbin, /etc, /usr usw.) und an der Verfügbarkeit zahlloser freier Werkzeuge auf der Kommandozeile. Genau diese sind jedoch teilweise in sehr antiquierten Versionen vorhanden:

  • bash: 3.2.57
  • rsync: 3.6.9
  • nano: 2.0.6
  • VIM 8.0

Diese Versionen sind nicht (nur) so alt, weil sich Apple nicht mehr für den BSD-Unterbau interessieren würde oder weil man professionelle Anwender zu Linux treiben will, sondern aus Lizenz-Gründen. Diese beim Erscheinen von Yosemite zusammen gestellte Tabelle zeigt sehr deutlich die Unterschiede. Während Softwarebestandteile unter einer freiheitlichen Lizenz wie MIT oder BSD leidlich aktuell sind, können die meisten GPL-Bestandteile geradewegs ins Softwaremuseum eingeliefert werden.

Der Hintergrund liegt in der Softwarelizensierung. Viele Bestandteile haben in den letzten Jahren ihre Lizenz von GPLv2 auf GPLv3 geändert und Apple weigert sich konsequent GPLv3 Bestandteile in macOS zu integrieren. Der genaue Grund ist nicht bekannt, aber die Ursache muss in einem Unterschied zwischen den Versionen 2 und 3 liegen. Manche vermuten dahinter das Copyleft auf Softwarepatente.

Aus diesem Grund fährt Apple die Zahl der enthaltenen GPL-Softwarebestandteile kontinuierlich zurück und hält die noch ausgelieferten Bestandteile bei der GPLv2 Variante. Zwischen Version 10.5 und Version 10.12 ist die Zahl der unter GPL lizensierten Softwarebestandteile von 47 auf 16 gesunken.

Während der veraltete Unterbau hauptsächlich (semi-)professionelle Anwender tangiert, betrifft ein anderer Konflikt zwischen Apple und FSF die meisten Anwender viel deutlicher. Die GPL ist absolut inkompatibel mit einer Distribution über den Mac App Store oder den iOS AppStore. Die FSF verbietet durch die GPL weitere Restriktionen an der Software, während Apples App Store faktisch weitere Restriktionen einführt. Software, die über die App Stores verteilt werden soll, muss daher unter eine andere Lizenz gestellt werden.

Die Frage ist halt wem das langfristig mehr schadet. Apple oder der Verbreitung der GPL?


Bilder:
Einleitungs- und Beitragsbild von annemazo via pixabay / Lizenz: CC0 Creative Commons

"

11. September 2018

Ein Workaround zum Problem mit PhantomJS/listlinks bzw. free-games-on-steam, das die URL nicht geladen werden kann ist nun online auf Github.

https://github.com/1nn3/listlinks

In der Statistik zum Blog, ist dieses Projekt unter den Top-10, deshalb möchte ich folgendes bekannt geben:

Offiziell werde ich es auf Github oder später auf GitLab weiter-pflegen und habe vor, die Blog-Artikel dazu hier zu löschen. Diese habe ich aber soweit in die README migriert.

An der Benutzung sollte sich insofern nichts ändern, als dass man das Git-Repository klont und sich dann für z.B. free-games-on-steam einen Cronjob anlegt (entsprechend dem Muster im folgenden Listing):

git clone https://github.com/1nn3/listlinks
cd listlinks
sh ./free-games-on-steam.sh --listlinks "phantomjs --ssl-protocol=TLSv1.2 ./listlinks.js" # work-a-round

Das Skript free-games-on-steam soll auch stellvertretend ein Beispiel für andere Anwendungsfälle sein.

Das PhantomJS-Skript aus meinem Projekt listlinks ist z.Z. kaputt, und damit funktioniert z.B. auch das Skript free-games-on-steam nicht:

$ free-games-on-steam
E: Fail to load URL: https://store.steampowered.com/news/?headlines=1

bzw.

$ phantomjs listlinks.js https://store.steampowered.com/news/?headlines=1
E: Fail to load URL: https://store.steampowered.com/news/?headlines=1

Das sollte alle HTTPS-Seiten betreffen. Mit gesetztem Schalter --debug=true erhält man Details zum Fehler:

$ phantomjs --debug=true listlinks.js https://store.steampowered.com/news/?headlines=1
[...]
2018-09-10T22:55:19 [DEBUG] Network - Resource request error: QNetworkReply::NetworkError(UnknownNetworkError) ( "Error while setting the maximum protocol version" ) URL: "https://store.steampowered.com/news/?headlines=1"
[...]

Erklären kann ich das Problem (noch) nicht wirklich, aber Abhilfe schafft --ssl-protocol entsprechend zu setzen (s. dazu auch die Handbuchseite von phantomjs(1)):

phantomjs --ssl-protocol=TLSv1.2 listlinks.js https://store.steampowered.com/news/?headlines=1

(Mit z.B. --ssl-protocol=TLSv1.3, tritt dann der Fehler auf.)

Wie ich das im Projekt (https://github.com/1nn3/listlinks) löse, muss ich mir noch überlegen. Aber ich werden wohl einen Schalter --phantomjs-args mittels getopt(1) implementieren…

10. September 2018

LinuxDay 2018 am 13. Okt in Dornbirn

Am 13. Oktober 2018 findet zum zwanzigsten Mal der LinuxDay in der HLT Dornbirn in Österreich statt.

Auf der Webseite der Veranstaltung findet sich in diesem Jahr daher neben reichlich Informationen zur Veranstaltung auch ein Abriss ihrer Geschichte.

Auch das Vortragsprogramm ist wieder gut gefüllt. Einen Überblick, über die geplanten Vorträge findet ihr unter: https://www.linuxday.at/vortraege/2018

Der Eintritt ist frei. Also packt eure Sachen und schaut vorbei. ;-)

9. September 2018

Wenn man eine Diskussion über die Vorteile von Open Source diskutiert kommt zuverlässig ein Beitrag, der die Möglichkeit zur Mitarbeit preist. Wenn man einen Vorschlag hat oder der ursprüngliche Autor keine Lust/Zeit mehr hat, kann einfach jemand anderes übernehmen. Faktisch entstehen aber viele Open Source Projekte in Gutsherrenmanier und in der Realität entstehen eher neue Projekte oder ein Forks.

Ein sehr gutes Beispiel für diese Probleme der Open Source Entwicklung ist EncFS. Dabei handelt es sich um eine - zeitweilig sogar mal "die" - Verschlüsselungslösung für Dateien, die besonders durch den massiven Ausbau von Cloudspeichern an Popularität gewonnen hat. Die dateibasierte Verschlüsselungslösung eignete sich nämlich hervorragende für den Cloudeinsatz. Das kommerziell höchst erfolgreiche Boxcryptor integrierte den EncFS-Menchamismus in seine Windows-Lösung, weshalb man auch von Linux aus auf mittels Boxcryptor verschlüsselte Ordner zugreifen konnte.

Diese Erfolgsgeschichte endete mit einem Audit im Januar 2014, der gravierende Sicherheitsmängel, vor allem im Cloudeinsatz aufzeigte. Der Entwickler sieht sich momentan (und das sind nun auch schon mehr als 4 Jahre) außerstande die immer noch bestehenden Sicherheitslücken zu schließen.

EncFS war 2014 eine wichtige Software mit einem hohen Verbreitungsgrad. Nach dem verbreiteten Open Source Argument hätten sich nun Entwickler finden müssen, die dem Originalautor beispringen und die Probleme beheben. Das ist jedoch nicht geschehen. Stattdessen wurden zahllose Alternativen aus der Taufe gehoben. Die populärsten freien Projekte heoßen CryFS, Cryptomator und Gocrypt. Letzteres empfiehlt quasi sogar der EncFS-Entwickler.

Jetzt könnte man sagen, dass doch alles gut sein. Die Open Source Gemeinschaft hätte doch alternative und sichere Projekte aus der Taufe gehoben. Dabei unterschätzt die Gemeinschaft aber permanent zwei wichtige Punkte. Erstens möchten die meisten nicht dutzende Alternativen mit dem gleichen Zweck ("Cloud-Verschlüsselung") haben. Sie möchten eine gut funktionierende Variante, die ihnen durch eine Suchmaschine ihrer Wahl als Lösung angeboten wird, ohne tagelange Recherche nach Audits und Vor- und Nachteilen. Zweitens unterschätzt die Open Source Gemeinschaft permanent die Bedeutung eines etablierten Namens für das Marketing. Spätestens durch Boxcryptor kannten viele EncFS und es war leicht dazu Tutorials und ähnliches zu finden. Es funktionierte außerdem betriebssystemübergreifend und integrierte sich durch Drittprojekte in alle Desktopumgebungen. EncFS erschien als seriöse Lösungen. Die zahllosen alternativen Nachfolgeprojekte müssen alle wieder Bekanntheit erreichen, teilen den bereits relativ kleinen Markt unter sich auf und funktionieren meist nur auf einem Betriebssystem.

Open Source schafft es nur dann Entwickler für bestehende Projekte zu gewinnen, wenn diese professionell organisiert sind (z. B. in einem Verein oder einer Foundation) und das Projekt zu groß ist um eine Neuentwicklung sinnvoll erscheinen zu lassen. Bestehende Projektentwickler bemühen sich aber auch zu selten aktiv um einen Nachfolger, weil sie in Gutsherrenmentalität ihr Projekt als Eigentum begreifen. Man lässt das Projekt lieber sterben als es wegzugeben.

Die Partizipationsmöglichkeit und Nachhaltigkeit ist somit eher Theorie als Praxis. Letztlich müssen die Anwender bei Open Source die Entwicklersprünge meistens mit vollziehen. Der permanente Wechsel von einem sterbenden Projekt zum nächsten totgeweihten Unterfangen ist jedoch ermüdend.


Bilder:
Einleitungs- und Beitragsbild von 3dman_eu via pixabay / Lizenz: CC0 Creative Commons

"

8. September 2018

Mit Elektronik für 30 Euro und ein wenig Geduld kann sich jeder einen eigenen Feinstaubsensor basteln. Wie das geht, habe ich mir heute im Rahmen der Digitalen Woche Kiel erklären lassen und den fertigen Sensor gleich mit nach Hause nehmen können.

Feinstaub ist gerade ein großes Thema. Spätestens seit dem Diesel-Skandal. Dabei, habe ich heute gelernt, sind der Abrieb durch Bremsen und von Reifen an viel befahrenen Straßen eine vor größere Quelle für Feinstaub. In Stuttgart gibt es regelmäßig Probleme mit der Luftqualität, deswegen hat sich dort schon vor einige Zeit eine Bürgerinitiative gegründet, die selbst Messdaten sammelt und unter luftdaten.info zur Verfügung stellt.

Über die Website des Landes Schleswig-Holstein finde ich nur die Daten von zwei offiziellen Messstellen in Kiel – keine Ahnung, ob das alle sind. Aber über die Karte von luftdaten.info finde ich in Kiel bereits jetzt rund 20 private Feinstaubmessstellen.

Heute werden noch einige Sensoren dazu kommen, denn der Nucleon e.V. und die Toppoint hatten zum Workshop eingeladen. Dabei sind zehn neue Sensoren zusammen gebaut worden. Die sollten jetzt nach und nach bei luftdaten.info auftauchen.

Meine Erfahrungen mit Elektronik beschränken sich bisher auf den Elektronik-Baukasten, den ich als Kind hatte. Mit diesen Kästen konnte ich mit ein paar Bauteilen, Kabeln und Steckverbindungen damals zum Beispiel ein Transistorradio zusammenbauen. Seither habe ich mich damit nicht weiter beschäftigt und mich deswegen auch nicht an den eigenen Feinstaubsensor getraut. Doch die Ehrfurcht war unbegründet!

Zusammenstecken

So ein Feinstaubsensor besteht aus drei Bauteilen: Einem MikroController – das ist sozusagen der Computer, der die Daten verarbeitet und per WLAN oder LoRaWAN weitergibt. Dann gibt es einen Sensor für den Feinstaub und einen für den Luftdruck. Die drei Bauteile steckt man auch nur mit ein paar kleinen Käbelchen zusammen. Strom dran und los geht es. Die größte Herausforderung war es, die Teile so zusammenzustecken, dass sie hielten. Ich musst das ein wenig mit Kabelbindern macgyvern, damit es nicht wieder auseinander fiel.

Okay, das war ein wenig geschummelt, denn Robert Jensen vom Nucleon e.V., der durch den Workshop führte, hatte die MikroController schon vorbereitet. Normalerweise muss man da noch eine Software aufspielen. Dafür hätten dann aber alle Teilnehmenden ihr Laptop mitbringen, eine Software installieren müssen usw. Den Schritt hat und Robert erspart – der klingt aber auch nicht so kompliziert, denn die nötige Software ist schon super vorkonfiguriert.

Konfiguration aufrufen

Wenn der Sensor startet, macht er ein eigenes WLAN auf, in das man sich einloggt. Dann öffnet sich die Konfiguration, in der man eigentlich erst einmal nur die Daten für den WLAN-Zugang anpassen muss, damit der MikroController ins Internet kommt. In unserem Fall musste ich noch ein Häkchen für den einen Luftdrucksensor entfernen und für den zusätzlichen Sensor setzen. Außerdem betreibt der Nucleon e.V. eine eigene Luftdatenbank – für die haben wir auch noch die nötigen Zugangsdaten eingestellt.

Fertig

Dann kann man das Gebilde in ein Plastikrohr stopfen und vor das Fenster hängen. Durch das Fenster muss man ein USB-Kabel für die Stromversorgung legen und man muss ich überlegen, wie man das Rohr da draußen anbringt. Bei mir baumelt das Konstrukt jetzt vor dem Fenster Richtung Förde und schnüffelt, was die Marine in die Luft pustet.

Die Werte müssten irgendwann auf der Karte von luftdaten.info erscheinen – bis dahin gibt es die im Dashboard des Nucleon e.V..

Wer den Termin heute verpasst hat, bekommt eine zweite Chance: Am 17. und 18. November findet ein Maker Faire in Kiel statt. Da wird es einen Workshop dazu geben.

Links

Feinstaubmessung selbstgebastelt

Manche Programme, die ich im Autostart betreibe, starten bei mir unter XFCE so schnell, dass ihre Icons nicht im Benachrichtigungs-Panel erscheinen - eben weil das Panel noch nicht bereit ist. Dies betrifft bei mir z.B. Davmail und Nextcloud. Daher möchte ich eine Verzögerung von 5 Sekunden einbauen, bevor diese Programme gestartet werden. Hier haben wir zwei Möglichkeiten: wir editieren die Autostartscripte, die unter ~/.config/autostart/ bereit liegen wir machen es Klicki-Bunti über XFCE-Menu - Einstellungen - Sitzung und Startverhalten - Automatisch gestartete Anwendungen

Manche Programme, die ich im Autostart betreibe, starten bei mir unter XFCE so schnell, dass ihre Icons nicht im Benachrichtigungs-Panel erscheinen – eben weil das Panel noch nicht bereit ist. Dies betrifft bei mir z.B. Davmail und Nextcloud. Daher möchte ich eine Verzögerung von 5 Sekunden einbauen, bevor diese Programme gestartet werden.

Hier haben wir zwei Möglichkeiten:

  1. wir editieren die Autostartscripte, die unter ~/.config/autostart/ bereit liegen
  2. wir machen es Klicki-Bunti über XFCE-Menu - Einstellungen - Sitzung und Startverhalten - Automatisch gestartete Anwendungen

Für beide gilt folgendes Befehlsschema:

/bin/sh -c "sleep 5 && BEFEHL"

(Es hat mich etwas Zeit gekostet, bis ich herausgefunden habe, dass ein simples sleep 2 && BEFEHL nicht funktioniert, sondern dass man eine Shell angeben muss und der anschließend auszuführende Befehl ebenfalls an diese Shell übergeben werden muss /bin/sh -c "sleep 5 && BEFEHL")

Für davmail sieht das z.B. so aus:

nano ~/.config/autostart/davmail.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=davmail
Comment=davmail
Exec=/bin/sh -c "sleep 5 && davmail"
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false

Das funktioniert prima… 🙂

share this
Achtung

Dieser Beitrag ist schon sehr alt, und die Infos hier sind sicherlich hoffnungslos veraltet…

Manche Programme, die ich im Autostart betreibe, starten bei mir unter XFCE so schnell, dass ihre Icons nicht im Benachrichtigungs-Panel erscheinen - eben weil das Panel noch nicht bereit ist. Dies betrifft bei mir z.B. Davmail und Nextcloud. Daher möchte ich eine Verzögerung von 5 Sekunden einbauen, bevor diese Programme gestartet werden.

Hier haben wir zwei Möglichkeiten:

  1. wir editieren die Autostartscripte, die unter ~/.config/autostart/ bereit liegen

  2. wir machen es Klicki-Bunti über XFCE-Menu - Einstellungen - Sitzung und Startverhalten - Automatisch gestartete Anwendungen

Für beide gilt folgendes Befehlsschema:

/bin/sh -c "sleep 5 && BEFEHL"

(Es hat mich etwas Zeit gekostet, bis ich herausgefunden habe, dass ein simples sleep 2 && BEFEHL nicht funktioniert, sondern dass man eine Shell angeben muss und der anschließend auszuführende Befehl ebenfalls an diese Shell übergeben werden muss /bin/sh -c "sleep 5 && BEFEHL")

Für davmail sieht das z.B. so aus:

nano ~/.config/autostart/davmail.desktop







[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=davmail
Comment=davmail
Exec=/bin/sh -c "sleep 5 && davmail"
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false

Das funktioniert prima… :)

6. September 2018

Nach einigen verzweifelten Stunden, habe ich endlich cgit unter einer Subdomain bei Debian zum laufen bekommen.

Damit ich es nicht wieder vergessen und es vielleicht ja auch noch ein paar anderen helfen kann, hier mal die Lösung zum Ganzen.

Konfiguration

$HTTP["host"] == "git.malte-kiefer.de" {
    setenv.add-environment += ( "CGIT_CONFIG" => "/etc/cgitrc" )
    alias.url = (
        "/cgit.css" => "/usr/share/cgit/cgit.css",
        "/cgit.png" => "/usr/share/cgit/cgit.png",
        "/cgit.cgi" => "/usr/lib/cgit/cgit.cgi",
        "/"         => "/usr/lib/cgit/cgit.cgi",
    )
    cgi.assign = ( ".cgi" => "" )
    url.rewrite-once = (
        "^/cgit\.(css|png)" => "$0",
        "^/.+" => "/cgit.cgi$0" 
    )
}

Natürlich müssen dafür folgende Servermodule noch aktiviert werden:

server.modules = (
		...
        "mod_alias",
        "mod_redirect",
        "mod_cgi",
        "mod_rewrite",
        ...
        )

Ich glaube an sich ist die Konfiguration ziemlich selbst erklärend, warum ich es unterlasse noch mehr dazu zu sagen. :-)

Nach einer etwas zu lang geratenen Pause geht es heute weiter in der Serie „Wie man Koha installiert und für Schulen einrichtet“. Nachdem das System installiert, das bibliographische Framework eingerichtet und grundlegende Einstellungen vorgenommen sind, werden wir uns in diesem Artikel mit der Aufnahme von Büchern in Koha bzw. der Katalogisierung beschäftigen.

Dieser Artikel ist ein Teil einer Serie:

  1. Installation und Einrichtung einer ersten Bibliothek
  2. Das bibliografische Framework
  3. Grundeinstellungen
  4. Buchaufnahme
  5. Drucken von Etiketten
  6. Ausleihkonditionen
  7. Verbinden mit einem Z.39.50 / SRU Server
  8. Benachrichtigungen und Erinnerungen
  9. Mahnungen und Gebühren

Buchaufnahme

Ein Buch können wir über den Punkt Katalogisierung → Neuer Titel → Schnellaufnahme aufnehmen.

Buchaufnahme

Es erscheint eine Eingabemaske, in der wir alle wichtigen Daten zu unserem Buch eingeben können. Als Beispiel habe ich hier das Buch „Irgendwie anders“ ausgewählt.

Eingabemaske Katalogisierung

Mit einem Klick auf „Speichern“ am oberen Bildschirmrand kommen wir zur nächsten Eingabemaske.

Exemplar hinzufügen

Wir haben bisher den Titel aufgenommen. Jetzt können wir zu diesem Titel Exemplare hinzufügen. In einer Schulbibliothek ist das in der Regel ein Exemplar. Manchmal existieren aber auch mehrere Exemplare eines Titels (v.a. wenn man auch Schulbücher mit in das System aufnimmt).

Exemplar hinzufügen

Die wichtigsten Felder sind die Sammlung, der Aufstellungsort, die Signatur und der Barcode. Die anderen Felder können zusätzlich ausgefüllt werden. Der Barcode sollte automatisch generiert werden, wenn man in das Feld klickt und die Systemeinstellung „autoBarcode“ aktiviert hat (siehe Teil 3 dieser Serie). Unter Sammlung erscheinen alle Werte, die wir ebenfalls in Teil 3 unter „Normierten Werten → CCODE“ eingerichtet haben. Ebenso der Aufstellungsort (Normierte Werte → LOC).

Signaturen und Systematik

Je nach Größe der Bibliothek ist es sinnvoll eine Systematik einzuführen. Eine Systematik beschreibt, wie man die Bücher gruppieren und innerhalb der Bibliothek ordnen möchte. Es gibt dafür verschiedene Systeme und generell ist es sinnvoll eine Systematik zu haben, die sich an der Stadtbibliothek oder einer anderen Bibliothek in der Nähe orientiert. So finden sich die Kinder schnell zurecht und lernen, wie man sich einer Bibliothek orientiert.

In Deutschland gibt es verschiedene Empfehlungen, die sich in ihrer Komplexität unterscheiden. Generell sollte die Systematik so einfach wie möglich sein, um eine schnelle Orientierung zu ermöglichen. Hier ein Beispiel von unserer Schulbibliothek (es fehlt die Erwachsenenliteratur):

Jede Kategorie hat also seine Farbe und ihre Abkürzung, die wir für die Signatur verwenden können.

Auch für Signaturen gibt es verschiedene Systeme und Möglichkeiten. Wir haben uns entschieden die Abkürzung aus der Systematik mit den ersten drei Buchstaben des Autors zu verbinden. In unserem Fall also „1.4 Cav“, d.h. „1.4“ für Bilderbücher ab 3 Jahren und „Cav“ für die ersten drei Buchstaben des Nachnamens der Autorin. Man kann aber auch fortlaufend Nummern vergeben.

Mit einem Klick auf „Exemplar hinzufügen“ wird das Exemplar in Koha gespeichert.

Detailansicht Titel

Fazit

Wir haben nun unseren ersten Titel in das System aufgenommen. Nach dem gleichen Muster können nun weitere Bücher oder auch andere Medien in Koha aufgenommen werden. Im nächsten Teil wird es um den Druck von Etiketten (mit Barcode) und Signaturschildern gehen.

Kommentar hinzufügen

Der Beitrag Teil 4: Katalogisierung – Wie man Koha installiert und für Schulen einrichtet erschien zuerst auf .:zefanjas:..

5. September 2018

Mozilla wird heute Firefox 62 veröffentlichen. Auch Firefox 62 ist wieder randvoll gefüllt mit Neuerungen. Dieser Artikel fast die wichtigsten Neuerungen zusammen.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Mehr Sicherheit für Firefox-Nutzer

Geschlossene Sicherheitslücken

Auch in Firefox 62 hat Mozilla wieder zahlreiche Sicherheitslücken geschlossen, worunter auch einige sind, welche von Mozilla als besonders kritisch eingestuft werden. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 62 daher für alle Nutzer dringend empfohlen.

Schutz vor Tracking wird mehr in den Vordergrund gestellt

Einen Schutz vor Tracking durch Webseiten besitzt Firefox bereits seit einiger Zeit. Mit Firefox 62 stellt Mozilla diesen mehr in den Vordergrund, indem ein Schalter zum Aktivieren respektive Deaktivieren in das Hauptmenü integriert worden ist.

Bei deaktiviertem Tracking-Schutz wird außerdem nun auch bei Klick auf das Info-Symbol in der Adressleiste auf den vorhandenen Tracking-Schutz hingewiesen und auf die Einstellungs-Seite verlinkt. Bisher wurde bei deaktiviertem Tracking-Schutz an dieser Stelle der Tracking-Schutz nicht einmal erwähnt.

Ebenfalls neu an dieser Stelle: eine Schaltfläche, über welche ohne Umwege alle Cookies und Websitedaten gelöscht werden können, welche zur Domain des aktiven Tabs gehören.

Firefox 62

Dies ist nur der Anfang einer größer angelegten Initiative, die Nutzer vor Tracking zu schützen. Firefox-Nutzer können in den nächsten Monaten noch einiges mehr erwarten.

Noch mehr Anpassungsmöglichkeiten für die Firefox-Startseite

Die Firefox-Startseite, welche auch standardmäßig beim Öffnen eines neuen Tabs erscheint, zeichnet sich durch unzählige Anpassungsmöglichkeiten aus. Auch in Firefox 62 kamen wieder kleinere Verbesserungen. So konnte bisher bereits festgelegt werden, ob es eine oder zwei Zeilen im Abschnitt „Wichtige Seiten“ geben soll, hier können nun bis zu vier Zeilen eingestellt werden. Im Bereich „Überblick“ gab es bislang überhaupt keine Konfigurationsmöglichkeit bezüglich der Zeilen. Auch hier kann nun zwischen einer bis vier Zeilen gewählt werden. Gleiches gilt für die Pocket-Highlights.

Firefox 62

Verbesserungen der Suche auf Firefox-Startseite

Ein paar der Kacheln mit den meistbesuchten Webseiten sind auf der Firefox-Startseite bei Installation von Firefox bereits vorbelegt. Mit Firefox 62 kommt standardmäßig eine Kachel von Google dazu – Google ist bekanntermaßen auch die Standard-Suchmaschine von Firefox – und die bereits vorhandene Kachel von Amazon wird geändert. Beide Kacheln fallen dadurch auf, dass sie zusätzlich zum Seiten-Logo auch eine Lupe in der Kachel haben.

Per Klick auf eine dieser speziellen Kacheln öffnet nicht etwa die Webseite von Google oder Amazon. Stattdessen springt der Cursor in die Adressleiste, wo bereits @google respektive @amazon vorausgefüllt ist. Der Nutzer muss also nur noch den Suchbegriff eingeben und kann auf diese Weise direkt auf der gewählten Webseite suchen. Die speziellen Schlüsselwörter @google und @amazon sind in der Adressleiste besonders hervorgehoben und funktionieren auch unabhängig vom neuen Tab, indem sie direkt in die Adressleiste eingegeben werden, wenn auf der jeweiligen Webseite gesucht werden soll. Die speziellen Schlüsselwörter funktionieren zusätzlich zu den Schlüsselwörtern, die der Nutzer für jede installierte Suchmaschine in den Firefox-Einstellungen festlegen kann.

Firefox 62 Such-Kacheln

Wie alle anderen Kacheln kann der Nutzer selbstverständlich auch diese Kacheln ganz einfach entfernen. Auch ist es möglich, diese neuen Such-Kacheln zusätzlich für DuckDuckGo, Bing, Wikipedia sowie eBay zu aktivieren.

Firefox 62 Such-Kacheln

Firefox 62 Such-Kacheln

Diese Änderung wird schrittweise an die Nutzer ausgerollt.

Eine weitere Neuerung betrifft das Suchfeld. Da das Suchfeld immer  ganz oben auf der Firefox-Startseite ist, ist dieses bislang verschwunden, wenn es mehr Inhalt auf der Seite gab und man gescrollt hat. Ab Firefox 62 ist das Suchfeld, welches nun auch etwas höher ist, fix am oberen Fensterrand positioniert, wenn man auf der Firefox-Startseite scrollt.

Firefox 62 Suchfeld

Firefox bietet nach Abmeldung von Firefox Sync Löschen der Daten an

Dank Synchronisationsmöglichkeit können Firefox-Nutzer ihre Chronik, Lesezeichen und mehr auf verschiedenen Geräten gleichzeitig nutzen. Nach Angaben von Mozilla haben einige Firefox-Nutzer die Erwartung, dass eine Abmeldung von Firefox Sync gleichbedeutend damit ist, dass Daten wie Chronik und Lesezeichen anschließend auch aus Firefox gelöscht werden. Wer sich auf einem Gerät von Firefox Sync wieder abmeldet, wird daher ab Firefox 62 gefragt, ob die lokalen Daten gelöscht werden sollen.

Firefox 62

Von den Sync-Servern werden die Daten dabei nicht gelöscht, wie auch in dem neuen Abmelde-Dialog klar kommuniziert wird. Wer das tun will, kann dies über accounts.firefox.com machen. Von dort aus können übrigens sämtliche Geräte von Firefox Sync getrennt werden, die derzeit verbunden sind, ohne dass man das entsprechende Gerät dafür bei sich haben muss.

Tipp: für mehr Sicherheit lässt sich auch eine Zwei-Schritt-Authentifizierung für Firefox Sync aktivieren.

Dialog zum Speichern von Lesezeichen verbessert

Den Dialog zum Speichern von Lesezeichen hat Mozilla visuell verbessert. Hier wird nun zusätzlich ein Vorschaubild sowie das Favicon der Webseite angezeigt, welche als Lesezeichen gespeichert werden soll.

Firefox 62

Verbesserungen für Firefox-Erweiterungen (WebExtensions)

Auch für Entwickler von WebExtensions gibt es wieder einige neue APIs und Verbesserungen bestehender APIs. Zwar gibt es, an der Menge gemessen, dieses Mal etwas weniger Neuerungen an der WebExtension-Front, das bedeutet aber nicht den Anfang eines Trends. Ganz im Gegenteil: Die nächste Firefox-Version, Firefox 63, wird aus WebExtension-Sicht der größte Release seit Firefox Quantum (Version 57) werden.

Neu in Firefox 62: Die Einstellungen von Erweiterungen, welche ein Symbol in die Navigations-Symbolleiste oder Adressleiste hinzufügen, können nun auch per Kontextmenü erreicht werden (Rechtsklick → Erweiterung verwalten).

Versteckte Tabs, eine mit Firefox 61 für Erweiterungen neu eingeführte Möglichkeit, lassen sich nun auch über das Pfeil-Menü in der Tab-Leiste erreichen. Auch das Chronik-Menü wurde um einen Zugangspunkt für versteckte Tabs erweitert.

Für Sidebars gibt es eine neue Option, welche festlegt, ob die Sidebar nach Installation der Erweiterung automatisch aktiviert werden soll oder nicht, bisher war dies immer der Fall. Weiter können WebExtensions nun Details von TLS-Zertikaten auslesen, was neue Sicherheits-Erweiterungen ermöglicht. Eigenschaften von Symbolen in der Navigations-Symbolleiste, wie Titel, Badge oder Popup können jetzt auch auf einer Pro-Fenster-Basis festgelegt werden. WebExtension-Themes können ab sofort auch die Farbe der Tab-Separatoren festlegen. Außerdem wird nicht länger die „theme“-Berechtigung benötigt, um das aktuell verwendete Design auszulesen. Das bedeutet, dass Erweiterungen nicht länger eine Berechtigung benötigen, wenn sie nur ihr eigenes Design an das vom Nutzer verwendete Firefox-Design anpassen wollen. Dazu kommen noch diverse andere kleine Verbesserungen.

Verbesserungen der Webplattform

Unterstützung für variable Schriften

Variable Schriften sind eine neue Technologie, welche große Vorteile bei der Verwendung von Schrift auf Webseiten bringt. Unterschiedliche Schriftbilder wie fette oder kursive Schrift benötigen bisher separate Schriftdateien, womit die Verwendung von Schriftarten immer ein Balance-Akt zwischen Darstellung und Webseiten-Performance war, da natürlich die Ladezeit der Webseite darunter leidet, je mehr Schriftarten geladen werden. Variable Schriften hingegen beinhalten zusätzliche Daten, welche die Generierung verschiedener Stile zur Laufzeit mit nur einer Schrift-Datei ermöglichen.

Mit Firefox 62 bekommt Firefox die Unterstützung für variable Schriften. Mit Firefox 63 werden die Entwickler-Werkzeuge um Funktionen für variable Schriften erweitert werden.

Sonstige Verbesserungen der Web-Plattform

Das CSS-Pseudoelement ::selection ist jetzt auch ohne -moz-Präfix verfügbar. Array.prototype.flat() und Array.prototype.flatMap() sind nun standardmäßig aktiviert. Navigator.registerProtocolHandler() ist nur noch in einem sicheren Kontext (z.B. HTTPS) ausführbar, die Unterstützung für navigator.registerContentHandler() wurde deaktiviert. Die Einstellung media.autoplay.enabled in about:config kontrolliert nun auch Audio-Elemente und nicht länger nur Video-Elemente.

Weitere Informationen zu Verbesserungen der Web-Plattform in Firefox 62 finden sich in den MDN web docs.

Neuerungen für Webentwickler

Inspektor-Werkzeug nun dreispaltig

Das Inspektor-Werkzeug hat standardmäßig nun drei statt nur zwei Spalten. Konkret wurde das Regeln-Panel aus der zweiten Spalte in eine eigene Spalte ausgelagert, was das Leben von Entwicklern vereinfacht, da man die Regeln nun parallel zum Box-Modell, den berechneten Werten oder Schriftarten offen haben kann. Per Schaltfläche kann aber jederzeit wieder zur zweispaltigen Ansicht gewechselt werden.

Firefox 62

CSS Shape Editor

Ein neuer CSS Shape Editor erlaubt die visuelle Bearbeitung von Shapes für die Verwendung in clip-path und shape-outside. Eine ausführliche Beschreibung zur Verwendung dieses Tools gibt es in den MDN web docs.

Firefox 62

Graphical Command Line Interface entfernt

Mittels Shift + F2 konnte bisher das sogenannte Graphical Command Line Interface, kurz: GCLI, aktiviert werden. Dabei handelte es sich um eine Art Kommandozeile, über welche bestimmte Kommandos ausgeführt werden konnten. Dieses Werkzeug wurde jedoch kaum genutzt, manche Optionen haben außerdem schon gar nicht mehr funktioniert. Aber mit der Entfernung des GCLI sind nicht alle Optionen verschwunden. So wurde für den Neustart des Browsers stattdessen ein Shortcut implementiert, welcher über die Browserkonsole ausgeführt werden kann (Strg + Alt + R), das Screenshot-Kommando steht nun mit diversen Parametern als „:screenshot“ in der Webkonsole zur Verfügung.

Sonstige Neuerungen für Webentwickler

Zu den Optionen, die Entwicklerwerkzeuge unten (Standard), am rechten Fensterrand oder in einem eigenen Fenster anzuzeigen, gibt es nun auch die Möglichkeit, die Entwicklerwerkzeuge am linken Fensterrand anzuzeigen. Die Split-Konsole (welche bei aktivierten Entwicklerwerkzeugen durch Drücken von ESC geöffnet wird) besitzt nun eine Schließen-Schaltfläche, so dass sie auch dann geschlossen werden kann, wenn man diese versehentlich geöffnet hat und nicht weiß, wie man sie wieder schließt. Im Cookie-Tab des Netzwerk-Panels wird jetzt auch das samesite-Attribut angezeigt.

Verbesserungen gab es auch beim CSS Grid Editor und beim in Firefox 61 neu eingeführten Werkzeug für Barrierefreiheit. Außerdem funktioniert der Responsive Design Modus nun auch in Tab-Umgebungen.

Weitere Informationen zu Änderungen für Webentwickler in Firefox 62 finden sich in den MDN web docs.

Neue Enterprise Policies

Mit Firefox 60 hat Mozilla die sogenannte Enterprise Policy Engine eingeführt, welche vor allem Unternehmen eine einfache Anpassung von Firefox via GPO (Windows) oder eine policies.json-Datei (alle Betriebssysteme) erlaubt.

Die folgenden Möglichkeiten, welche bereits seit Firefox ESR 60.o unterstützt worden sind, werden nun auch in der Mainstream-Version von Firefox unterstützt: Startseite festlegen, Anzeige einer separaten Suchleiste, Erweiterungen installieren, deinstallieren oder sperren, Webseiten blockieren, integrierte Authentifizierung konfigurieren, Firefox-Updates deaktivieren, Installation und Updates von System-Erweiterungen deaktivieren, Telemetrie deaktivieren, Seite überschreiben, die beim ersten Start erscheint, Seite mit den Neuerungen überschreiben, die nach einem Update erscheinen kann.

Die folgenden Möglichkeiten sind ganz neu dazu gekommen und werden ab Firefox 62 sowie Firefox ESR 60.2 unterstützt: Berechtigungen für Standort, Kamera, Mikrofon und Benachrichtigungen konfigurieren, Abweichende Server-URL für Firefox-Aktualisierungen, Hardwarebeschleunigung deaktivieren.

Tipp: Mit dem Enterprise Policy Generator wird die Konfiguration von Firefox zum Kinderspiel. Die vor wenigen Tagen erschienene Version 4.0 ist bereits für Firefox 62 sowie Firefox ESR 60.2 angepasst und macht das Finden der gesuchten Optionen noch einfacher.

Sandboxing für AutoConfig

Eine weitere Option im Unternehmens-Umfeld hört auf die Bezeichnung AutoConfig. Darüber können sämtliche Einstellungen verändert werden, welche auch über about:config erreicht werden können. Bisher war hierüber auch Scripting möglich, weswegen AutoConfig auch die Grundlage für sogenannte User-Scripts war. Mit dem mit Firefox 62 eingeführten Sandboxing kann nur noch die dokumentierte API genutzt werden, User-Scripts sind damit nicht mehr möglich. Das AutoConfig-Sandboxing existiert nur in stabilen Firefox-Versionen, nicht in Firefox ESR und auch nicht in Vorab-Versionen von Firefox.

Feld für Lesezeichen-Beschreibungen entfernt

Das Feld für Lesezeichen-Beschreibungen in der Bibliothek wurde entfernt. Diese Funktion wurde in der Vergangenheit nur von einem Bruchteil der Nutzer genutzt, hatte aber negative Performance-Auswirkungen für alle Nutzer. Nutzer, welche diese Funktion genutzt haben, können die Beschreibungen immer noch über einen Export der Lesezeichen als HTML oder JSON sichern. In Firefox 62 wurde nur das sichtbare Feld zum Bearbeiten entfernt, um Nutzern eine Gelegenheit zur Sicherung zu geben. Die Beschreibungen selbst werden dann mit einem der kommenden Updates gelöscht werden.

Optionale Features

Multi-Tab-Management

Bislang kann immer nur maximal ein Tab gleichzeitig verschoben oder geschlossen werden. Mozilla arbeitet an einer neuen Fähigkeit für Firefox, welche es erlaubt, mit mehreren Tabs gleichzeitig zu interagieren. In Firefox 62 ist das Multi-Tab-Management noch nicht fertig, lässt sich aber bereits aktivieren und teilweise testen. Dazu muss über about:config der Schalter browser.tabs.multiselect per Doppelklick auf true gesetzt werden. Dann können mehrere Tabs mit gedrückter Strg-Taste (macOS: Cmd) markiert und per Kontextmenü gleichzeitig zum Beispiel geschlossen oder stumm geschaltet werden. Eine standardmäßige Unterstützung ist derzeit für Firefox 64 geplant.

Sonstige Neuerungen in Firefox 62

Mozilla hat die Algorithmen für Vorschläge in der Adressleiste verbessert. Updates von System-Erweiterungen sind nicht länger an Firefox-Updates gekoppelt und können unabhängig voneinander deaktiviert werden. Defekte favicons.sqlite-Datenbanken kann Firefox nun erkennen und ggfs. durch Neu-Generierung reparieren. Die Flash-Sandbox unter Windows wurde um ein Level verschärft. Für Apple macOS wurde eine erste Version der Flash-Sandbox implementiert. In den Firefox-Einstellungen bei den gespeicherten Webseiten-Daten werden in der Spalte für „zuletzt verwendet“ relative Zeitangaben (z.B. „vor 34 Minuten“) verwendet. Die Performance vom Verschieben und Kopieren von Lesezeichen wurde erheblich verbessert. Außerdem wurde ein Problem mit Animationen auf Webseiten behoben, welches zu einer erhöhten CPU-Auslastung führen konnte. Schließlich wurde die Voraussetzung geschaffen, um Lightweight Themes zu neuen WebExtension-Themes aktualisieren zu können.

Der Beitrag Mozilla veröffentlicht Firefox 62 – die Neuerungen erschien zuerst auf soeren-hentzschel.at.

4. September 2018

In der folgende Reihe möchte ich mein Raspberry Pi 3 mit den folgenden Diensten installieren und konfigurieren:

  • Diet-Pi (als System)
  • PI-Hole (Adblocker, DHCP Server)
  • Unbound (DNS Server / DNSSEC)
  • PiVPN (OpenVPN Server)
  • Baikal (CalDav & CardDav Server)

Jeder Teil wird sich mit einem Part der Software beschäftigen. Ich werde ausführlich versuchen auf die Konfiguration einzugehen, wenn es fragen gibt findet ihr mich bei Jabber malte@malte-kiefer.de.

Diet-Pi

Diet-Pi wirbt damit ein leichgewichtes System für SBC zu sein, was diese kleine Grafik auch bestätigt:

https://malte-kiefer.de/img/cpu.png

Download & Installation

Das Image für RPI kann hier runtergeladen werden. Als nächstes entpacken wir das Archiv und kopieren es auf die SDKarte:

unp DietPi_RPi-ARMv6-Stretch.7z
dd if=DietPi_v6.13_RPi-ARMv6-Stretch.img of=/dev/sdb bs=4M conv=fsync

Jetzt die Karte in den RPI und starten.

Nachdem das System erfolgreich gestartet ist, wird es automatisch geupdatet und dann neu gestartet. Jetzt können wir anfangen die wichtigsten Einstellungen vor zu nehmen.

Passwort

Als erstes das root Passwort anpassen.

passwd

Netzwerk

In das Terminal folgendes eingeben

dietpi-config

Die Nummer 7 wählen. Ethernet auswählen, Mode auf Static ändern und dann IP anpassen und DNS auch. Ich habe persönlich noch WLAN deaktiviert. Wenn alles durch ist auch Apply gehen. Danach auf OK. Nochmal auf OK.

Zeitzone & Sprache

Passt die Locale an und die Zeitzone.

Fazit

Das wars auch schon. Jetzt haben wir den RPI mit einem ziemlich flotten System installiert. In den folgenden Teilen, werden wir uns dann mit der entsprechenden Software beschäftigen.

3. September 2018

Der tägliche Wahnsinn in der deutschen Verwaltung: ja, man kann Anträge online ausfüllen, ja, man kann Anträge dank neuem Personalausweis auch digital unterschreiben bzw. sich gegenüber dem Amt autorisieren, aber nein, PDF-Anhänge dürfen nicht größer als 1,5 MB sein. Kann man sich drüber aufregen. Fakt ist, meine Scans müssen für den Upload verkleinert werden. Gar nicht so einfach im ersten Moment.

Zum Glück gibt es Ghostscript (Linux-Hinweise, Windows-Download). Terminal bzw. Eingabeaufforderung auf, zum Verzeichnis navigiert und folgendes Kommando eingegeben:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=AUSGABE.pdf EINGABE.pdf

Hier gibt es drei bis vier Parameter:

  • Windows-Nutzer müssen gs durch gswin32 bzw. gswin64 ersetzen, bzw. im Zweifel der gesamte Pfad, d.h. "C:\Program Files\gs9.23\bin\gswin64.exe"
  • PDFSETTINGS hat mehrere Stufen bzw. Profile (von geringer bis hoher Qualität)
    Mit dieser Einstellung wird die Zielqualität, also umgedreht der Komprimierungsgrad eingestellt!
    • /screen (sehr klein)
    • /ebook (lesbar)
    • /prepress (druckbar)
    • /printer
    • /default
  • AUSGABE.pdf muss durch euren Ausgabepfad und
  • EINGABE.pdf durch den Eingabepfad ersetzt werden

Ausführen, fertig! Die Ergebnisse lassen sich sehen, so habe ich meine Files von 4 MB auf 200 KB komprimieren können und der Upload glückte.

Natürlich gibt es hierfür auch Scripts, die genau dieses Kommando einem abnehmen.

Quelle: https://askubuntu.com/a/256449

Der tägliche Wahnsinn in der deutschen Verwaltung: ja, man kann Anträge online ausfüllen, ja, man kann Anträge dank neuem Personalausweis auch digital unterschreiben bzw. sich gegenüber dem Amt autorisieren, aber nein, PDF-Anhänge dürfen nicht größer als 1,5 MB sein. Kann man sich drüber aufregen. Fakt ist, meine Scans müssen für den Upload verkleinert werden. Gar nicht so einfach im ersten Moment.

Zum Glück gibt es Ghostscript (Linux-Hinweise, Windows-Download). Terminal bzw. Eingabeaufforderung auf, zum Verzeichnis navigiert und folgendes Kommando eingegeben:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=AUSGABE.pdf EINGABE.pdf

Hier gibt es drei bis vier Parameter:

  • Windows-Nutzer müssen gs durch gswin32 bzw. gswin64 ersetzen, bzw. im Zweifel der gesamte Pfad, d.h. "C:\Program Files\gs9.23\bin\gswin64.exe"
  • PDFSETTINGS hat mehrere Stufen bzw. Profile (von geringer bis hoher Qualität)
    Mit dieser Einstellung wird die Zielqualität, also umgedreht der Komprimierungsgrad eingestellt!
    • /screen (sehr klein)
    • /ebook (lesbar)
    • /prepress (druckbar)
    • /printer
    • /default
  • AUSGABE.pdf muss durch euren Ausgabepfad und
  • EINGABE.pdf durch den Eingabepfad ersetzt werden

Ausführen, fertig! Die Ergebnisse lassen sich sehen, so habe ich meine Files von 4 MB auf 200 KB komprimieren können und der Upload glückte.

Natürlich gibt es hierfür auch Scripts, die genau dieses Kommando einem abnehmen.

Quelle: https://askubuntu.com/a/256449

Wie einige von euch ja wissen, nutze ich als meinen persönlichen Passwort Safe pass. Zusätzlich dazu, habe ich bei den Webseiten, bei denen es möglich ist noch TOTP aktiviert. Dafür hatte ich bis jetzt immer die Android App andOTP genutzt. Leider ist mir gestern mein Handy mal wieder schrott gegangen, und so habe ich mich nach einer guten alternative zu andOTP umgeschaut.

Und siehe da, was gibt ein Plugin für pass, was OTP unterstützt: pass-otp.

Installation

Ich will nur kurz den Weg der Installation beschreiben, für alle die Arch haben ist es einfach, es gibt das entsprechende Paket im Community Zweig: pass-otp

Bei Debian läuft es mal wieder per Hand:

git clone https://github.com/tadfisher/pass-otp
cd pass-otp
sudo make install

Benutzung

Die Benutzung ist recht einfach gehalten:

pass otp insert Amazon
Enter otpauth:// URI for Amazon:

Der Befehl gibt uns die Möglichkeit, für den Pass Eintrag Amazon den OTP URI zu hinterlegen, der wie folgt aussieht:

otpauth://totp/totp-secret?secret=AAAAAAAAAAAAAAAA&issuer=totp-secret

Folgende Variablen können angehangen und angepasst werden:

parameter default
algorithm sha1
period 30
digits 6

Nach dem erfolgreichen Speichern, kann man sich dann den aktuellen OTP wie folgt anzeigen lassen:

pass otp Amazon

Der Code wird dann angezeigt und für 45 Sekunden im Zwischenspeicher gespeichert.

Fazit

Eine wirklich leicht und einfach Lösung das entsprechende OTP Geheimniss mit in die GPG Passwortdatei zu speichern. Zum Punkt Sicherheit soll gesagt sein, Passwort und OTP am selben Ort zu speichern ist vielleicht nicht die beste Idee, muss aber jeder selber wissen.

2. September 2018

Stühlerücken in der Arch Linux-Welt. Wer nicht selber aus dem Arch User Repository die Pakete bauen möchte, greift auf AUR helper zurück. Nach dem Ende von yaourt und aurman wird die Suche nach Alternativen wieder unerlässlich. Im gleichen Atemzug lässt sich die Problematik dahinter abstrahieren und auf ein viel größeres Problem beziehen.

Dieser Artikel entstand als News-Mitteilung, gewann dann an Dynamik und hat eine philosophische Komponente über freie Software erhalten. Er ist länger als üblich und aus der Sicht eines Nutzers geschrieben, der viele FOSS-Produkte einsetzt und an einigen kleineren beteiligt war.

Prolog: das AUR

Seit 2012 bin ich Arch Linux-Nutzer. Neben der Möglichkeit, sein System ganz individuell zusammenzustellen (und dann wieder bei GNOME zu landen ;)), ist das Repository das Herzstück der Linux-Distribution, die eher für fortgeschrittene Linux-Nutzer empfohlen wird. Aktuelle und vielfältige Pakete sorgen für entspanntes Arbeiten, obskure Eigenheiten wie Debians "*-dev"-Pakete für Headerfiles bleiben erspart und minimieren die Dependency-Hell.

Und wenn ein Paket benötigt wird, das nicht über das Haupt-Repository zu beziehen ist, kommt das Arch User Repository ins Spiel. Hier lassen sich alle nahezu erdenklichen Pakete für Linux-Anwendungen finden. Im Unterschied zum normalen Repository sind diese "Pakete" nicht vorkompiliert, erhalten keine offizielle Unterstützung, bringen aber eine PKGBUILD-Datei mit, die abgerufen und mithilfe vom Kommando makepkg (enthalten in pacman) eingelesen wird. In der Datei stehen Paketinformationen, Abhängigkeiten und Build-Instruktionen. Ist das Paket gebaut, liegt es in einem für Pacman, dem Paketmanager, verständlichen Format vor und wird an diesen zur Installation übergeben. Am Ende des Tages verwaltet bei diesen "Custom" Packages der normale Paketmanager die Programmdateien, obgleich ein Paketupdate ein manuelles Neubauen erfordert. Schwierigkeiten bei dieser Verfahrensweise treten besonders dann auf, wenn AUR-Pakete von anderen AUR-Paketen abhängig sind, was zur manuellen Auflösung in Handarbeit führt. Wie genau das AUR funktioniert, lässt sich im Wiki-Artikel dazu nachlesen.

AUR helper

Ihr könnt es euch denken, die Nutzerschaft entwickelt seit jeher Helfer (sog. AUR helper), um diese Prozesse zu vereinfachen und den Komfort von pacman im AUR genießen zu können. Offizielle Unterstützung bleibt dafür aus (use at your own risk, weil der Paket-Input weniger streng kontrolliert wird), sodass es gerne rüberkommt, als würden AUR helper-Nutzer auch schwarze Messen feiern. Gut, der wahre Grund, warum AUR helper nicht unterstützt werden, ist hier nachzulesen, würde jedoch die Dramatik zerstören. Trotzdem finden die folgenden Helfer keinen Platz im sonst so vollständigen Arch Wiki finden und werden lediglich in einer Tabelle abgehandelt.

Welche AUR helper sind momentan verfügbar? Da geht die Qual der Wahl los - es gab andererseits bisher einige Quasi-Monopole. So galt überwiegend vor einigen Jahren noch "yaourt und gut ist". Funktioniert, ließ sich sogar mit einem Repository über Pacman installieren und vollbrang sein Dienst. Die Installation über Pacman war sogar ganz interessant, weil dies einer Knackpunkte auf dem Weg ist AUR ist. AUR helper lassen sich eben nicht aus dem normalen Arch Repository installieren, sondern müssen selber gebaut werden - wozu sie ja eigentlich benötigt werden. Wer nicht weiß, wie Pakete manuell über die PKGBUILD gebaut werden, hat an dieser Stelle schon ein echtes Henne-Ei-Problem.

yaourt lief und lief ... und stockte irgendwann in 2017. "low activity" betitelt die besagte Tabelle den aktuellen Entwicklungsstatus. Last update July 2017. Klar, yaourt lebt noch, aber gerade bei diesen community-driven repostitories, schlafe ich auf der anderen Seite besser, wenn die Hilfsscripte wenigstens aktiv entwickelt und eventuelle Änderungen am AUR-Verfahren zeitnah implementiert werden. Nicht nur ich denke so, it's foss hat hierzu ebenfalls geschrieben.

Zu der Zeit hatte ich gerade mein System neu aufgesetzt, warum dann nicht also gleich dieses Problem vom Tisch bekommen. pacaur sah ganz nett und funktionsmäßig gut bestückt aus, warum ihm nicht also eine Chance geben? War rückblickend keine nachhaltige Idee.

Aus aktuellem Anlass: aurman

Nächster Kandidat: aurman. Und jetzt kommt der interessantere Teil, wo die News anfangen. aurman verschwand vor knapp zwei Wochen still und heimlich. Vor fünf Tagen hat der Entwickler hinter dem Tool seine Entscheidung auf Reddit ausführlich begründet. Eine Entscheidung, die ich im ersten Moment ganz gut nachvollziehen kann. aurman bleibt fortbestehen, nur ohne Community. Entscheidungen und Abhängigkeiten, die der Autor nicht in der Hand hatte, wurden auf ihn abgewälzt, obwohl 30 Sekunden Hirn einschalten von Nutzerseite die Sache massiv entschärft hätten. Das Ergebnis: der Issue Tracker wurde deaktviert und das Projekt befindet sich jetzt in einem Modus, in dem der Entwickler die Software für sich entwickelt und den Code öffentlich teilt.

Ich für mich habe mich die Tage wieder umgeschaut und für yay entschieden. Das auf Go baiserende Tool wird nicht nur vom aurman-Entwickler empfohlen, es bietet einen ähnlichen Funktionsumfang. Hoffen wir, dass diese Entscheidung nachhaltiger ist.

Kritischer Blick

Wie bereits angekündigt, lässt sich dieses Problem allerdings auf etwas Größeres abstrahieren.

Lassen wir erst einmal die Fakten sprechen: beim AUR handelt es sich um eine Art unregulierten Markt, es gibt keine "offizielle Stelle", die ein bestimmtes Tool empfiehlt oder besonders hervorhebt. Die Zielgruppe ist in ihrer Marterie fortgeschritten und weiß überwiegend, was sie tut. Die Problematik (Hilfssripts für das Bauen aus dem AUR) ist zudem grundsätzlich in vertretbarem Zeitaufwand lösbar (aurman sowie yay kommen mit unter 10.000 Zeilen Code zurecht).

Fragmentierung: einfältige Vielfalt?

Die nun folgende Erscheinung ist interessant: es gibt nicht ein Projekt, sondern viele. Sie lösen alle das gleiche Problem auf ihre Weise. Das ist gut und hat seine Vorteile. Auf der anderen Seite entsteht ein Single Point of Failure: ein kurzer Blick auf GitHub offenbart, dass viele Projekte nur von ein oder zwei Autoren nennenwert gemaintained werden. Steigen diese aus, ist das Projekt unmaintained. Die Wahrscheinlichkeit, dass ein Projekt übernommen wird, ist geringer als die Chance, dass ein neues Projekt entsteht. Gründe dafür gibt es viele und Hand auf's Herz - wir haben alle unseren eigenen coding style, den wir, sofern es nicht das Projekt oder eine Guideline erfordert, ungern über Bord werfen - schon gar nicht, wenn wir das Projekt alleine hucken. "Neuschreiben" hat seinen eigenen Charme. Der Open Source-Charakter sorgt für die Beruhigung des Gewissens, jeder verfügt ja bei Zweifeln über die Möglichkeit, alles nachzuvollziehen.

Ausnahmen bestätigen die Regel: so wurde die Software Firewall Builder erfolgreich wiederbelebt. Ausschlaggebend dafür war mitunter der große Funktionsumfang, der es sinnvoller erscheinen lässt, ein Projekt weiterzupflegen, als es von Grund auf neu zu entwickeln.

Nicht zwingend wird dabei das Rad neu erfunden, dieser Prozess lässt sich aus der Distanz wie eine Evolution betrachten - dem Endnutzer werden Innovation und neue Funktionen zuteil. Yay ist z.B. in einer Programmiersprache (Go) geschrieben, die nicht einmal zehn Jahre alt ist und hat somit die Chance, wartungsfreundlicher und effizienter als vergleichbare Codebases in anderen Sprachen zu sein. Ich kenne nicht viele kleinere Projekte, die im Laufe ihrer Zeit ihre gesamte Sprache gewechselt haben, meist wurden es neue Projekte. Diese Beobachtungen lassen sich allerdings nur unter den o.g. Voraussetzungen betrachten.

Gegenbeispiele: der Linux-Kernel als Projekt, ein unixodes, hochkompatibles System zu schaffen, hat einen gigantischen Umfang und eine große Entwicklerschaft, die eine klare Leitung (Linus Torvalds) hat, sodass eine Fragmentierung unwahrscheinlich ist. Bürosoftware hat einen ähnlichen Umfang und höhere Hürden, bis ein Fork entsteht - z.B. lizenzrechtliche Streitigkeiten oder Frust der Entwickler.

Forks, also Abspaltungen, bringen eine eigene Dynamik in die Materie, die den Bogen dieses Artikels überspannen würden. Insgesamt lassen sich aus den Beobachtungen Vor- und Nachteile schlussfolgern, die uns zur nächsten Problematik führen.

Freie Software braucht mündige Bürger!

Freie Software ist eine Steigerung von Open Source. Der englische Begriff FOSS (Free Open Source Software) bringt dies stärker zum Ausdruck. Denn wenn der Quellcode verfügbar ist, heißt es nicht, dass auch der Prozess drumherum sich um den Nutzer dreht. aurman würde aus meiner Sicht mit der neuen Strategie ohne den Issue Tracker und Support nicht mehr die Kriterien als FOSS erfüllen, ein FOSS-Entwickler muss sich andererseits nicht alles (wie bisher) gefallen lassen.

Viel mehr ist es wichtig, unter (neuen) Nutzern Werte freier Software in den Vordergrund zu rufen: nämlich selbstständig verantwortungsbewusst zu agieren - mündige Bürger sind (im Idealfall) ebenfalls nicht solche, die lediglich laut schreien können. Dazu gehört es, sich bei Problemen selber ein wenig über die Hintergründe zu informieren, bevor ein Ticket oder eine E-Mail an den Entwickler geschrieben wird. Programmierkenntnisse sind nicht zwingend erforderlich, Lesekenntnisse schon! Existiert zum Problem vielleicht schon einen Issue? Sagt die README was? Wird das Problem im Entwicklerblog erwähnt?

Es wirkt verlockend, dass bei FOSS der Entwickler greifbar nahe ist, wichtig für ein gutes Klima ist der verantwortungsvolle Einsatz dieses Privilegs.

Nutzer von konkurrierenden Plattformen mit dem "hier ist es kostenlos und Open Source"-Argument abzuholen, ist im Zweifel aus meiner Sicht nicht nachhaltig und schafft zeitversetzt Frust - auf Nutzer- und Entwicklerseite.

Hier liegt meiner Meinung nach einer der Gründe, warum FOSS bisher eher im professionellen (Apache/nginx, SQL, Linux, ...) als im Endnutzer-Umfeld anzutreffen war: die "guten Tugenden" (Recherche vor Ticket) sind hier etablierter.

Die Vielfalt gibt uns Freiheit – diese einzusetzen braucht Wissen und Verstand. Das bringt uns zurück zur AUR helper-Tabelle, denn viele Arch User werden sich nicht an dieser stören, weil sie diese optimal für sich einsetzen und das Projekt suchen können, das ihre Anforderungen am besten abdeckt.

Fazit

Bildung und Verstand sind wichtig und das gilt in gleicher Weise für die FOSS-Welt. Wenn Nutzer selbstständiger denken und agieren, haben wir eine Chance, den Frust bei den Entwicklern zu minimieren. Und wenn trotzdem eine Frage ansteht, denkt an RTFM und How To Ask Questions The Smart Way.

Stühlerücken in der Arch Linux-Welt. Wer nicht selber aus dem Arch User Repository die Pakete bauen möchte, greift auf AUR helper zurück. Nach dem Ende von yaourt und aurman wird die Suche nach Alternativen wieder unerlässlich. Im gleichen Atemzug lässt sich die Problematik dahinter abstrahieren und auf ein viel größeres Problem beziehen.

Dieser Artikel entstand als News-Mitteilung, gewann dann an Dynamik und hat eine philosophische Komponente über freie Software erhalten. Er ist länger als üblich und aus der Sicht eines Nutzers geschrieben, der viele FOSS-Produkte einsetzt und an einigen kleineren beteiligt war.

Prolog: das AUR

Seit 2012 bin ich Arch Linux-Nutzer. Neben der Möglichkeit, sein System ganz individuell zusammenzustellen (und dann wieder bei GNOME zu landen ;)), ist das Repository das Herzstück der Linux-Distribution, die eher für fortgeschrittene Linux-Nutzer empfohlen wird. Aktuelle und vielfältige Pakete sorgen für entspanntes Arbeiten, obskure Eigenheiten wie Debians "*-dev"-Pakete für Headerfiles bleiben erspart und minimieren die Dependency-Hell.

Und wenn ein Paket benötigt wird, das nicht über das Haupt-Repository zu beziehen ist, kommt das Arch User Repository ins Spiel. Hier lassen sich alle nahezu erdenklichen Pakete für Linux-Anwendungen finden. Im Unterschied zum normalen Repository sind diese "Pakete" nicht vorkompiliert, erhalten keine offizielle Unterstützung, bringen aber eine PKGBUILD-Datei mit, die abgerufen und mithilfe vom Kommando makepkg (enthalten in pacman) eingelesen wird. In der Datei stehen Paketinformationen, Abhängigkeiten und Build-Instruktionen. Ist das Paket gebaut, liegt es in einem für Pacman, dem Paketmanager, verständlichen Format vor und wird an diesen zur Installation übergeben. Am Ende des Tages verwaltet bei diesen "Custom" Packages der normale Paketmanager die Programmdateien, obgleich ein Paketupdate ein manuelles Neubauen erfordert. Schwierigkeiten bei dieser Verfahrensweise treten besonders dann auf, wenn AUR-Pakete von anderen AUR-Paketen abhängig sind, was zur manuellen Auflösung in Handarbeit führt. Wie genau das AUR funktioniert, lässt sich im Wiki-Artikel dazu nachlesen.

AUR helper

Ihr könnt es euch denken, die Nutzerschaft entwickelt seit jeher Helfer (sog. AUR helper), um diese Prozesse zu vereinfachen und den Komfort von pacman im AUR genießen zu können. Offizielle Unterstützung bleibt dafür aus (use at your own risk, weil der Paket-Input weniger streng kontrolliert wird), sodass es gerne rüberkommt, als würden AUR helper-Nutzer auch schwarze Messen feiern. Gut, der wahre Grund, warum AUR helper nicht unterstützt werden, ist hier nachzulesen, würde jedoch die Dramatik zerstören. Trotzdem finden die folgenden Helfer keinen Platz im sonst so vollständigen Arch Wiki finden und werden lediglich in einer Tabelle abgehandelt.

Welche AUR helper sind momentan verfügbar? Da geht die Qual der Wahl los - es gab andererseits bisher einige Quasi-Monopole. So galt überwiegend vor einigen Jahren noch "yaourt und gut ist". Funktioniert, ließ sich sogar mit einem Repository über Pacman installieren und vollbrang sein Dienst. Die Installation über Pacman war sogar ganz interessant, weil dies einer Knackpunkte auf dem Weg ist AUR ist. AUR helper lassen sich eben nicht aus dem normalen Arch Repository installieren, sondern müssen selber gebaut werden - wozu sie ja eigentlich benötigt werden. Wer nicht weiß, wie Pakete manuell über die PKGBUILD gebaut werden, hat an dieser Stelle schon ein echtes Henne-Ei-Problem.

yaourt lief und lief ... und stockte irgendwann in 2017. "low activity" betitelt die besagte Tabelle den aktuellen Entwicklungsstatus. Last update July 2017. Klar, yaourt lebt noch, aber gerade bei diesen community-driven repostitories, schlafe ich auf der anderen Seite besser, wenn die Hilfsscripte wenigstens aktiv entwickelt und eventuelle Änderungen am AUR-Verfahren zeitnah implementiert werden. Nicht nur ich denke so, it's foss hat hierzu ebenfalls geschrieben.

Zu der Zeit hatte ich gerade mein System neu aufgesetzt, warum dann nicht also gleich dieses Problem vom Tisch bekommen. pacaur sah ganz nett und funktionsmäßig gut bestückt aus, warum ihm nicht also eine Chance geben? War rückblickend keine nachhaltige Idee.

Aus aktuellem Anlass: aurman

Nächster Kandidat: aurman. Und jetzt kommt der interessantere Teil, wo die News anfangen. aurman verschwand vor knapp zwei Wochen still und heimlich. Vor fünf Tagen hat der Entwickler hinter dem Tool seine Entscheidung auf Reddit ausführlich begründet. Eine Entscheidung, die ich im ersten Moment ganz gut nachvollziehen kann. aurman bleibt fortbestehen, nur ohne Community. Entscheidungen und Abhängigkeiten, die der Autor nicht in der Hand hatte, wurden auf ihn abgewälzt, obwohl 30 Sekunden Hirn einschalten von Nutzerseite die Sache massiv entschärft hätten. Das Ergebnis: der Issue Tracker wurde deaktviert und das Projekt befindet sich jetzt in einem Modus, in dem der Entwickler die Software für sich entwickelt und den Code öffentlich teilt.

Ich für mich habe mich die Tage wieder umgeschaut und für yay entschieden. Das auf Go baiserende Tool wird nicht nur vom aurman-Entwickler empfohlen, es bietet einen ähnlichen Funktionsumfang. Hoffen wir, dass diese Entscheidung nachhaltiger ist.

Kritischer Blick

Wie bereits angekündigt, lässt sich dieses Problem allerdings auf etwas Größeres abstrahieren.

Lassen wir erst einmal die Fakten sprechen: beim AUR handelt es sich um eine Art unregulierten Markt, es gibt keine "offizielle Stelle", die ein bestimmtes Tool empfiehlt oder besonders hervorhebt. Die Zielgruppe ist in ihrer Marterie fortgeschritten und weiß überwiegend, was sie tut. Die Problematik (Hilfssripts für das Bauen aus dem AUR) ist zudem grundsätzlich in vertretbarem Zeitaufwand lösbar (aurman sowie yay kommen mit unter 10.000 Zeilen Code zurecht).

Fragmentierung: einfältige Vielfalt?

Die nun folgende Erscheinung ist interessant: es gibt nicht ein Projekt, sondern viele. Sie lösen alle das gleiche Problem auf ihre Weise. Das ist gut und hat seine Vorteile. Auf der anderen Seite entsteht ein Single Point of Failure: ein kurzer Blick auf GitHub offenbart, dass viele Projekte nur von ein oder zwei Autoren nennenwert gemaintained werden. Steigen diese aus, ist das Projekt unmaintained. Die Wahrscheinlichkeit, dass ein Projekt übernommen wird, ist geringer als die Chance, dass ein neues Projekt entsteht. Gründe dafür gibt es viele und Hand auf's Herz - wir haben alle unseren eigenen coding style, den wir, sofern es nicht das Projekt oder eine Guideline erfordert, ungern über Bord werfen - schon gar nicht, wenn wir das Projekt alleine hucken. "Neuschreiben" hat seinen eigenen Charme. Der Open Source-Charakter sorgt für die Beruhigung des Gewissens, jeder verfügt ja bei Zweifeln über die Möglichkeit, alles nachzuvollziehen.

Ausnahmen bestätigen die Regel: so wurde die Software Firewall Builder erfolgreich wiederbelebt. Ausschlaggebend dafür war mitunter der große Funktionsumfang, der es sinnvoller erscheinen lässt, ein Projekt weiterzupflegen, als es von Grund auf neu zu entwickeln.

Nicht zwingend wird dabei das Rad neu erfunden, dieser Prozess lässt sich aus der Distanz wie eine Evolution betrachten - dem Endnutzer werden Innovation und neue Funktionen zuteil. Yay ist z.B. in einer Programmiersprache (Go) geschrieben, die nicht einmal zehn Jahre alt ist und hat somit die Chance, wartungsfreundlicher und effizienter als vergleichbare Codebases in anderen Sprachen zu sein. Ich kenne nicht viele kleinere Projekte, die im Laufe ihrer Zeit ihre gesamte Sprache gewechselt haben, meist wurden es neue Projekte. Diese Beobachtungen lassen sich allerdings nur unter den o.g. Voraussetzungen betrachten.

Gegenbeispiele: der Linux-Kernel als Projekt, ein unixodes, hochkompatibles System zu schaffen, hat einen gigantischen Umfang und eine große Entwicklerschaft, die eine klare Leitung (Linus Torvalds) hat, sodass eine Fragmentierung unwahrscheinlich ist. Bürosoftware hat einen ähnlichen Umfang und höhere Hürden, bis ein Fork entsteht - z.B. lizenzrechtliche Streitigkeiten oder Frust der Entwickler.

Forks, also Abspaltungen, bringen eine eigene Dynamik in die Materie, die den Bogen dieses Artikels überspannen würden. Insgesamt lassen sich aus den Beobachtungen Vor- und Nachteile schlussfolgern, die uns zur nächsten Problematik führen.

Freie Software braucht mündige Bürger!

Freie Software ist eine Steigerung von Open Source. Der englische Begriff FOSS (Free Open Source Software) bringt dies stärker zum Ausdruck. Denn wenn der Quellcode verfügbar ist, heißt es nicht, dass auch der Prozess drumherum sich um den Nutzer dreht. aurman würde aus meiner Sicht mit der neuen Strategie ohne den Issue Tracker und Support nicht mehr die Kriterien als FOSS erfüllen, ein FOSS-Entwickler muss sich andererseits nicht alles (wie bisher) gefallen lassen.

Viel mehr ist es wichtig, unter (neuen) Nutzern Werte freier Software in den Vordergrund zu rufen: nämlich selbstständig verantwortungsbewusst zu agieren - mündige Bürger sind (im Idealfall) ebenfalls nicht solche, die lediglich laut schreien können. Dazu gehört es, sich bei Problemen selber ein wenig über die Hintergründe zu informieren, bevor ein Ticket oder eine E-Mail an den Entwickler geschrieben wird. Programmierkenntnisse sind nicht zwingend erforderlich, Lesekenntnisse schon! Existiert zum Problem vielleicht schon einen Issue? Sagt die README was? Wird das Problem im Entwicklerblog erwähnt?

Es wirkt verlockend, dass bei FOSS der Entwickler greifbar nahe ist, wichtig für ein gutes Klima ist der verantwortungsvolle Einsatz dieses Privilegs.

Nutzer von konkurrierenden Plattformen mit dem "hier ist es kostenlos und Open Source"-Argument abzuholen, ist im Zweifel aus meiner Sicht nicht nachhaltig und schafft zeitversetzt Frust - auf Nutzer- und Entwicklerseite.

Hier liegt meiner Meinung nach einer der Gründe, warum FOSS bisher eher im professionellen (Apache/nginx, SQL, Linux, ...) als im Endnutzer-Umfeld anzutreffen war: die "guten Tugenden" (Recherche vor Ticket) sind hier etablierter.

Die Vielfalt gibt uns Freiheit – diese einzusetzen braucht Wissen und Verstand. Das bringt uns zurück zur AUR helper-Tabelle, denn viele Arch User werden sich nicht an dieser stören, weil sie diese optimal für sich einsetzen und das Projekt suchen können, das ihre Anforderungen am besten abdeckt.

Fazit

Bildung und Verstand sind wichtig und das gilt in gleicher Weise für die FOSS-Welt. Wenn Nutzer selbstständiger denken und agieren, haben wir eine Chance, den Frust bei den Entwicklern zu minimieren. Und wenn trotzdem eine Frage ansteht, denkt an RTFM und How To Ask Questions The Smart Way.