Come rendere `python` un alias di` python3` a livello di sistema su Debian

Sep 17 2020

Gli ultimi aggiornamenti del mio sistema di test Debian hanno rimosso Python versione 2 e ho installato solo Python 3, con python3. Non è più presente alcun comando denominato python. Ciò causa il fallimento di diversi script, inclusi gli script compatibili con Python 3.

Sarei interessato a sapere qual è il modo corretto per configurare globalmente pythoncome alias per python3.

Una soluzione sporca sarebbe quella di fare manualmente qualcosa di simile sudo ln -s /usr/bin/python{3,}, ma temo che questo potrebbe non essere affidabile per i futuri aggiornamenti di APT (o se si reinstalla Python 2 in un secondo momento). Un'altra opzione è impostare un alias, ma poi funzionerebbe solo per il mio utente, non per l'intero sistema.

Noto anche che su Ubuntu esiste un pacchetto python-is-python3che fa esattamente questo, ma non esiste un pacchetto del genere su Debian.

Risposte

3 StephenKitt Sep 17 2020 at 19:59

Se vuoi rispettare la regola secondo cui tutto ciò che è /usrescluso /usr/localdovrebbe provenire da un pacchetto, dovrei effettivamente scaricare il python-is-python3pacchetto e installarlo. Fornisce solo il /usr/bin/pythoncollegamento simbolico e la documentazione richiesta, ed è improbabile che le sue relazioni tra i pacchetti causino problemi in futuro.

Un alias non aiuterà con i messaggi di errore dei tuoi script, e dato che i pacchetti Python non usano alternative, creare la tua alternativa ( update-alternativesecc.) Non sarebbe una soluzione robusta.

Se i tuoi script usano /usr/bin/env python, potresti invece aggiungere manualmente un link /usr/local/bin.

Indipendentemente da ciò che si decide di fare, d'ora in poi i pacchetti dipendenti da Python in Debian devono utilizzare esplicitamente python2o python3nei loro schemi, in modo da non incorrere in problemi causati dai pacchetti dai repository ufficiali (in Debian 11 e versioni successive, escluso instabile e sperimentale per ora poiché questi hanno ancora vecchi pacchetti Python che non sono stati ancora ripuliti).

2 a3nm Nov 02 2020 at 22:17

Sembra che Debian è ora in vendita python-è-python3 se stessi (in sid e testare stesura di questo documento), quindi la premessa della questione non è più in possesso e si può solo: sudo apt update && sudo apt install python-is-python3.