воскресенье, 31 января 2010 г.

ReadyNAS Duo. How to compile Midnight Commader 4.7.0.1

Хочу сказать спасибо разработчикам mc из конференции mc-dev@conference.jabber.ru
il.smind, slavazanko, andrew_b, repolainen за терпение и позитивный настрой.
Без их помощи я потратил бы, наверняка, значительно больше времени с неизвестным результатом.

В репозитории ReadyNas Duo есть сбранный midnight commander. И проще всего установить именно из репозитериев. Но в нем отсутствует поддержка utf-8, что затрудняет работу с файлами в русской кодировке. Поэтому я решил собрать из исходников последнюю версию.

Итак.
  1. Должны быть установлены add-on: EnableRootSSH_1.0.bin, APT_1.0.bin

  2. Установить компилятор

    # apt-get update # apt-get install libc6-dev gcc gdb libtag1-dev uuid-dev pkg-config gettext bzip2

  3. Полезно установить какой нибудь редактор. Например nano
    # apt-get install nano

  4. Компилировать все пакеты будем в директории staff. В моем случае полный путь к staff будет /homes/akhromov/staff.

    # cd /homes/akhromov # mkdir staff # cd staff

  5. Установить checkinstall (чтобы было можно создавать установочные пакеты)

    # wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz # tar xvfz checkinstall-1.6.2.tar.gz # cd checkinstall-1.6.2 # make # make install # checkinstall ... ... The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]: n ... Please choose the packaging method you want to use. Slackware [S], RPM [R] or Debian [D]? D ... This package will be built according to these values: 0 - Maintainer: [ root@rnd ] 1 - Summary: [ CheckInstall installations tracker, version 1.6.2 ] 2 - Name: [ checkinstall ] 3 - Version: [ 1.6.2 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ checkinstall ] 7 - Architecture: [ sparc ] 8 - Source location: [ checkinstall-1.6.2 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ ] 12 - Conflicts: [ ] 13 - Replaces: [ ] ... ... # dpkg -i checkinstall_1.6.2-1_sparc.deb # cd ..

    Курсивом показаны вопросы, которые задает checknstall. Жирным - ответы. Аналогично ответить нужно будет и дальше при создании дистрибутивов slang, glib и mc.

  6. Компиляция glib-2.14.6 (~20 минут)

    # wget http://ftp.gnome.org/pub/gnome/sources/glib/2.14/glib-2.14.6.tar.bz2 # tar xjf glib-2.14.6.tar.bz2 # cd glib-2.14.6 # ./configure --build='sparc-linux' # make # chechinstall # dpkg -i glib_2.14.6-1_sparc.deb # cd ..


  7. Компилируем slang-2.2 (~15 минут)

    # wget ftp://space.mit.edu/pub/davis/slang/v2.2/slang-2.2.0.tar.bz2 # tar xjf slang-2.2.0.tar.bz2

    В модуле slang-2.2.0/modules/fork-module.c (line 273) добавить
    #ifndef WCONTINUED
    #  define WCONTINUED 0                /* not available on ReadyNas Duo */
    #endif
    
    # cd slang-2.2.0 # ./configure --build='sparc-linux' # make # checkinstall # dpkg -i slang_2.2.0-1_sparc.deb # cd ..


  8. компилируем mc (~ 20 минут)

    # wget http://www.midnight-commander.org/downloads/22 -O mc-4.7.0.1.tar.bz2 # tar xjf mc-4.7.0.1.tar.bz2 # cd mc-4.7.0.1 # ./configure --disable-vfs --build='sparc-linux' # make # checkinstall # dpkg -i mc_4.7.0.1-1_sparc.deb


Ну и вот что из этого получилось:



Кому лениво все это проделывать, тот может установить из собранных мной пакетов # cd /tmp # wget http://www.opendrive.com/files/8633064_sal1L_8351/glib_2.16.6-1_sparc.deb # wget http://www.opendrive.com/files/8633061_FyV1y_b1e9/slang_2.2.0-1_sparc.deb # wget http://www.opendrive.com/files/8633065_WMLjj_84b1/mc_4.7.4-1_sparc.deb # dpkg -i glib_2.16.6-1_sparc.deb slang_2.2.0-1_sparc.deb mc_4.7.4-1_sparc.deb

Подводные камни.

Я нарвался на такой фокус. Установил из репозитория предыдущую версию mc и старый glib. Компилируя новый glib, старый я не удалал. Из-за этого в библиотеках получалась мешанина и линкер не мог правильно собрать mc.


Если нет подходящей темы, открывайте новую.

