Sida 1 av 1
auto edit av sources.list?
Postat: 05 dec 2008, 14:55
av simonw
tjipp!
Går det på något enkelt vis att redigera sources.list utan att behöva göra det med "Mjukvarukällor" eller redigera den för hand med typ gedit?
Ha det!
Re: auto edit av sources.list?
Postat: 05 dec 2008, 15:08
av Konservburk
Ja, enklast möliga redigering är att lägga till nya rader i slutet av filen...
Om du inte bryr dig om hur enkelt det är så kan du göra precis vilka ändringar du vill.
Re: auto edit av sources.list?
Postat: 05 dec 2008, 15:29
av simonw
Att trycka in nya rader i slutet på filen är inga problem, det jag vill är att avmarkera lite poster för tex backports mm. Jag ska ha det till ett skript, så det får gärna vara lite klurigt.

Re: auto edit av sources.list?
Postat: 05 dec 2008, 16:07
av Lars
En del ligger ju i /etc/apt/sources.list.d också, filer som slutar på .list är aktiverade
Re: auto edit av sources.list?
Postat: 05 dec 2008, 18:09
av David Andersson
simonw skrev:Att trycka in nya rader i slutet på filen är inga problem, det jag vill är att avmarkera lite poster för tex backports mm. Jag ska ha det till ett skript, så det får gärna vara lite klurigt.

Jag tror perl är rätt motorsåg för det här jobbet:
Kod: Markera allt
# kommentera bort deb- och deb-src-rader som innehåller "hardy-backports"
perl -i~ -pe 's/^(?=deb.*hardy-backports)/#/' /etc/apt/sources.list
Kod: Markera allt
# ta bort kommentartecken framför deb- och deb-src-rader med "hardy-backports"
perl -i~ -pe 's/^# ?(?=deb.*hardy-backports)//' /etc/apt/sources.list
Den sparar filen som den var före ändringen i /etc/apt/sources.list~ (så om man gör flera ändringar så finns inte första versionen kvar, bara näst sista).
Tips: I ett shell-script, definiera funktionerna activate-deb och inactivate-deb. Anropa från innifrån shell-scriptet med t.ex
activade-deb hardy-backports
Kod: Markera allt
activate-deb () {
perl -i~ -pe "s/^# ?(?=deb.*$1)//" /etc/apt/sources.list
}
inactivate-deb () {
perl -i~ -pe "s/^(?=deb.*$1)/#/" /etc/apt/sources.list
}
(Gör om /etc/apt/sources.list till argument $2 om du vill kunna uppdatera andra .list-filer med samma funktioner.)
Re: auto edit av sources.list?
Postat: 06 dec 2008, 04:32
av simonw
Glömde väl säga att jag är ny på det här och inte förstår perl än, har just kommit igång med lite bash så ursäkta om jag svarar med en (/många) fråga(/-or).
På det hela taget är det detta jag vill ha gjort: aktivera restricted, multiverse, partner och alla uppdateringar utom de försläppta. Jag antar att kodstycket
David Andersson skrev:Kod: Markera allt
activate-deb () {
perl -i~ -pe "s/^# ?(?=deb.*$1)//" /etc/apt/sources.list
}
inactivate-deb () {
perl -i~ -pe "s/^(?=deb.*$1)/#/" /etc/apt/sources.list
}
passar bäst då. Men det är vad jag fattar det som inte bash utan just perlkod(?). Ska jag lägga detta i en egen fil med något speciellt tillägg och namn för senare användning?
Kan du kanske lite snabbt peka ut vad de olika delarna gör? Fattar givetvis helheten, "hitta en rad med #, deb, och invariabeln, och ta bort #". Men vad gör de olika argumenten?
Oj, vad många frågor det blev! Perl är ett senare projekt, så skriv inte ihjäl dig om det nu
Tack en massa för hjälpen! Med detta löst snart kan jag publicera min lilla grej...
Re: auto edit av sources.list?
Postat: 06 dec 2008, 20:22
av David Andersson
simonw skrev:
På det hela taget är det detta jag vill ha gjort: aktivera restricted, multiverse, partner och alla uppdateringar utom de försläppta. Jag antar att kodstycket
David Andersson skrev:Kod: Markera allt
activate-deb () {
perl -i~ -pe "s/^# ?(?=deb.*$1)//" /etc/apt/sources.list
}
inactivate-deb () {
perl -i~ -pe "s/^(?=deb.*$1)/#/" /etc/apt/sources.list
}
passar bäst då. Men det är vad jag fattar det som inte bash utan just perlkod(?). Ska jag lägga detta i en egen fil med något speciellt tillägg och namn för senare användning?
All kod ovan fungerar i kommandoraden och shell-script och i bash. Det är bara biten "s/^# ?(?=deb.*$1)//" (och motsv) som är perl-kod, därför står det
perl framför så att
bash startar perl för att utföra den.
Så skriv in ovanstående kod i ditt bash-script, för att definiera
activate-deb och
inactivate-deb. Efter det i samma bash-script kan du t.ex. skriva
för att kommentera bort deb-rader med "restricted" i i sources.list.
simonw skrev:Med detta löst snart kan jag publicera min lilla grej...
En tidig julklapp?

