Manjaro Pakete/Konfigurationen speichern und bei Neuinstallation einfach installieren lassen

Danke @gosia :wink:

Also gibt es nur Schritt für Schritt Anleitungen dafür… Schade…

Ich hab eher an sowas wie eine einfache GUI, zumindest mit zenity, kdialog oder yard, gehofft.

Dann ist das eine Marktlücke die man schliessen sollte.

Ich lass das hier noch offen, falls jemand so nett ist, falls man was geskriptet hat, hier zu posten :slight_smile:

Ansonsten werde ich dann mal einen GUI Prototypen erstellen in den nächsten Tagen. Dachte ich könnte mir das ersparen… xD

1 Like

Hallo megavolt,

das würde ich nun nicht so sagen. Dass mir nur das eingefallen ist, bedeutet ja noch lange nicht, daß in den Tiefen des Netzes nicht schon irgendwas vorhanden ist. Aber das muss ich dir ja eigentlich nicht sagen…

bin schon ganz gespannt drauf.

viele Grüße und viel Erfolg dabei gosia

@gosia @GaVenga

Es ist soweit… der erster Prototyp… xD

Im Moment wird es nur simuliert.

Was es macht:

  1. Prüft auf Abhängigkeiten für das Skript
  2. Sichert die installierten Pakete in eine Textdatei.
  3. Simuliert eine Installation der Pakete aus der Textdatei.

Viel Spaß beim Testen :wink:

Falls jemand konkrete Vorschläge hat, was verbessert werden sollte, gerne mal hier posten :wink:

#!/bin/bash -e
exec 2>/dev/null	# nervige Fehlermeldungen entfernen...

# /////////////////////////////////////////////////////////////// #
# Zenity Funktionen
# /////////////////////////////////////////////////////////////// #
warnung() {
zenity --warning --width="$warnung_breite" --height="$warnung_hoehe" \
--text="$warnung_text" --title="$warnung_titel" "$@"
}

info() {
zenity --info --width="$info_breite" --height="$info_hoehe" \
--text="$info_text" --ok-label="$info_ok" "$@"
}

checkliste() {
zenity --list --checklist --width="$checkliste_breite" --height="$checkliste_hoehe" \
--column="$checkliste_spalte1" --column="$checkliste_spalte2" --title="$checkliste_titel" \
--ok-label="$checkliste_ok" $checkliste_text "$@"
}

radio() {
zenity --list --radiolist --width="$radio_breite" --height="$radio_hoehe" --title="$radio_titel" \
--text="$radio_text" --column="$radio_spalte1" --column="$radio_spalte2" \
$(echo $radio_optionen) "$@"
}

fortschritt(){
zenity --progress --auto-close --auto-kill --width="$fortschritt_breite" --height="$fortschritt_hoehe" \
--text="$fortschritt_text" --title="$fortschritt_titel" --ok-label="$fortschritt_ok" "$@"
}

# /////////////////////////////////////////////////////////////// #
# ÜBERPRÜFE ABHÄNGIKEITEN FÜR DIESES SKTIPT
# /////////////////////////////////////////////////////////////// #
ueberpruefe_abhaengingkeiten(){

if [ -z $(which zenity) ]; then echo "Installiere zuerst zenity."; exit 1 ; fi

local fortschritt_hoehe="100"
local fortschritt_breite="400"
local fortschritt_titel="Bitte warten..."
local fortschritt_text="Abhängigkeiten werden überprüft"
local fortschritt_ok="Weiter"

local pakete=("tr" "sed" "pamac" )
(
for x in ${pakete[@]}
	do
		echo "# Überprüfe $x"; sleep 1.5
		echo "# $x : $(which $x)"; sleep 1.5
done
) | fortschritt --pulsate


}


