Maison >développement back-end >Golang >Pourquoi l'exécution de 'Sudo go run' entraîne-t-elle une erreur 'Fichier exécutable introuvable' ?

Pourquoi l'exécution de 'Sudo go run' entraîne-t-elle une erreur 'Fichier exécutable introuvable' ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-18 10:34:02811parcourir

Why Does Running

Exécuter des programmes Go avec Sudo

Dans un système Linux, il est courant d'utiliser sudo pour exécuter des commandes qui nécessitent des privilèges élevés. Cependant, l'exécution de programmes Go avec sudo go run main.go peut entraîner une erreur « fichier exécutable introuvable ».

Cette erreur se produit car les variables d'environnement, telles que GOPATH et GOROOT, ne sont pas correctement définies pour le utilisateur root. Par défaut, sudo réinitialise l'environnement lorsqu'il exécute une commande, supprimant toutes les variables d'environnement définies par le shell de l'utilisateur.

Solution

Au lieu d'exécuter sudo, exécutez main. go, l'approche recommandée consiste à d'abord créer le programme Go dans un binaire, puis à exécuter le binaire avec sudo. Cela garantit que le binaire a les variables d'environnement correctes.

Voici comment y parvenir :

  1. Si vous êtes dans le répertoire contenant main.go, vous pouvez créer le binaire en utilisant :
go build
  1. Exécutez le binaire avec sudo :
sudo ./mycapt

Vous pouvez également installer le binaire dans votre répertoire bin GOPATH avec :

go install

Et puis exécutez-le avec :

sudo $GOPATH/bin/mycapt

En suivant cette approche, vous pouvez exécuter des programmes Go avec sudo tout en vous assurant que les variables d'environnement nécessaires sont correctement définies pour l'utilisateur root .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn