auto edit av sources.list?

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
simonw
AVREGISTRERAD
Inlägg: 128
Blev medlem: 09 jul 2008, 09:20
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

auto edit av sources.list?

Inlägg 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!
"Then there was the man who drowned crossing a stream with an average depth of six inches."
W. I. E. Gates
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: auto edit av sources.list?

Inlägg av Konservburk »

Ja, enklast möliga redigering är att lägga till nya rader i slutet av filen...

Kod: Markera allt

echo "ny rad" >>filen
Om du inte bryr dig om hur enkelt det är så kan du göra precis vilka ändringar du vill.
Användarvisningsbild
simonw
AVREGISTRERAD
Inlägg: 128
Blev medlem: 09 jul 2008, 09:20
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: auto edit av sources.list?

Inlägg 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. ;D
"Then there was the man who drowned crossing a stream with an average depth of six inches."
W. I. E. Gates
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: auto edit av sources.list?

Inlägg av Lars »

En del ligger ju i /etc/apt/sources.list.d också, filer som slutar på .list är aktiverade
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: auto edit av sources.list?

Inlägg 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. ;D
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.)
Användarvisningsbild
simonw
AVREGISTRERAD
Inlägg: 128
Blev medlem: 09 jul 2008, 09:20
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: auto edit av sources.list?

Inlägg 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 :P

Tack en massa för hjälpen! Med detta löst snart kan jag publicera min lilla grej...
"Then there was the man who drowned crossing a stream with an average depth of six inches."
W. I. E. Gates
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: auto edit av sources.list?

Inlägg 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

Kod: Markera allt

inactivate-deb "restricted"
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? :)
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: auto edit av sources.list?

Inlägg av David Andersson »

David Andersson skrev:

Kod: Markera allt

inactivate-deb "restricted"
Efter att scriptet ändrat /etc/apt/sources.list bör du eller scriptet utföra kommandot apt-get update, tror jag det heter.
Användarvisningsbild
simonw
AVREGISTRERAD
Inlägg: 128
Blev medlem: 09 jul 2008, 09:20
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: auto edit av sources.list?

Inlägg av simonw »

David Andersson skrev:
simonw skrev:Med detta löst snart kan jag publicera min lilla grej...
En tidig julklapp? :)
;D 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!
"Then there was the man who drowned crossing a stream with an average depth of six inches."
W. I. E. Gates
Användarvisningsbild
simonw
AVREGISTRERAD
Inlägg: 128
Blev medlem: 09 jul 2008, 09:20
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: auto edit av sources.list?

Inlägg av simonw »

Nästan färdig att visa upp nu :D 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?
"Then there was the man who drowned crossing a stream with an average depth of six inches."
W. I. E. Gates
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: auto edit av sources.list?

Inlägg 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
Användarvisningsbild
simonw
AVREGISTRERAD
Inlägg: 128
Blev medlem: 09 jul 2008, 09:20
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: auto edit av sources.list?

Inlägg 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 ;D återkommer senare med mer tankar. Kommentera gärna! har ni nått förslag på fler program som bör installeras som default??
"Then there was the man who drowned crossing a stream with an average depth of six inches."
W. I. E. Gates
Skriv svar

Återgå till "Terminalforum"