Condividi tramite


Creare pacchetti per le applicazioni di macchine virtuali

Per creare un'applicazione vm, sono necessari pacchetti e script dell'applicazione per installare, aggiornare ed eliminare correttamente l'applicazione. Questo articolo illustra come creare pacchetti e script per diversi sistemi operativi e formati che è possibile usare come payload dell'applicazione vm.

Creare un pacchetto e installare applicazioni di macchine virtuali in Linux

Le applicazioni di terze parti per Linux possono essere incluse in pacchetti in alcuni modi. Si esaminerà ora come gestire la creazione dei comandi di installazione per alcuni dei modi più comuni.

File .tar e .gz

Questi file sono archivi compressi e possono essere estratti nella posizione desiderata. Controllare le istruzioni di installazione per il pacchetto originale nel caso in cui debbano essere estratte in una posizione specifica. Se il file .tar o .gz contiene codice sorgente, vedere le istruzioni per il pacchetto per informazioni sulla procedura di installazione dall'origine.

Esempio di comando per installare un computer Linux:

sudo tar -C /usr/local -xzf go_linux

Comando di rimozione di esempio:

sudo rm -rf /usr/local/go

Creazione di pacchetti di applicazioni tramite , e altri pacchetti specifici della piattaforma per le macchine virtuali con accesso a Internet con restrizioni

È possibile scaricare singoli pacchetti per strumenti di gestione di pacchetti specifici della piattaforma, ma in genere non contengono tutte le dipendenze. Per questi file, è necessario includere anche tutte le dipendenze nel pacchetto dell'applicazione oppure fare in modo che lo strumento di gestione dei pacchetti di sistema scarichi le dipendenze tramite i repository disponibili per la macchina virtuale. Se si usa una macchina virtuale con accesso a Internet con restrizioni, è necessario creare manualmente un pacchetto di tutte le dipendenze.

La comprensione delle dipendenze può essere un compito un po' complicato. Sono disponibili strumenti di terze parti che consentono di visualizzare l'intero albero delle dipendenze.

Il processo seguente illustra come identificare le dipendenze dell'applicazione, scaricarle e raggrupparle per diverse versioni del sistema operativo Linux.

  • Ubuntu
  • Red Hat
  • SUSE

In Ubuntu è possibile eseguire per visualizzare tutti i pacchetti installati durante l'esecuzione del comando . È quindi possibile usare tale output per scaricare tutti i file per creare un archivio che può essere usato come pacchetto dell'applicazione.

Per creare un pacchetto dell'applicazione vm per l'installazione di PowerShell in Ubuntu, seguire questa procedura:

  1. Eseguire i comandi seguenti per abilitare il repository per scaricare PowerShell e identificare le dipendenze dei pacchetti in una nuova macchina virtuale Ubuntu
# Download the Microsoft repository GPG keys
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
sudo rm -rf packages-microsoft-prod.deb
sudo apt update
sudo apt show powershell | grep Depends
  1. Controllare l'output della riga Depends che elenca i pacchetti seguenti:
Depends: libc6, lib32gcc-s1, libgssapi-krb5-2, libstdc++6, zlib1g, libicu72|libicu71|libicu70|libicu69|libicu68|libicu67|libicu66|libicu65|libicu63|libicu60|libicu57|libicu55|libicu52, libssl3|libssl1.1|libssl1.0.2|libssl1.
  1. Scaricare ognuno di questi file usando e creare un archivio compresso con estensione TAR con tutti i file.
  • Ubuntu 18.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download lib32gcc
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl1.1
sudo apt-get download libicu60
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  • Ubuntu 20.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download lib32gcc-s1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl1.1
sudo apt-get download libicu66
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  • Ubuntu 22.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download lib32gcc-s1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl3
sudo apt-get download libicu70
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  • Ubuntu 24.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download lib32gcc-s1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl3t64
sudo apt-get download libicu74
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  1. Questo archivio con estensione TAR è il file del pacchetto dell'applicazione.
  • Il comando di installazione in questo caso è:
