Zurückbehaltene Pakete unter Ubuntu aktualisieren

Unter Umständen kann es vorkommen, das bei einer Paketaktualisierung mittels apt folgende Meldung erscheint:

The following packages have been kept back:
grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed gzip php8.1-bcmath php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-gmp php8.1-imap php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-phpdbg php8.1-readline php8.1-sqlite3 php8.1-xml php8.1-zip
0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.

Grund für diese Meldung kann unter anderem sein, das in der Abhängigkeitskette für eines der Pakete ein neues Paket dazugekommen ist. Daneben werden Pakete in der gleichen Version im Normalfall nicht noch einmal aktualisiert. Soll ein solches zurückgehaltenes Paket trotzdem installiert bzw. aktualisiert werden, so kann hierfür folgender Befehl genutzt werden:

apt install --only-upgrade php8.1-zip

Anschließend wird das Paket aktualisiert. Allerdings sollte diese Option mit Bedacht gewählt werden, da es unter Umständen zu Änderungen kommen kann, welche das System bzw. Teile davon in einem nicht funktionsfähigen Zustand zurücklassen, sodass anschließend nachkonfiguriert werden muss.

Ed25519-SSH-Schlüssel im Terminal generieren

Wer in den letzten Jahren einen SSH-Schlüssel generiert hat, wird meist RSA als kryptografischen Verfahren dafür genutzt haben. Mittlerweile geht die Empfehlung für neue Schlüssel mehrheitlich zu solchen, welche auf elliptische Kurven basieren. Ein solcher Schlüssel kann im Terminal über den Befehl:

ssh-keygen -t ed25519

generiert werden. Alternativ kann eine entsprechende E-Mail-Adresse für den Schlüssel definiert werden:

ssh-keygen -t ed25519 -C ""

Anschließend wird ein entsprechender Schlüssel erzeugt:

The key fingerprint is:
SHA256:1RCIsYVjuj9JUdpkAQEpnHmQEI2n+VsW1hr5dPk/X9w 
The key's randomart image is:
+--[ED25519 256]--+
|o*.=.o+*ooo.     |
|. O o =o=  o     |
| + o =.B .. .    |
|o   * = +.       |
| . . B oS.       |
|  . = o   .    ..|
|   + o .   .    E|
|  .   +     o  . |
|       .     o.  |
+----[SHA256]-----+

Wer sich den öffentlichen Schlüssel anschaut, wird feststellen, das dieser wesentlich kürzer ist:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDQFUwFRKdr/6xq208X6ME9kQF0pxVWSEmIkMqJXwUZ2 

Die Länge des Schlüssels verglichen mit den RSA-Schlüsseln sagt allerdings direkt nichts über die Sicherheit des Schlüssels aus. Grundsätzlich sind die Ed25519-Schlüssel kürzer als vergleichbare RSA-Schlüssel. Daneben ist das Verfahren schneller und resistenter gegen Kollisionsattacken und sollte daher in Zukunft gewählt werden.

Audio-Dateien mittels ffmpeg normalisieren

Für einen Audio-Workflow wollte ich unter anderem Audio-Dateien normalisieren, damit diese mit einer identischen Lautheit verfügbar sind. Dazu kann das freie ffmpeg genutzt werden:

ffmpeg -i local.flac -filter:a loudnorm local.wav

Allerdings wird bei der Normalisierung eine 2-Pass-Lösung empfohlen. Dabei wird im ersten Durchlauf die Datei analysiert, um die entsprechenden Werte für die qualitativ hochwertige Normalisierung zu ermitteln:

ffmpeg -i local.flac -filter:a loudnorm=print_format=json -f null NULL

Für die entsprechende Datei wird dann eine Ausgabe erzeugt:

{
	"input_i" : "-33.65",
	"input_tp" : "-8.11",
	"input_lra" : "7.10",
	"input_thresh" : "-44.96",
	"output_i" : "-25.28",
	"output_tp" : "-2.00",
	"output_lra" : "4.50",
	"output_thresh" : "-36.36",
	"normalization_type" : "dynamic",
	"target_offset" : "1.28"
}

Mithilfe dieser Informationen kann dann der zweite Durchlauf gestartet werden:

ffmpeg -i local.flac -filter:a loudnorm=linear=true:i=-16:lra=7.0:tp=-2.0:offset=0.50:measured_I=-33.65:measured_tp=-8.11:measured_LRA=7.10:measured_thresh=-44.96 -ar 44100 local.wav

Da die Lösung mittels ffmpeg etwas umständlich ist, wurde ffmpeg-normalize entwickelt. Dieses Python-Tool kann über den Python-Paketmanager installiert werden:

pip3 install ffmpeg-normalize

Anschließend kann die Normalisierung und Konvertierung vorgenommen werden:

ffmpeg-normalize local.flac -o local.wav -ar 44100

In diesem Fall wird die FLAC-Datei normalisiert und in eine Wave-Datei konvertiert und die entsprechende Samplerate auf 44100 gestellt. Um das Kommando einfacher zugänglich zu machen, kann eine Bash-Funktion definiert werden. Unter macOS muss diese in der entsprechenden Konfigurationsdatei der Z shell angelegt werden:

nano ~/.zshrc

Anschließend kann die entsprechende Funktion in der Datei definiert werden:

normalize ()
{
  ffmpeg-normalize "$1" -o "$1".wav -ar 44100
}

Nachdem das Terminal neu gestartet wurde, kann das Kommando wie folgt benutzt werden:

normalize local.flac

Problematische USB-Sticks unter Windows formatieren

Manchmal kann ein USB-Stick unter Windows nicht mit den grafischen Bordmitteln formatiert werden. Dies kann auftreten, wenn auf dem USB-Stick mehrere Partitionen vorhanden sind. In einem solchen Fall kann auf die Kommandozeile und das Werkzeug diskpart zurückgegriffen werden.

Die Kommandozeile unter Windows

Mithilfe dieses Werkzeuges können bestehende Partitionen gelöscht und der USB-Stick neu initialisiert werden. Dazu muss die Kommandozeile gestartet werden und der Befehl diskpart eingegeben werden. Anschließend müssen die vorhandenen Datenträger ermittelt werden:

list disk

Das Kommando listet dabei die angeschlossenen Datenträger auf:

  Datenträger ###  Status         Größe    Frei     Dyn  GPT
  ---------------  -------------  -------  -------  ---  ---
  Datenträger 0    Online         3953 GB    12 MB        *
  Datenträger 1    Online         7450 MB  3263 MB        *

Mithilfe der Auflistung kann der korrekte Datenträger ausgewählt werden:

select disk 1

Im letzten Schritt muss der Datenträger bereinigt und mit einer neuen Partition versehen werden:

clean
create partition primary

Nachdem der Vorgang abgeschlossen wurde, kann diskpart mittels exit verlassen werden und der Stick normal formatiert werden.

Datei im Terminal Base64 kodieren

Wer unter macOS eine Datei Base64 kodieren möchte, kann dies einfach über das Terminal bewerkstelligen:

cat file.md | base64 > file-base64.md

Auch die Rückwandlung funktioniert analog:

cat file-base64.md | base64 --decode > file-decoded.md

Das Ganze muss auch nicht mit ganzen Dateien betrieben werden, sondern kann auch direkt mit Text befüllt werden:

echo -n 'Lorem Ipsum' | base64

Wie bei den Dateien kann mittels des Parameters –decode das Ganze wieder dekodiert werden.