Firefox snap durch deb ersetzen

Bekanntlich forciert Canonical deren Format snap, auch Firefox gibt es in Ubuntu 22.04 ausschließlich nur noch als snap-Image. Wie man das durch Firefox deb ersetzen kann, ist auf diversen Seiten beschrieben, aber auf keine würde ich verlinken (das geht schon mit “Ji m”s ewigem Kardinalfehler “sudo gedit” los).

  1. Erstelle eine Prioritätsdatei:
    • 1
      
      sudo nano /etc/apt/preferences.d/mozillateamppa.pref

      Füge über c&p ein:

      Package: firefox*
      Pin: release o=LP-PPA-mozillateam
      Pin-Priority: 501
    • Alternativ könnte man umgekehrt die Installation von Fx aus den Ubuntu-Repositories herunterstufen (das ist ein transitional .deb-Package, das in jedem Fall versionshöher ist, sich also drübersetzen und die snap-Version installieren würde)
      1
      
      sudo nano /etc/apt/preferences.d/firefox.pref

      Füge über c&p ein:

      Package: firefox*
      Pin: release o=ubuntu
      Pin-Priority: -1
  2. Füge das PPA Mozilla Team hinzu:
    1
    
    sudo apt-add-repository ppa:mozillateam/ppa
  3. Seit geraumer Zeit läßt apt-add-repository nach Hinzufügen automatisch “apt update” laufen – deswegen ist die Prioritätsdatei in dieser Liste an erste Stelle gesetzt worden (man muß ja nicht unnötige Schritte und Traffic erzeugen).

  4. Deinstalliere Fx snap (sollte man diese Anleitung damit abarbeiten, wäre ein temporäres Copypasten der Schritte in einen Editor von Vorteil, freilich ist’s nicht mehr viel):
    1
    2
    
    sudo snap remove firefox
    sudo apt purge firefox # fuer das transitional package
  5. Installiere
    • Firefox
      1
      
      sudo apt install firefox firefox-locale-de

    • oder Firefox-ESR
      1
      
      sudo apt install firefox-esr firefox-esr-locale-de

      Für Firefox-ESR brauchte es die Prioritätsdatei nicht, da keine solche Version in den Ubuntu-Repos angeboten wird, sie stört aber auch nicht.

Konfigurationsverzeichnisse liegen an unterschiedlichen Orten:

  • snap: “~/snap/firefox/”
  • deb: “~/.mozilla/”

Im übrigen kann ich nur jedem nahelegen, sich andere Linux-Distributionen anzusehen. Besser wird’s mit Canonical und Ubuntu nicht.

LibreOffice: F1-Hilfe bei Fx/snap

In Ubuntu 22.04 hat Canonical bekanntlich Firefox durch ein extra dafür kreiertes snap-Image ersetzt. Daraus resultiert eine Unmenge von Problemen, die in Foren aufschlagen (wenn diese User wenigstens längst geschriebenes selbst suchen und lesen würden…).

Eines findet sich in LibreOffice, wenn man über F1 die Hilfe aufrufen will. Diese befindet sich als html lokal im System. Man kann sie auch im Netz aufrufen. Mancher im Busch oder auch mit LTE-Kontingent kann oder möchte das jedoch nicht.

Mir selbst kann es egal sein, ich nutze zwar LibO seit StarWriter, aber nicht die Hilfe. Ubuntu als Ganzes ist für mich seit Jahren keine seriöse Distribution mehr aus mehreren Gründen.

Infolge eines Threads habe ich mir dennoch aus Problemlösungsinteressse die Sache in einer LJammy-VM angesehen, da kann man schön die Versuche durch Rücksetzen eines Snapshots mit einem Wisch in den Müll kippen – und da gehört snap auch hin.

Vereinfacht gesagt: Der User darf mit snap-Programmen im Standard-Confinement strict nur auf ~ zugreifen. Daher kann in LibO über F1 nicht auf “/usr/share/libreoffice/help/index.html” sowie das gesamte Verzeichnis zugegriffen werden, wenn Firefox/snap als default gesetzt ist…und das ist es unter 22.04. LibO geht danach, es gibt keine Möglichkeit in einer LibO-Konfiguration zur Änderung (was als solches durchaus i.O. ist).

