UFFICIALE L'OT di Linux e altri OS

Pubblicità
ho modificato lo script, adesso controlla se c'è connessione internet e ho abbellito la conferma di aggiornamento. è uno script minimale, ti chiede il tar.gz relativo al pacchetto da aggiornare e se non trova la cartella spacchettata nella stessa directory dell'archivio non procede (io ho tutto ordinato in una cartella che chiamo AUR; ci vuole poco per procedere anche in caso contrario ma per me non serviva e non ho molto tempo); inoltre se l'aggiornamento del pacchetto richiede altre dipendenze che non sono installate lo script termina e devi tu installarle (non ho per ora tempo per rendere questa operazione automatica).
Codice:
#!/bin/bash
package_path="1"
while [ "$package_path" != "" ] ; do
 dir=$(find /home/$USER -type d -name 'AUR')
 package_path=$(zenity --file-selection --file-filter="*.tar.gz" --filename=$dir/ --title="Seleziona pacchetto.tar.gz AUR da aggiornare" 2>/dev/null)
 if [ "$package_path" != "" ] ; then
  package_name_tar=${package_path##*/}
  lungh_package_name_tar=$((${#package_name_tar}+1))
  package_dir=${package_path:0: -$lungh_package_name_tar}
  package_name=${package_name_tar:0: -7}
  package_dir_del=$package_dir"/"$package_name
  package_path_old=$package_path"_old"
  package_dir_del_old=$package_dir_del"_old"
  search=$(find $package_dir -type d -name "$package_name")
  if [ "$search" = "" ] ; then echo "Cartella del pacchetto "$package_name" scompattato assente in "$package_dir": aggiornamento fallito." ; read -p "premi invio per continuare.." ; clear
  else
   dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --yesno "Confermi l'aggiornamento?" 7 60
   if [ $? -eq 0 ] ; then
    echo "Controllo connessione internet..."
    wget -q --tries=10 --timeout=20 --spider http://google.com
    if [[ $? -eq 0 ]] ; then
     echo "Connessione ok"
     mv $package_path $package_path_old
     mv $package_dir_del $package_dir_del_old
     echo -e "Aggiornamento "$package_name" in corso..\nbackup "$package_dir_del"---> fatto\nbackup "$package_name_tar"---> fatto"
     if wget -P $package_dir https://aur.archlinux.org/cgit/aur.git/snapshot/$package_name_tar ; then
      tar -xvzf $package_path -C $package_dir
      cd $package_dir_del
      if makepkg ; then
       sudo pacman -U $package_dir_del/*.pkg.tar.xz
       rm $package_path_old && rm -r $package_dir_del_old
       echo -e "\n$package_name aggiornato, premi invio per continuare." && read
      else
       rm -r $package_dir_del && mv $package_dir_del_old $package_dir_del
       rm $package_path && mv $package_path_old $package_path
       echo -e "\nAggiornamento $package_name fallito.\nRipristinato il backup del pacchetto.\npremi invio per continuare." && read
      fi
     else
      echo -e "Errore nel trovare il pacchetto, aggiornamento fallito.\npremi invio per continuare.." && read
      rm -r $package_dir_del && mv $package_dir_del_old $package_dir_del
      rm $package_path && mv $package_path_old $package_path
     fi
    else
     echo -e "Connessione assente, aggiornamento fallito.\n premi invio per continuare.." && read
    fi
   else
    clear
   fi
  fi
 fi
done
exit 0
hai provato a compilare con:
Codice:
makepkg -s
in quel modo le dipendenze verrebbero installate e poi il pacchetto verrebbe compilato. le dipendenze verrebbero gestire da pacman e in teoria dovresti aggirare il problema. resterebbe il problema di dipendenze AUR (pacchetto AUR con dipendenze su AUR) ma pensare ad un problema alla volta è meglio xD
 
hai provato a compilare con:
Codice:
makepkg -s
in quel modo le dipendenze verrebbero installate e poi il pacchetto verrebbe compilato. le dipendenze verrebbero gestire da pacman e in teoria dovresti aggirare il problema. resterebbe il problema di dipendenze AUR (pacchetto AUR con dipendenze su AUR) ma pensare ad un problema alla volta è meglio xD
grazie non avevo preso in considerazione l'opzione -s (mai usata perchè a me piace fare tutto da me nel campo d'intersezione tra le mie capacità e il tempo che posso dedicare:D). -s chiede la conferma o procede all'installazione automatica? *EDIT: non chiede conferma.*
tra l'altro il problema più frequente che ho riscontrato è l'installazione di pacchetti aur. vabbè se risolvo questo problema tanto vale implementare la funzione di installazione ex-novo di pacchetti...non solo da aur...dando magari un veste con gui gtk+3 e abbandonando l'interfaccia da terminale...inserire file di log e la possibilità di ripristinare tutto se a metà processo di aggiornamento uno ci ripensasse...:cav:
un passo alla volta, gambe in spalla.
 
Ultima modifica:
grazie non avevo preso in considerazione l'opzione -s (mai usata perchè a me piace fare tutto da me nel campo d'intersezione tra le mie capacità e il tempo che posso dedicare:D). -s chiede la conferma o procede all'installazione automatica? *EDIT: non chiede conferma.*
tra l'altro il problema più frequente che ho riscontrato è l'installazione di pacchetti aur. vabbè se risolvo questo problema tanto vale implementare la funzione di installazione ex-novo di pacchetti...non solo da aur...dando magari un veste con gui gtk+3 e abbandonando l'interfaccia da terminale...inserire file di log e la possibilità di ripristinare tutto se a metà processo di aggiornamento uno ci ripensasse...:cav:
un passo alla volta, gambe in spalla.
domanda: perché non ti studi il codice di pacaur e vedi se riesci a mantenerlo? o quanto meno collaborare con qualche altro in modo da dividere le fatiche.
 
@e_ale92 adesso manca solo che installi le dipendenze che si trovano solo su aur; inoltre non tiene conto che i pacchetti installati da aur siano ordinati in un'unica cartella:
Codice:
#!/bin/bash
#script di aggiornamento pacchetti installati da AUR, by rebellion
#preferibilmente da lanciare tramite terminale per visualizzare messaggi di dialogo con lo script
package_path="1"
while [ "$package_path" != "" ] ; do
 dir=$(find /home/$USER -type d -name 'AUR')
 package_path=$(zenity --file-selection --file-filter="*.tar.gz" --filename=$dir/ --title="Seleziona pacchetto.tar.gz AUR da aggiornare" 2>/dev/null)
 if [ "$package_path" != "" ] ; then
  package_name_tar=${package_path##*/}
  lungh_package_name_tar=$((${#package_name_tar}+1))
  package_dir=${package_path:0: -$lungh_package_name_tar}
  package_name=${package_name_tar:0: -7}
  package_dir_del=$(find /home/$USER -type d -name "$package_name")
  package_path_old=$package_path"_old"
  package_dir_del_old=$package_dir_del"_old"
  check_package=$(pacman -Q | grep $package_name)
  if [ "$check_package" = "" ] ; then
   dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento fallito: pacchetto NON installato!" 7 60
  else
   dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --yesno "Verranno installate eventuali dipendenze mancanti. Confermi l'aggiornamento?" 7 60
   if [ $? -eq 0 ] ; then
    echo "Controllo connessione internet..."
    wget -q --tries=10 --timeout=20 --spider http://google.com
    if [[ $? -eq 0 ]] ; then
     echo "Connessione ok"
     mv $package_path $package_path_old
     mv $package_dir_del $package_dir_del_old
     echo -e "Aggiornamento "$package_name" in corso, non spengere il pc o la connessione.\nbackup "$package_dir_del"---> fatto\nbackup "$package_name_tar"---> fatto"
     if wget -P $package_dir https://aur.archlinux.org/cgit/aur.git/snapshot/$package_name_tar ; then
      tar -xvzf $package_path -C $package_dir
      cd $package_dir_del
      if makepkg -s ; then
       sudo pacman -U $package_dir_del/*.pkg.tar.xz
       rm $package_path_old && rm -r $package_dir_del_old
       dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento eseguito!" 7 60
      else
       rm -r $package_dir_del && mv $package_dir_del_old $package_dir_del
       rm $package_path && mv $package_path_old $package_path
       dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento fallito. Ripristinato il backup del pacchetto." 7 60
      fi
     else
      rm -r $package_dir_del && mv $package_dir_del_old $package_dir_del
      rm $package_path && mv $package_path_old $package_path
      dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento fallito, sembra che AUR non contenga il pacchetto da aggiornare. Ripristinato il backup del pacchetto." 7 60
     fi
    else
     dialog --title "Controllo connessione internet" --backtitle "Aggiornamento AUR" --msgbox "Connessione assente, aggiornamento fallito." 7 60
    fi
   else
    clear
   fi
  fi
 fi
done
exit 0
 
Ultima modifica:
@e_ale92 adesso manca solo che installi le dipendenze che si trovano solo su aur; inoltre non tiene conto che i pacchetti installati da aur siano ordinati in un'unica cartella:
Codice:
#!/bin/bash
#script di aggiornamento pacchetti installati da AUR, by rebellion
#preferibilmente da lanciare tramite terminale per visualizzare messaggi di dialogo con lo script
package_path="1"
while [ "$package_path" != "" ] ; do
 dir=$(find /home/$USER -type d -name 'AUR')
 package_path=$(zenity --file-selection --file-filter="*.tar.gz" --filename=$dir/ --title="Seleziona pacchetto.tar.gz AUR da aggiornare" 2>/dev/null)
 if [ "$package_path" != "" ] ; then
  package_name_tar=${package_path##*/}
  lungh_package_name_tar=$((${#package_name_tar}+1))
  package_dir=${package_path:0: -$lungh_package_name_tar}
  package_name=${package_name_tar:0: -7}
  package_dir_del=$(find /home/$USER -type d -name "$package_name")
  package_path_old=$package_path"_old"
  package_dir_del_old=$package_dir_del"_old"
  check_package=$(pacman -Q | grep $package_name)
  if [ "$check_package" = "" ] ; then
   dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento fallito: pacchetto NON installato!" 7 60
  else
   dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --yesno "Verranno installate eventuali dipendenze mancanti. Confermi l'aggiornamento?" 7 60
   if [ $? -eq 0 ] ; then
    echo "Controllo connessione internet..."
    wget -q --tries=10 --timeout=20 --spider http://google.com
    if [[ $? -eq 0 ]] ; then
     echo "Connessione ok"
     mv $package_path $package_path_old
     mv $package_dir_del $package_dir_del_old
     echo -e "Aggiornamento "$package_name" in corso, non spengere il pc o la connessione.\nbackup "$package_dir_del"---> fatto\nbackup "$package_name_tar"---> fatto"
     if wget -P $package_dir https://aur.archlinux.org/cgit/aur.git/snapshot/$package_name_tar ; then
      tar -xvzf $package_path -C $package_dir
      cd $package_dir_del
      if makepkg -s ; then
       sudo pacman -U $package_dir_del/*.pkg.tar.xz
       rm $package_path_old && rm -r $package_dir_del_old
       dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento eseguito!" 7 60
      else
       rm -r $package_dir_del && mv $package_dir_del_old $package_dir_del
       rm $package_path && mv $package_path_old $package_path
       dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento fallito. Ripristinato il backup del pacchetto." 7 60
      fi
     else
      rm -r $package_dir_del && mv $package_dir_del_old $package_dir_del
      rm $package_path && mv $package_path_old $package_path
      dialog --title "pacchetto $package_name" --backtitle "Aggiornamento AUR" --msgbox "Aggiornamento fallito, sembra che AUR non contenga il pacchetto da aggiornare. Ripristinato il backup del pacchetto." 7 60
     fi
    else
     dialog --title "Controllo connessione internet" --backtitle "Aggiornamento AUR" --msgbox "Connessione assente, aggiornamento fallito." 7 60
    fi
   else
    clear
   fi
  fi
 fi
done
exit 0

appena posso lo provo :sac:

p.s. manca il versioning, però! un codice senza versioning non va bene :sac: :lol:
 
Pubblicità
Pubblicità
Indietro
Top