17 сентября 2015

mc на nas4free

Я когда-то ставил mc на nas4free, но та инсталляция не подружилась с virtualbox. Сегодня поставим mc.

Источник на форуме nas4free/
UPD от 01 февраля 2015 Изменена ссылка на Источник строкой выше. Работает в сборке 1310 /UPD

1) Нам надо определиться - куда ставить mc. Я ранее использовал раздел данных на флешке, но позже разочаровался в этой идее. Буду использовать датасет /Ext/Extensions на главном пуле (/mnt/Pool/), где создам папку mc

2) Идем в консоль через putty
mkdir mkdir /mnt/Pool/Ext/Extensions/mc
chmod -R 777 /mnt/Pool/Ext/Extensions/mc
cd /mnt/Pool/Ext/Extensions/mc



3)Теперь нам надо создать и подправить скрипт.
Идём по ссылке Источник выше. Выделяем мышкой и копируем в буфер скрипт из этого поста темы (не первого)

4) Прим. Советую развернуть окно консоли на весь экран.
создаём файл скрипта
nano mcommander.sh

Копируем в него скрипт из форума

5)

Прим, Если не будет качаться - значит снова сменилась версия. Открываем тот путь, что содержится в сообщении об ошибке,  в ftp-клиента и ищем как называется актуальная версия mc.

6) Даём права на исполнение
chmod a+x mcommander.sh

7) Запускаем, ОБЯЗАТЕЛЬНО с полным маршрутом
/mnt/Pool/Ext/Extensions/mc/mcommander.sh
_________
UPD от 12 окт 2013 Если у вас полезли ошибки - то 99% проблема в том, что при переносе скрипта те строки, которые должны были быть одной строкой превратились в две. Например
ln -s ${DIR}/share/locale/${i}/LC_MESSAGES/mc.mo
/usr/local/share/locale/${i}/LC_MESSAGES; fi;

Это одна строка в оригинале - но если её разложить на две - будет чушь.

Дальше советую при переделках начинать с чистого листа для этого стереть всё
rm -rf /mnt/Pool/Ext/Extensions/mc/
А затем при вставке в nanо развернуть его на весь экран (и не пользоваться windows редакторами) /UPD
_________

8) rehash

9) Запускать командой mc
mc

10) Задаём в System|Advanced|Command scripts как Postinit скрипт
/mnt/Pool/Ext/Extensions/mc/mcommander.sh

Перегружаемся, чтобы убедиться, что всё ОК.
Прим. Русские буквы читаются нормально. Если в клиенте выставить кодировку UTF-8
PuttyUTF8

Отредактированный файл:
#!/bin/sh
# filename:     mcommander.sh
# author:       Dan Merschi
# date:         2009-07-28 ; Add multiplatform support
# author:       Graham Inggs <graham@nerve.org.za>
# date:         2012-04-11 ; Updated for NAS4Free 9.0.0.1
# date:         2013-02-09 ; Updated for ftp.freebsd.org restructuring and latest mc-light version
# date:         2013-05-05 ; Switch from mc-light to mc ; drop compat7x; add libslang
# purpose:      Install Midnight Commander on NAS4Free (embedded version).
# Note:         Check the end of the page.
#
#----------------------- Set variables ------------------------------------------------------------------
DIR=`dirname $0`;
PLATFORM=`uname -m`
RELEASE=`uname -r | cut -d- -f1`
URL="ftp://ftp.obit.ru/pub/FreeBSD/ports/i386/packages-8-stable/All"
MCLIGHTFILE="mc-4.8.1.4_1.tbz"
LIBSLANGFILE="libslang2-2.2.4_5.tbz"
PCREFILE="pcre-8.34.tbz"
GETTEXTFILE="gettext-0.18.3.1.tbz"
LIBICONVFILE="libiconv-1.14_1.tbz"
#----------------------- Set Errors ---------------------------------------------------------------------
_msg() { case $@ in
  0) echo "The script will exit now."; exit 0 ;;
  1) echo "No route to server, or file do not exist on server"; _msg 0 ;;
  2) echo "Can't find ${FILE} on ${DIR}"; _msg 0 ;;
  3) echo "Midnight Commander installed and ready! (ONLY USE DURING A SSH SESSION)"; exit 0 ;;
  4) echo "Always run this script using the full path: /mnt/.../directory/mcommander.sh"; _msg 0 ;;