Möglichkeiten:

  • Kopieren des Verzeichnisses nach ~
    1
    
    cp -r /usr/share/libreoffice/help/ ~/Documents/libo-help/

    Ein Symlink, worauf man vielleicht kommen könnte, reicht da natürlich nicht. Für das darin liegende index.html kann man sich auch einen Starter erstellen, wenn man das häufig braucht und sich nicht durchklicken will.

  • Installation eines Browsers nicht als snap, z.B.:
    1
    
    sudo apt install falkon

    Damit kann man “/usr/share/libreoffice/help/index.html” öffnen, ggf. über einen zu erstellenden Starter.

Aus LibO heraus mit F1 kann man aber immer noch nicht aufrufen, denn Firefox/snap ist nach wie vor der default gesetzte Browser. Das zu ändern, sprich die richtige Stelle zu finden, kann Nerven kosten.

Beim Alternativen-System steht der snap-Firefox nicht mal drin. Man kann den hinzufügen und Falkon manuell setzen. Wirkt aber nicht. Auch mit xdg-settings wird es nichts. Hier wird aber immerhin angezeigt, daß $BROWSER gesetzt, deshalb keine Änderung möglich ist. Problem ist, es gibt 97 Möglichkeiten, an welchen Stellen die Variable gesetzt worden sein kann, bspw. in “/etc/environment”.

Unter LJammy habe ich es dann in “/etc/xdg/xdg-Lubuntu/lxqt/session.conf” gefunden, entsprechende Stelle geändert in

[Environment]
BROWSER=falkon

Bei einem anderen DE gibt es diese LXQt-Datei natürlich nicht, eventuell eine Entsprechung. Oder es liegt ganz woanders, hrr.

Man kann natürlich auch einfach snapd purgen. Nur baut Canonical in Ubuntu eben immer weiter gehend darauf. Entsprechende deb-Pakete gibt es nicht nur für Chromium und Firefox nicht mehr (ja, Fx aus PPA, aber mit Prioritätssetzung) oder werden wie bei vlc in universe innerhalb einer Ubuntu-Version nicht aktualisiert.

Ergo: anständige Linux-Distribution installieren!

VirtualBox: Unable to locate imported symbol ‘memset’

Nach der Installation von VirtualBox-6.1.34-150636*.’deb\|rpm’ (Filedate 2022-03-23) in entsprechenden Linux-Distributionen kommt es nach Startversuch einer beliebigen VM zu folgender VBox-Ausgabe:

Failed to load R0 module /usr/lib/virtualbox/VBoxDDR0.r0: Unable to locate imported symbol 'memset' for module 'VBoxDDR0.r0' (VERR_SYMBOL_NOT_FOUND).
Failed to load ring-0 module 'VBoxDDR0.r0' for device 'pci' (VERR_SYMBOL_NOT_FOUND).
 
 
Result Code:  NS_ERROR_FAILURE (0x80004005)
Component:  ConsoleWrap
Interface:  IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

Als temporären Workaround oder auch generell kann man die Paketversion deinstallieren und die .run-Version installieren (wer Testbuilds installiert wie ich, macht das eh):

VitualBox: Installation ueber .run

Ein Zurückgehen auf die veraltete 6.1.32 ist weder notwendig noch empfehlenswert.

Update 2022-07-20: VirtualBox 6.1.36.
Update 2022-04-21: Es sind neue Builds für virtualbox-6.1_6.1.34-150636* nachgeschoben worden (.1 für .deb, -2 für .rpm).

Font-Darstellung in Java-Programmen

Da hat man nun seit Ewigkeiten diverse Verbesserungen der Darstellung von Schrift wie Hinting und Antialiasing, daß das Ganze nicht aussieht wie Bitmap-Fonts auf dem Amiga, dennoch wirken sie sich in Java-Programmen nicht aus, selbst, wenn es in diesen zusätzlich aktiviert werden kann und worden ist.

