Ubuntu 16.04 LTS
Last updated
Was this helpful?
Last updated
Was this helpful?
In den letzten beiden Jahren habe ich mit sehr gute Erfahrungen gemacht. Durch einen Firmenwechsel wollte ich nun aber ein neues Image aufsetzen und das sollte nun teilweise auch mit Ansible gescriptet werden.
Während ich bei der Nutzung von Festplatten mit HardDrives (vor einigen Jahren) noch Performanceeinbußen gegenüber Windows 7 Nutzern hatte, hat sich das durch die Nutzung von SSDs ausgeglichen. Mittlerweile bin ich unter meiner VirtualBox Vm sogar schneller als der Windows 10 Kollege ... vielleicht ist die IO-Performance unter Windows wieder schlechter geworden oder es liegt an den Echtzeit-Virenscannern, die in Unternehmen i. a. unter Windows eingesetzt werden (auch wenn die Entwikler hier zumeist ein Verzeichnis erhalten, das der Scanner ignoriert).
Auf keinen Fall möchte ich wieder auf ein Windows-System wechseln und die vielen liebgewonnen Tools (ordentliche Shells wie bash/zsh mit Autovervollständigung ... sogar auf Tools wie docker/git/curl, GNU-Tools, , , automatische Softwareupdates auf selbstinstallierter Software, awesome, terminator, ...) hergeben. Nicht zu vernachlässigen ist die Tatsache, daß meine Software zumeist unter Linux läuft und ich dementsprechend ein gewisses Knowhow auf dieser Plattform benötgige und natürlich auch produktionsnäher arbeite.
Download des ISO-Abbilds von http://releases.ubuntu.com/16.04/
ISO-Image (CD-ROM-Laufwerk) in ein neues VirtualBox-Image einbinden ... dann die Maschine starten.
http://praxistipps.chip.de/ubuntu-auf-deutsch-umstellen_42440
Das Thema hat mich fast zur Verzweiflung gebracht, weil ich in dieser Unity-Oberfläche nicht gefunden habe wie ich ein deutsches Tastatur-Layout einstelle. Der TextEntry-Dialog
war für mich nicht intuitiv bedienbar. Unter Input sources to use hätte ich nicht die Umstellung des Layouts erwartet ... man muß hier das Pluszeichen drücken und dann das entsprechende Layout auswählen. Toll gemacht :-)
Da das ISO-Artefakt schon ein paar Wochen alt ist, sind die installierten Pakete mittlerweile schon veraltet. Über sudo apt-get install && sudo apt-get upgrade
wird es auf dem aktuellen Stand gebracht.
Nach dem erfolgreichen Reboot (diesmal in die grafische Oberfläche) ist die Auflösung so klein, daß ich kaum was erkennen kann. Ich binde die VirtuialBox-Gasterweiterungen über das VirtualBox Menü ein und automatisch wird die CD eingebunden und das Skript zum Installieren der Gasterweiterungen startet. Nach der Installation werde ich noch auf die unvollständige Sprachunterstützung hingewiesen. Ich hätte das Update-Skript direkt per Maus starten können, doch leider ist meine Internetverbindung (Authenifizierung am Proxy) noch nicht fertig eingerichtet. Nach einem Reboot habe ich auch endlich eine ordentliche Auflösung :-)
Hmmm, daß ich das Root-Passwort nicht kenne und nur per sudo bash auf eine Root-Shell komme ... irgendwie gefällt mir das nicht. Ist aber Ubuntu-typisch ... ich kann mich noch dunkel erinnern ...
Ich ändere das per
ab und vergebe ein neues Root-Passwort.
Ein Ordner vom Windows-Host (z. B. C:\transfer
) wird zum Austausch von Dateien benutzt. Virtualbox bindet den Shared Folder z. B. unter /media/sf__VirtualBox_transfer_
ein. Die Gruppe vboxsf
hat die notwendigen Rechte. Deshalb müssen alle User, die Zugriff auf das Verzeichnis haben sollen, in dieser Gruppe sein:
Danach muß sich der User ab- und wieder anmelden.
u. a. Ansible wird diese Vorarbeit später benötigen.
Der im vorigen Abschnitt erzeugte Public-Key jedes zugreifenden Users muß im zugegriffenen User des Servers unter ~/.ssh/authorized_keys
abgelegt werden.
Das Ansible-Skript soll ohne Interaktion auskommen. Da man i. a. aber eine Passphrase über den Private-Key legt, müßte dem Ansible-Controller die Passphrase bekannt sein. Das will man aber eigentlich nicht ... deshalb kann man den SSH-Agent damit beauftragen.
Für meinen Standarduser pfh
(der später mal die Ansible-Playbooks ausführen wird) wird per visudo
die sudo-Ausführung ohne Passwortabfrage konfiguriert:
Diese Einstellung ist werforderlich, weil ich in den Ansible-Skripten die Einstellung
verwende.
Die Standard Java Installation als /etc/alternatives
finde ich grottig, weil dabei folgendes entsteht:
Wenn ich dann allerdings die Java-Version umschalten will, dann muß ich per (http://askubuntu.com/questions/121654/how-to-set-default-java-version)
jedes einzelne Tool auf eine andere Location umschalten. Zudem bleibt davon die JAVA_HOME
Variable unberührt ... die muß ich noch manuell umsetzen. Wer hat sich das ausgedacht????
Ich lege meine Java-Versionen unter /usr/lib/jvm
ab (so macht es das Paket ppa:webupd8team/java
) und erzeuge einen Link auf die aktuelle Version:
Der symbolische Link java
zeigt immer auf die aktuelle Version.
Zudem setze ich ein paar Standard-JDK-Variablen auf eben diesen Link (/ect/profile.d/jdk.sh
):
Dadurch erreiche ich, daß ich ALLEIN durch Umsetzen des Links /usr/lib/jvm/java
die Version umschalten kann. Das verpacke ich noch in ein schönes Script ... voila.
Ich werde versuchen, die Installation und Konfiguration dieses Images zumindest teilweise scripten (das ist mein Einstieg in die Ansible-Welt) ... keine Ahnung, ob ich die Disziplin aufbringen werde, mein gesamtes Setup dauerhaft zu scripten.
Ergo: eine Ansible-Installation in meiner Workbench macht auf jeden Fall Sinn.
Meine Erklärungen fallen hier recht kurz aus, weil der Code die Dokumentation ist.
midnight-commander
awesome Fenstermanager
zsh und oh-my-zsh
mit der ~/.zshrc
von GRML
Oracle-Java-Installation
http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html
es gibt kein offizielles Ubuntu-Paket des Oracle-Java. Stattdessen habe ich mich entschieden ein PersonalPackageArchive zu verwenden, weil das - gegenüber der Installation eines Tar-Balls - den Vorteil vom Idempotenz bei Verwendung von Ansible und automatischer Updates hat. Der PPA-Anbieter ist Launchpad hinter dem die Firma Canonical steht. Außerdem komme ich so um die leidige Alternatives Konfiguration rum.
das PPA ppa:webupd8team/java
umfaßt nur einen interaktiven Installer, der das Original Oracle JDK als tar.gz vom Oracle-Server runterlädt und installiert. Es es somit auch möglich, das tar.gz selbst vom Oracle-Server zu laden und lokal unter /var/cache/oracle-jdk8-installer
abzulegen ... dann wird es nicht mehr innerhalb des Installers vom Server runtergeladen. Es ist aus lizenzrechtlichen Gründen nicht erlaubt, ein Paket anzubieten, das das JDK bereits enthält!!!
dieser Installer kann auch Java 7 installieren ... nach der Installation läßt sich per sudo update-java-alternatives -s java-8-oracle
bzw. sudo update-java-alternatives -s java-7-oracle
zwischen den beiden Versionen umschalten.
https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1
Ich bin obiger Installationsanleitung gefolgt, um Docker von 17.05 auf 17.12 upzugraden. Hierzu deinstallierte ich zunächst die alte Version (sudo apt-get remove docker docker-engine docker.io
) und installierte anschließend - nach Integration der richtigen Repositories - die neue. Ging problemlos.
https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1
sudo apt-get update
über apt-cache madison docker-ce
die verfügbaren Versionen anzeigen
die gewünschte Version per sudo apt-get install docker-ce=18.03.0~ce-0~ubuntu
installieren
sudo apt-get update
über apt-cache madison docker-ce
die verfügbaren Versionen anzeigen
die gewünschte Version per sudo apt-get install docker-ce=18.03.0~ce-1~ubuntu
installieren, doch das schlägt fehl: E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
nach Ausführung von sudo dpkg --configure -a
funktioniert die obige Installation wie erwartet
sudo apt-get update
über apt-cache madison docker-ce
die verfügbaren Versionen anzeigen
die gewünschte Version per sudo apt-get install docker-ce=18.06.0~ce~3-0~ubuntu
installieren, doch das schlägt fehl: E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
nach Ausführung von sudo dpkg --configure -a
funktioniert die obige Installation wie erwartet
https://askubuntu.com/questions/879480/how-to-install-the-latest-awesome-window-manager
Frage 1: Ich bekomme beim Update des Systems die Meldung "Package System is broken". Irgenwie weiß ich nicht weiter ...
Antwort 1: Die Kommandos haben mir geholfen (http://askubuntu.com/questions/118749/package-system-is-broken-how-to-fix-it):
Frage 2: Die UI einiger Java-Programme wird nicht angezeigt (z. B. JVisualVM).
Antwort 2: Bei mir lag es daran, daß ich awesome
Windowmanager verwendet habe. Unter Gnome hat es problemlos funktioniert. Um es unter awesome nutzen zu können mußte ich /usr/bin/wmname Sawfish
in die ~/.bashrc
eintragen (früher hatte ich mal /usr/bin/wmname LG3D
verwenden - das hat unter LTS 16.04 nicht funktioniert).
Frage 3: Der Texteditor Atom von GitHub startet weder unter Gnome noch unter awesome in meinem Virtualbox Image vernünftig - es öffnet sich ein Fenster, aber das sieht aus wie ein Flickenteppich. Diese Fehlermeldung wird auf der Konsole ausgegeben:
Antwort 3: Das Problem wurde durch den Parameter --disable-gpu
in chromium-browser --disable-gpu
behoben. Weitere Details: https://forums.virtualbox.org/viewtopic.php?f=3&t=77404
Frage 4: Ich habe 9 GB Ram und top
zeigt mir, daß 7,7 MB erst verbraucht sind. Dennoch habe ich 1,5 GB Swap-Space im Einsatz. Was soll das?
Antwort 4: Das hängt mit dem Swappiness-Faktor zusammen, der auf meinem System per Default auf 60 konfiguriert war (cat /proc/sys/vm/swappiness
) - http://askubuntu.com/questions/157793/why-is-swap-being-used-even-though-i-have-plenty-of-free-ram. Linux verwendet den RAM auch für internes Caching (Inodes, Page Chache, ... siehe Angabe 2083016 buff/cache
) - dieser Speicher kann aber bei Bedarf jederzeit freigegeben werden und ist somit potentiell auch frei. Insofern kann es bei einem System, das mal am Rande eines Speicherengpasses war, auch vorkommen, daß Swap-Space allokiert wurde und dann aber auch nicht mehr zurückgebaut wurde (Linux macht das schon sehr schlau und man sollte sich darauf verlassen und nur in äußersten Notfällen Änderungen vornehmen). Unter diesem Gesichtspunkt muß man die Ausgabe von top
verstehen:
Will man den Swap-Space loswerden, dann kann man beispielsweise sudo swapoff -av
verwenden (bzw. sudo swapon -av
um es wieder rückgängig zu machen).
Frage 5: Ich bekomme bei sudo apt-get update
ein The following signatures were invalid: KEYEXPIRED
.
Antwort 5: Ein PGP-Key für ein Package-Repository ist abgelaufen und muß erneuert werden. Zunächst per apt-key list | grep expired
die entsprechenden Keys identifizieren (z. B. pub 1024D/5072E1F5 2003-02-03 [expired: 2017-02-16]
) und dann per apt-key adv --keyserver keys.gnupg.net --recv-keys 5072E1F5
oder - wenn eine Firewall den Port 11371 blockiert - apt-key adv --keyserver hkp://keys.gnupg.net:80 --recv-keys 5072E1F5
.
Frage 6: Ich bekomme bei sudo apt-get update
eine Fehlermeldung could not open file /var/lib/apt/lists/partial/security.ubuntu.com_ubuntu_dists_xenial-security_main_dep11_icons-64x64.tar.gz - open (13: Permission denied)
- was kann ich tun?
Antwort 6: Es wurden schon Pakete teilweise runtergeladen, die können gelöscht werden - siehe https://askubuntu.com/questions/917603/sudo-apt-get-update-failing-could-not-open-list-file-due-to-permission-deni
Frage 7: Ich habe kaum noch Platz in meinem Filesystem - wie schaffe ich Platz Antwort 7: Klar, eigenes Zeug zu löschen ist immer ein bisschen gefährlich (braucht man es wirklich nicht mehr):
Zipfiles und Downloads löschen
nicht mehr benötigte Packages (weil updated) können gelöscht werden: sudo apt-get autoremove
Paketcache löschen: sudo apt-get clean
Sollte ich dann doch nicht für meine Workbench nutzen, so dann zumindest als Ansible-Controller für zu managende Zielrechner.
Danach muß die ssh-Infrastrukur (authorized_keys, prublic/private-Key, ssh-Agent) noch konfiguriert werden ... siehe . Weitere Details siehe .