# /////////////////////////////////////////////////////////////// #
# SICHERUNG
# /////////////////////////////////////////////////////////////// #
sicherung() {

	ueberpruefe_abhaengingkeiten

local warnung_titel="Auflisten der Pakete"
local warnung_text="Deine Pakete werden hier gleich aufgelistet."
local warnung_hoehe="80"
local warnung_breite="300"

	warnung

local checkliste_spalte1="Auswahl"
local checkliste_spalte2="Pakete"
local checkliste_titel="Paketliste"
local checkliste_ok="Sichern"
local checkliste_hoehe="400"
local checkliste_breite="400"
local checkliste_text=$(echo "$(pamac list --installed --quiet)" | sed -e "s/^/TRUE /g" | tr "\n" " ")

	checkliste > $HOME/paket-liste.txt

local info_breite="300"
local info_hoehe="80"
local info_text="Die Paketliste wurde in $HOME/paket-liste.txt gesichert."
local info_ok="Hauptmenü"

	info

}
# /////////////////////////////////////////////////////////////// #
# INSTALLIEREN
# /////////////////////////////////////////////////////////////// #
installieren() {

	ueberpruefe_abhaengingkeiten

local warnung_titel="Pakete installieren"
local warnung_text="Deine Pakete werden hier gleich aufgelistet."
local warnung_hoehe="80"
local warnung_breite="300"

	warnung

local checkliste_spalte1="Auswahl"
local checkliste_spalte2="Pakete"
local checkliste_titel="Paketliste"
local checkliste_ok="Installieren"
local checkliste_hoehe="400"
local checkliste_breite="400"
local checkliste_text=$(cat $HOME/paket-liste.txt | tr "|" "\n"| sed -e "s/^/TRUE /g" | tr "\n" " ")

local fortschritt_hoehe="100"
local fortschritt_breite="400"
local fortschritt_titel="Bitte warten..."
local fortschritt_text="Pakete werden installiert"
local fortschritt_ok="Hauptmenü"

(
local paketanzahl=$(cat $HOME/paket-liste.txt | tr "|" "\n" | wc -l)
	for x in $(echo "$(checkliste)" | tr "|" " " | sed -r "s/([a-z0-9-]+)/\"\\1\"/g")
		do
			echo "# Installiere $x"; sleep 0.7
			echo "# pamac install --noconfirm $x"; sleep 0.3
	done

) | fortschritt --pulsate

local info_breite="300"
local info_hoehe="80"
local info_text="Alle Pakete wurde erfolgreich installiert."
local info_ok="Hauptmenü"

	info

}

#case $1 in
#	-i) installieren;;
#	-s) sicherung;;
#	*) echo "NIX"; exit1 ;;
#esac

# /////////////////////////////////////////////////////////////// #
# Menu
# /////////////////////////////////////////////////////////////// #
while [ 1 ]
	do
		radio_titel="Hauptmenü"
		radio_text="Wähle..."
		radio_spalte1="Auswahl"
		radio_spalte2="Aktion"
		radio_optionen="FALSE Sicherung FALSE Installieren FALSE Beenden"
		radio_hoehe="180"
		radio_breite="100"

			menu=$(radio)

		if [ $? -eq 1 ]; then break; fi

		info_breite="300"
		info_hoehe="80"
		info_text="Entschuldigung, was wolltest du nochmal?"
		info_ok="Hauptmenü"

		case $menu in
			"Sicherung") sicherung ;;
			"Installieren") installieren ;;
			Beenden) break ;;
			*) info ;;
		esac
done

4 Likes

Hallo megavolt,
danke, sehr schön. Vor einem umfangreicheren Test habe ich aber noch zwei Fragen:

  1. ueberpruefe_abhaengingkeiten() ist ja bis auf die Überprüfung von zenity noch relativ wirkungslos. Also wirkungslos in dem Sinne, daß es zwar abprüft, ob tr, sed und pamac vorhanden sind, aber bei nichtvorhandensein wirft es keinen Fehler.
    Das ist wohl noch dem beta-Stadium geschuldet?
  2. das zweimalige Aufrufen von ueberpruefe_abhaengingkeiten(), einmal in sicherung() und nochmals in installieren() halte ich für “zuviel”.
    Wenn schon, dann würde ich es nur einmal in Menu aufrufen, vor der while [ 1 ] Endlosschleife, denn wenn da was fehlt kann man eigentlich gleich abbrechen.
    Für solche Endlosschleifen bevorzuge ich
    while true
    aber das ist dann wirklich persönliche Geschmacksfrage.