Ein Beispiel ist der bekannte TV-Browser. Wenigstens betrifft es nicht das Innere des Hauptfensters, also den Programminhalt der Sender, wohl aber den Kopf und auch “about”:

ohne Hinting

Es gibt jedoch Möglichkeiten, auch in Java-Programmen ein halbwegs anständiges Font-Rendering zu erhalten. Direkt verglichen:

mit Hinting

(Btw., falls jemand auf die Idee kommen sollte, nein, das hat absolut nichts mit beta zu tun.)

  • Möglichkeit auf Userebene:
    1
    
    $ nano ~/.xprofile

    Hinzufügen:

    Xft/Hinting 1
    Xft/HintStyle "hintslight"
    Xft/Antialias 1
    Xft/RGBA "rgb"
  • Möglichkeit auf Systemebene mit einem xsettings-Daemon:
    1
    
    # nano /etc/environment

    Hinzufügen:

    _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=setting'

    Für “setting” trägt man einen der folgenden Werte ein:

    off, false, defaultkein Antialiasing
    onvolles Antialiasing
    gaspin TTF integriertes Hinting
    lcd, lcd_hrgbAntialiasing für viele gebräuchliche LCDs
    lcd_hbgr, lcd_vrgb, lcd_vbgralternatives AA-Setting für LCDs

Relogin ist nötig. Ich selbst habe sowohl User als auch System getestet (kein Unterschied in der Ausgabe) und mich für den systemweiten Eintrag und gasp entschieden.

uude wird gesundgeschrumpft

Der Projektleiter des bekannten Portals ubuntuusers.de hat heute bekanntgegeben, daß die Datenbank der registrierten User (derzeit 155250) um sämtliche inaktiven bereinigt wird. Dies beträfe auch explizit Mitglieder des Teams (derzeit 37).

“Auch, wenn wir allein damit schon enorm an Server-Kosten sparen”, freut er sich demonstrativ eine Diskette hochhaltend, “wir gehen noch einen Schritt weiter, indem wir all die Threads löschen, in denen ohne nachzudenken und selbst zu recherchieren stets dasselbe gefragt, nichts verstanden und über zig Seiten falsch supportet wird”. Um diese Mammutaufgabe zu stemmen, wolle man sinnvolle Postings einfach verschieben.

Außerdem brauche man dies alles nicht mehr, erklärt er sichtlich zufrieden, da die hinter Ubuntu stehende Firma Canonical mit ihrem snap-Format ein wahres Qualitätsprodukt geschaffen habe. Vorwürfe, daß sich Ubuntu damit immer weiter von Linux-Prinzipien entferne, weist er zurück, schließlich habe Canonical seit jeher die Nennung von Linux vermieden.

·

? Tags drauf. Merke: Auch in einem solchen Artikel steckt ein wahrer Kern.

Einen Kommentar möchte ich aufgreifen und hätte auch schon ein Logo:

Aber nur echt mit knuddels.de-Client auf Java-IcedTea-Basis.

GPG-Key fuer Repositories importieren

Wer unter Debian oder Ubuntu ein Repository, sprich eine Fremdquelle, manuell hinzufügt (deb-Zeile in sources.list(.d/) mit einem Editor oder über ein Frontend oder mit apt-add-repo), erhält nach “apt update” (in apt-add-repo enthalten) einen gpg-Error. In folgenden Beispielen ziehe ich TeamViewer heran.

$ sudo apt update
Hit:1 http://linux.teamviewer.com/deb stable InRelease
(...)                               
Err:1 http://linux.teamviewer.com/deb stable InRelease                                               
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C5E224500C1289C0
(...)
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://linux.teamviewer.com/deb stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C5E224500C1289C0
W: Failed to fetch http://linux.teamviewer.com/deb/dists/stable/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C5E224500C1289C0
W: Some index files failed to download. They have been ignored, or old ones used instead.
$

Das an sich ist wahrlich nichts neues, auch nicht, was zu tun ist, wird trotzdem immer wieder in Foren gefragt.

Im Fall TeamViewer kann man bislang ausführen:

1
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | sudo apt-key add -