Re: auto edit av sources.list?
Postat: 06 dec 2008, 20:49
av David Andersson
Efter att scriptet ändrat /etc/apt/sources.list bör du eller scriptet utföra kommandot
apt-get update, tror jag det heter.
Re: auto edit av sources.list?
Postat: 07 dec 2008, 01:30
av simonw
David Andersson skrev:simonw skrev:Med detta löst snart kan jag publicera min lilla grej...
En tidig julklapp?


Jo, det kan man väl se det som... liten ledtråd är väl att jag nu ska se om jag kan hitta nån dokumentation om vad som skiljer u-lite ppa:n från lxde i ubuntu universe...
Då är jag med på hur funktionerna ska skrivas in. Tackar!
Re: auto edit av sources.list?
Postat: 07 dec 2008, 04:28
av simonw
Nästan färdig att visa upp nu

Vill bara ha e sätt att loopa en case-sats (bash igen förstås

) om svaret som ges inte är något av de sökta alternativen. Kanske någon vet?
Re: auto edit av sources.list?
Postat: 07 dec 2008, 06:20
av Konservburk
simonw skrev:Vill bara ha e sätt att loopa en case-sats (bash igen förstås

) om svaret som ges inte är något av de sökta alternativen.
Det hjälper inte att bara loopa case-satsen om du inte även uppdaterar själva variabeln i varje varv
Kod: Markera allt
while
printf 'Skriv något: '
do read REPLY
case "$REPLY" in
a)
echo A
break ;;
b)
echo B
break ;;
esac
done
Re: auto edit av sources.list?
Postat: 07 dec 2008, 13:58
av simonw
Fint Konservburk! Här kommer resultatet:
Kod: Markera allt
#!/bin/bash
# Install script for LXDE on Ubuntu 8.10 Intrepid Ibex.
# Recommended is to instal it the "U-Lite way", from a mini-iso. Boot option "cli".
# Functions for source.list editing.
activate-deb () {
perl -i~ -pe "s/^# ?(?=deb.*$1)//" /etc/apt/sources.list
}
inactivate-deb () {
perl -i~ -pe "s/^(?=deb.*$1)/#/" /etc/apt/sources.list
}
# What repos to use.
echo -n "Activate Backports and Partner repositories? [y/N] "
read REPLY
case $REPLY in
[Yy]*)
activate-deb "backports"
activate-deb "partner"
;;
*)
echo "sources.list is left alone"
;;
esac
# To medi or not to medi?
echo -n "Do you wish to install software from Medibuntu, (options for removing non-free software is provided)? [y/N] "
read REPLY
case $REPLY in
[Yy]*)
sudo wget http://www.medibuntu.org/sources.list.d/intrepid.list --output-document=/etc/apt/sources.list.d/medibuntu.list
sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update
echo -n "Remove non-free medibuntu software? [y/N] "
read REPLY
case $REPLY in
[Yy]*)
sudo sed -e 's/ non-free//' -i /etc/apt/sources.list.d/medibuntu.list
;;
*)
;;
esac
;;
*)
echo "Continuing"
;;
esac
# Make install current.
sudo apt-get update
sudo apt-get upgrade
# Finaly!
while
echo -n "Do you want a minimal, medium or extensive install? [M/b/e] "
do read REPLY
case $REPLY in
''|[Mm]*)
sudo apt-get install lxde xterm xpdf dillo
break ;;
[Bb]*)
sudo apt-get install lxde xterm synaptic xpdf abiword gnumeric epiphany lxrandr lxnm
break ;;
[Ee]*)
sudo apt-get install lxde lxterminal synaptic xpdf openoffice.org firefox mplayer libdvdcss2 w32codecs grandr lxnm flashplayer-nonfree
break ;;
*)
echo -n "Please, try again [M/b/e] "
break ;;
esac
done
echo "Installation complete! Please, have fun!!"
Jag har lite fler idéer, men de hinner jag inte ta nu, ville bara få ut det här

återkommer senare med mer tankar. Kommentera gärna! har ni nått förslag på fler program som bör installeras som default??