viele Grüße gosia

Hallo @gosia,

danke für die Rückmeldung :wink:

  1. Um ehrlich zu sein, hab ich ueberpruefe_abhaengingkeiten() am Ende nur so dahin geschmiert. Muss da eine Bedingung mit einbauen, hast du schon Recht, sonst erfüllt die Funktion ihren Zweck nicht :blush:

  2. Naja… das Überprüfen dauert ja nichtmal 1sec, wenn es wirklich läuft. Hier hab ich 2x 1.5sek Wartezeit mit eingebaut, damit man den Text auch lesen kann xD Normalerweise würde man ja auf dem einen System sichern und auf einem anderen System wiederherstellen. Also bei 2 Systemen machen 2 Überprüfungen schon Sinn…

Tja, die Funktion ueberpruefe_abhaengingkeiten() ist ausbaufähig… und wie gesagt, das hab ich innerhalb eines Abends geschrieben. Man sollte da keine Wunder erwarten :smiley: Ohne GUI wäre das schon längst fertig xD

@gosia @caho @kisun @Goldhahn

So hab das Skript um eine Dateiauswahl erweitert, Abhängigkeiten werden jetzt bei jedem Aufruf des Hauptmenüs geprüft, wenn Eine fehlt, ein Fehler angezeigt und nicht nur bei Auswahl von Sicherung oder Installieren (wie von @gosia vorgeschlagen :wink: )

Falls jemand konkrete Vorschläge hat, was verbessert werden sollte, gerne mal hier posten :wink:

#!/bin/bash -x
#exec 2>/dev/null	# nervige Fehlermeldungen entfernen...
# /////////////////////////////////////////////////////////////// #
# In Planung
# /////////////////////////////////////////////////////////////// #
# > Paketliste vergleichen, damit nur nicht vorhandene Pakete installierten werden.
# > Methode suchen, wie die Pamac Routine ausgelesen und gefiltert werden kann.
# > Funktion um Konfigurationsdateien zu speichern und Pfade aus einer Datei zu lesen.
# > Bei Abbrechen nicht zum Hauptmenü gehen, sondern Beenden.

# /////////////////////////////////////////////////////////////// #
# Zenity Funktionen
# /////////////////////////////////////////////////////////////// #
warnung() {
zenity --warning \
--width="$warnung_breite" \
--height="$warnung_hoehe" \
--text="$warnung_text" \
--title="$warnung_titel" \
"$@"
}

info() {
zenity --info \
--width="$info_breite" \
--height="$info_hoehe" \
--text="$info_text" \
--ok-label="$info_ok" \
"$@"
}

frage() {
zenity --question \
--width="$frage_breite" \
--height="$frage_hoehe" \
--title="$frage_titel" \
--text="$frage_text" \
--ok-label="$frage_ok" \
--cancel-label="$frage_abbrechen" \
"$@"
}

checkliste() {
zenity --list --checklist \
--width="$checkliste_breite" \
--height="$checkliste_hoehe" \
--column="$checkliste_spalte1" \
--column="$checkliste_spalte2" \
--title="$checkliste_titel" \
--ok-label="$checkliste_ok" \
$checkliste_text \
"$@"
}

radio() {
zenity --list --radiolist \
--width="$radio_breite" \
--height="$radio_hoehe" \
--title="$radio_titel" \
--text="$radio_text" \
--column="$radio_spalte1" \
--column="$radio_spalte2" \
$(echo $radio_optionen) \
"$@"
}