Man zieht also den Key im ASCII-Format vom teamviewer.com-Server (selbstverständlich über https) und importiert ihn mit apt-key. Das Paket add-apt-key ist auch für das kommende Ubuntu 22.04 Version 1.0-0.5, sage und schreibe 15 (!) Jahre alt. Entsprechend kann eine Message kommen:

$ sudo apt-key add TeamViewer2017.asc
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
$

Das bedeutet, noch funktioniert es, ist aber abzulehnen, da die Methode über kurz oder lang entfernt wird. Entsprechend sollte man sich beizeiten informieren und am besten generell die ersetzende Methode verwenden.

GPG-Keys verwaltet man mit dem Kommando gpg und entsprechenden Optionen. Durch die obige Ausgabe wissen wir, es handelt sich um den Pubkey C5E224500C1289C0. Dies ist lediglich der rechte 16stellige Teil des 40stelligen rsa4096-Pubkeys 8CAE012EBFAC38B17A937CD8C5E224500C1289C0, genügt jedoch.

Wir könnten den Pubkey also mit “gpg –receive-keys” direkt von einem entsprechenden Keyserver ziehen und importieren. Das funktioniert, nur weiß apt davon nichts, die Fehlerausgabe besteht fort.

Es ist also so aufzubereiten, daß apt damit umgehen kann. Dabei kann mit wget das .asc-File gezogen, der relevante Teil über “gpg –dearmor” umgewandelt und über install oder gpg importiert werden.

Beispiel als Zweizeiler mit wget und install nach “/etc/apt/trusted.gpg.d/”:

1
2
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | gpg --dearmor > teamviewer2017.gpg
sudo install -o root -g root -m 644 teamviewer2017.gpg /etc/apt/trusted.gpg.d/

Beispiel als Einzeiler mit wget und tee nach “/etc/apt/trusted.gpg.d/”:

1
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/teamviewer2017.gpg >/dev/null

Beispiel als Einzeiler mit wget und tee nach “/usr/share/keyrings/”:

1
wget -q https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc -O- | gpg --dearmor | sudo tee /usr/share/keyrings/teamviewer2017.gpg >/dev/null

Beide Pfade sind möglich. Bei “/usr/share/keyrings/” erscheint der Key dann auch in software-properties* → Authentication, kann also auch dort wieder entfernt werden, so man möchte.

Hat man mit gpg bereits importiert oder möchte es so, kann man auch dies als Ausgangslage nutzen.

Beispiel als Dreizeiler mit gpg und tee nach “/usr/share/keyrings/”:

1
2
3
sudo gpg --receive-keys --keyserver hkps://keyserver.ubuntu.com --recv-keys C5E224500C1289C0
sudo gpg -a --output TeamViewer2017.asc --export C5E224500C1289C0
cat TeamViewer2017.asc | gpg --dearmor | sudo tee /usr/share/keyrings/teamviewer2017.gpg >/dev/null

Im Beispielfall TeamViewer kann man den mit gpg importierten Pubkey danach auch wieder entfernen:

1
sudo gpg --delete-keys C5E224500C1289C0

Der für apt relevante “/usr/share/keyrings/teamviewer2017.gpg” bleibt dabei erhalten.

Hinweis noch zum Copypasten: Das WP-Plugin für Code ist zwar optisch OK, aber etwas tricky. Also aufpassen, daß man Befehlszeilen vollständig in ein Terminal kopiert!

Vor Kaspersky wird gewarnt

warn ru

Als Rußland über Krim und Teile des Donjezkbeckens hinaus in die Ukraine einmarschiert ist, habe ich als ITler selbstredend sofort an russische Software, insbesondere Kaspersky, gedacht.

Mal davon abgesehen, daß es dazu bekanntlich seit 4 Jahren schon Bedenken und sogar Gesetze/Verordnungen gibt – in den USA und den NL, nicht etwa in dieser naiven BRD – sind nach anderthalb Wochen manche wie aufgescheuchte Hühner aufgewacht (wie nun plötzlich alles Russische verbannt wird – und nein, Russisch Brot heißt nur so, kommt aus Dresden). Bspw. hat Günter Born einen entsprechenden Artikel gebracht gehabt und gleichzeitig bemängelt, daß “das BSI nur bei Schönwetterbetrieb irgendwelche Binsen veröffentlicht”.

Das ist nun auch schon wieder her, dieses Amt…von einer wohl längeren Kaffeepause zurück warnt seit heute “vor dem Einsatz von Kaspersky-Virenschutzprodukten”. Man habe auch die Möglichkeit, sich “vom BSI oder von den zuständigen Verfassungsschutzbehörden beraten zu lassen”. Ahja. Ausgerechnet.

Man versucht, sich ggü. Kaspersky mehr oder weniger vorsichtig auszudrücken, sprich bewiesen ist bislang nichts (als Anti-Malware-Software gehört sie auch zu den führenden), Kaspersky Lab als russische Firma könne jedoch zu Aktionen gezwungen werden.

Da es nun mal aber um Sicherheit geht, ist von keiner auszugehen. Nun dreht es sich vor allem nicht nur um Consumer-Produkte wie KIS, woran die meisten User des darunterliegenden Spielzeugsystems denken dürften, sondern Firmen und Institutionen mit Kaspersky Endpoint Security. Da können zwar irgendwelche Entscheider ohne nötigem technischem Background beschließen (jammern werden sie sowieso ungenutzter teurer Lizenzen wegen), aber mal eben ein paar Server und Clients im vierstelligen Bereich auf irgendwas anderes umstellen, ist illusorisch.

Zumal das dann nicht nacheinander passieren müßte, sondern wie auf verseuchten Systemen auf sämtlichen gleichzeitig (bzw. auf einen Schlag abschalten und saubere nach und nach dazuschalten) und auch nicht nur Deinstall von KES und Install von ja-was-denn-gleich. Es müßten sämtliche Rechner komplett neu installiert werden, wenn man Vorsatz unterstellt. Für saubere Systeme allgemein sowieso – ich sage mal nur kavremvr.exe (oder auch NRnR.exe, MCPR.exe etc. der Konkurrenz). D.h., diese sich tief ins System eingrabenden Programme sind selbst nicht in der Lage und/oder willens, sich sauber zu entfernen. Jeweilige Remover werden auch nur einen Teil hinterherkehren.

Wenn schon so grundlegend, könnte man auch gleich mal richtig umstellen. Linux, ohgottohgott!

Btw.,…

Caesar: “Die Iden des März’ sind da.”
Spurinna: “Da sind sie, aber noch nicht vorbei.”

Ob der russische Zar die Geschichte kennt? Mit seinem Faible für historisches sollte er das, zumal Rußland mit dem byzantinischen Doppeladler und als “Drittes Rom” seit dem 16. Jh. lächerlicherweise ja auch einen Teil der römischen Geschichte für sich zu vereinnahmen sucht.

Update:

Wie bereits 2018 versucht sich erwartbar Jewgeni Kasperski zu wehren. Sein Problem bzw. das der Firma Kaspersky Lab ist allerdings, daß, mag er auch noch so hehre Ziele haben, mögen bestimmte Stellen auch den Source Code einsehen können, Entwickler in der Schweiz sitzen, es sind Binaries. Sie müssen nicht aus diesem Source Code stammen, die Software kann auch jederzeit verändert werden, müßte also mindestens permanent überwacht und bei kleinstem Verdacht sofort in irgendeiner Weise gesperrt werden. Ein Unding.

Nicht zu reden davon, daß IT-Kleingeister auf beiden Seiten Rußland vom Internet trennen wollen. Ein Malware-Scanner, der stetig Server kontaktieren muß, ist dann abgeschnitten.

Btw., schon jemand über das ebenfalls bekannte Dr. Web “cure it” nachgedacht? Moskau und St. Petersburg. Erstklassiger Scanner der anderen Art (einzelnes, nicht zu installierendes Windows-Executable, das alles enthält und daher auf Bedarf jeweils aktuell zu ziehen ist, ~350 MiB, natürlich nicht vom verdächtigen System und Rüberbeamen auch bloß mit CDR, sprich schreibgeschützt), der auf möglichen Befall checkt, also im Nachhinein. Allerdings: wer zuerst kommt, mahlt zuerst. Dennoch kann “cure it” weitgehend cleanen, wobei ein verseuchtes und behandeltes System grundsätzlich als kompromittiert gilt.

