5 Commits
6 changed files with 125 additions and 393 deletions
+32 -1
View File
@@ -16,4 +16,35 @@ software to create a virtual machine with Linux Mint XFCE. Then, copy the script
This allows you to test the script without affecting your main system.
You can also make use of snapshot feature of the virtualization software to easily revert to a clean state after testing,
e.g. state directly after Linux Mint installation, before running the post-installation script.
This way you can test the script multiple times without needing to reinstall Linux Mint each time.
This way you can test the script multiple times without needing to reinstall Linux Mint each time.
## Release Process
This project uses a simple release process based on git tags.
### Versioning
- Version is stored in `VERSION` file (format: v0, v1, v2, ...)
- Major version increments only (major-bugfix scheme)
- Script version is also stored in `SCRIPT_VERSION` variable within the main script to display version during script execution
### Creating a Release
Run the release script from the repository root:
```bash
./release.sh
```
The script will:
1. Check for uncommitted local changes (exits if any exist)
2. Show current version and propose next version
3. Prompt for confirmation
4. Update VERSION file and SCRIPT_VERSION in the script
5. Create a git commit
6. Create an annotated tag
7. Prompt to push to origin (including tags)
### Gitea Integration
When a tag is pushed to the remote, Gitea automatically creates a release from it.
### Requirements
- Clean working tree (no uncommitted changes)
- Git remote configured (origin)
+1
View File
@@ -0,0 +1 @@
v9
@@ -1,380 +0,0 @@
#!/bin/bash
cMode="KeineSimulation"
cMode="simulation"
bIsVlcInstalled=false
echo "
###################################
#### Nachinstallationsarbeiten ####
###################################
"
#
#
#
if [ "$cMode" != "KeineSimulation" ]; then
echo " simulation sudo apt-get update"
else
sudo apt-get update
fi
sSuffixDate=$(date '+%Y-%m-%d_%H:%M:%S')
echo
echo
echo "A) #### 64 bit Mint XFCE ####"
echo "B) #### 32 bit Debian XFCE ####"
echo "q) Quit. Abbruch"
echo "sonst <enter> zum überspringen."
read -p "
Geben Sie a oder b ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " option;
case "$option" in
[aAmM])
echo "A) #### 64 bit Mint XFCE ####"
if [ "$cMode" != "KeineSimulation" ]; then
echo "simulation
sudo apt -y install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm
";
bIsVlcInstalled=true
else
sudo apt -y install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm
bIsVlcInstalled=true
fi
;;
[bBdD])
echo "#### 32 bit Debian XFCE ####"
echo "## sources list"
if [ "$cMode" != "KeineSimulation" ]; then
echo "### Paketquellen eintragen:"
echo " cp /etc/apt/sources.list /etc/apt/sources.list_" $sSuffixDate
echo "simulation deb http://deb.debian.org/debian bookworm main contrib non-free > /etc/apt/sources.list"
echo "simulation deb-src http://deb.debian.org/debian bookworm main contrib non-free >> /etc/apt/sources.list"
echo "simulation deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list"
echo "simulation deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list"
echo "simulation deb http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list"
echo "simulation deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list"
echo "### zusätzliche Standardprogramme installieren:"
echo "simulation sudo apt install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm timeshift gnome-system-tools gnome-disk-utility inxi "
bIsVlcInstalled=true
echo " FIN #### 64 bit Mint XFCE ####"
else
echo "### Paketquellen eintragen:"
cp /etc/apt/sources.list /etc/apt/sources.list_$sSuffixDate
deb http://deb.debian.org/debian bookworm main contrib non-free > /etc/apt/sources.list
deb-src http://deb.debian.org/debian bookworm main contrib non-free >> /etc/apt/sources.list
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list
deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list
echo "### zusätzliche Standardprogramme installieren:"
sudo apt install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm timeshift gnome-system-tools gnome-disk-utility inxi
bIsVlcInstalled=true
echo " FIN #### 32 bit Debian XFCE ####"
fi
;;
q) echo "Quit. Abbruch"
exit
;;
*) echo "Unknown parameter"
esac
echo ""
echo ""
echo "#### alle Systeme ####"
#
echo "### Taskleiste mit XFCE-Applets für Systemauslastung und 2x Netzwerkmonitor (LAN + WLAN) ergänzen und konfigurieren"
echo " leider fehlt die automatisierung noch "
echo " Manuelle Arbeit notwendig "
#
#
#
#
echo
echo
echo "#### nur auf Wunsch / bei Bedarf ####"
#
echo
echo
echo
### Sensoren ###
# alle Abfragen können mit "ja" beantwortet werden!
read -p " ### Sensoren ###
Geben Sie j oder n ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " kommando;
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
echo "### Sensoren ###"
if [ "$cMode" != "KeineSimulation" ]; then
echo " simulation "
echo " apt -y Automatic yes to prompts; assume "yes" as answer to all prompts and run non-interactively."
echo "simulation sudo apt -y install lm-sensors psensor"
echo "simulation sudo sensors-detect"
echo "# alle Abfragen können mit "ja" beantwortet werden!"
echo "simulation sudo service kmod start"
else
sudo apt install lm-sensors psensor
sudo sensors-detect
echo "# alle Abfragen können mit "ja" beantwortet werden!"
sudo service kmod start
echo "## dann psensor konfigurieren im Applet in der Taskleiste"
fi
fi
echo
echo
if $bIsVlcInstalled; then
echo "### Kauf-DVDs abspielen ###"
read -p " ### Film DVDs ###
Geben Sie j oder n ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " kommando;
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
echo "### Sensoren ###"
if [ "$cMode" != "KeineSimulation" ]; then
echo " simulation "
echo "simulation sudo service kmod start"
echo " simulation sudo apt install libdvd-pkg"
echo " simulationsudo dpkg-reconfigure libdvd-pkg"
else
sudo apt install libdvd-pkg
sudo dpkg-reconfigure libdvd-pkg
fi
fi
else
echo "Player Fehlt
## vlc muss installiert sein! Zum Kauf-DVDs abspielen"
fi
echo
echo
echo "### Schriften, falls Microsoft-Office-Dokumente weiterverwendet werden sollen oder Dokumentenaustausch mit Microsoft-Nutzern gewünscht ist ###
## frei verfügbare, alte Microsoft-Standardschriften installieren:"
read -p " ### M$ Schriften ###
Geben Sie j oder n ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " kommando;
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
echo "### M$ Schriften ###"
if [ "$cMode" != "KeineSimulation" ]; then
echo "simulation
sudo apt install ttf-mscorefonts-installer"
else
sudo apt install ttf-mscorefonts-installer
fi
fi
echo
echo
echo " ## freie Google-Schriften mit gleicher Laufweite wie aktuelle MS-Standardschriften installieren:"
read -p " ### Google Schriften ###
Geben Sie j oder n ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " kommando;
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
echo
echo "### Google Schriften ###"
if [ "$cMode" != "KeineSimulation" ]; then
_gf="google-fonts"
fGoogleSchriften=./$_gf".tar.gz"
if [ ! -f "$fGoogleSchriften" ]; then
echo
echo "$fGoogleSchriften nicht gefunden."
echo " soll das Archiv "google-fonts.tar.gz" von Github runter geladen werden ca. 1GB gross! "
read -p " ### Download Google Schriften ### j/n: " runterLaden;
if [ $runterLaden == 'j' -o $runterLaden == 'J' -o $runterLaden == 'ja' -o $runterLaden == 'y' -o $runterLaden == 'Y' ]; then
echo " Download Google Schriften ###"
echo "simulation
_wgeturl=https://github.com/google/fonts/archive/main.tar.gz
_gf=google-fonts
o Connecting to Github server to download fonts...
wget $_wgeturl -O $_gf.tar.gz"
fi
fi
if [ -f "$fGoogleSchriften" ]; then
echo
echo "Extracting the downloaded archive..."
echo " simulationtar -zxvf $_gf.tar.gz"
echo "Creating the /usr/share/fonts/truetype/$_gf folder"
echo " simulationsudo mkdir -p /usr/share/fonts/truetype/$_gf"
echo "Installing all .ttf fonts in /usr/share/fonts/truetype/$_gf"
echo " simulationfind $PWD/fonts-main/ -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; "
echo "Updating the font cache"
echo " simulationfc-cache -f"
else
echo "Schriften Fehlen immer noch. Manuell runterladen und installieren"
fi
# "Simulation"
else
# "KeineSimulation"
_gf="google-fonts"
fGoogleSchriften=./$_gf".tar.gz"
if [ ! -f "$fGoogleSchriften" ]; then
echo ""
echo "$fGoogleSchriften nicht gefunden."
echo " soll das Archiv "google-fonts.tar.gz" von Github runter geladen werden ca. 1GB gross! "
read -p " ### Download Google Schriften ### " runterLaden;
if [ $runterLaden == 'j' -o $runterLaden == 'J' -o $runterLaden == 'ja' -o $runterLaden == 'y' -o $runterLaden == 'Y' ]; then
_wgeturl="https://github.com/google/fonts/archive/main.tar.gz"
echo "Connecting to Github server to download fonts..."
wget $_wgeturl -O $_gf.tar.gz
fi
fi
if [ -f "$fGoogleSchriften" ]; then
echo
echo "$fGoogleSchriften nicht gefunden."
echo "Extracting the downloaded archive..."
tar -zxvf $_gf.tar.gz
echo "Creating the /usr/share/fonts/truetype/$_gf folder"
sudo mkdir -p /usr/share/fonts/truetype/$_gf
echo "Installing all .ttf fonts in /usr/share/fonts/truetype/$_gf"
find $PWD/fonts-main/ -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || echo "An error occured, please run this script again."
echo "Updating the font cache"
fc-cache -f
echo "Done. Now you can delete the tarball file $_gf.tar.gz if you wish."
else
echo "Schriften Fehlen immer noch. Manuell runterladen und installieren"
fi
# "KeineSimulation"
fi
fi
#
echo
echo
echo "#### Chromium Browser installieren:"
read -p " ### Chromium ###
Geben Sie j oder n ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " kommando;
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
echo "### Chromium ###"
if [ "$cMode" != "KeineSimulation" ]; then
echo "simulation
sudo apt install chromium
sudo apt install chromium-browser
"
echo " tbd DateiName!?
## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen:
## --password-store=basic "
else
sudo apt install chromium-browser
fi88=
fi
fi
echo
echo
echo "### Vivaldi Browser installieren:#### "
read -p " ### Vivaldi ###
Geben Sie j oder n ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " kommando;
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
echo "### ###"
if [ "$cMode" != "KeineSimulation" ]; then
echo "simulation
## nötige Zusatzpakete installieren
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
## key importieren
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null
## Repository hinzufügen
echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list
sudo apt update && sudo apt install vivaldi-stable"
echo " tbd DateiName!?
## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen:
## --password-store=basic "
else
echo "## nötige Zusatzpakete installieren"
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
#
echo "## ## key importieren"
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null
#
echo "## ## Repository hinzufügen"
echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list
#
sudo apt update && sudo apt install vivaldi-stable
#
echo "## ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: "
echo "## ## --password-store=basic"
#
fi
fi
echo
echo
echo "####Signal für Desktop (setzt Signalinstallation auf einem Android- Oder Apple-Gerät voraus!)#### "
read -p " ### Signal ###
Geben Sie j oder n ein und die Eingabetaste,
Abbruch mit jeder anderen Taste ... " kommando;
if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then
echo "### ###"
if [ "$cMode" != "KeineSimulation" ]; then
echo "simulation
## zusätzliches Repository nötig!
#
## NOTE: These instructions only work for 64-bit Debian-based
## Linux distributions such as Ubuntu, Mint etc.
#
## key importieren
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
## Repository hinzufügen:
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
sudo apt update && sudo apt install signal-desktop
"
else
echo "## zusätzliches Repository nötig!
## NOTE: These instructions only work for 64-bit Debian-based
## Linux distributions such as Ubuntu, Mint etc.
## key importieren
"
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
#
echo "## Repository hinzufügen:"
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
sudo apt update && sudo apt install signal-desktop
#
fi
fi
echo
echo
echo "Skript ENDE"
echo
echo
echo
echo "Manuelle Schritte"
echo
echo "### Taskleiste mit XFCE-Applets für Systemauslastung und 2x Netzwerkmonitor (LAN + WLAN) ergänzen und konfigurieren"
echo
echo
echo "Wenn
### Sensoren ###
installiert wurden
## dann psensor konfigurieren im Applet in der Taskleiste "
echo
echo
@@ -1,12 +1,6 @@
#!/bin/bash
# "Anderungs Historie
# Datum Version Name Änderung
# 2025-11-11 v6 MartinP mehr Erläuterungen reingeschrieben
# 2025-11-17 v7 Mark Simualtion Modus und 32Bit abfrage entfernt
# 2025-12-12 v8 MartinP Erläuterungen ergänzt und Typos entfernt
#
SCRIPT_VERSION="v9"
bIsVlcInstalled=false
@@ -26,9 +20,10 @@ question_answered_with_yes() {
echo "
###################################
#### Nachinstallationsarbeiten ####
###################################
#####################################
#### Nachinstallationsarbeiten
#### Version: $SCRIPT_VERSION
#####################################
#### Was tut dieses Skript? ####
+2 -2
View File
@@ -5,7 +5,7 @@ This directory contains files belonging to the Linux Mint XFCE post-installation
## Prerequisites to run the script
- Linux Mint XFCE installed and running
- Internet connection for downloading packages and updates
- Script file: `20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh` copied to Desktop
- Script file: `Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh` copied to Desktop
- External files are referenced by the script, please check header comments in the script
## Usage
@@ -14,7 +14,7 @@ Run the main script:
```bash
cd post_installation_script
bash 20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh
bash Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh
```
The script is interactive and will prompt for confirmation before each installation step.
Executable
+85
View File
@@ -0,0 +1,85 @@
#!/usr/bin/env bash
set -e
if [ -n "$(git status --porcelain)" ]; then
echo "Error: You have uncommitted local changes."
echo "Please commit or stash them before releasing."
echo ""
echo "Uncommitted files:"
git status --short
exit 1
fi
VERSION_FILE="VERSION"
SCRIPT_FILE="post_installation_script/Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh"
if [ ! -f "$VERSION_FILE" ]; then
echo "Error: $VERSION_FILE not found"
exit 1
fi
CURRENT_VERSION=$(cat "$VERSION_FILE" | tr -d '\n')
if [ ! -f "$SCRIPT_FILE" ]; then
echo "Error: $SCRIPT_FILE not found"
exit 1
fi
CURRENT_MAJOR=${CURRENT_VERSION#v}
if ! [[ "$CURRENT_VERSION" =~ ^v[0-9]+$ ]]; then
echo "Error: Invalid version format in $VERSION_FILE. Expected v0, v1, v2, etc."
exit 1
fi
NEXT_VERSION=$((CURRENT_MAJOR + 1))
NEXT_VERSION_STR="v$NEXT_VERSION"
if git rev-parse "refs/tags/$NEXT_VERSION_STR" >/dev/null 2>&1; then
echo "Error: Tag $NEXT_VERSION_STR already exists locally."
exit 1
fi
if git remote get-url origin >/dev/null 2>&1; then
if git ls-remote --tags origin "$NEXT_VERSION_STR" 2>/dev/null | grep -q "$NEXT_VERSION_STR"; then
echo "Error: Tag $NEXT_VERSION_STR already exists on remote."
exit 1
fi
else
echo "Warning: No remote configured. You can still create the release locally."
fi
echo "Current version: $CURRENT_VERSION"
echo "Proposed version: $NEXT_VERSION_STR"
echo ""
read -p "Confirm release version $NEXT_VERSION_STR? [y/N]: " confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "Release aborted."
exit 0
fi
echo "$NEXT_VERSION_STR" > "$VERSION_FILE"
sed -i.bak "s/^SCRIPT_VERSION=.*/SCRIPT_VERSION=\"$NEXT_VERSION_STR\"/" "$SCRIPT_FILE"
if [ -f "${SCRIPT_FILE}.bak" ]; then
rm "${SCRIPT_FILE}.bak"
fi
git add "$VERSION_FILE" "$SCRIPT_FILE"
git commit -m "Release $NEXT_VERSION_STR"
git tag -a "$NEXT_VERSION_STR" -m "Release $NEXT_VERSION_STR"
echo ""
echo "Tag $NEXT_VERSION_STR created locally."
read -p "Push to origin (includes tags)? [y/N]: " push_confirm
if [[ "$push_confirm" == "y" || "$push_confirm" == "Y" ]]; then
git push origin --tags
echo "Done! Gitea will create release from tag $NEXT_VERSION_STR"
else
echo "Release prepared locally. Push manually with: git push origin --tags"
fi