Hur man ser vad som är installerat...

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Hur man ser vad som är installerat...

Inlägg av Osprey »

Så här kan man se ungefär vad som är installerat och det skapar också ett script för att installera allting på samma sätt igen.

Mycket användbart om man i något läge måste installera om Linux - Ubuntu, Mint och övriga Debian-baserade system.

Skapa bara det script som kommer ut av det här, kopiera det till en USB-pinne och kör sedan scriptet i det nya systemet... :)

Kod: Markera allt

#! /bin/bash
#
# Mappen /usr/share/applications/ för dom som är installerade från systemet och /usr/local/share/applications/ för dom som är installerade från källkod.
# 
# Där hittar du .desktop-filer för installerade program oberoende av användare - Men så har du även ~/.local/share/applications/ där användar-specifika desktop-filer kan hamna - det verkar vara en Gnome-grej.
#
if [[ $1 == "-h" || $1 == "--help" ]]; then
	cat << EOD

usage:	instapp [mount] [user]

	mount	If not specified "/usr..." for the running system is used. If another system is
		mounted, specify for example "/mnt".

	user	If ".local" for a specific user shall also be checked.

EOD
	exit
fi
#
BASE=$1
if [[ -z $2 ]]; then
	USR=$(echo ~)
else
	USR="$BASE/home/$2"
fi
#
echo
let TOTAL=0
#
rm instapp.sys 2> /dev/null
rm instapp.src 2> /dev/null
rm instapp.usr 2> /dev/null
rm instapp.all 2> /dev/null
#
# -Applications installed via repositories via for example Synaptic
if [[ -e $BASE/usr/share/applications ]]; then
	NAPPS=$(grep -i ^exec $BASE/usr/share/applications/* 2> /dev/null | awk -F = '{ print $2 }' | awk '{ print $1 }' | tr '[A-Z]' '[a-z]' | sed 's/.sh//g' | sort -u | rev | awk -F / '{ print $1 }' | rev | wc -l)
	APPS=$(grep -i ^exec $BASE/usr/share/applications/* 2> /dev/null | awk -F = '{ print $2 }' | awk '{ print $1 }' | tr '[A-Z]' '[a-z]' | sed 's/.sh//g' | sort -u | rev | awk -F / '{ print $1 }' | rev)
	for APP in $APPS; do
		echo "apt-get -y --allow-downgrades --allow-remove-essential --allow-change-held-packages --allow-unauthenticated install $APP" >> instapp.sys
	done
	echo "-Install script for $NAPPS applications written to instapp.sys"
	let TOTAL+=NAPPS
else
	echo "-E: $BASE/usr/share/applications does not exist"
fi
#
# -Applications installed from source code
if [[ -e $BASE/usr/local/share/applications ]]; then
	NAPPS=$(grep -i ^exec $BASE/usr/local/share/applications/* 2> /dev/null | awk -F = '{ print $2 }' | awk '{ print $1 }' | tr '[A-Z]' '[a-z]' | sed 's/.sh//g' | sort -u | rev | awk -F / '{ print $1 }' | rev | wc -l)
	APPS=$(grep -i ^exec $BASE/usr/local/share/applications/* 2> /dev/null | awk -F = '{ print $2 }' | awk '{ print $1 }' | tr '[A-Z]' '[a-z]' | sed 's/.sh//g' | sort -u | rev | awk -F / '{ print $1 }' | rev)
	for APP in $APPS; do
		echo "apt-get -y --allow-downgrades --allow-remove-essential --allow-change-held-packages --allow-unauthenticated install $APP" >> instapp.src
	done
	echo "-Install script for $NAPPS applications written to instapp.src"
	let TOTAL+=NAPPS
else
	#echo "-E: $BASE/usr/local/share/applications does not exist"
	echo "-No applications written to instapp.src"
	if [[ -e instapp.src ]]; then
		rm instapp.src
	fi
fi
#
# -Applications installed by user
if [[ -e $USR/.local/share/applications ]]; then
	NAPPS=$(grep -i ^exec $USR/.local/share/applications/* 2> /dev/null | awk -F = '{ print $2 }' | awk '{ print $1 }' | tr '[A-Z]' '[a-z]' | sed 's/.sh//g' | sort -u | rev | awk -F / '{ print $1 }' | rev | wc -l)
	APPS=$(grep -i ^exec $USR/.local/share/applications/* 2> /dev/null | awk -F = '{ print $2 }' | awk '{ print $1 }' | tr '[A-Z]' '[a-z]' | sed 's/.sh//g' | sort -u | rev | awk -F / '{ print $1 }' | rev)
	for APP in $APPS; do
		echo "apt-get -y --allow-downgrades --allow-remove-essential --allow-change-held-packages --allow-unauthenticated install $APP" >> instapp.usr
	done
	echo "-Install script for $NAPPS applications written to instapp.usr"
	let TOTAL+=NAPPS
else
	echo "-E: $USR/.local/share/applications does not exist"
fi
#
cat instapp.sys instapp.src instapp.usr 2> /dev/null >> instapp.all
echo "-Total $TOTAL applications"
echo "-Installation script for ALL applications written to instapp.all"
chmod 755 instapp.*
echo
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
skalman65
Inlägg: 1050
Blev medlem: 15 jan 2008, 23:18
OS: Annat GNU/Linux
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Kalix

Re: Hur man ser vad som är installerat...

Inlägg av skalman65 »

Tack Osprey!

Det blir ett script jag kommer att spara. ;D


Gjorde en test körning och insåg att jag hade bra många fler appar/program som man installerat än man behöver.

Finns det något terminalkommando jag kan använda att hämta information om ett utvalt program, för att därigenom se hur jag har installerat det?

och därigenom lättare kunna avinstallera före man skapar ett script att lägga på en sticka.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Hur man ser vad som är installerat...

Inlägg av Osprey »

skalman65 skrev:Gjorde en test körning och insåg att jag hade bra många fler appar/program som man installerat än man behöver.

Finns det något terminalkommando jag kan använda att hämta information om ett utvalt program, för att därigenom se hur jag har installerat det?

och därigenom lättare kunna avinstallera före man skapar ett script att lägga på en sticka.
Det är ganska lätt att "hacka ihop" ett script som visar det. Problemet är ju att du måste veta vad programmet heter då, eventuellt ihop med versionsnummer etc...

Så det är inte helt enkelt om man säger så.... ;)

Det enklaste är nog att ta utskrifterna från det här och editera och ta bort eventuella rader med "vim" (världens bästa editor)... 8)

Eventuellt kan man ju köra "apt-get purge" på ett "snurrande system", för att ta bort det man vill....
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Skriv svar

Återgå till "Terminalforum"