Programmliste für Neuinstallation sichern

Alles rund um die Installation Eures Linuxsystems, sowie die Updatefunktionen des Systems und das Paketmanagement

Moderator: Moderatoren

Antworten
Sevemiyen
Newbie
Newbie
Beiträge: 10
Registriert: 9. Jan 2006, 21:05
Wohnort: Verlassene Ebene
Kontaktdaten:

Programmliste für Neuinstallation sichern

Beitrag von Sevemiyen » 9. Feb 2006, 15:06

Kann ich irgendwie die Liste von meinen installierten Programmen speichern oder so?
Das es evtl. automatisch nach einer Neuinstallation die Sachen sich selber drauf packt per apt, yast oder auch manuell?
Konfigurationen können dabei ruhig verloren gehen...

System: Suse 10.0
Zuletzt geändert von Sevemiyen am 9. Feb 2006, 15:08, insgesamt 1-mal geändert.
o.o°

Werbung:
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 9. Feb 2006, 15:08

rpm -qa | sort liefert dir eine Liste der Installierten Pakete.
daraus kannst du mit awk und Gehilfen eine Liste erstellen die nur die Paketnamen enthält und diese dann an einen apt install <liste> weiterleiten .

oder
rpm -qa --qf "%{NAME}\n" | sort das ist eine Liste der Paketnamen

oder
du erzeugst dir eine selektions-Datei für dein YaST und lädst diese dann wieder neu ein.
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

Sevemiyen
Newbie
Newbie
Beiträge: 10
Registriert: 9. Jan 2006, 21:05
Wohnort: Verlassene Ebene
Kontaktdaten:

Beitrag von Sevemiyen » 9. Feb 2006, 22:51

:oops: Bin noch ein ziehmlicher Neuling.. Darf ich es nochmal zusammenfassen um zu schauen ob ich es richtig verstanden habe?

Wenn ich...

"rpm -qa | sort" kommt in der Konsole ne Liste... Die kann ich dann einfach kopieren und in eine Textdatei rein schmeißen und später dann einfach bei apt "apt install liste.txt" eingeben dann übernimmt apt den Rest von alleine und ich schau die nächsten Stunden nur zu wie er es aus dem Netz zieht und installiert.

Oder ich gib in der Konsole "rpm -qa --qf "%{NAME}\n" | sort" Erstellt er irgendwo eine Liste...?? [Um ehrlich zu sein hab ich den Teil garnicht verstanden... In welchem Pfad speichert er dann die Liste? Und steht NAME in den Befehl für die Bennung der Liste?

Den letzte Teil scheint ja am einfachsten zu sein... Wenn man weiß wie es geht ^.^° ... Wie geht es denn?

Welches der 3 Lösungen ist am Benutzerfreundlichsten bsw. verläuft meist ohne Reibung, so das es für mich [Neuling, der bei jedem kleinen Problem in den Linux-Club Channel jumpt] durchführbar sind...
Habe eigentlich nur die Standartinstallation von Suse 10.0 drin aber dannach kaman mit apt viele Sachen wie xine, mplayer, vlc, und viele codec's für Multimedia die ich nur dank der Hilfe der L-C'ler hin gekriegt habe... Finde es irgendwie aber dumm sie immer zu belästigen vor allem bei solchen größeren und längeren Fragen :-(
o.o°

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 10. Feb 2006, 08:06

rpm -qa | sort liefert:

Code: Alles auswählen

3ddiag-0.728-2
Asunder-0.1.0-0.oc2pus.4
BaseOCF-1.2-0.oc2pus.1
CheckHardware-0.1-970
DirectFB-0.9.22-2
GTorrentViewer-0.2b-0.oc2pus.3
....
==> Nachbearbeitung um aus 3ddiag-0.728-2 ==> 3ddiad=0.728-2 zu machen und dann mit dieser Liste ein apt install auszuführen.
Vorteil, alle Programme werden in der GLEICHEN Version wieder geladen.

"rpm -qa --qf "%{NAME}\n" | sort" liefert:

Code: Alles auswählen

3ddiag
Asunder
BaseOCF
CheckHardware
DirectFB
GTorrentViewer
....
d.h. eine Liste der Paketnamen. Das ist eine ganz normale Syntax für einen rpm-Query Aufruf (schau dir man rpm an ...)
Diese Liste kannst du an apt verfüttern und es werden genau diese Programme geladen. Evtl werden aber andere Versionen geladen!

Zum Thema Selktionsdatei, hier mal ein Beispiel:

Code: Alles auswählen

#! /bin/bash
#####################################################
# script to generate meineListe.sel
#
# version 1.0 - oc2pus
#####################################################

# debug switch
#set -x

#####################################################
#####################################################
function usage ()
{
	echo ""
	echo "$PROGNAME: wrong call or missig parameters ..."
	echo ""
	echo "$PROGNAME: call `basename $0` cache [oc2pus | tux]"
	echo "$PROGNAME:      to list all packages from your actual apt-cache $CACHEDIR"
	echo "$PROGNAME: call `basename $0` db [oc2pus | tux]"
	echo "$PROGNAME:      to list all installed packages"
	echo ""
	exit 1
}

#####################################################
# package_0.64.4-X.oc2pus.Y.i586.rpm ==> package
#####################################################
function packageBaseName ()
{
	TMPdatei=$1
	TMPdatei2=${TMPdatei%-*}
	TMPdatei3=${TMPdatei2%_*}
	PACKAGENAME=${TMPdatei3##/*/}
}

#####################################################
#####################################################
function createBody ()
{
	DATUM=`date`
	cat > $1 << EOF
# Meine-Package-Selection 1.0
# generated on $DATUM

=Ver: 1.0

=Sel: MeineListe

=Sum: Base System
=Sum.de: Grundsystem

=Cat: addon

=Vis: true

=Ord: 10

+Ins:
EOF
}

#####################################################
#####################################################
function createTail ()
{
	echo "-Ins:" >> $1
	echo ""      >> $1
}

#####################################################
#####################################################
function createCacheList ()
{
	echo "$PROGNAME: reading cache $CACHEDIR ..."
	myList=`ls -1 $CACHEDIR/*.oc2pus.*`
	for i in $myList; do
		packageBaseName $i
		echo $PACKAGENAME >> $1
	done
}

#####################################################
# query RPM database and get all packagenames for $PACKAGER
# output only package-name
#####################################################
function createDatabaseList ()
{
	echo "$PROGNAME: inspecting RPM-database ..."
	rpm -qa --queryformat "%-30{name} %20{version} %10{release}\n" | \
		sort | \
		grep $PACKAGER | \
		awk '{print $1}' >> $1
}

#####################################################
# adjust parameters for your desires ...
#####################################################
PROGNAME=`basename $0`
SELNAME=meineListe.sel
CACHEDIR=/var/cache/apt/archives
PACKAGER=oc2pus
if [ ! -z "$2" ]; then
	PACKAGER=$2
fi

createBody $SELNAME
case "$1" in
	cache)
		echo "$PROGNAME: generating $SELNAME from directory $CACHEDIR for packager: $PACKAGER ..."
		createCacheList $SELNAME
		;;
	db)
		echo "$PROGNAME: generating $SELNAME from RPM-database for packager: $PACKAGER ..."
		createDatabaseList $SELNAME
		;;
	*)
		usage
		;;
esac
createTail $SELNAME

echo "$PROGNAME: $SELNAME written"
echo "$PROGNAME: now edit $SELNAME and remove/add some packages"
echo "$PROGNAME: install the file $SELNAME in the directory: /var/adm/YaST/InstSrcManager/IS_CACHE_0x00000001/DATA/descr/"
echo "$PROGNAME: (you must be root to do this!)"
echo "$PROGNAME: "
echo "$PROGNAME: To install all meinePakete packages in one step, simply call: "apt groupinstall meinePakete""
Dieses Beispiel erstellt eine Selektionsliste für alle *.oc2pus.* Pakete. Du kannst sie aber einfach erweitern auf alle, dazu musst du in der Funktion "createDatabaseList" etwas anpassen..... Das überlasse ich dir ;)

Mit apt groupinstall meinePakete würde dann alles zurückgeladen.

Anmerkung: wenn du dieses Script mit cut & paste kopierst, achte darauf das du KEINE Zeielnumbrüche dort erhälst wo keine hingehören!
Und bearbeite das gespeicherte Script mit dem Befehl dos2unix. Das nur um die üblichen Rückfragen auszuschliessen *fg*
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

Sevemiyen
Newbie
Newbie
Beiträge: 10
Registriert: 9. Jan 2006, 21:05
Wohnort: Verlassene Ebene
Kontaktdaten:

Beitrag von Sevemiyen » 10. Feb 2006, 17:03

rpm -qa | sort liefert:

Code:
3ddiag-0.728-2
Asunder-0.1.0-0.oc2pus.4
BaseOCF-1.2-0.oc2pus.1
CheckHardware-0.1-970
DirectFB-0.9.22-2
GTorrentViewer-0.2b-0.oc2pus.3
....

==> Nachbearbeitung um aus 3ddiag-0.728-2 ==> 3ddiad=0.728-2 zu machen und dann mit dieser Liste ein apt install auszuführen.
Vorteil, alle Programme werden in der GLEICHEN Version wieder geladen.
Also das scheint mir das vernünftigste zu sein :-)..
Dannach kann man einfach ein apt upgrade machen und schon hat man alles auf den neusten Stand.
Und es geht so?

