Есть ли способ установить Nano на CoreOS?


30

CoreOS не включает в себя менеджер пакетов, но я предпочитаю текстовый редактор Nano, а не vi или vim. Есть ли способ обойти это?

gcc недоступен, поэтому его невозможно скомпилировать из источника:

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

Чтобы выразить это в контексте, я следовал этому руководству, когда обнаружил, что хочу использовать Nano


3
Разве CoreOS не в том, что вы действительно ничего не делаете в самой ОС, кроме запуска контейнеров?
Иордания

1
Да, но если мне может понадобиться создать и отредактировать dockerfile или другой файл конфигурации
codecowboy

2
Предполагаемый вариант использования coreos - это то, что вы редактируете файл докера на своей рабочей станции и отправляете в coreos с помощью fleet. Не нужно подключаться к самой машине.
spuder

1
Команда CoreOs (через твиттер) привела меня к этой документации, которая предполагает, что можно установить и использовать Nano, если это то, что я хочу делать, независимо от того, должен
делать

1
AFAIK, вам все еще нужно редактировать файлы модулей в CoreOS (пожалуйста, докажите, что я не прав).
Дэн Эспарза

Ответы:


56

Чтобы сделать это на коробке CoreOS, следуя подсказкам из руководства здесь :

  1. Загрузите CoreOS box и подключитесь как coreпользователь
  2. Запустите /bin/toolboxкоманду для входа в стандартный контейнер Fedora.
  3. Установите любое программное обеспечение, которое вам нужно. Чтобы установить nano в этом случае, это было бы так же просто, как сделать dnf -y install nano(dnf заменил yum)
  4. Используйте nano для редактирования файлов. "Но подождите - я в контейнере!" Не беспокойтесь - файловая система хоста монтируется /media/rootвнутри контейнера. Так что просто сохраните образец текстового файла в /media/root/home/core/test.txt, затем exitв контейнере и, наконец, перейдите к списку файлов в /home/core. Обратите внимание на ваш файл test.txt?

Если какая-то часть этого слишком загадочная или запутанная, пожалуйста, задавайте дополнительные вопросы. :-)


7

Хотя ответ Дэна в основном правильный, похоже, что yum больше не работает в последней установке CoreOS (установлен вчера с последней версии coreos_production_vmware_ova.ova с http://stable.release.core-os.net/amd64-usr/ тока в рабочую станцию ​​VMWare на Windows).

Процитированная команда yum прерывается в конце. Поэтому замените шаг (3) командой

/usr/bin/dnf install nano

который успешно устанавливает nano в контейнере fedora.

Сделайте ваши правки с помощью nano в этом контейнере fedora (доступном из подсказки CoreOS через / bin / toolbox), при этом следуя советам по установке поста Дэна. Выход из контейнера fedora может быть выполнен командой 'exit'.


5

Есть более простой вариант, который я нашел в сообщении Reddit

Сначала подключитесь как coreпользователь, а затем убедитесь, что /opt/binсуществует ( sudo mkdir -p /opt/bin) перед выполнением следующей команды:

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

Надеюсь /opt/bin, уже в PATHтак, как только это сработало, у вас будет в nanoналичии.


Это было единственное предложение, которое работало для системы, а не только внутри контейнера докера. Также другие советы предлагали загрузить его с googlecode.com, на котором он больше не размещается.
Алан

Приведенная выше команда больше не работает с текущим archlinux / base. Я попытался сделать то же самое, извлекая двоичный файл nano из другого дистрибутива, но это тоже не работает и не должно работать, так как nano не является статически связанным.
ChrisW

3

CoreOS основан на ChromeOS, поэтому я думаю, что инструкции для ChromeOS должны работать. Например, инструкции по установке Nano в Chrome:

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

Источник Gist: https://gist.github.com/alex-endfinger/1510908


1
Это хорошее предложение, но / user / bin защищен от записи в CoreOS и nanoне запускается даже из / tmp / nano
Дэн Эспарза,

Это также больше не работает, поскольку бинарная ссылка не работает.
ChrisW

1
Вы уверены, что он основан на ChromeOS?
Код Блинг

0

Хотя подход с использованием набора инструментов является правильным для большинства, я искал двоичный файл, который я мог бы запустить в / opt / bin.

Эта ссылка GitHub - andrew-d / static-binaries: различные инструменты * nix, созданные как статически связанные двоичные файлы, имеют Dockerfile и скрипт для компиляции статической двоичной версии nano в Debian, которая будет работать на CoreOS.

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

Лучше всего клонировать репозиторий и скомпилировать бинарный файл.

Чтобы использовать предварительно скомпилированный бинарный файл из того же репо:

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.