Gibt es eine Möglichkeit, Nano auf CoreOS zu installieren?

30

CoreOS enthält keinen Paketmanager, aber mein bevorzugter Texteditor ist Nano, nicht vi oder vim. Gibt es einen Weg, dies zu umgehen?

gcc ist nicht verfügbar, daher kann nicht aus dem Quellcode kompiliert werden:

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

Um dies in einen Zusammenhang zu bringen, habe ich diesen Leitfaden befolgt, als ich herausfand, dass ich Nano verwenden wollte

Codecowboy
quelle
3
Ist es nicht der Sinn von CoreOS, dass Sie auf dem Betriebssystem selbst nichts anderes tun, als Container zu starten?
Jordanien,
1
Ja, aber wenn ich eine Docker-Datei oder eine andere Konfigurationsdatei erstellen und bearbeiten muss
codecowboy
2
Der beabsichtigte Anwendungsfall für Coreos ist, dass Sie Ihre Docker-Datei auf Ihrer Workstation bearbeiten und auf Coreos mit Flotte übertragen. Es muss keine Verbindung zur Maschine selbst hergestellt werden.
Spuder
1
Das CoreOs-Team (über Twitter) führte mich zu dieser Dokumentation, die vorschlägt, dass es möglich ist, Nano zu installieren und zu verwenden, wenn ich das möchte, unabhängig davon, ob ich es sollte
Codecowboy
1
AFAIK, Sie müssen noch Unit-Dateien auf CoreOS bearbeiten (bitte beweisen Sie, dass ich falsch liege ).
Dan Esparza

Antworten:

56

Um dies auf einer CoreOS-Box zu tun, folgen Sie den Hinweisen aus der Anleitung hier :

  1. Booten Sie die CoreOS-Box und verbinden Sie sich als core Benutzer eine Verbindung her
  2. Führen Sie die /bin/toolbox Befehl aus, um den Fedora-Lagerbehälter einzugeben.
  3. Installieren Sie die benötigte Software. In diesem Fall ist die Installation von nano so einfach wie adnf -y install nano Installation von (dnf hat yum ersetzt).
  4. Verwenden Sie Nano, um Dateien zu bearbeiten. "Aber warte - ich bin in einem Container!" Keine Sorge - das Dateisystem des Hosts wird /media/rootim Container eingehängt . Speichern Sie einfach eine Beispieltextdatei unter /media/root/home/core/test.txt, dann exitim Container und listen Sie die Dateien schließlich unter auf /home/core. Beachten Sie Ihre test.txt-Datei?

Wenn ein Teil davon zu kryptisch oder verwirrend ist, stellen Sie bitte weitere Fragen. :-)

Dan Esparza
quelle
7

Während die Antwort von Dan im Grunde genommen richtig ist, scheint es, dass yum in der neuesten CoreOS-Installation (die gestern von der neuesten coreos_production_vmware_ova.ova von http://stable.release.core-os.net/amd64-usr/ installiert wurde) nicht mehr funktioniert. aktuell in eine VMWare Workstation unter Windows).

Der angegebene yum-Befehl wird am Ende abgebrochen. Ersetzen Sie daher Schritt (3) durch den Befehl

/usr/bin/dnf install nano

die erfolgreich Nano in den Fedora-Container installiert.

Nehmen Sie Ihre Bearbeitungen mit Nano in diesem Fedora-Container vor (über CoreOS-Eingabeaufforderung unter / bin / toolbox), während Sie den Montagehinweisen von Dans Post folgen. Das Verlassen des Fedora-Containers kann mit dem Befehl 'exit' erfolgen.

Heri
quelle
5

Es gibt eine einfachere Option, die ich auf einem reddit Post gefunden habe

Stellen Sie zuerst eine Verbindung als coreBenutzer her und stellen Sie dann sicher, dass /opt/binexists ( sudo mkdir -p /opt/bin) vorhanden ist, bevor Sie den folgenden Befehl ausführen:

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

Hoffentlich /opt/binist das schon PATHso, sobald es geklappt hat, habt ihr zur nanoVerfügung.

rels
quelle
Dies war der einzige Vorschlag, der für das System funktionierte und nicht nur in einem Docker-Container. Auch andere Tipps haben vorgeschlagen, es von googlecode.com herunterzuladen, wo es nicht mehr gehostet wird.
Alan
Der obige Befehl funktioniert mit dem aktuellen Archlinux / Base nicht mehr. Ich habe das gleiche versucht, indem ich die Nano-Binärdatei aus einer anderen Distribution extrahiert habe, aber dies funktioniert auch nicht und sollte auch nicht funktionieren, da Nano nicht statisch verknüpft ist.
ChrisW
3

CoreOS basiert auf ChromeOS, daher sollten meines Erachtens Anweisungen für ChromeOS funktionieren. Anweisungen zum Installieren von Nano in Chrome sind beispielsweise:

#!/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 

Quelltext: https://gist.github.com/alex-endfinger/1510908

shivams
quelle
1
Dies ist ein guter Vorschlag, aber / user / bin ist auf CoreOS schreibgeschützt und nanowird nicht ausgeführt, auch nicht von / tmp / nano
Dan Esparza
Dies funktioniert auch nicht mehr, da die Binärverbindung nicht mehr funktioniert.
ChrisW
1
Sind Sie sicher, dass es auf ChromeOS basiert?
Code Bling
0

Während der Toolbox-Ansatz für die meisten der richtige ist, suchte ich nach einer Binärdatei, die ich in / opt / bin ausführen konnte.

Dieser Link GitHub - andrew-d / static-binaries: Verschiedene * nix-Tools, die als statisch verknüpfte Binärdateien erstellt wurden, haben eine Docker-Datei und ein Skript zum Kompilieren einer statischen Binärversion von nano unter Debian, die unter CoreOS funktioniert.

static-binaries / nano bei master · andrew-d / static-binaries · GitHub

Es ist am besten, das Repository zu klonen und die Binärdatei zu kompilieren.

So verwenden Sie die vorkompilierte Binärdatei aus demselben Repo:

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
quelle