3 Réponses :


4
votes

Oui, vous pouvez!

Cependant, notez que je me souviens de ces étapes rétrospectivement, donc j'ai probablement manqué une ou deux étapes. Si vous rencontrez un problème, n'hésitez pas à laisser un commentaire ci-dessous.

  1. Louez un serveur FreeBSD, bien sûr :)

  2. Mettez à jour votre système avec la dernière version. Sinon, vous risquez d'obtenir des erreurs bizarres comme "libdl.so.1" introuvable lors de l'installation des packages. Celui que j'utilise est FreeBSD 12.0-RELEASE-p3.

  3. Créez un compte utilisateur. N'oubliez pas d'en faire un membre de wheel , et décommentez la ligne % wheel ALL = (ALL) ALL dans / usr / local / etc / sudoers .

  4. Configurez SSH. Cette étape est particulièrement délicate, car nous devons utiliser à la fois l'authentification par clé publique et par mot de passe.

    1. En raison d'un bug connu , dans certains cas, l'hôte distant doit utiliser l'authentification par mot de passe, ou vous obtiendrez une erreur lors de la configuration de la chaîne d'outils. Vous pouvez activer l'authentification par mot de passe en définissant PasswordAuthentication yes dans / etc / ssh / sshd_config , suivi d'un sudo /etc/rc.d/sshd restart code >.
    2. Il semble que CLion synchronise les fichiers entre l'hôte local et distant avec rsync et SSH. Pour certaines raisons que je ne peux pas expliquer, ce processus sera suspendu pour toujours si le serveur hôte ne prend pas en charge la connexion par clé SSH sans mot de passe. Suivez cette réponse pour créer une clé SSH comme moyen supplémentaire d'authentification.
  5. CLion suppose que le système d'exploitation hôte distant est Linux, nous devons donc corriger certaines incompatibilités entre GNU / Linux et FreeBSD.

    1. Installez les utilitaires GNU avec sudo pkg install coreutils .
    2. Renommez l'utilitaire BSD stat avec sudo mv / usr / bin / stat / usr / bin / _stat .
    3. Créez un "nouveau" fichier / usr / bin / stat avec le contenu de l ' Extrait 1 . Ce hack exploite le fait que CLion définit la variable d'environnement JETBRAINS_REMOTE_RUN sur 1 avant d'exécuter des commandes sur le serveur distant.
    4. Faites sudo chmod a + x / usr / bin / stat pour le rendre exécutable.
    5. Encore une fois, renommez l'utilitaire BSD ls avec sudo mv / bin / ls / bin / _ls .
    6. Créez un "nouveau" fichier / bin / ls avec le contenu de l ' extrait 2 , comme auparavant.
    7. Enfin, sudo chmod a + x / bin / ls .
  6. Installez les dépendances avec sudo pkg install rsync cmake gcc gdb gmake .

  7. Vous pouvez désormais suivre les instructions officielles , et connectez-vous à votre brillant hôte FreeBSD!

 entrez la description de l'image ici


Extrait 1

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/bin/_ls" "$@"
else
        exec "/usr/local/bin/gls" "$@"
fi

Extrait 2

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/usr/bin/_stat" "$@"
else
        exec "/usr/local/bin/gnustat" "$@"
fi


1 commentaires

À partir de la version 2020.1, CLion utilise jsch-nio avec le correctif approprié. Par conséquent, il fonctionne correctement avec les commandes bsd stat et ls .



1
votes

De plus, vous devez corriger une autre incompatibilité entre GNU / Linux et FreeBSD.

  1. Vérifiez que gtar est installé si aucun pkg install gtar
  2. Renommez l'utilitaire BSD tar avec mv / usr / bin / tar / usr / bin / _tar
  3. Créez un "nouveau" fichier / usr / bin / tar avec le contenu de l'extrait 3, comme avant.
  4. Enfin, sudo chmod a + x / usr / bin / tar

Extrait 3

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/usr/bin/_tar" "$@"
else
        exec "/usr/local/bin/gtar" "$@"
fi


1 commentaires

À partir de CLion 2020.2, ce n'est pas obligatoire.



1
votes
  1. À partir de CLion 2020.1, les instructions concernant gnustat et "ls" ne sont plus pertinentes. Parce que CLion 2020.1 inclut les correctifs appropriés dans la bibliothèque jsch-nio ( https://github.com/lucastheisen/jsch-nio/commit/410cf5cbb489114b5da38c7c05237f6417b9125b )

  2. À partir de CLion 2020.2, n'utilise pas l'option tar --dereference , donc l'instruction concernant gtar (gnutar) n'est plus pertinente.


0 commentaires