datei() {
if [[ "$datei_speichern" == "ja" ]]
	then
		local speichern="--save"
elif [[ "$datei_speichern" == "nein" ]]
	then
		local speichern=" "
fi

if [[ "$datei_mehrmals" == "ja" ]]
	then
		local mehrmals="--multiple"
elif [[ "$datei_mehrmals" == "nein" ]]
	then
		local mehrmals=" "
fi

if [[ "$datei_ueberschreiben" == "ja" ]]
	then
		local ueberschreiben="--confirm-overwrite"
elif [[ "$datei_ueberschreiben" == "nein" ]]
	then
		local ueberschreiben=" "
fi

if [[ "$datei_verzeichnis" == "ja" ]]
	then
		local verzeichnis="--directory"
elif [[ "$datei_verzeichnis" == "nein" ]]
	then
		local verzeichnis=" "
fi

zenity --file-selection \
$speichern \
$ueberschreiben \
$verzeichnis \
--title="$datei_titel" \
--filename="$datei_dateiname" \
"$@"
}

fortschritt(){
if [[ "$fortschritt_automatisch_schliessen" == "ja" ]]
	then
		local automatisch_schliessen="--auto-close"
elif [[ "$fortschritt_automatisch_schliessen" == "nein" ]]
	then
		local automatisch_schliessen=""
fi

if [[ "$fortschritt_automatisch_toeten" == "ja" ]]
	then
		local automatisch_toeten="--auto-kill"
elif [[ "$fortschritt_automatisch_toeten" == "nein" ]]
	then
		local automatisch_toeten=""
fi

zenity --progress \
$automatisch_schliessen \
$automatisch_toeten \
--width="$fortschritt_breite" \
--height="$fortschritt_hoehe" \
--text="$fortschritt_text" \
--title="$fortschritt_titel" \
--ok-label="$fortschritt_ok" \
"$@"
}



# /////////////////////////////////////////////////////////////// #
# SICHERUNG
# /////////////////////////////////////////////////////////////// #
sicherung() {

local checkliste_spalte1="Auswahl"
local checkliste_spalte2="Pakete"
local checkliste_titel="Paketliste"
local checkliste_ok="Sichern"
local checkliste_hoehe="400"
local checkliste_breite="400"
local checkliste_text=$(echo "$(pamac list --installed --quiet)" | sed -e "s/^/TRUE /g" | tr "\n" " ")

local datum=$(date +%Y-%m-%d-%H:%M:%S)
local codename=$(lsb_release -c | sed -r "s/.+:\s+//g")
local version=$(lsb_release -r | sed -r "s/.+:\s+//g")

local datei_dateiname="$datum-$version-$codename-paketliste.txt"
local datei_titel="Wo willst du deine Paketliste speichern?"
local datei_ueberschreiben="ja"
local datei_verzeichnis="nein"
local datei_mehrmals="nein"
local datei_speichern="ja"

local pakete=$(checkliste)
local dateipfad=$(datei)

	echo "$pakete" > $dateipfad

}
# /////////////////////////////////////////////////////////////// #
# INSTALLIEREN
# /////////////////////////////////////////////////////////////// #
installieren() {
local datei_titel="Wähle deine Paketliste..."
local datei_ueberschreiben="nein"
local datei_verzeichnis="nein"
local datei_mehrmals="nein"
local datei_speichern="nein"

local dateipfad=$(datei)
local pakete=$(echo "$dateipfad")

local checkliste_spalte1="Auswahl"
local checkliste_spalte2="Pakete"
local checkliste_titel="Paketliste"
local checkliste_ok="Installieren"
local checkliste_hoehe="400"
local checkliste_breite="400"
local checkliste_text=$(cat $pakete | tr "|" "\n"| sed -e "s/^/TRUE /g" | tr "\n" " ")

local fortschritt_automatisch_schliessen="ja"
local fortschritt_automatisch_toeten="ja"
local fortschritt_hoehe="100"
local fortschritt_breite="400"
local fortschritt_titel="Bitte warten..."
local fortschritt_text="Pakete werden installiert"
local fortschritt_ok="Hauptmenü"

(
	for x in $(checkliste | tr "|" " " | sed -r "s/([a-z0-9-]+)/\"\\1\"/g")
		do
			echo "# Installiere $x"; sleep 0.3
			echo "# pamac install --noconfirm $x"; sleep 0.2
	done

) | fortschritt --pulsate
}

#case $1 in
#	-i) installieren;;
#	-s) sicherung;;
#	*) echo "NIX"; exit1 ;;
#esac

