PROBLEMA Come installare un programma su Linux con Python

Pubblicità

Hero467

Utente Attivo
Messaggi
695
Reazioni
406
Punteggio
75
Salve a tutti,
vorrei fare uno script in Python, che però necessità di un programma che non è installato di default su nessuna distro. Vorrei quindi sapere se c'è un modo con Python per scaricare questo programma, so di librerie come os e subprocess che permettono di eseguire un comando da terminale, ma essendo che questa operazione necessità di permessi di root non so come agire.
 
Per installare programmi in una distribuzione Linux non dovresti reinventare la ruota: sui repository pubblici i programmi ci sono tutti e sono pure controllati, devi usae il gestore delle installazioni dei sw integrato nella distribuzione che usi che ti scarica automaticamente anche tutte le eventuali dipendenze da librerie esterne
 
Mi sono spiegato male: il mio script ha bisogno di un programma che c'è nei repository pubblici, ma che non è installato di default.
Quindi mi chiedevo se ci fosse un modo di fare sudo apt install "nomeprogramma" tramite script, senza che l'utente debba farlo manualmente da riga di comando.
 
Quindi mi chiedevo se ci fosse un modo di fare sudo apt install "nomeprogramma" tramite script, senza che l'utente debba farlo manualmente da riga di comando.
mica c'è bisogno di python, ti basta scrivere il
sudo apt install <programma>
dentro un banalissimo file di testo a cui dai l'estensione .sh, per esempio mioscript.sh e gli dai i permessi di esecuzione
 
Mi sono spiegato male: il mio script ha bisogno di un programma che c'è nei repository pubblici, ma che non è installato di default.
Quindi mi chiedevo se ci fosse un modo di fare sudo apt install "nomeprogramma" tramite script, senza che l'utente debba farlo manualmente da riga di comando.
Specifica, di che programma si tratta?
 
mica c'è bisogno di python, ti basta scrivere il
sudo apt install <programma>
dentro un banalissimo file di testo a cui dai l'estensione .sh, per esempio mioscript.sh e gli dai i permessi di esecuzione
si, ma se dovessi automatizzare il processo di cambio dei permessi? c'è un modo per farlo fare al programma? magari mettendo un input dove inserire la psw

Specifica, di che programma si tratta?
clamav
 
Puoi cambiare i permessi o fare qualsiasi altra azione allo stesso modo in cui ti è stato indicato precedentemente.

Esempio:
crei un file test.sh e ci scrivi:
Bash:
#!/bin/bash
# se vuoi cambiare i permessi ad un file o directory
chmod 777 test.sh
# se vuoi installare un pacchetto
sudo apt install clamav -y

da terminale dai
Bash:
chmod +x test.sh
(per renderlo eseguibile) e poi con
Bash:
./test.sh
lo fai partire.

Visto che nello script c'è il comando "sudo" ti chiederà la password come se stessi utilizzando un comando standard di terminale.
In generale qualsiasi cosa puoi fare la terminale la puoi "scriptare"

Benvenuto nel fantastico mondo del bash scripting ??
 
Si, ma mettiamo caso che io stia realizzando un interfaccia grafica con Python di un programma da riga di comando, cercando di evitare il più possibile operazioni da parte dell'utente sul terminale. Non c'è proprio un modo per fare tutte queste operazioni con il programma py? Al massimo dando a lui i permessi root?
 
Per fare cose di questo tipo utilizzo bash sempre e comunque.
In python prova a vedere subprocess (oppure os.system), ma non so quale sia il più idoneo/migliore visto che non li ho mai utilizzati.
 
Subprocess non mi fa eseguire molti comandi, già solo cd non lo fa. Os ci avevo pensato, ma non sapevo come gestire i comandi con sudo
 
Cambiare directory con subprocess mi sembra piuttosto inutile.
1) perchè puoi usare direttamente python: vedi os.chdir() (sicuramente ci saranno altri modi per vedere e/o cambiare la cwd)
2) perchè puoi utilizzare il path assoluto per eseguire un comando su una directory: vedi os.path

EDIT:
subprocess.run ha come argomento cwd che "a senso" serve proprio a far eseguire il comando sulla dir impostata. Verifica meglio nella doc.

EDIT2:
Tra l'altro con subprocess puoi direttamente eseguire uno script bash (ad es. il file .sh di cui sopra)
 
Ultima modifica:
Salve a tutti,
vorrei fare uno script in Python, che però necessità di un programma che non è installato di default su nessuna distro. Vorrei quindi sapere se c'è un modo con Python per scaricare questo programma, so di librerie come os e subprocess che permettono di eseguire un comando da terminale, ma essendo che questa operazione necessità di permessi di root non so come agire.

A te innanzitutto serve rilanciare il tuo script con privilegi di root, oppure eseguire il package manager con tali privilegi. In entrambi i casi, tramite subprocess, devi invocare pkexec.

Vedi qui https://pypi.org/project/elevate/

In questo modo puoi eseguire il package manager ed installare il pacchetto necessario come se fossi un normale utente.

Tuttavia non è che puoi evitare, magari fornendo col tuo programma una copia "privata" del programma che ti serve? O ancora meglio, usare qualche API fornita dal sistema o da una libreria che faccia le stesse cose di quel programma? In genere quest'ultima soluzione è quella migliore nella stragrande maggioranza dei casi.
 
Pubblicità
Pubblicità
Indietro
Top