Zum Inhalt

denniswilmsmann.de Posts

Raspberry Pi Distro Update

Mein etwas in Jahre gekommener Raspberry Pi hat seit einiger Zeit keine Updates mehr bekommen. Auch wenn auf dem System nur noch FHEM und ein Pi-hole (in Docker) laufen, sind (Sicherheits-) Updates nicht unwichtig. Ein Blick auf die Infoseite zu Debian LTS bestätigte dann, mein raspbian auf Basis von Jessie (8) bekommt keinen Support mehr. Leider ist ein direktes Update von Jessie (8) auf Buster (10) nicht möglich bzw. nicht sinnvoll. Daher ist ein Zwischenschritt auf Stretch (9) notwendig. Im Endeffekt dauert es nur alles etwas länger, die Schritte für die Updates sind identisch. Vorab hab ich ein Backup der SD Karte mit Win32DiskImager gemacht; für alle Fälle.

Update Jessie auf Stretch:

sudo sed -i /deb/s/jessie/stretch/g /etc/apt/sources.list
sudo sed -i /deb/s/jessie/stretch/g /etc/apt/sources.list.d/*.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo reboot

Das hat sogar komplett problemlos geklappt. Bei Update von Stretch auf Buster kam dann aber ein kleines Problem dazwischen:

sudo sed -i /deb/s/stretch/buster/g /etc/apt/sources.list
sudo sed -i /deb/s/stretch/buster/g /etc/apt/sources.list.d/*.list
sudo apt-get update

sudo apt-get upgrade
# Hier funktionierte nun apt-listchanges nicht mehr, wegen einem fehlenden Python Paket: debconf
sudo apt-get remove apt-listchanges
sudo apt-get upgrade # neuer Versuch
sudo apt-get dist-upgrade

# debconf wieder manuell installieren
wget http://ftp.de.debian.org/debian/pool/main/d/debconf/debconf_1.5.61_all.deb
sudo dpkg -i debconf_1.5.61_all.deb

sudo apt-get autoremove
sudo apt-get autoclean
sudo reboot

Das zweite Update hat deutlich länger gedauert, aber letztendlich auch funktioniert. Hier das Ergebnis:

pi@raspberrypi:~ » cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Pi-hole mit docker-compose

Auf einem Raspberry Pi oder einem anderen System mit einem Docker Daemon lässt sich Pi-hole sehr leicht betreiben. Hier das dazugehörige docker-compose.yml:

version: "3"
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - "8000:80/tcp"
      - "8443:443/tcp"
      - "5353:53/tcp" 
      - "5353:53/udp" 
      - "192.168.1.130:53:53/tcp"
      - "192.168.1.130:53:53/udp"
    environment:
      TZ: Europe/Berlin
      WEBPASSWORD: hierEinPasswortEintragen
      DNS1: 46.182.19.48
      DNS2: 80.241.218.68
      ServerIP: 192.168.1.130
      VIRTUAL_HOST: pihole.fritz.box
    volumes:
       - './etc-pihole/:/etc/pihole/'
       - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
    dns:
      - 127.0.0.1
      - 46.182.19.48
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

Angepasst werden müssen die IP Adresse (hier 192.168.1.130), VIRTUAL_HOST und am besten auch WEBPASSWORD. Die beiden hinterlegten DNS Server gehören zu dismail.de bzw. digitalcourage.de. Über Port 8000 ist dann die Weboberfläche erreichbar. Die IP Adresse des Docker Hosts stellt dann via Port 53 Pi-hole für DNS Anfragen bereit.

Amazfit Bip verliert Bluetooth Verbindung

Vor einiger Zeit hat mein Huawei P30 Pro das Update auf EMUI 10 bzw. Android 10 bekommen. Seitdem hat meine Amazfit Bip noch häufiger als noch unter EMUI 9 das Problem, keine Verbindung per Bluetooth herstellen zu können. Ein System dahinter habe ich bisher nicht entdeckt: Es funktioniert mehrere Tage problemlos, dann wieder nicht. Neustart der App bzw. des Handys helfen manchmal, aber nicht immer.

Aber scheinbar klappt es hiermit: Die Bluetooth App (ein Systemprozess) muss gestoppt und der Cache dieser App gelöscht werden. Dann klappt es.

  1. Apps
  2. Systemprozesse anzeigen (Menü rechts oben)
  3. nach Bluetooth suchen
  4. App stoppen
  5. Cache löschen (unter Speicher zu finden)

Via Telegram über SSH Logins informieren

Über die Telegram API kann man sich bequem benachrichtigen lassen, wenn sich ein Benutzer per SSH auf einem System eingeloggt hat. Dazu folgende Zeilen in die Datei /etc/ssh/sshrc einfügen.

IP=`echo $SSH_CONNECTION | cut -d " " -f 1`
HOSTNAME=`hostname`
MESSAGE="SSH Login on $HOSTNAME as $USER from $IP"
curl --output /dev/null -s -X POST -H 'Content-Type: application/json' -d "{\"chat_id\": \"-123456789\", \"text\": \"$MESSAGE\", \"disable_notification\": true}" https://api.telegram.org/bot123456789:hgDW0mvUcio_AF4Za1nh-aY7PX/sendMessage

Wie an die Chat ID und das Token für den Bot zu kommen ist, ist z.B. hier beschrieben.

Aktuelle Go Version in der Ubuntu Bash (WSL) installieren

Eigentlich ganz einfach: Runterladen, entpacken und in /usr/local verschieben.

# download current version (1.13.3)
mkdir golang-update
cd golang-update
wget https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz
tar xvzf go1.13.3.linux-amd64.tar.gz

# remove old version
sudo rm -rf /usr/local/go

# move new version in place
sudo mv go /usr/local

# set GOPATH and add folders to PATH
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

# run go version
go version

# result: go version go1.13.3 linux/amd64

Maven Dependencies und Plugins updaten

Mit dem Plugin versions-maven-plugin lassen sich einfach Update für Maven Dependencies und Plugins finden.

In der pom.xml wird das Plugin so eingebunden:

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>versions-maven-plugin</artifactId>
	<version>2.7</version>
	<configuration>
		<generateBackupPoms>false</generateBackupPoms>
	</configuration>
</plugin>

Updates können dann mit mvn versions:display-plugin-updates bzw. mvn versions:display-dependency-updates identifiziert werden.

PDF Dateien verkleinern mit Ghostscript

Es gibt haufenweise kommerzielle Produkte, die PDF Dateien verkleinern. Es geht aber auch kostenlos sehr einfach. Nur auf eine schicke GUI muss man verzichten. Unter Linux (in meinem Fall Ubuntu 18.04 LTS unter Windows 10) geht das sehr, sehr einfach.

  1. Installation von Ghostscript und wget:
    sudo apt-get install ghostscript wget
  2. Download von Shrinkpdf:
    wget http://www.alfredklomp.com/programming/shrinkpdf/shrinkpdf.sh
  3. Und jetzt lassen sich bequem PDF Dateien verkleinern:
    ./shrinkpdf.sh my_large_file.pdf my_small_file.pdf 200
    

    Hinweis: An der Qualität (hier 200) lässt sich drehen, um die gewünschte Größe oder Qualität zu erreichen.

  4. Wenn jetzt noch mehrere PDFs zusammengefügt werden sollen, hilft wieder Ghostscript:
    gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=single.pdf -dBATCH first.pdf second.pdf