18 комментариев:

  1. Пасиб, клевая инфа +)
    только у меня трабла с mc, по краям нераспознанные символы (кодировка???) .... думаю в putty дело.... но не факт....

    ОтветитьУдалить
  2. На каком устройстве?
    Вот бы скриншот посмотреть.

    ОтветитьУдалить
  3. разобрался, я не собрал:
    # apt-get install libc6-dev gcc gdb libtag1-dev uuid-dev pkg-config gettext bzip2
    а у стройство: NetGear ReadyNAS Duo

    ОтветитьУдалить
  4. Круто!
    Как понимаю ставил из архива?
    Если так, то достаточно было бы
    # apt-get install gettext bzip2

    Ну как работает?
    Мне кажется чуть позадумчивее на старте чем тот, что в репозиториях.
    Я еще отключил при сборке vfs.
    Надо бы с ней собрать.

    ОтветитьУдалить
  5. снова решил следующим образом
    StorageTN:~# apt-get install mc
    Reading Package Lists... Done
    ............
    и понеслась))))
    кстати получилось ли установить что-нибудь еще кроме мц.... я вот боюсь.... резет не хочется будить)))))))))))

    ОтветитьУдалить
  6. С этим осторожно. Если подключены репозитории debian, то при неверной команде на update она начнет обновлять все подряд. Хорошо это не заканчивается. Диск 2 GB будет заполнен и на этом все закончится резетом. С переформатированием дисков.

    ОтветитьУдалить
  7. Получилось! Спасибо за статью - очень интересно.
    Вот только скорости "внутри" не очень впечататляют. 3 мегабайта... :-(
    http://xs.to/image-1B3B_4B7C0451.jpg

    ОтветитьУдалить
  8. Согласен. Почемуто скорости "внутри" меньше, чем с с сетевого интерфейса. Это объяснимо, но все таки вызывает недоумение.

    С другой стороны да и бог с ними со скоростями. Запускаешь screen и идешь спать...

    ОтветитьУдалить
  9. Добрый день,

    спасибо за детальные инструкции. ПОлучилось увидеть русские буквы.
    НО! Пропала возможность подключить сетевой путь (ftp, smb). В верси МС из репозитория которую я установил вначале, такая возможность была.
    Версия МС сейчас 4.7.4-1

    Во время установки была надпись
    dpkg - warning: downgrading mc from 1:4.6.0-4.6.1-pre3-3sarge1 to 4.7.4-1.

    Я не большой знаток МС и Линукса.

    Это нужно пересобрать МС 4.7 чтобы включить требуемые функции?

    ОтветитьУдалить
  10. Здравствуйте.
    Чтобы включить ftp, работу с архивами, smb, нужно конфигурировать вот так
    ./configure --build='sparc-linux'.
    Но в этом случае потребуются еще какие то пакеты, на которые будет ругатся маке (точнее компилятор)

    ОтветитьУдалить
  11. dpkg - warning был видимо из-за неверной установки параметров во время сборки пакета checkinstall-ом.

    ОтветитьУдалить
  12. Респект!!! сделал всё и всё заработало.

    ОтветитьУдалить
  13. Здравствуйте.
    При попытке установить из собранных вами пакетов на каждый получаю сообщение
    dpkg: error processing glib_2.16.6-1_sparc.deb (--install):
    subprocess dpkg-deb --control returned error exit status 2

    please help!

    ОтветитьУдалить
  14. А что вы устанавливаете? Покажите полностью команду и выхлоп

    ОтветитьУдалить
  15. Здравствуйте.
    Недавно приобрёл ReadyNAS NV+ на 4 диска, и озадачился установкой пакетов, в том числе MC. С линуксом до того, кстати, дела не имел.
    Стандартный MC из репозитариев показывал всё нормально, кроме русских букв. Решил сделать по вашему руководству.

    Всё прошло нормально и замечательно, если не считать того, что результат оказался далёк от идеала - отломалась псевдографика, а русские буквы так и не починились.

    Единственное отличие от вашего пути было в slang2.2 - вышла версия 2.2.4, так что пришлось изменять пути и прочее. Но MC скомпилился как полагается.

    Вы не могли бы посоветовать, что сделать, чтобы завелись русские буквы и прочее?

    ОтветитьУдалить
  16. Добрый день.
    Я не знаком с операционкой, которая стоит в NV+. Если бы была, то мог бы дать дельный совет.
    Из общих соображений.
    Проверьте состояние переменных
    echo $TERMINFO
    echo $TERM
    Если они не установлены, то дайте команды:
    # export TERMINFO=/usr/share/terminfo
    # export TERM=xterm
    Если это не помогло, то нужно лезть глубже.
    В любом случае начать нужно с того какое стоит ядро.
    # uname -a
    Дальше нужно посмотреть какие доступны codepage
    # locale -a
    mc опиается на описание базы терминалов, поэтому нужно посмотреть, установлена ли она:
    # ls /usr/share/terminfo

    Советую поспрашивать на форумах или у разработчиков mc. Они очень классные ребята. Помогут.

    ОтветитьУдалить
  17. Здравствуйте.

    Установлена какая-то из версий debian.
    Приведённые вами команды дали следующий результат:
    Storage:~# uname -a
    Linux Storage 2.6.17.14ReadyNAS #1 Wed Sep 22 04:42:09 PDT 2010 padre unknown
    Storage:~# locale -a
    C
    de_DE.utf8
    en_US.utf8
    fr_FR.utf8
    ja_JP.utf8
    ko_KR.utf8
    nl_NL.utf8
    POSIX
    zh_CN.utf8
    zh_TW.utf8
    Storage:~# ls /usr/share/terminfo
    a c d E h l m p r s v w x

    Что бы это могло быть? :)

    ОтветитьУдалить
  18. Разобрался. Дурацкий косяк - в путти не та кодировка стояла :) Чуть всю систему не поломал...

    ОтветитьУдалить