# /////////////////////////////////////////////////////////////// #
# ÜBERPRÜFE ABHÄNGIKEITEN FÜR DIESES SKTIPT
# /////////////////////////////////////////////////////////////// #
ueberpruefe_abhaengingkeiten(){

if [ -z $(which zenity) ]; then echo "Installiere zuerst zenity." && break ; fi

local fortschritt_automatisch_schliessen="ja"
local fortschritt_automatisch_toeten="ja"
local fortschritt_hoehe="100"
local fortschritt_breite="400"
local fortschritt_titel="Bitte warten..."
local fortschritt_text="Abhängigkeiten werden überprüft"
local fortschritt_ok="Weiter"

(
local programme=("tr" "sed" "pamac")
for x in ${programme[@]}
	do
			echo "# Überprüfe $x"; sleep 0.3
			echo "# $x : $(which $x)"; sleep 0.2

		local info_breite="300"
		local info_hoehe="80"
		local info_text="Installiere zuerst <b>$x</b>"
		local info_ok="Beenden"

			if [ -z $(which $x) ]; then info && exit && break; fi

done
) | fortschritt --pulsate
}

# /////////////////////////////////////////////////////////////// #
# Menu
# /////////////////////////////////////////////////////////////// #
while [ 1 ]
	do
		ueberpruefe_abhaengingkeiten

		radio_titel="Hauptmenü"
		radio_text="Wähle..."
		radio_spalte1="Auswahl"
		radio_spalte2="Aktion"
		radio_optionen="FALSE Sicherung FALSE Installieren FALSE Beenden"
		radio_hoehe="180"
		radio_breite="100"

			menu=$(radio)

		if [ $? -eq 1 ]; then break; fi

		info_breite="300"
		info_hoehe="80"
		info_text="Entschuldigung, was wolltest du nochmal?"
		info_ok="Hauptmenü"

		case $menu in
			"Sicherung") sicherung ;;
			"Installieren") installieren ;;
			"Beenden") break ;;
			*) info ;;
		esac
done

Hi, vielleicht ist es nicht ganz das was du suchst, ich hinterlasse das aber hier mal als Idee:

Da ich mehrere Rechner habe, betreue und auf allen möglichst immer die gleichen base packages und settings haben möchte, habe ich mir Pakete und Skripte erstellt, welche das für mich übernehmen.

Mache ich eine Änderung an meinem System, z.B. eine Paketinstallation, trage ich dieses Paket als Abhängigkeit in mein setup package ein. Dann nur noch das neue package in meine Paketquelle hochladen, welche sich mit dem install Skript automatisch auf allen Rechnern hinzugefügt hat und alle bekommen bei dem nächsten Update automatisch die neuen Änderungen / Pakete.

Eine Neuinstallation ist damit auch recht einfach. Nach der frischen Manjaro Installation führe ich mein install script aus, welches meine Paketquelle und mein Setup Paket installiert. Damit richtet sich das meiste auf System Ebene automatisch ein und es ist wie zuvor.
(installierte Pakete, Hotkeys, Änderungen in Konfigurationsdateien, … alles ist möglich :slight_smile: )

Hier findest du meinen code, vielleicht hilft es dir dabei, etwas für deine Zwecke zu bauen:

2 Likes

Danke @anon36603275 … stimmt hast du mir ja mal erzählt, dass du es so verwaltest. Eigentlich sehr schlau gemacht. Eine Neuinstallation und mit Meta-Paketen und einer eigenen Repo zu machen, die dann auch noch weiter aktualisiert werden kann. Da es nur Text-Dateien sind reicht eine Github Account aus.

Hab es mir jetzt mal gründlich angesehen und mir Gedanken gemacht. Man kann es so machen, wenn man nur auf Arch-basierten Systemen arbeitet, aber ich würde es doch gerne ein wenig einfacher machen. Wenn ich mich nur auf die Paketnamen konzentriere und eine Distro-Erkennung einbaue, würde es auch mit anderen Paket-Managern wie apt oder dnf laufen.

Auch würde ich das lieber lokal sichern. Es soll nur eine “Datenbank-Datei” sein.

