28.03.2024, 22:45 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
Dannyboy
Titel: apt-get Skript (Loop, Schleife)  BeitragVerfasst am: 15.06.2008, 20:01 Uhr



Anmeldung: 30. Jun 2005
Beiträge: 449

Mhm,
irgendwie ist das komisch. Ich lese Packages aus einer Datei und kann diese via echo regulär ausgeben, doch wende ich apt-get install auf ein Package an, so wird es installiert und die Schleife nach der ersten Package-Installation abgebrochen. Das würde ich sehr gerne vermeiden und vorallem verstehen. Winken

Hier der 3-Zeiler:
Code:
# $1 ---> Eingabedatei, in der die Packages aufgelistet sind
while read FILE; do
  echo "installing $FILE ..."
  if apt-get install -y "$FILE" >> /dev/null 2>&1; then
    echo "--> $FILE was installed"
  else
    echo "--> Could not install $FILE"
  fi
done < "$1"


Greetz
Dannyboy
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Dannyboy
Titel:   BeitragVerfasst am: 16.06.2008, 19:13 Uhr



Anmeldung: 30. Jun 2005
Beiträge: 449

Ich kann nicht glauben, dass ich bisher der Einzige bin, der versucht hat Pakete in einer Schleife zu installieren. Geschockt

Greetz
Dannyboy
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Kano
Titel:   BeitragVerfasst am: 16.06.2008, 19:24 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16783

Ach installier dir einfach aptitude, das ignoriert fehlende Pakete.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Dannyboy
Titel:   BeitragVerfasst am: 17.06.2008, 21:20 Uhr



Anmeldung: 30. Jun 2005
Beiträge: 449

Hi Kano,
ich wollte ja das Problem vor allem versehen. Scheint als wird STDIN leer gesaugt und die Schleife deshalb beendet. Hab' nun ein Work-Around mit <xargs> geschrieben, so dass es funktioniert. Sehr glücklich

Code:
#!/bin/bash

INSTALLED="$HOME/apt_installed.info"
NOT_INSTALLED="$HOME/apt_not_installed.info"

[ "$UID" -ne "0" ] && false_exit "You must be root to use this script"

function false_exit () {
  echo "$1"; echo "breaking up."; exit 1
}

[ -r "$1" ] || false_exit "Cannot read file $1"
touch "$INSTALLED" "$NOT_INSTALLED" > /dev/null 2>&1
[ -w "$INSTALLED" -a -w "$NOT_INSTALLED" ] || false_exit "could not create logfiles in $HOME"
#[ $(ping -c 1 "google.de" > /dev/null 2>&1) ] || false_exit "internet connection not active"
echo "Updating debian-sources ..."
if ! apt-get update; then
   false_exit "an error occured while updating debian-sources. Please fix this issue and run this script again"
fi

while read FILE; do
  echo "installing $FILE ..."
  if echo "$FILE" | xargs apt-get install -y >> /dev/null 2>&1; then
    echo "--> $FILE was installed" | tee -a "$INSTALLED"
  else
    echo "--> Could not install $FILE" | tee -a "$NOT_INSTALLED"
  fi
done < "$1"

echo "Logfiles for installed and dropped packages are:"
echo " - $INSTALLED"
echo " - $NOT_INSTALLED"
echo "operation is done"


Greetz
DANNYBOY
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Kano
Titel:   BeitragVerfasst am: 17.06.2008, 22:23 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16783

done <<EOT
$(cat "$1")
EOT

hätte es wohl getan. Aber dein script ist insofern sinnlos, wenn du nicht die installierten bzw. nicht installierten Pakete loggst. Wennst es einfach nur installieren willst ist aptitude einfacher.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.