[[Vorlage(UT, xenial)]] {{{#!vorlage Wissen [:Ubuntu_Touch:Ubuntu Touch] [:Ubuntu_Touch/Programme: Starten von Ubuntu-Touch-Programmen] [:Ubuntu_Touch/Terminal: Ein Terminal für Ubuntu Touch verwenden] }}} [[Inhaltsverzeichnis()]] [[Bild(LibertineTT.png, 64, left)]] [http://docs.ubports.com/en/latest/userguide/dailyuse/libertine.html Libertine] {en} erlaubt das Installieren von traditionellen [:X:]-Anwendungen auf Ubuntu-Touch-Geräten[1]. Mit Libertine werden [:Virtualisierung/#Container: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 [wikipedia:Universal_Serial_Bus#USB_On-the-go: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 [topic:programme-unter-libertine-starten-nicht: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 [https://ubports.com UBports] {en} liegt momentan mehr auf der Weiterentwicklung von [https://forums.ubports.com/topic/3876/introducing-lomiri Unity8/Lomiri] {en} 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 [wikipedia:Mir_(Display-Server-Protokoll):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: [http://docs.ubports.com/de/latest/userguide/dailyuse/libertine.html#background UBports-Dokumentation] {de}, 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. [[Bild(Desktop-Apps.png, 220, right)]] == 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 ''"[openstore:ut-tweak-tool.sverzegnassi: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. [[Bild(FirefoxBQm10.png, 220, right)]] == 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 [openstore:libertine-tweak-tool.doniks: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 [gitlab:doniks/libertine-tweak-tool:Entwicklerseite] {en}). = Kommandozeilennutzung = Der Befehl `libertine-container-manager` kann zum Verwalten der Container und der darin enthaltenen Programme verwendet werden[3]. {{{#!vorlage Tabelle 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 [https://manpages.ubuntu.com/manpages/xenial/en/man1/libertine-container-manager.1.html Manpage] {en}. 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/'''. {{{#!vorlage 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 [:Ubuntu_Touch/Terminal: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: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: {{{#!vorlage Befehl 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: * [[Vorlage(Befehl "phablet@ubuntu-phablet:~$ DISPLAY= libertine-launch -i xenial bash")]] * [[Vorlage(Code ": Xmir is not running on DISPLAY !")]] * [[Vorlage(Befehl "phablet@ubuntu-phablet:~$ ls")]] * Ausgabe z.B. [[Vorlage(Code "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 * {{{#!vorlage 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: {{{#!vorlage Befehl libertine-container-manager exec -c bash }}} Der Prompt ändert sich zu {{{ root@ubuntu-phablet:/# }}} Eine solche `root`-Shell kann hilfreich sein, wenn [:Paketverwaltung/Problembehebung: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''' {{{#!vorlage Warnung 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. }}} {{{#!vorlage Experten 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 [https://twrp.me TWRP-Recovery] {en} 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 [:Ubuntu_Touch/UBports_Installer: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:] {Übersicht} - Übersichtsartikel * [:Ubuntu_Touch/Terminal:] - Verwendung eines Terminals für Ubuntu Touch == extern == * [http://docs.ubports.com/de/latest/userguide/dailyuse/libertine.html Dokumentation ] {de}/{en} auf UBports * [https://ubports.com/de_DE/blog/unser-blog-1/post/ubuntu-touch-q-a-58-244 Question & Answer 58] {en} - Hinweise im UBport-Blog * [https://wiki.ubuntu.com/Touch/Libertine Libertine] {en} im Ubuntu.com-Wiki * [github:ubports/libertine: Github] {en}, Quellcode * [https://www.pro-linux.de/news/1/26234/ubuntu-touch-ota-4-baut-auf-ubuntu-1604-lts.html Pro-Linux-Artikel] {de} * [http://kylenubuntu.blogspot.com/2016/07/running-x-apps-on-ubuntu-devices.html Blogbeitrag] {en} auf kylenubuntu.blogspot.com * [https://askubuntu.com/tags/libertine/info Libertine-Info] {en} auf askubuntu.com * [http://kriscode.blogspot.com/2016/09/x-applications-on-ubuntu-phone.html Blogbeitrag] {en} auf kriscode.blogspot.com #tag: Ubuntu Phone, Ubuntu Touch, Ubuntu, Emulation und Virtualisierung, System