Grossartig. Ich habe das Script auf meinem Testrechner laufen lassen. Das läuft fehlerfrei durch und gefällt. Nun die Herkulesfrage. Ich möchte dieses Script auf Eigene Gefahr produktiv nutzen. Kannst Du mir die Zeilen hinzufügen/ändern, damit dieses Script auf dem neuen Rechner dann auch wirklich Daten auf die Platte schreibt. ?
Dafür wäre ich Dir sehr dankbar.

Haha, ich hab das “wird nur simuliert” irgenwie ganz überlesen! :grinning:

Hab gestern mein System neu aufgesetzt und mir vorher ja so gedacht ich hab ja das coole Skript von @megavolt. Nach der Neuinstallaion hab ich dem Skript gespannt beim installieren zugesehen und mit der Zeit erst gemerkt das es nix installiert. :joy:

Naja zumindest hatte ich ne schöne Liste mit den Paketen die installiert waren (1944 Stück) und musste die nur noch mit den Paketen vergleichen die nach der Neuinstallation schon installiert waren (1242 Stück). Mit nem Editor macht das keinen Spaß. Und mit dem bash-scripting bin ich auch noch nicht so firm.

Daher hab ich hier mal für den Fall ein php-Skript zusammen geschustert:

#!/usr/bin/php
<?php

$user = get_current_user();
    
$workingDir		= "/home/".$user."/";
$fileOldInstall = "2021-befor.txt";
$fileNewInstall = "2021-after.txt";
$intCountEqual	= 0;
$intCountNeeded	= 0;
$strNeededPkg	= "";
$date 			= date("Y-m-d-H:i:s");
$fileNeededPkg	= $date."-StillToInstall.txt";
    
$hOldInstall = fopen( $workingDir.$fileOldInstall, "r" );
$hNewInstall = fopen( $workingDir.$fileNewInstall, "r" );

$strOldInstall = fgets( $hOldInstall );
$strNewInstall = fgets( $hNewInstall );

fclose( $hOldInstall );
fclose( $hNewInstall );

$arrOldInstall = explode("|", $strOldInstall);

foreach ($arrOldInstall as $value) {

	if (str_contains( $strNewInstall, $value)) {

		$intCountEqual++;

    } else {

	$strNeededPkg = $strNeededPkg.$value."|";
	$intCountNeeded++;

    }	

}

$strNeededPkg = trim( $strNeededPkg, "\n|");

$hNeededPkg = fopen( $workingDir.$fileNeededPkg, "w");
fwrite($hNeededPkg, $strNeededPkg);
fclose($hNeededPkg);

echo "Already installed Packages: ".$intCountEqual."\n";
echo "Still needed Packages: ".$intCountNeeded."\n\n";
echo "Needed Packages are saved in this file:\n";
echo "--> ".$workingDir.$fileNeededPkg."\n\n";

?>

Vielleicht hilft es jemanden weiter. Es muss dann nur noch eine Sicherungsdatei mit @megavolts Skript von der neuen Installation gemacht werden und der Dateiname im Skript angepasst werden($file(Old/New)Install). Es arbeitet im home-Verzeichnis des ausführenden Benutzers und Speichert auch dort die Ausgabe.

Achso, die Ausgabedatei zeigt nur die Pakete die noch zur vorherigen Installation fehlen. Im selben Format wie @megavolts Sicherungsdatei.

P.S. Wer eine Liste mit Zeilenumbrüchen braucht anstatt | als Trenner muss folgendes ändern:

$strNeededPkg = $strNeededPkg.$value."|";

in

$strNeededPkg = $strNeededPkg.$value."\n";

Sollte Zeile 34 sein in der if-else Schleife. :grin:

Hallo @ondara :smiley:

Schön, dass es dir gefällt. Aber im Moment bin ich leider schwer beschäftigt (und auch nicht Zuhause). Ich habe hier und da an dem Script weitergearbeitet, wenn ich Zeit hatte, aber fertig ist es nicht.

War dabei eine libzenity zu schreiben, die das schreiben von zenity GUIs vereinfachen soll.