esac ; exit 0; }
#----------------------- Check for full path ------------------------------------------------------------
if [ ! `echo $0 |cut -c1-5` = "/mnt/" ]; then _msg 4 ; fi
cd $DIR;
#----------------------- Download and decompress mc files if don't exist --------------------------------
FILE=${MCLIGHTFILE}
if [ ! -d ${DIR}/bin ]; then
  if [ ! -e ${DIR}/${FILE} ]; then fetch ${URL}/${FILE} || _msg 1; fi
  if [ -f ${DIR}/${FILE} ]; then tar xzf ${DIR}/${FILE} || _msg 2; rm ${DIR}/+*; rm -R ${DIR}/man; fi
  if [ ! -d ${DIR}/bin ]; then _msg 4; fi
fi
#----------------------- Download and decompress libslang files if don't exist --------------------------
FILE=${LIBSLANGFILE}
if [ ! -d ${DIR}/lib ]; then
  if [ ! -e ${DIR}/${FILE} ]; then fetch ${URL}/${FILE} || _msg 1; fi
  if [ -f ${DIR}/${FILE} ]; then tar xzf ${DIR}/${FILE} || _msg 2}; rm ${DIR}/+*;
    rm -R ${DIR}/libdata; rm -R ${DIR}/man; rm -R ${DIR}/include; rm ${DIR}/lib/*.a;
    rm ${DIR}/bin/slsh; rm ${DIR}/etc/slsh.rc; fi
  if [ ! -d ${DIR}/lib ]; then _msg 4; fi
fi
#----------------------- Download and decompress pcre files if don't exist --------------------------
FILE=${PCREFILE}
#if [ ! -d ${DIR}/lib ]; then
  if [ ! -e ${DIR}/${FILE} ]; then fetch ${URL}/${FILE} || _msg 1; fi
  if [ -f ${DIR}/${FILE} ]; then tar xzf ${DIR}/${FILE} || _msg 2}; rm ${DIR}/+*; fi
  if [ ! -d ${DIR}/lib ]; then _msg 4; fi
#fi
#----------------------- Download and decompress gettext files if don't exist --------------------------
FILE=${GETTEXTFILE}
#if [ ! -d ${DIR}/lib ]; then
  if [ ! -e ${DIR}/${FILE} ]; then fetch ${URL}/${FILE} || _msg 1; fi
  if [ -f ${DIR}/${FILE} ]; then tar xzf ${DIR}/${FILE} || _msg 2}; rm ${DIR}/+*; fi
  if [ ! -d ${DIR}/lib ]; then _msg 4; fi
#fi
#----------------------- Download and decompress gettext files if don't exist --------------------------
FILE=${LIBICONVFILE}
#if [ ! -d ${DIR}/lib ]; then
  if [ ! -e ${DIR}/${FILE} ]; then fetch ${URL}/${FILE} || _msg 1; fi
  if [ -f ${DIR}/${FILE} ]; then tar xzf ${DIR}/${FILE} || _msg 2}; rm ${DIR}/+*; fi
  if [ ! -d ${DIR}/lib ]; then _msg 4; fi
#fi

#----------------------- Create symlinks ----------------------------------------------------------------
if [ ! -e /usr/local/share/mc ]; then ln -s ${DIR}/share/mc /usr/local/share; fi
if [ ! -e /usr/local/libexec/mc ]; then ln -s ${DIR}/libexec/mc /usr/local/libexec; fi
if [ ! -e /usr/local/etc/mc ]; then ln -s ${DIR}/etc/mc /usr/local/etc; 
fi
for i in `ls $DIR/bin/`
   do if [ ! -e /usr/local/bin/${i} ]; then ln -s ${DIR}/bin/$i /usr/local/bin; fi; done
for i in `ls $DIR/share/locale`
   do if [ ! -e /usr/local/share/locale/${i} ]; then ln -s ${DIR}/share/locale/${i} /usr/local/share/locale;
      else if [ ! -e /usr/local/share/locale/${i}/LC_MESSAGES/mc.mo ]; 
then
        ln -s ${DIR}/share/locale/${i}/LC_MESSAGES/mc.mo /usr/local/share/locale/${i}/LC_MESSAGES; fi;
      fi; done;
for i in `ls $DIR/lib`
   do if [ ! -e /usr/local/lib/${i} ]; then ln -s $DIR/lib/$i /usr/local/lib; fi; done
_msg 3 ; exit 0;
#----------------------- End of Script ------------------------------------------------------------------
# 1. Keep this script in his own directory.
# 2. chmod the script u+x,
# 3. Always run this script using the full path: /mnt/share/directory/mcommander
# 4. You can add this script to WebGUI: Advanced: Commands as Post command (see 3).
# 5. To run Midnight Commander from shell type 'mc'.