Autore Topic: Errore aggiornamento pacchetti  (Letto 332 volte)

Offline Gratisweb

  • Grande Gambero
  • ***
  • Post: 186
    • Mostra profilo
Errore aggiornamento pacchetti
« il: 27 Febbraio 2023, 08:19:57 »
Ho trovato questo codice che dovrebbe aggiornare i pacchetti di linux usando apt, ma genera un errore:

dice Output inaspettato nel FMain.class:56

' Gambas class file

Public Sub UpdatePackages()
  Dim cmd As String
  Dim pkgCount As Integer
  Dim pkgIndex As Integer
 
  ' Eseguire il comando apt-get update per aggiornare la lista dei pacchetti disponibili '
  cmd = "sudo apt-get update"
  Shell(cmd)
 
  ' Eseguire il comando apt-get upgrade per aggiornare i pacchetti esistenti '
  cmd = "sudo apt-get upgrade -y"
  pkgCount = CountPackages(cmd)
 
  ' Impostare il massimo valore della barra di avanzamento '
  ProgressBar1.MaxValue = pkgCount
 
  ' Eseguire il comando apt-get upgrade con una pipe verso lo script '
  cmd = "sudo apt-get upgrade -y | tee /tmp/apt_progress.txt"
  Shell(cmd)
 
  ' Leggere il file di progressione apt_progress.txt '
  Dim aptProgress As New File("/tmp/apt_progress.txt")
  aptProgress.OpenForRead()
  While Not aptProgress.Eof
    Dim line As String = aptProgress.ReadLine()
   
    ' Controllare se la riga contiene il nome del pacchetto '
    If line.StartsWith("Preparing to unpack") Then
      pkgIndex = pkgIndex + 1
     
      ' Aggiornare la barra di avanzamento '
      ProgressBar1.Value = pkgIndex
     
      ' Aggiornare la descrizione della barra di avanzamento '
      ProgressBar1.Text = "Aggiornamento in corso... (" & pkgIndex & "/" & pkgCount & ")"
    Endif
  Wend
 
  ' Chiudere il file di progressione '
  aptProgress.Close()
 
  ' Visualizzare un messaggio di conferma '
  Message("Aggiornamento completato con successo!")
End

Public Function CountPackages(cmd As String) As Integer
  Dim count As Integer = 0
 
  ' Eseguire il comando apt-get upgrade con una pipe verso lo script '
  cmd = cmd & " | grep 'Preparing to unpack'"
  Dim output As String = Shell(cmd)
 
  ' Contare il numero di pacchetti '
  Dim lines As String[] = Split( Output , "\n")
  For Each Line As String In lines
    If line.StartsWith("Preparing to unpack") Then
      count = count + 1
    Endif
  Next
 
  Return count
End