Ja hast Recht, ich war auf der Suche nach eine einfachen Methode zwei Listen zu vergleichen. Wenn das fertig ist, dann lässt sich der Rest der Installation auch einfach implementieren. Werde dann erneut ein Update machen.

@kisun Haha ich habe eher an diff gedacht wegen dem Vergleichen aber ein for loop sollte auch klappen :smiley: Man, hab da nicht dran gedacht… Danke für dein inspirierenden PHP-Skript :+1:

Jedenfalls @kisun und @ondara, wenn ich wieder daheim bin (was wahrscheinlich nächste Woche sein wird), dann werde ich das Skript vervollständigen, damit es zumindest die Basis-Funktion erfüllt: Paketliste speichern und Paketliste installieren :smiley:

Und danke für euer Interesse. Das motiviert mich jetzt doch, das mal fertig zu schreiben :grin:

Ja wie gesagt bei bash bin ich noch nicht so fit.

Aber ich hätte da noch eine Idee. Man könnte noch ein ‘chroot’ einbauen. Damit man nach der Neuinstallation und vor dem Neustart das Skript noch durchlaufen lässt und fehlendes installiert.

Somit wäre dann nach dem Neustart schon alles erledigt. :grinning:

Möglich, aber das sollte aber in erste Linie ein grafisches Werkzeug sein. Wenn du was für die Kommandozeile brauchst, dann schau dir ALIS. Ist zwar für Archlinux geschrieben, aber sollte mit wenigen Veränderungen auch unter Manjaro funktionieren:

:wink:

1 Like

Ich hab den Thread hier nicht vergessen, aber wenn einen die Lust daran vergangen ist, dann fehlt einfach die Motivation weiter zu machen. Es ist auch nur ein Hobby-Projekt in meiner Freizeit.

Es gibt keine weiteren Aktualisierungen zu dem Skript, aber ich hab mich entschieden ein Repo zu erstellen.

Planung fürs erste:

  1. Script in Englisch übersetzen
  2. Gettext für Spracheausgabe implementieren.

Werde hier auch in Zukunft denke ich mal weiter Bestrebungen veröffentlichen, wenn Zeit und Lust da ist. Falls jemand mitarbeiten will, der kann sich ja melden. :wink:

2 Likes

Hallo :wink:

Hab vergessen mich hier zurück zu melden. Also an alle die interessiert sind, habe ich das vollständige und voll funktionsfähige Skript hier hochgeladen, dass schon einige Monate im Einsatz war.

Ebenfalls habe ich eine Möglichkeit eingebaut Übersetzungen anzufertigen. Ich wollte es als eine Datei belassen, also müsst ihr die Datei einfach kopieren und eine andere Sprache als Deutsch eintragen. Im Grunde sind es alle Variablen, die mit “Gui” beginnen.

Lässt sich ebenfalls so von der Kommandozeile ausführen:

curl -s "https://notabug.org/megavolt/random-scripts/raw/master/manjaro-migration.sh" | bash

grafik


Es ist in meinen Augen vollständig (Feature-Complete). Ich werde keine neuen Funktionen mit einbauen.

  1. Es liest alle Paketdaten aus, zeigt eine Liste, und schreibt diese in eine Textdatei.
  2. Es liest die Textdatei aus, exkludiert alle Pakete, die bereits installiert sind, zeigt eine Liste und lässt es installieren.

Falls jemanden über Bugs stolpert, Syntaxfehler oder mögliche Optimierung hat, dann sehe ich mir das gerne an.

Viele Grüße,
Megavolt

3 Likes

Aber ich hätte da noch eine Idee. Man könnte noch ein ‘chroot’ einbauen. Damit man nach der Neuinstallation und vor dem Neustart das Skript noch durchlaufen lässt und fehlendes installiert.

Hallo @seriallnumber ,

das wäre eine neue Funktion, woran ich nicht arbeiten werde, aber wenn du diese Funktion haben willst, dann steht es dir frei den Skript zu erweitern. Kannst mir ja ein Patch zukommen lassen :wink:

Gruß

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.