Libertine
Dieser Artikel bezieht sich auf Ubuntu Touch, die Variante von Ubuntu für mobile Geräte mit Touchscreen.
Getestet wurde der Artikel für folgende Version(en):
Ubuntu Touch, Basis 16.04 Xenial Xerus
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Libertine 🇬🇧 erlaubt das Installieren von traditionellen X-Anwendungen auf Ubuntu-Touch-Geräten[1]. Mit Libertine werden Container erstellt und die X-Anwendungen dann in diesem installiert. Durch das Abkapseln in Container bleibt das eigentliche System geschützt vor Stabilitäts- und Sicherheitsproblemen der X-Anwendungen. Zum Teil war auf werksseitig mit Ubuntu Touch ausgestatteten Geräten (z.B. BQ Aquaris M10 Tablets) Libertine, damals unter dem Namen Puritine, mit etlichen Desktop-Programmen Teil der Erstausstattung.
Desktop Anwendungen lassen sich gut mit externer Maus und Tastatur bedienen. Bluetooth oder USB-OTG sind zwei Optionen, um externe Geräte anzuschließen. Auf kleinen Bildschirmen und per Touchscreen ist die Bedienbarkeit von Desktop-Anwendungen naturgemäß eingeschränkt. Über Libertine installierte grafische Programme waren (März 2020) unter der Ubuntu-Touch-Version 9 aus dem stable
-Kanal (OTA 11) recht gut in das Gesamtsystem integriert (siehe aber auch diesen Thread im Forum).
Welche Programme unter Libertine laufen, kann - je nach verwendeter Ubuntu-Touch-Version - unterschiedlich sein. Der Umfang und die Qualität an "nativen" für UT geschriebenen und portierten Programmen wächst; der Fokus bei UBports 🇬🇧 liegt momentan mehr auf der Weiterentwicklung von Unity8/Lomiri 🇬🇧 und Nutzbarmachung für neue Modelle als auf der Verwendbarkeit von Desktop-Anwendungen.
Hintergrund¶
Der Display-Server koordiniert die Ein- und Ausgänge eines Betriebssystems. Viele Linux-Distributionen verwenden den X-Server als Display-Server. Ubuntu Touch setzt nicht X, sondern einen neueren Display-Server namens Mir ein. Das bedeutet, dass normale X-Anwendungen nicht direkt mit Ubuntu Touch kompatibel sind. Eine Zwischenschicht, genannt XMir, löst dieses Problem. Libertine verwendet XMir um Desktop-Anwendungen darzustellen.
Eine andere Herausforderung ist, dass Aktualisierungen für das Ubuntu-Touch-System als OTA-Abbilder veröffentlicht werden. Als Konsequenz daraus hat man nur Leserechte auf das Wurzeldateisystem. Libertine stellt einen Container mit einem Dateisystem mit Schreib- und Leserechten zur Verfügung. Dadurch wird die Installation regulärer Linux-Desktop-Anwendungen ermöglicht.
(Quelle: UBports-Dokumentation 🇩🇪, modifiziert)
Erstellung¶
In "Systemeinstellungen → Libertine" können durch Antippen des Plus-Symbols rechts oben neue Container erstellt werden. Das Initialisieren eines neu erstellten Containers dauert einige Minuten, da quasi ein komplettes Mini-Ubuntu-System installiert wird. Bestehende Container können durch Nach-rechts-Wischen und Antippen des Mülltonen-Symbols wieder gelöscht werden.
Nach dem Erstellen und Auswählen eines Containers können dann Anwendungen in dem Container installiert und deinstalliert werden. Hierzu zuerst den Containernamen nach links wischen und auf das Edit-Symbol tippen. Über das Plus-Symbol öffnet sich ein Installationsfenster, das verschiedenen Optionen zur Installation von Paketen bietet.
Verwendung via App-Scope-Icon¶
Bis einschließlich OTA 11 (UBports-Zählung) wurden diese Programme in einem eigene "App Scope" für die X-Programme angezeigt (zum Sichtbarmachen von unten im "App Scope" hochwischen); in neueren Versionen sind die Programmstarter automatisch in den allgemeinen "App Drawer" integriert. Angezeigt werden sie dann allerdings erst nach einem Geräte-Neustart bzw. Neustart von Unity8. Das ist über das "UT Tweak Tool → System → Werkzeuge/Dienste" möglich. Zu Beachten ist, dass mit einem Neustart von Unity8 alle Programme beendet werden. Falls nötig sollten noch ungesicherte Daten zuerst gespeichert werden.
Nun können Anwendungen aus dem App-Scope gestartet[2] werden. Wie erwähnt laufen aber nicht alle Anwendungen problemlos unter Libertine. Hier kann also etwas "try'n'error" gefordert sein. Die Bedienung ist nicht immer einfach, ggf. liegen Teile außerhalb der Bildschirmes, Fenster lassen sich nicht verschieben etc.
Dateizugriff¶
Die Ordner ~/Documents, ~/Music, ~/Pictures, ~/Downloads und ~/Videos sind von Libertine-Apps aus erreichbar. So können Dateien mit dem regulären Ubuntu-Touch-System ausgetauscht werden.
Libertine Tweak Tool¶
Mit Libertine Tweak Tool lässt sich die Anzeige der X-Programme skalieren. Dazu die "Xdpi"-Option aktivieren und den DPI-Wert mit dem Schieberegler anpassen. Außerdem lässt sich für GTK3-Anwendungen ein größerer Scrollbar verwenden, sehr sinnvoll auf kleinen Bildschirmen (siehe Bild).
Des Weiteren kann angegeben werde, Transmission über https://localhost:9091
zu kontrollieren und torrents direkt vom Downloads-Ordner aus zu starten.
Der Entwickler freut sich über Hinweise zu weiteren Tweaks, die er in die App aufnehmen könnte (siehe Entwicklerseite 🇬🇧).
Kommandozeilennutzung¶
Der Befehl libertine-container-manager
kann zum Verwalten der Container und der darin enthaltenen Programme verwendet werden[3].
Parameter | Beschreibung |
--help | Zeigt die Hilfe und Parameterübersicht. Auch die einzelnen Subbefehle haben Hilfsausgaben. Beispiel libertine-container-manager create --help . |
create -i ID | Erstellt einen neuen Container. |
install-package -p PACKAGE | Installiert das Paket. Beispiel: libertine-container-manager install-package -p firefox |
list-apps | Listet alle installierten Anwendungen auf. |
remove-package -p PACKAGE | Deinstalliert das Paket. |
set-default -i ID | Legt den default container fest. Durch Angabe von -i ID können die anderen Befehle auch auf anderen Containern ausgeführt werden. |
list | Listet alle Container auf. |
update | Aktualisiert die Pakete im Container. |
destroy | Löscht den Container inklusive aller darin enthaltenen Programme. |
Weitere Optionen siehe Manpage 🇬🇧.
Für jeden Container wird sowohl ein Wurzelverzeichnis als auch ein Nutzerverzeichnis angelegt. Wurzelverzeichnisse findet man im Pfad ~/.cache/libertine-container/CONTAINERID/rootfs/ und Nutzerverzeichnisse unter ~/.local/share/libertine-container/user-data/CONTAINERID/.
Hinweis:
Auf Grund von der Beschränkungen der Terminal-App können Container nicht direkt von der Kommandozeile in der Terminal-App angelegt werden. In einer Kommandozeile über adb oder ssh von einem anderen Rechner, oder auch in der Terminal-App über den Umweg ssh localhost
ist dieses möglich.
Terminalzugang¶
Libertine basiert auf einem chroot jail. Es gibt zwei Optionen um eine Kommandozeile im chroot System des Libertine-Containers zu bekommen. Um eine Kommandozeile als normaler Benutzer phablet
zu bekommen kann folgender Befehl verwendet werden:
DISPLAY= libertine-launch -i CONTAINERID bash
Wo befindet man sich?¶
Es ist nicht direkt am Prompt ersichtlich, ob man sich im Container befindet oder außerhalb. Es lässt es sich aber, z.B Beispiel mit dem Befehl ls
, feststellen:
phablet@ubuntu-phablet:~$ DISPLAY= libertine-launch -i xenial bash
: Xmir is not running on DISPLAY !
phablet@ubuntu-phablet:~$ ls
Ausgabe z.B.
Documents Downloads Music Pictures Videos
Der Pfad hier ist /home/phablet/.local/share/libertine-container/user-data/xenial, also im Container. Spätestens wenn man vergeblich versucht, hier Befehle auszuführen, wird das auffallen. Es besteht nur Zugriff auf die aufgelisteten Verzeichnisse.
Auf der "Standard-Shell" (also z.B. direkt nach Aufruf von SSH oder adb shell
liefert derselbe ls
-Befehl
phablet@ubuntu-phablet:~$ ls
Ausgabe z.B.
Documents Downloads Music Public Videos Desktop Download Pictures Templates
Hier ist der Pfad auf dem Gerät /home/phablet, also außerhalb des Containers.
Root-Kommandozeile¶
Um eine Kommandozeile als root
zu bekommen, kann folgender Befehl verwendet werden:
libertine-container-manager exec -c bash
Der Prompt ändert sich zu
root@ubuntu-phablet:/#
Eine solche root
-Shell kann hilfreich sein, wenn Abhängigkeitskonflikte mit über apt installierten Paketen im Container aufgetreten sind.
Libertine-Container manuell entfernen¶
Wenn die oben beschriebenen Methoden nicht funktionieren, kann man Libertine-Container, mitsamt aller darin installierten Programme und Daten, auch manuell entfernen. Die Daten liegen alle im Homeverzeichnis, sind also ohne Weiteres zugänglich, in den versteckten Ordnern .cache und .local. Ggf. sollten auch nach einer "regulären" Deinstallation noch vorhandene Reste händisch mit der "Dateiverwaltung" oder via Terminal gelöscht werden.
~/.cache/libertine-container/CONTAINERID
~/.local/share/libertine-container/user-data/CONTAINERID
Achtung!
Die Datei ~/.local/share/libertine/ContainersConfig.json sollte man tunlichst nicht entfernen. Sie beinhaltet Angaben zu allen installierten Containern und darin installierten Programmen; ein Zugriff auf eventuell weitere Container wäre nach Löschung nicht mehr möglich.
In ~/.cache/CONTAINERID können sich auch Daten befinden, die von anderen Anwendungen genutzt werden. Hier also vor einem Entfernen erst genau prüfen, was noch benötigt wird und es ggf. verschieben.
Experten-Info:
Falls Libertine sich so "aufgehängt" hat, dass es nicht mehr zu bedienen ist (z.B. wenn bei einem Installationsversuch von Programmen die Installation nicht zum Ende kommt, und auch nach Neustart des Gerätes sich der blaue Kreis weiter und weiter dreht, ohne dass ein Erfolg ersichtlich wird), scheitern ggf. auch alle Libertine-Deinstallationsversuche. Als letzte Notlösung kann man dann ein passendes TWRP-Recovery 🇬🇧 flashen und das Gerät in das selbige booten. Dort dann unter "Erweitert" den "Dateimanager" starten und die oben angegebenen Verzeichnisse löschen. Im Anschluss muss Ubuntu_Touch allerdings erneut aufgespielt werden, was aber mit den UBports Installer kein großes Problem darstellt. Dabei aber nicht die eigenen Daten löschen lassen!
(getestet mit einem bq Aquaris HD M10)
Links¶
intern¶
Ubuntu Touch - Übersichtsartikel
Ubuntu Touch/Terminal - Verwendung eines Terminals für Ubuntu Touch
extern¶
Dokumentation 🇩🇪/🇬🇧 auf UBports
Question & Answer 58 🇬🇧 - Hinweise im UBport-Blog
Libertine 🇬🇧 im Ubuntu.com-Wiki
Github 🇬🇧, Quellcode
Blogbeitrag 🇬🇧 auf kylenubuntu.blogspot.com
Libertine-Info 🇬🇧 auf askubuntu.com
Blogbeitrag 🇬🇧 auf kriscode.blogspot.com