[Rust] Diesel für Rust auf Windows installieren

Ich schreibe diese Anleitung, da die Installation von Diesel auf Windows 10 (11) nicht so einfach war…

Für die Installation unter Windows habe ich den Installer für Rust verwendet:

https://www.rust-lang.org/tools/install

Damit wird Rust und Cargo installiert, nicht Diesel.

Unter Linux (CentOS und Debian):

apt install curl -y bzw. yum install curl -y
curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh

Weitere Anleitungen für die Installation von Rust:

https://wiki.crowncloud.net/?How_to_Install_Rust_on_Debian_12

Oder einfach Googlen.

Zuerst einmal, Cargo ist für Rust zuständig Module zu installieren.

Diesel ist ein Modul für Rust, Diesel erleichtert die Datenbankzugriffe.

Diesel unterstützt PostgreSQL, MySQL und SQLite, darin liegt aber der „Hund“ begraben… wir sollten alle 3 Datenbanken auf unserem PC installiert haben. Aber das ist nur die 1/2 Miete…

Wir brauchen die libpq.lib, die libmysql.lib und die sqlite3.lib. Besser gesagt, wir müssen für Cargo die Pfade über die Windows Variablen setzen.

Anmerkung: Ich verwende unter Windows Everything, das kann man von https://www.voidtools.com/ herunterladen. Ehrlich, ich wüsste nicht, was ich ohne dieses super Tool machen sollte, die Windows Dateisuche ist ja sowas von am A****… ist elendig langsam, findet nichts und noch dazu 100% CPU, wenn irgendwas WSearch nicht passt…

PostgreSQL:

C:\Program Files\PostgreSQL\15\lib\libpq.lib

Diesen Pfad müssen wir Cargo als CMD Variable übermitteln: (Pfad selbst anpassen bitte, falls Sie PostgreSQL 16+ oder älter haben!

SET PQ_LIB_DIR=C:\Program Files\PostgreSQL\15\lib

Dann noch SQL-Lite, das ist nicht sooo einfach, dafür muss man das Windows SDK installieren, sonst muss man selbst die sqlite3.lib kompilieren… Alternativ kann man von https://github.com/buggins/ddbc das ganze Paket downloaden und entpacken, im Verzeichnis ist bei mir C:\Users\Alex\Downloads\ddbc-master\ddbc-master\libs\win64 die sqlite3.lib enthalten… aber ich hab die sqlite3.lib vom Windows-SDK genommen

SET SQLITECLIENT_LIB_DIR=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\x64

Dann ist noch MySQL dran:

Cargo sucht die mysqlclient, welche natürlich nicht gefunden wurden, dafür muss man von https://cdn.mysql.com/archives/mysql-connector-c/mysql-connector-c-6.1.11-winx64.zip herunterladen und entpacken, da war die libmysql.lib enthalten:

SET MYSQLCLIENT_LIB_DIR=C:\Users\Alex\Downloads\mysql-connector-c-6.1.11-winx64\mysql-connector-c-6.1.11-winx64\lib\vs14

Die Pfade unter Anführungszeichen „“ zu setzen, wie es in Windows mit Pfaden mit Leerzeichen so üblich ist, war hier nicht notwendig!

Danach konnte ich erfolgreich Diesel mit Cargo installieren:

cargo install diesel_cli

Nachdem ich auf einer „nackten“ Windows 10 VM das Ganze noch einmal ausprobiert habe, konnte ich trotzdem ich die sqlite3.lib in der 64-bit Version habe und die SET SQLITECLIENT_LIB_DIR korrekt auf das Verzeichnis gesetzt habe, konnte ich immer noch nicht Diesel installieren, ein wenig suchen später:

cargo install diesel_cli --no-default-features --features "sqlite-bundled mysql postgres" --force

Man nimmt die in Cargo eingebaute SQ-Lite, liefert immer die aktuelle bzw. die gesuchte sqlite3.lib…

Um mehr Output und Fehlersuche für Cargo zu ermöglichen, kann man das Log aktivieren, das macht man mit:

SET CARGO_LOG=trace cargo fetch

Getestet unter Windows 10 (wird unter Windows 11 sicher auch gehen!)

Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Happy coding!

[Debian 12] VirtualBox 7 unter Windows die .vdi bzw. .vmdk Festplatte vergrößern und Debian 12 Partition(en) erweitern

Zuerst einmal, ich verwende Windows 10 mit VirtualBox 7.0, darauf läuft Debian 12 mit Gnome.

Ich habe unterschätzt, wieviel Speicherplatz ein Desktop BS benötigt, daher habe ich mit 100GB angefangen, aber unterschätzt, wieviel Arbeit es ist, das nachher zu erweitern…

Also zuerst schauen wir mal, wo VirtualBox liegt, einfach die VBoxManage.exe suchen, am Einfachsten habe ich gefunden, Everything zu verwenden (https://www.voidtools.com/) einfach als Dienst installieren, es durchsucht die Festplatte(n) und man kann alles schnell suchen, wer das Programm nicht mag oder sich kein neues Programm installieren möchte, dann kann man auch über die Verknüpfung sehen, wo das Programm installiert ist.

Rechte Maustaste auf Virtualbox und dann Eigenschaften:

Drücken Sie auf „Dateipfad öffnen“ und voila, wir haben das richtige Verzeichnis!

Also bei mir ist VirtualBox auf C:\Program Files\Oracle\VirtualBox installiert, das brauchen wir später, wenn bei Ihnen VirtualBox wo anders installiert ist, dann müssen Sie den Pfad bitte anpassen.

Wir öffnen auf Windows ein CMD Fenster, ich öffne den immer als Administrator, dann brauche ich nicht ständig umwechseln, falls ich mal mehr Rechte brauche, also WIN+R dann CMD eingeben und Shift + Ctrl + ENTER und bestätigen den Administrator-Zugriff.

Wechseln wir ins Verzeichnis, wo Debian installiert ist, das ist einfach, aus VirtualBox  aus, rechte Maustaste auf die Virtuelle Maschine drücken und drücken Sie auf „Im Explorer zeigen“, dann öffnet sich der richtige Pfad.

Jetzt wissen wir wo Debian installiert ist, das ist bei mir auf C:\Users\Alex\VirtualBox VMs\Linux\Debian 12.1 Gnome

So nun können wir mal sehen, ob VirtualBox etwas über die .vdi Festplatte etwas zu sagen hat: (die Festplatte ist die mit dem .vdi oder .,vmdk am Ende)

cd "C:\Users\Alex\VirtualBox VMs\Linux\Debian 12.1 Gnome"
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" showhdinfo "Debian 12.1 Gnome.vdi"

Merke: In Windows, immer dann wann ein Leerzeichen im Pfad ist, muss man die Befehle, Pfade usw. unter “ “ Anführungszeichen setzen!

Dann kommt folgendes:

UUID: c41778e5-3a2d-441f-81d3-5b8bac7fbe3f
Parent UUID: base
State: locked write
Type: normal (base)
Location: C:\Users\Alex\VirtualBox VMs\Linux\Debian 12.1 Gnome\Debian 12.1 Gnome.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 102400 MBytes
Size on disk: 19249 MBytes
Encryption: disabled
Property: AllocationBlockSize=1048576
In use by VMs: Debian 12.1 Gnome (UUID: 0068487f-6f4f-46b6-8192-6c83c7360c8a)

Somit wissen wir, das VBOXManage die Festplatte erkannt hat und die Daten ausliest.

Wir können nun die Größe, von meinen 100gb auf 200gb erweitern:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "Debian 12.1 Gnome.vdi" --resize 204800

Natürlich muss die Virtuelle Maschine vorher abgedreht sein!

sonst kommt:

VBOX_E_INVALID_OBJECT_STATE (0x80bb0007)

Das bedeutet, die Virtuelle Maschine läuft, das darf natürlich nicht sein!

0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%

Bedeuet alles ok!

So nun können wir die Virtuelle Maschine wieder starten.

Sobald wir wieder eingeloggt sind, können wir die zu kleinen Partitionen identifizieren und vergrößern:

Öffnen Sie ein Terminal (Shell oder Bash) und wir listen mal die Festplatten (mounts) auf:

sudo lsblk

alex@debian12gnome-local:~$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 200.1G 0 disk
├─sda1 8:1 0 487M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 99.5G 0 part
├─vg_system-root 254:0 0 6G 0 lvm /
├─vg_system-usr 254:1 0 20.9G 0 lvm /usr
├─vg_system-var 254:2 0 5.4G 0 lvm /var
├─vg_system-swap_1 254:3 0 3.8G 0 lvm [SWAP]
├─vg_system-skole+tjener+home0 254:4 0 25.4G 0 lvm /srv/nfs4/home0
│ /skole/tjener/home0
├─vg_system-var+spool+squid 254:5 0 14.3G 0 lvm /var/spool/squid
└─vg_system-skole+backup 254:6 0 16.9G 0 lvm /skole/backup
sr0 11:0 1 51M 0 rom
alex@debian12gnome-local:~$

Wir sehen aktuell nicht viel, da wir ja nicht wissen wieviel Platz auf der jeweiligen Partition (mount) vorhanden ist:

sudo df -h

alex@debian12gnome-local:~$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.0G 0 3.0G 0% /dev
tmpfs 601M 2.9M 598M 1% /run
/dev/mapper/vg_system-root 5.9G 838M 4.8G 15% /
/dev/mapper/vg_system-usr 16G 15G 452M 95% /usr
tmpfs 3.0G 12K 3.0G 1% /dev/shm
tmpfs 5.0M 8.0K 5.0M 1% /run/lock
/dev/sda1 455M 135M 296M 32% /boot
/dev/mapper/vg_system-skole+tjener+home0 25G 124K 24G 1% /srv/nfs4/home0
/dev/mapper/vg_system-skole+backup 17G 24K 16G 1% /skole/backup
/dev/mapper/vg_system-var 5.2G 1.1G 3.9G 23% /var
/dev/mapper/vg_system-var+spool+squid 14G 17M 14G 1% /var/spool/squid
tmpfs 601M 168K 601M 1% /run/user/1000

Und da sehen wir unseren Schuldigen es ist /dev/mapper/vg_system-usr, diese Partition müssen wir erweitern

sudo lvextend -L +5G /dev/vg_system/usr

alex@debian12gnome-local:~$ sudo lvextend -L +5G /dev/vg_system/usr
Size of logical volume vg_system/usr changed from 16.85 GiB (5338 extents) to 20.85 GiB (6618 extents).
Logical volume vg_system/usr successfully resized.

Damit erweitern wir die Partition aber können den dazugewonnenen Platz aber noch nicht verwenden, dazu müssen wir noch das Dateisystem erweitern:

sudo resize2fs /dev/vg_system/usr

alex@debian12gnome-local:~$ sudo resize2fs /dev/vg_system/usr
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/vg_system/usr is mounted on /usr; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/vg_system/usr is now 6776832 (4k) blocks long.

Damit haben wir erfolgreich die Festplatte erweitert und können nun Dateien, Programme usw. speichern. Wenn uns der Platz ausgeht, dann erweitern wir nach dieser Anleitung die Festplatte.

Getestet unter Debian 12 und Windows 10 (Windows 11 sollte ohne Probleme gehen!)

Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Happy coding!