CLT 2022

CLT 2022 Logo

Hätte man die Chemnitzer Linux-Tage zwei Wochen später veranstalten wollen, wäre das “sogar” vor Ort möglich gewesen (sofern nicht wieder ein Medizinalratloser willkürliche Riegel vorschiebt). Aber sowas braucht ja eine organisatorische Vorlaufzeit und wenigstens halbwegs Planungssicherheit.

2021 ist pünktlich zum Start 9:30 das Eigentliche zusammengebrochen. Mir ist aber auch nicht klar, wieso man das Streaming ausschließlich in viel zu hohen Auflösungen und damit exorbitantem Traffic anbieten muß. Es geht auch nicht nur um die Server-Seite, ich als User (schnelle Flatrate her oder hin) kann unnötigen Traffic nicht ab. Daher habe ich mir das nur eine zeitlang des technischen Interesses am dahinterstehenden System wegen angetan.

Auch reine Audiostreams (.ogg oder .mp3), was in den meisten Fällen genügt (und nicht selten durch ungeübte Vortragende schon eine Zumutung ist), hat es 2021 nicht mehr gegeben. In den Jahren davor habe ich, wenn ich nicht gerade in Chemnitz gewesen bin, mit vlc in den einen oder anderen Raum ‘reingehört (.m3u hier auch verlinkt), was prima nebenbei geht. Wie Radio eben. Man wird morgen sehen, ob das in Chemnitz erkannt worden ist.

Update 2022-03-12: Ich habe über das Pad in der Eröffnungskonferenz gefragt…nein, reine Audiostreams gibt es (wieder) nicht. So irritiert, wie geantwortet worden ist, kann man erkennen, daß man das dort auch überhaupt nicht (mehr) auf dem Schirm hat. Also sollte man sich genau überlegen, in welchen Raum und wie lange man geht. Ganzen Tag nebenbei laufen lassen wie Webradio, ist keine gute Idee.

Firefox 98: Profile nicht abwaertskompatibel

Warnung: Firefox ändert mal wieder etwas an den Profilen, sprich mit Fx 98.0 candidate build 2 (die Final ist für 2022-03-08 avisiert) einmal gestartet, kann das Profil nicht wieder mit der derzeitigen Final 97.0.1 geladen werden.

Ein realistisches Szenario, da Fx 98.0cb2 Sites reproduzierbar crashen läßt, die aus einem Link in Thunderbird geladen werden.

Wer also diese Dev-Version testen will, vorher “~/.mozilla/” sichern!

enlightenment: suid setzen

Nachdem in einem Forum-Thread bezeichnenderweise auch nach anderthalb Tagen statt einer Lösung für

“Enlightenment cannot successfully start the enlightenment_system service since it can’t become group root. Missing setuid bit?”

nur ein Link zu einem Bugreport (den ich auch längst gefunden gehabt habe) gepostet worden ist, habe ich mich unter dem Bugreport erbarmt. Das Problem an sich ist nicht neu (ist bei mir damals mit e17, e18, e19 auf Lubuntu oder siduction allerdings nicht aufgetreten), Lösungen in anderen Foren sind jedoch auch nicht wirklich existent. Eine vielleicht, freilich noch vor dem usrmerge, damit mit anderen Pfaden.

1
2
# chmod 4755 /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_sys
# chmod 4755 /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_system

Der launchpad.net-Editor ist im übrigen ein Grauen. Weder gibt es ersichtlich Codeblocks noch Link-Syntax (vielleicht wenigstens BBCode, habe ich aber nicht auch noch ausprobieren wollen, denn Vorschau und Editieren sind ebenfalls nicht möglich, dafür aber sinnfreie nicht verhinderbare harte Zeilenumbrüche trotz wesentlich breiterem Editor-Fenster). Paßt damit bestens zu Canonical/Ubuntu.