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