sudo tar -xvzf powershell.tar.gz && sudo dpkg -i *.deb
  • E il comando di rimozione è:
sudo apt remove powershell

Usare anziché tentare in modo esplicito di rimuovere tutte le dipendenze. È possibile che siano state installate altre applicazioni con dipendenze sovrapposte. In questo caso, un comando di rimozione esplicito avrà esito negativo.

Se non si vogliono risolvere le dipendenze in autonomia e è in grado di connettersi ai repository, è possibile installare un'applicazione con un solo file e consentire a di gestire le dipendenze.

Comando di installazione di esempio:

dpkg -i <package_name> || apt --fix-broken install -y

Creazione di applicazioni vm in Windows

La maggior parte delle applicazioni di terze parti in Windows sono disponibili come programmi di installazione di .exe o di .msi. Alcune sono disponibili anche come file di estrazione ed esecuzione con estensione ZIP. Vengono ora esaminate le procedure consigliate per ogni singolo caso.

Programma di installazione con estensione .exe

I file eseguibili del programma di installazione in genere avviano un'interfaccia utente e richiedono all'utente di effettuare selezioni attraverso di essa. Se il programma di installazione supporta un parametro per la modalità invisibile all'utente, tale parametro deve essere incluso nella stringa di installazione.

Cmd.exe prevede anche che i file eseguibili abbiano l'estensione , quindi è necessario rinominare il file in modo che abbia l'estensione .

Se si vuole creare un pacchetto dell'applicazione vm per , che viene fornito come eseguibile, l'applicazione di macchina virtuale viene denominata "myApp", quindi si scrive il comando presupponendo che il pacchetto dell'applicazione si trova nella directory corrente:

"move .\\myApp .\\myApp.exe & myApp.exe /S -config myApp_config"

Se il file eseguibile del programma di installazione non supporta un parametro di disinstallazione, a volte è possibile cercare il Registro di sistema in un computer di test per sapere dove si trova il programma di disinstallazione.

Nel Registro di sistema la stringa di disinstallazione viene archiviata in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<installed application name>\UninstallString in modo da usare il contenuto come comando remove:

'\"C:\\Program Files\\myApp\\uninstall\\helper.exe\" /S'

programma di installazione .msi

Per l'esecuzione da riga di comando dei programmi di installazione , i comandi per installare o rimuovere un'applicazione devono usare . In genere, viene eseguito come processo separato e non ne attende il completamento; ciò può causare problemi durante l'installazione di più applicazioni di macchine virtuali. Il comando può essere usato con per assicurarsi che l'installazione venga completata prima che il comando restituisca un risultato. Per esempio:

start /wait %windir%\\system32\\msiexec.exe /i myapp /quiet /forcerestart /log myapp_install.log

Comando di rimozione di esempio:

start /wait %windir%\\system32\\msiexec.exe /x myapp /quiet /forcerestart /log myapp_uninstall.log

In genere, il comando viene chiamato all'interno di uno script batch. Se usato con il parametro , lo script chiamante viene sospeso fino al termine del processo chiamato. Al termine, lo script batch verificherà la presenza della variabile impostata dal comando e uscire come indicato di seguito:

start /wait %windir%\\system32\\msiexec.exe /i myapp /quiet /forcerestart /log myapp_install.log
if %errorlevel% neq 0 exit /b %errorlevel%
...

File compressi

Per i file con estensione .zip o altri file compressi, rinominare e decomprimere il contenuto del pacchetto dell'applicazione nella destinazione desiderata.

Comando di installazione di esempio:

rename myapp myapp.zip && mkdir C:\myapp && powershell.exe -Command "Expand-Archive -path myapp.zip -destinationpath C:\myapp"

Comando di rimozione di esempio:

rmdir /S /Q C:\\myapp

Passaggi successivi