Existe-t-il un moyen d'installer Nano sur CoreOS?

30

CoreOS n'inclut pas de gestionnaire de packages mais mon éditeur de texte préféré est Nano, pas vi ou vim. Y a-t-il un moyen de contourner cela?

gcc n'est pas disponible donc il n'est pas possible de compiler depuis la source:

core@core-01 ~/nano-2.4.1 $ ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... no
checking whether make supports nested variables... no
checking for style of include used by make... none
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/core/nano-2.4.1':
configure: error: no acceptable C compiler found in $PATH

Pour mettre cela en contexte, je suivais ce guide quand j'ai découvert que je voulais utiliser Nano

codecowboy
la source
3
L'intérêt de CoreOS n'est-il pas que vous ne fassiez rien d'autre sur le système d'exploitation que les conteneurs de démarrage?
jordanm
1
Oui, mais si je dois créer et modifier un fichier dockerfile ou un autre fichier de configuration
codecowboy
2
Le cas d'utilisation prévu pour coreos est que vous modifiez votre fichier docker sur votre poste de travail et que vous le poussiez vers coreos avec la flotte. Pas besoin de se connecter à la machine elle-même.
spuder
1
L'équipe CoreOs (via Twitter) m'a amené à cette documentation qui suggère qu'il est possible d'installer et d'utiliser Nano si c'est ce que je veux faire, que je le fasse ou non
codecowboy
1
AFAIK, vous devez toujours modifier les fichiers d'unité sur CoreOS (veuillez me prouver le contraire).
Dan Esparza

Réponses:

56

Pour ce faire sur une boîte CoreOS, suivez les conseils du guide ici :

  1. Démarrez la boîte CoreOS et connectez-vous en tant corequ'utilisateur
  2. Exécutez la /bin/toolboxcommande pour entrer dans le conteneur Fedora stock.
  3. Installez tous les logiciels dont vous avez besoin. Pour installer nano dans ce cas, ce serait aussi simple que de faire un dnf -y install nano(dnf a remplacé yum)
  4. Utilisez nano pour modifier des fichiers. "Mais attendez - je suis dans un conteneur!" Ne vous inquiétez pas - le système de fichiers de l'hôte est monté à l' /media/rootintérieur du conteneur. Il vous suffit donc d'enregistrer un exemple de fichier texte dans /media/root/home/core/test.txt, puis exitle conteneur, et enfin de répertorier les fichiers /home/core. Vous remarquez votre fichier test.txt?

Si une partie de ces informations est trop cryptique ou déroutante, veuillez poser des questions complémentaires. :-)

Dan Esparza
la source
7

Bien que la réponse de Dan soit fondamentalement correcte, il semble que yum ne fonctionne plus dans la dernière installation de CoreOS (installée hier à partir de la dernière coreos_production_vmware_ova.ova de http://stable.release.core-os.net/amd64-usr/ courant dans une station de travail VMWare sous Windows).

La commande yum citée est abandonnée à la fin. Remplacez donc l'étape (3) par la commande

/usr/bin/dnf install nano

qui installe avec succès nano dans le conteneur fedora.

Faites vos modifications avec nano à l'intérieur de ce conteneur fedora (accessible depuis l'invite CoreOS par / bin / toolbox), tout en obéissant aux conseils de montage du post de Dan. La sortie du conteneur fedora peut être effectuée par la commande 'exit'.

Heri
la source
5

Il y a une option plus simple que j'ai trouvée sur un post reddit

Connectez-vous d'abord en tant corequ'utilisateur, puis assurez-vous qu'il /opt/binexiste ( sudo mkdir -p /opt/bin) avant d'exécuter la commande suivante:

docker run -d --name nano base/archlinux:latest sleep && sudo docker cp nano:/usr/bin/nano /opt/bin && docker rm nano

Si tout va bien /opt/binest déjà dans le PATHdès que cela a fonctionné, vous aurez nanodisponible.

rels
la source
C'était la seule suggestion qui fonctionnait pour le système plutôt que juste à l'intérieur d'un conteneur docker. D'autres conseils suggèrent également de le télécharger sur googlecode.com qui ne l'héberge plus.
Alan
La commande ci-dessus ne fonctionne plus avec l'archlinux / base actuel. J'ai essayé de faire la même chose en extrayant le nano binaire d'une autre distribution, mais cela ne fonctionne pas non plus et ne devrait pas fonctionner, car le nano n'est pas lié statiquement.
ChrisW
3

CoreOS est basé sur ChromeOS, donc je suppose que les instructions pour ChromeOS devraient fonctionner. À titre d'exemple, les instructions d'installation de Nano sur Chrome sont les suivantes:

#!/bin/sh
sudo echo -n
sudo mkdir /tmp/nano
cd /tmp/nano
sudo wget http://v48.googlecode.com/files/nano.tar.gz
sudo tar -zxvf nano.tar.gz
sudo mv ./nano /usr/bin
sudo rm -rf /tmp/nano 

Source Gist: https://gist.github.com/alex-endfinger/1510908

shivams
la source
1
C'est une bonne suggestion, mais / user / bin est protégé en écriture sur CoreOS et nanone s'exécute pas, même depuis / tmp / nano
Dan Esparza
Cela ne fonctionne plus non plus, car le lien binaire est mort.
ChrisW
1
Êtes-vous sûr qu'il est basé sur ChromeOS?
Code Bling du
0

Bien que l'approche de la boîte à outils soit la bonne pour la plupart, je cherchais un binaire que je pourrais exécuter dans / opt / bin.

Ce lien GitHub - andrew-d / static-binaries: Divers outils * nix construits en tant que binaires liés statiquement ont un Dockerfile et un script pour compiler une version binaire statique de nano sur Debian qui fonctionnera sur CoreOS.

binaires statiques / nano sur master · andrew-d / binaires statiques · GitHub

Il serait préférable de cloner le référentiel et de compiler le binaire.

Pour utiliser le binaire précompilé du même dépôt:

curl -L https://raw.githubusercontent.com/andrew-d/static-binaries/master/binaries/linux/x86_64/nano > /opt/bin/nano
chmod +x /opt/bin/nano
nano --version
ChrisW
la source