1. Man schreibe in die Konsole "rpm -qa | sort" rein.
2 Man kopiere alle installierten Pakete was dann ungefähr so aussieht..

Code: Alles auswählen

3ddiag-0.728-2
855resolution-0.4-3
a2ps-4.13-1058
a52dec-0.7.4-3.pm.1
aaa_base-10.0-28
aaa_skel-2005.9.7-2
aalib-1.4.0-290
acl-2.2.31-3
acpid-1.0.4-9.4
acroread-7.0.1-4
agfa-fonts-2003.03.19-15
alsa-1.0.10-0.pm.1
...
3. Man füge diese per Copy und Paste in eine Textdatei rein.
4. Speichere sie unter Proglist.txt
5. Neuinstallation... => Apt installieren.
6. Konsole => SU => *Pwd* => apt install proglist.txt
7. Apt lädt nun alle Pakete aus dem Internet....
[Frage dazu... Lädt Apt auch die schon installierten Pakete aus dem Internet?? Kann man das Prog nicht sagen er soll nur die drauf Packen was noch nicht installiert worden ist weil er sonst das ganze Betriebsstem theorätisch nochmal drauf spiel geschweige downloaded oder?]
8. Du hast deinen [fast] alten Betriebssystem wieder... [Hoffentlich]
o.o°

Grothesk
Ultimate Guru
Ultimate Guru
Beiträge: 14662
Registriert: 26. Okt 2003, 11:52
Wohnort: Köln

Beitrag von Grothesk » 10. Feb 2006, 17:08

Schieb den output doch direkt in eine Textdatei...

rpm -qa | sort > proglist.txt

Dann sparst du dir Schritt 2-4

Zu 7: Wenn installierte Version eine andere/niedrigere Versionsnummer hat dann wird die aktuellere geladen. Macht ja auch Sinn. Wenn die Versionen gleich sind lädt apt die auch nicht nach...
"Die Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen. Allerdings ist sie nicht OpenSource, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 10. Feb 2006, 17:09

ad 3.) 4.)
rpm -qa | sort > Proglist.txt

ad 5.)
mit sed oder awk das "=" reinschiessen (siehe man sed, man awk)
oder mit so einer (ähnlichen) Funktion

Code: Alles auswählen

function packageBaseName ()
{
   TMPdatei=$1
   TMPdatei2=${TMPdatei%-*}
   TMPdatei3=${TMPdatei2%_*}
   PACKAGENAME=${TMPdatei3##/*/}
} 
ad 6:)
cat Proglist.txt | apt install

ad 7.)
es wird nur das geladen was NICHT im cache steht bzw neuer als der Cache ist

so sollte es funktionieren ;)
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

Sevemiyen
Newbie
Newbie
Beiträge: 10
Registriert: 9. Jan 2006, 21:05
Wohnort: Verlassene Ebene
Kontaktdaten:

Beitrag von Sevemiyen » 11. Feb 2006, 08:26

^.^° Ich weiß langsamm nerv ich wirklich... :(
Aber ich glaube das ist dann die letzte mir unklare Frage O:-)
ad 5.)
mit sed oder awk das "=" reinschiessen (siehe man sed, man awk)
oder mit so einer (ähnlichen) Funktion

Code:
function packageBaseName ()
{
TMPdatei=$1
TMPdatei2=${TMPdatei%-*}
TMPdatei3=${TMPdatei2%_*}
PACKAGENAME=${TMPdatei3##/*/}
}
Wie schon gesagt bin ich ziehmlich N00big und mein English nicht gerade ausreichend für die man...
Kannst du diesen Schritt evtl irgendwie als vorlage in einer Code machen und mir Zeigen wie dann der Proglist.txt am Ende eigentich aussehen sollte? Vielleicht an Hand eines Beispiels deines Proglist's oder der meine oben angegebener?
Danke für all die Hilfe und Mühe von euch ^.^
o.o°

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 11. Feb 2006, 10:23

hm, mit so wenig Eigeninitiative kommst du nicht sehr weit ...

Code: Alles auswählen

rpm -qa --qf "%{NAME}=%{VERSION} " > myProgList.txt
liefert so etwas:

Code: Alles auswählen

...fluidsynth=1.0.6 libjpeg=6.2.0 grep=2.5.1a telnet-server=1.2 libnscd=1.1 atk-devel=1.10.3 readline=5.0 ....
dann mit folgendem Befehl alles wieder installieren:

Code: Alles auswählen

cat myProgList.txt | apt install
und fertig ist die Laube ...
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast