tar Archive parallel packen und komprimieren

Vor kurzem hab ich gelernt, dass man mit tar Archive auch parallel packen und komprimieren kann. Dazu wird das Programm pigz benötigt.

Installation von pigz

Installiert wird das Programm unter CentOS mit

sudo yum install pigz

und unter Ubuntu mit

sudo apt install pigz

Paralleles archivieren und komprimieren von Dateien

Ist pigz installiert, lassen sich Dateien mit tar recht einfach packen und komprimieren. Dazu wird der Parameter –use-compress-program (Kurzform: -I (großes i)) verwendet:

tar -c -I pigz -f archive.tar.gz datei1 datei2

Paralleles Entpacken

Parallel entpacken funktioniert ähnlich wie das packen:

tar -x -I pigz -f archive.tar.gz

Referer Informationen im Request Header deaktivieren

Wenn man normalerweise auf einen Link klickt, fügt der Browser in dem Request Header eine entsprechende “Referer” Zeile hinzu. Doch nicht immer möchte man, dass die eigene Web Applikationen diese Informationen weiterleitet. Das kann auch aus sicherheitstechnischen Aspekten relevant sein, wenn man nicht zu viel Informationen aus dem internen Netz nach außen geben möchte.

Mittlerweile kann der Webserver den Header “Referrer-Policy” setzen um zu verhindern, dass der Browser “Referer” Informationen weiter gibt. Dazu kann man z.B. in der httpd.conf eine Zeile wie diese eingeben

Header always set Referrer-Policy "no-referrer"

Jetzt muss man dem httpd noch sagen, dass er die Konfiguration neu laden soll

/usr/sbin/httpd -k graceful

Man kann neben “no-referrernoch andere Werte angeben. Das liegt dann an den eigenen Wünschen, welchen Wert man nimmt.

Uncaught Error: Call to undefined function json_encode()

Beim Aufsetzen eines CentOS 8 Images mit httpd und DokuWiki bekam ich diese Fehlermeldung

Fatal error: Uncaught Error: Call to undefined function json_encode() in /var/www/html/dokuwiki/inc/template.php:343 Stack trace: #0 /var/www/html/dokuwiki/lib/tpl/dokuwiki/main.php(22): tpl_metaheaders() #1 /var/www/html/dokuwiki/inc/actions.php(27): include('/var/www/html/d…') #2 /var/www/html/dokuwiki/doku.php(120): act_dispatch() #3 {main} thrown in /var/www/html/dokuwiki/inc/template.php on line 343

Die Lösung dafür war, das Paket php-json auf der Maschine zu installieren:

yum install -y php-json

CreateProcess failed: The system cannot find the file specified.

Beim Bau der Bibliothek skia unter Windows bekam ich diese Fehlermeldung:

[419/2871] copy ../../third_party/externals/icu/common/icudtl.dat icudtl.dat
FAILED: icudtl.dat
python .../skia/build/skia/gn/cp.py ../../third_party/externals/icu/common/icudtl.dat icudtl.dat
CreateProcess failed: The system cannot find the file specified.
ninja: fatal: ReadFile: The handle is invalid.

Wie es sich herausgestellt hat, lag das Problem darin, dass ninja versucht hat, Python aufzurufen, Python aber nicht gefunden hat. Genauer gesagt, python.exe.

Um die python.exe aus den depot_tools aufrufen zu können, muss man vorher erstmal das Skript update_depot_tools.bat aufrufen (wenn man das vorher nicht schon getan hat). Danach sollte sich eine python.exe in dem Ordner <some\path>\depot_tools\win_tools-2_7_6_bin\python\bin befinden. Der Pfad kann sich in der Zukunft vermutlich ändern. Jedenfalls war das bei mir der Fall. Diesen Pfad muss man noch in der Umgebungsvariable PATH hinzufügen, z.b. in einem Batch-Skript mit

set "PATH=%PATH%;<some\path>\depot_tools\win_tools-2_7_6_bin\python\bin"

Danach sollte der Fehler verschwunden sein.

InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Meine Ausgangssituation war folgende: Ich hatte eine Ubuntu 18.04 Maschine mit Jenkins darauf. Jenkins war frisch installiert. Nun wollte ich neue Plugins installieren, also bin ich auf die Seite des Plugin-Managers gegangen. Dort habe ich auf den Button Check now geklickt und prompt kam dann diese Fehlermeldung:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)
at java.security.cert.PKIXParameters.(PKIXParameters.java:120)
at java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104)
at sun.security.validator.PKIXValidator.(PKIXValidator.java:89)
Caused: java.lang.RuntimeException: Unexpected error
at sun.security.validator.PKIXValidator.(PKIXValidator.java:91)
at sun.security.validator.Validator.getInstance(Validator.java:179)
at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312)

Wie ich herausgefunden habe, war das Problem, dass unter Ubuntu 18.04 und Debian, die cacerts-Datei für Java 9, 10 und 11 das Format pkcs12 benutzt. Frühere Java Versionen haben aber die Version jks benutzt. Das pkcs12-Format verlangt aber ein Passwort, was standardmäßig changeit lautet. Bei mir musste ich nun folgendes machen:
In der /etc/default/jenkins nach der Zeile suchen, die mit JAVA_ARGS anfängt.
Dort dann einfach -Djavax.net.ssl.trustStorePassword=changeit hinzufügen. Bei mir sieht das dann so aus:

JAVA_ARGS=”-Djava.awt.headless=true -Djavax.net.ssl.trustStorePassword=changeit”

Und dann Jenkins neustarten: sudo systemctl restart jenkins

Wenn man nichts falsch gemacht hat, sollte man nun im Plugin-Manager auf Check now klicken können ohne das diese Fehlermeldung nochmals auftaucht.

Quellen: