Jag har i dagarna byggt mig en ny dator – på riktigt den här gången. Det kanske inte är så vansinnigt intressant för er att veta så jag hoppar över detaljerna och nöjer mig med en liten bild:
Något som kanske är betydligt mer intressant för er, kära läsare, är (förutom mitt nya minimalistiska WordPress-tema :)) mitt senaste skript: en paketinstallerare för Ubuntu. Visserligen startade mitt gamla Ubuntu-system upp på den nya datorn som om inget hade hänt (något som inte kan sägas om Windows XP), men eftersom den nya processorn var 64-bitarskapabel krävdes ändå en ominstallation för att kunna använda den fullt ut. Att sitta och manuellt installera om alla program efteråt är dock inte särskilt kul så därför uppfann jag ett skript som gör det åt mig efter kommande Ubuntu-installationer. Skriptet läser paket från en lista som sparas i en separat fil, kontrollerar vilka som finns tillgängliga och installerar sedan allt. Det kan även lägga till PPAn som sparas i en annan fil. Genom att köra exempelvis
sudo ./paketinstallerare.sh ppa install upgrade
kommer skriptet att lägga till PPAn, uppdatera förråden, installera alla paket i paketlistan samt uppgradera alla paket. Du bör ange ppa före install för att skriptet även ska kunna installera de paket som inte finns i Ubuntus standardförråd. För att se alla alternativ kan du köra skriptet utan argument. Det finns en specialare som ser ut så här:
sudo ./paketinstallerare.sh spotify
som lägger till Spotifys förråd, GPG-nyckel samt installerar programmet. Denna specialåtgärd krävs eftersom Spotify angett en deb-rad som ska rakt in i /etc/apt/sources.list istället för en vanlig ppa:-rad.
Nedan följer skriptet i sin helhet. Missa inte heller min helt nya skriptsamling här på bloggen, där jag samlar mina allra bästa skript. Eftersom vi svenskar är lite intelligentare än amerikaner behöver jag säkert inte gå igenom att du använder mina skript helt på egen risk och att jag inte kan garantera deras funktion på ditt system 😉
#!/bin/bash
# Installerar allt du kan tänkas behöva. Lägg alla paket att installera i ./paketlista
# (ett paket per rad) och alla PPA att lägga till i ./ppalista (ett ppa per rad).
if [ "$UID" != 0 ]; then
echo "Skriptet behöver köras som root (sudo $0)"
exit 1
fi
show_usage () {
echo "Användning:"
echo -e "$0 install\tInstallera paket från paketlista"
echo -e "$0 remove\tTa bort paket från paketlista"
echo -e "$0 ppa\tLägg till PPAn från ppalista"
echo -e "$0 update\tUppdaterar förråden"
echo -e "$0 upgrade\tInstallerar alla uppgraderingar"
echo -e "$0 spotify\tInstallerar Spotify för Linux preview"
}
# inga argument
if [ "$#" == 0 ]; then
show_usage
exit 2
fi
# kontrollera att angivna kommandon finns
for arg in $@; do
case $arg in
install|remove|ppa|update|upgrade|spotify)
;;
*) # skriptet kommer aldrig hit vid korrekt användning
show_usage
exit 2
esac
done
for arg in $@; do
case $arg in
install) # installera program från paketlista
if [ -f paketlista ]; then
apt_ary=()
fail_ary=()
while read paket; do
apt-cache show $paket &> /dev/null
if [ "$?" == 0 ]; then
apt_ary+=( $paket )
else
fail_ary+=( $paket )
fi
done < paketlista
apt-get -y install ${apt_ary[@]}
if [[ $fail_ary ]]; then
echo "Följande paket kunde inte hittas:"
echo ${fail_ary[@]}
fi
else
echo "paketlista kunde inte hittas!"
fi
;;
remove) # ta bort program från paketlista (vad man nu skulle vilja göra det för)
if [ -f paketlista ]; then
apt_ary=()
fail_ary=()
while read paket; do
apt-cache show $paket &> /dev/null
if [ "$?" == 0 ]; then
apt_ary+=( $paket )
else
fail_ary+=( $paket )
fi
done < paketlista
apt-get -y remove ${apt_ary[@]}
if [[ $fail_ary ]]; then
echo "Följande paket kunde inte hittas:"
echo ${fail_ary[@]}
fi
else
echo "paketlista kunde inte hittas!"
fi
;;
ppa) # lägger till PPAn från ppalista
if [ -f ppalista ]; then
while read ppa; do
add-apt-repository $ppa
done < ppalista
apt-get -y update
else
echo "ppalista kunde inte hittas!"
fi
;;
update) # uppdaterar förråd
apt-get -y update
;;
upgrade) # uppgraderar alla paket
apt-get -y dist-upgrade
;;
spotify) # installerar Spotify preview (en liten specialare)
grep spotify /etc/apt/sources.list # kollar först om PPAet redan finns i sources.list
if [ "$?" != 0 ]; then
echo | tee -a /etc/apt/sources.list
echo '# Spotify preview' | tee -a /etc/apt/sources.list
echo 'deb http://repository.spotify.com stable non-free' | tee -a /etc/apt/sources.list
gpg --keyserver wwwkeys.de.pgp.net --recv-keys 4E9CFF4E
gpg --export 4E9CFF4E | apt-key add -
apt-get -y update
else
echo "Spotifys PPA är redan installerat!"
fi
esac
done
Du måste själv skapa en fil med paket att installera som du döper till ”paketlista” och lägger i samma mapp som skriptet. En paketlista kan exempelvis se ut så här:
ubuntu-restricted-extras
amsn
build-essential
conky
gimp
Om du vill att skriptet ska lägga till PPAn åt dig behöver du skapa filen ”ppalista” som du också lägger i samma mapp som skriptet. En ppalista kan exempelvis se ut så här:
ppa:ubuntu-mozilla-daily/ppa
ppa:philip5/extra
ppa:stebbins/handbrake-releases
Skriv gärna en kommentar här nedan om du gillar skriptet eller om du har förslag på förbättringar 🙂