This commit is contained in:
Adam Skotarczak 2025-06-15 12:09:34 +02:00
parent 6a3ae701f6
commit 0b53369fc8
Signed by: realAscot
GPG Key ID: 4CB9B8D93A96A538
7 changed files with 539 additions and 7 deletions

View File

@ -1,6 +1,12 @@
# Changelog
- **25/06/15** - commit: v0.1.0
- **25/06/15** - commit: v0.2.0
- **Hinzugefügt:**
- [X] git submodule erstellt
- [X] Rust Toolchain Einrichtung
- [X] Rust offline-installation
- **25/06/15** - commit: v0.1.0
- **Hinzugefügt:**
- [X] helix
- [x] desktop.ini

View File

@ -2,7 +2,11 @@
![Logo Adam Skotarczak](./media/realAscotLogo_128x128.png)
Kleine Sammlung von Gedächnissstützen für den privaten und persönlichen Gebrauch. Ausserdem befinden sich hier auch viele Artikel die von mir noch nicht vollständig verwertet worden sind.
Kleine Sammlung von Gedächnissstützen für den privaten und persönlichen Gebrauch.
Ausserdem befinden sich hier auch viele Artikel die von mir noch nicht vollständig verwertet worden sind.
Die Artikel sind auch zur Vorbereitung für neue Artikel auf <https://www.ionivation.com> vorgesehen.
**origin:** <https://local.ionivation.com/realAscot/adminslog>
## Inhalt
@ -22,6 +26,7 @@ Kleine Sammlung von Gedächnissstützen für den privaten und persönlichen Gebr
- [Webserver](#webserver)
- [Windows](#windows)
- [Programmierung](#programmierung)
- [Rust](#rust)
- [ts - js - node](#ts---js---node)
- [Projektinhalt](#projektinhalt)
- [Neue Dokumente](#neue-dokumente)
@ -57,6 +62,7 @@ Unter `./tools/` befinden sich Programme/ Skripte (aktuell in Typescript und Pyt
- [Artikel: git](dokus/git/git.md)
- [SSH-Zugriff auf Git-Repository in WSL einrichten](dokus/git/git-ssh-remote.md)
- [Git Remote-Branches: Häufige Aufgaben und Lösungen](dokus/git/git-remote-branch.md)
- [Git-Submodule: Der umfassende Praxisleitfaden](dokus/git/git-submodule-leitfaden.md)
### Markdown
@ -90,6 +96,13 @@ Unter `./tools/` befinden sich Programme/ Skripte (aktuell in Typescript und Pyt
### Programmierung
#### Rust
- [Rust-Toolchain mit MSVC unter Windows einrichten](dokus/rust/rust-toolchain-msvc.md)
- [Erstellung eines Installationsmediums für Rust + MSVC (Offline)](dokus/rust/rust-offline-installation.md)
---
#### ts - js - node
- [Einstieg in JavaScript-Dialekte und TypeScript-Konfiguration](dokus/js-ts/js-ts-dialekte.md)
@ -102,9 +115,6 @@ Unter `./tools/` befinden sich Programme/ Skripte (aktuell in Typescript und Pyt
```plaintext
📁 ./
├── 📁 .vscode
│ ├── 📄 cspell.json
│ └── 📄 settings.json
├── 📁 dokus
│ ├── 📁 apache-plesk
│ │ └── 📄 lets-encrypt-plesk.md
@ -113,6 +123,7 @@ Unter `./tools/` befinden sich Programme/ Skripte (aktuell in Typescript und Pyt
│ ├── 📁 git
│ │ ├── 📄 git-remote-branch.md
│ │ ├── 📄 git-ssh-remote.md
│ │ ├── 📄 git-submodule-leitfaden.md
│ │ └── 📄 git.md
│ ├── 📁 js-ts
│ │ └── 📄 js-ts-dialekte.md
@ -120,6 +131,9 @@ Unter `./tools/` befinden sich Programme/ Skripte (aktuell in Typescript und Pyt
│ │ └── 📄 gewindetabellen.md
│ ├── 📁 plesk
│ │ └── 📄 plesk-benutzer-schon-vorhanden.md
│ ├── 📁 rust
│ │ ├── 📄 rust-offline-installation.md
│ │ └── 📄 rust-toolchain-msvc.md
│ ├── 📁 windows
│ │ └── 📄 desktop_ini.md
│ └── 📄 helix__editor_einfuehrung_de.md
@ -142,12 +156,14 @@ Unter `./tools/` befinden sich Programme/ Skripte (aktuell in Typescript und Pyt
│ ├── 📄 fscopy.ts
│ └── 📄 fsdel.ts
├── 📄 .gitignore
├── 📄 CHANGELOG.md
├── 📄 LICENSE
├── 📄 package-lock.json
├── 📄 package.json
├── 📄 README.md
├── 📄 scan.cmd
└── 📄 tsconfig.json
├── 📄 tsconfig.json
└── 📄 VERSION
```
---

View File

@ -1,2 +1,2 @@
0.1.0
0.2.0
15.06.2025

View File

@ -0,0 +1,203 @@
# Git-Submodule: Der umfassende Praxisleitfaden
## Inhalt
- [Git-Submodule: Der umfassende Praxisleitfaden](#git-submodule-der-umfassende-praxisleitfaden)
- [Inhalt](#inhalt)
- [🔰 Was ist ein Git-Submodul?](#-was-ist-ein-git-submodul)
- [🧱 Grundlagen](#-grundlagen)
- [📌 `.gitmodules`](#-gitmodules)
- [🧠 Merksatz](#-merksatz)
- [🛠️ Submodul hinzufügen](#-submodul-hinzufügen)
- [🔄 Submodule aktualisieren](#-submodule-aktualisieren)
- [📥 Klonen mit Submodulen](#-klonen-mit-submodulen)
- [Methode 1: Inklusive Submodule](#methode-1-inklusive-submodule)
- [Methode 2: Nachträglich initialisieren](#methode-2-nachträglich-initialisieren)
- [🔃 Submodul-Synchronisation](#-submodul-synchronisation)
- [📂 Weitere Remotes im Submodul](#-weitere-remotes-im-submodul)
- [❗ Stolperfallen und Besonderheiten](#-stolperfallen-und-besonderheiten)
- [🔄 Remote-URL wechseln](#-remote-url-wechseln)
- [🚀 Push \& Pull Verhalten](#-push--pull-verhalten)
- [🧼 Submodul löschen](#-submodul-löschen)
- [🧰 Best Practices](#-best-practices)
- [📎 Nützliche Kommandos](#-nützliche-kommandos)
- [📑 Beispiel `.gitmodules` mit kommentierter Remote-Auswahl](#-beispiel-gitmodules-mit-kommentierter-remote-auswahl)
- [🧭 Alternative: Subtree statt Submodul?](#-alternative-subtree-statt-submodul)
- [📚 Fazit](#-fazit)
- [🔗 Weiterführende Links](#-weiterführende-links)
---
## 🔰 Was ist ein Git-Submodul?
Ein **Submodul** ist ein Git-Repository innerhalb eines anderen Git-Repositories. Es erlaubt, einen festen Commit eines externen Repositories als Teilprojekt einzubinden, ohne dessen Dateien direkt zu übernehmen.
Beispielhafte Struktur:
```plaintext
hauptprojekt/
├── .gitmodules
├── modul1/ ← eingebundenes Submodul
└── modul2/
```
## 🧱 Grundlagen
### 📌 `.gitmodules`
Diese Datei beschreibt Pfad und Remote-URL aller eingebundenen Submodule:
```ini
[submodule "modul1"]
path = modul1
url = git@github.com:user/modul1.git
```
### 🧠 Merksatz
> Submodule sind **Pointer auf einen bestimmten Commit** eines anderen Repositories.
## 🛠️ Submodul hinzufügen
```bash
git submodule add <repo-url> <zielpfad>
git commit -m "📦 Submodul hinzugefügt"
```
Beispiel:
```bash
git submodule add git@github.com:user/libmath.git extern/libmath
```
Erzeugt:
- `.gitmodules`
- Verzeichniseintrag im Git-Index
- Initialer Checkout des Submoduls (HEAD auf Remote-Commit)
## 🔄 Submodule aktualisieren
```bash
cd extern/libmath
git pull origin main
cd ../..
git add extern/libmath
git commit -m "🔄 Submodul libmath aktualisiert"
```
> Nur das **Hauptrepo speichert den Commit-Zeiger**, nicht den Submodul-Inhalt selbst.
## 📥 Klonen mit Submodulen
### Methode 1: Inklusive Submodule
```bash
git clone --recurse-submodules <url>
```
### Methode 2: Nachträglich initialisieren
```bash
git clone <url>
git submodule update --init
```
## 🔃 Submodul-Synchronisation
Wenn sich `.gitmodules` ändert (z.B. Remote-URL):
```bash
git submodule sync
```
## 📂 Weitere Remotes im Submodul
```bash
cd modul1
git remote add backup git@backup.server:repo.git
```
> Diese Remotes sind **lokal**, nicht versioniert. `.gitmodules` kennt nur den Haupt-Remote.
## ❗ Stolperfallen und Besonderheiten
| Problem | Erklärung |
|--------|-----------|
| Submodul wird nicht mitgeclont | `--recurse-submodules` vergessen |
| Änderungen im Submodul nicht sichtbar | Submodul-Commit im Hauptrepo nicht geupdated |
| `.gitmodules` zeigt nicht funktionierende URL | z.B. lokale URL nach GitHub-Push muss angepasst werden |
| Submodul zeigt „detached HEAD“ | normaler Zustand, wenn Submodul auf festen Commit gesetzt ist |
## 🔄 Remote-URL wechseln
```bash
# In .gitmodules ändern oder per Befehl:
git config -f .gitmodules submodule.modul1.url git@github.com:newuser/libmath.git
git submodule sync
```
## 🚀 Push & Pull Verhalten
| Aktion | Wirkung |
|---------------------|---------|
| `git push` im Hauptrepo | Pusht nur Zeiger auf Submodul-Commit |
| `git push` im Submodul | Muss separat erfolgen |
| `git pull` im Hauptrepo | Holt *nicht* automatisch neuen Submodul-Stand |
## 🧼 Submodul löschen
```bash
# Schritt 1: Entfernen
git submodule deinit -f pfad/zum/modul
git rm -f pfad/zum/modul
rm -rf .git/modules/pfad/zum/modul
git commit -m "❌ Submodul entfernt"
```
## 🧰 Best Practices
- **Nur stabile Submodul-Commits einchecken**, keine laufenden Branches.
- **Submodule niemals blind aktualisieren** Änderungen genau prüfen.
- **Remote-Umschaltung dokumentieren oder automatisieren**, z.B. per Script.
- **Submodule klein halten** große, tief verschachtelte Strukturen vermeiden.
- Für wiederverwendbare Bibliotheken oder Assets ideal (CAD, Snippets, Markdown, etc.).
## 📎 Nützliche Kommandos
```bash
git submodule status # Überblick über alle Submodule
git submodule update --init # Submodule initial holen
git submodule update --remote # Auf neuesten Remote-Stand updaten
git config -f .gitmodules ... # .gitmodules direkt bearbeiten
```
## 📑 Beispiel `.gitmodules` mit kommentierter Remote-Auswahl
```ini
[submodule "modul1"]
path = modul1
url = ssh://git@local.example.com:2222/myorg/modul1.git
# url = git@github.com:myorg/modul1.git
```
## 🧭 Alternative: Subtree statt Submodul?
Subtree ist einfacher zu verwalten, aber:
- kein fester Commit-Zeiger,
- kein Remote-Wechsel ohne Umweg,
- gemergte Historie im Hauptrepo.
**Submodul = getrennte Repos**
**Subtree = eingemergter Inhalt**
## 📚 Fazit
Git-Submodule sind mächtig, aber erfordern **Disziplin und Überblick**. Für wiederverwendbare Komponenten, zentral gepflegte Inhalte oder externe Bibliotheken sind sie oft die bessere Wahl als Duplikate oder Copy-Paste.
## 🔗 Weiterführende Links
- [Git Book: Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
- [git-scm Doku: submodule](https://git-scm.com/docs/git-submodule)
- [Vergleich Submodule vs. Subtree](https://www.atlassian.com/git/tutorials/git-submodule)

View File

@ -0,0 +1,152 @@
# Erstellung eines Installationsmediums für Rust + MSVC (Offline)
Dieser Artikel beschreibt, wie du ein **vollständiges Installationsmedium** für die **Rust-Toolchain mit MSVC** unter Windows vorbereitest, damit du Rust auf anderen Rechnern **ohne Internetzugang** einrichten kannst.
---
## Ziel
Ein USB-Stick oder Offline-Verzeichnis mit:
- Rust-Installer (offlinefähig)
- Visual Studio Build Tools (komplett inkl. MSVC)
- Optional: vorkompilierte Ziel-Toolchains
---
## 1. Rust Offline-Installer vorbereiten
### 1.1 Rustup Offline-Installer besorgen
Gehe auf:
https://forge.rust-lang.org/infra/release-archives.html
Lade von dort:
- `rust-<version>-x86_64-pc-windows-msvc.msi`
- `cargo-<version>-x86_64-pc-windows-msvc.msi` (optional)
Oder direkt über:
https://static.rust-lang.org/dist/
### 1.2 Installation ohne Internet
Auf dem Zielrechner:
- Führe `.msi`-Datei lokal aus
- Setze den `Path` manuell oder automatisch via Skript
---
## 2. Visual Studio Build Tools offline installieren
### 2.1 Installer herunterladen
Lade den **Visual Studio Installer** von:
https://visualstudio.microsoft.com/de/visual-cpp-build-tools/
Starte dann:
```cmd
vs_BuildTools.exe --layout C:\VSOffline --lang de-DE
```
Dieser Befehl erstellt einen vollständigen Offline-Installer im Verzeichnis `C:\VSOffline`.
### 2.2 Auswahl der Workloads
Wähle beim interaktiven Download (GUI oder CLI):
- **C++ Build Tools**
- Workload-Komponenten:
- MSVC v14.x (x64/x86)
- Windows 10/11 SDK
- CMake-Tools (optional)
> 💡 Achtung: Download-Größe ca. 46GB!
### 2.3 Installation auf Zielsystem (Offline)
Auf dem Zielrechner:
```cmd
C:\VSOffline\vs_BuildTools.exe --noweb --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --quiet --wait
```
Alternativ über `vs_setup.exe`, je nach Version.
---
## 3. Optional: Toolchains, Crates & Targets vorbereiten
Falls du zusätzliche Targets (z.B. Linux oder ARM) brauchst:
### 3.1 Ziel-Toolchain lokal laden
```cmd
rustup target add x86_64-unknown-linux-gnu --print
```
Lade die `.tar.gz` von:
https://static.rust-lang.org/dist/
Speichere diese im `dist/`-Ordner und installiere offline via:
```cmd
rustup toolchain link <name> <pfad_zur_toolchain>
```
---
## 4. Automatisierung via USB-Stick
### Dateistruktur auf Stick
```text
USB-STICK/
├── rust/
│ └── rust-1.xx.x-x86_64-pc-windows-msvc.msi
├── vsbuildtools/
│ └── setup + Offline-Daten
├── install.cmd
```
### Beispiel `install.cmd`
```cmd
@echo off
echo [1/2] Installiere Rust...
start /wait rust\rust-*.msi
echo [2/2] Installiere Visual Studio Build Tools...
start /wait vsbuildtools\vs_BuildTools.exe --noweb --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --quiet --wait
echo Fertig. Bitte PC neu starten!
pause
```
---
## 5. Validierung
Nach der Offline-Installation auf Zielsystem:
```cmd
cargo new testprojekt
cd testprojekt
cargo build --release
```
Ergebnis:
target\release\testprojekt.exe
---
## Fazit
Mit dieser Methode kannst du eine vollständige Rust- und MSVC-Umgebung offline auf jedem Windows-System aufsetzen ideal für abgeschottete Systeme ohne Internetverbindung.

View File

@ -0,0 +1,152 @@
# Rust-Toolchain mit MSVC unter Windows einrichten
Dieser Artikel beschreibt die vollständige Einrichtung einer produktionsfähigen Rust-Toolchain mit **MSVC (Microsoft Visual C++)** unter **Windows**, einschließlich Erstellung einer `.exe`-Datei aus einem Beispielprogramm.
## Inhalt
- [Rust-Toolchain mit MSVC unter Windows einrichten](#rust-toolchain-mit-msvc-unter-windows-einrichten)
- [Inhalt](#inhalt)
- [Voraussetzungen](#voraussetzungen)
- [1. Rust installieren](#1-rust-installieren)
- [2. Visual Studio Build Tools installieren](#2-visual-studio-build-tools-installieren)
- [Schritt-für-Schritt](#schritt-für-schritt)
- [3. Umgebungsvariablen setzen (optional)](#3-umgebungsvariablen-setzen-optional)
- [4. Beispielprojekt erstellen](#4-beispielprojekt-erstellen)
- [5. Projekt kompilieren](#5-projekt-kompilieren)
- [Debug-Build (schnell, nicht optimiert)](#debug-build-schnell-nicht-optimiert)
- [Release-Build (optimiert, kleine `.exe`)](#release-build-optimiert-kleine-exe)
- [6. Optional: `.exe` testen](#6-optional-exe-testen)
- [7. Troubleshooting](#7-troubleshooting)
- [8. Alternative: Toolchain in einem Offline-Installer vorbereiten](#8-alternative-toolchain-in-einem-offline-installer-vorbereiten)
- [Zusammenfassung](#zusammenfassung)
- [Weiterführende Themen](#weiterführende-themen)
---
## Voraussetzungen
- Windows 10 oder 11 (64 Bit)
- Administratorrechte
- Mindestens 2GB freier Speicherplatz
## 1. Rust installieren
Lade das offizielle Rust-Installationsprogramm herunter und führe es aus:
<https://rustup.rs>
Beim Setup:
- **Toolchain wählen**: `default host triple: x86_64-pc-windows-msvc`
- Folge dem Assistenten, um `rustc`, `cargo` und `rustup` zu installieren.
Verifiziere die Installation:
```shell
rustc --version
cargo --version
```
## 2. Visual Studio Build Tools installieren
Die Rust-Toolchain mit MSVC benötigt den **"C++ Build Tools"**-Teil von Visual Studio.
### Schritt-für-Schritt
1. Lade den **Visual Studio Installer**:
- <https://visualstudio.microsoft.com/de/visual-cpp-build-tools/>
2. Wähle bei der Installation:
- ✅ **C++ Build Tools**
- Und in der rechten Spalte:
- ✅ "MSVC v14.x - VS 2022 C++ x64/x86-Buildtools"
- ✅ "Windows 10 SDK" oder "Windows 11 SDK" (je nach Zielsystem)
- ✅ "C++ CMake-Tools für Windows" (optional für CMake-Projekte)
3. Installiere alles und starte das System neu, falls verlangt.
## 3. Umgebungsvariablen setzen (optional)
Falls du die Buildtools über Kommandozeile verwenden willst, öffne:
```cmd
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
```
Das setzt temporär alle notwendigen Umgebungsvariablen für den Build-Prozess.
## 4. Beispielprojekt erstellen
```cmd
cargo new hello_world
cd hello_world
```
Beispielcode in `src/main.rs`:
```rust
fn main() {
println!("Hallo Welt kompiliert mit MSVC!");
}
```
## 5. Projekt kompilieren
### Debug-Build (schnell, nicht optimiert)
```cmd
cargo build
```
### Release-Build (optimiert, kleine `.exe`)
```cmd
cargo build --release
```
Die fertige `.exe` liegt unter:
.\target\release\hello_world.exe
## 6. Optional: `.exe` testen
```cmd
.\target\release\hello_world.exe
```
## 7. Troubleshooting
- **Fehlermeldung `link.exe not found`?**
→ Build-Tools sind nicht korrekt installiert (siehe Schritt 2)
- **Fehlermeldung zu fehlendem SDK?**
→ Stelle sicher, dass du das passende Windows SDK mit installiert hast
- **MSVC und GNU Toolchain gleichzeitig installiert?**
→ Du kannst über `rustup` zwischen beiden wechseln:
```cmd
rustup show
rustup default stable-x86_64-pc-windows-msvc
```
## 8. Alternative: Toolchain in einem Offline-Installer vorbereiten
Wenn du das Setup auf mehreren Rechnern ohne Internetzugang durchführen möchtest, siehe [separater Artikel zur Erstellung eines Installationsmediums](./rust-offline-installation.md).
## Zusammenfassung
| Komponente | Aufgabe |
|------------------|----------------------------------|
| Rustup | Verwaltung von Toolchains |
| Cargo | Buildsystem und Paketmanager |
| MSVC Build Tools | C++-Compiler/Linker für Windows |
| `vcvars64.bat` | Aktiviert Build-Umgebung |
| `cargo build` | Erstellt `.exe` mit Rust und MSVC |
## Weiterführende Themen
- Einbindung von Ressourcen und Icons in die `.exe`
- Verwendung von `cc`/`bindgen` für C-Bindings
- Cross-Kompilierung mit `x86_64-pc-windows-gnu` oder Linux-Zielsystemen
- Automatisierter Build via Makefile oder PowerShell

View File

@ -8,3 +8,6 @@ dokus/git/git-ssh-remote.md
dokus/git/git.md
dokus/asciidoc/asciidoctor-theme-bug-workaround.md
dokus/apache-plesk/lets-encrypt-plesk.md
dokus/git/git-submodule-leitfaden.md
dokus/rust/rust-toolchain-msvc.md
dokus/rust/rust-offline-installation.md