Обновление от 04.01.2010. Версия 4.7.0 из портов уже нормально поддерживает UTF-8, поэтому рекомендую ставить её, причём русские буквы отображаются даже при компиляции с ncurses, что даёт возможность отображать интерфейс “нормально”, а не ASCII-символами:
$ sudo port selfupdate $ port variants mc mc has the variants: ncurses: use ncurses screen library * conflicts with slang2 [+]slang2: use slang2 screen library * conflicts with ncurses universal: Build for multiple architectures $ sudo port install mc +ncurses $ /opt/local/bin/mc -V GNU Midnight Commander 4.7.0 Using the ncurses library With internationalization support With multiple codepages support
А для интереса можно почитать, как исправлялись русские буквы до 4.7.0.
Я уже давно заметил, что консольный файловый менеджер
Подскажи, как наложить патч для MC из портов, он не воспринимает utf в интерфейсе {…}
MC из портов, плохо работает с русскими буквами, и я решил найти решение такому поведению:
Я начал с инструкции, подсказанной мне
Поэтому я использовал slang. Учитывая то, что используемая сборка оказалась доступной только со
Подготовка
Ставим и удаляем mc через MacPorts для разрешения зависимостей.
$ port installed | grep mc mc @4.6.1_0 (active) $ sudo port uninstall mc
Все действия будем производить в каталоге ~/tmp
mkdir ~/tmp cd ~/tmp
Находим последние
wget http://www.sfr-fresh.com/unix/misc/slang-2.2.1.tar.gz wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.17.tar.gz wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
Раскручиваем архивы
tar xfz gettext-0.17.tar.gz tar xfz libiconv-1.13.1.tar.gz tar xfz slang-2.2.1.tar.gz
Компилируем и устанавливаем пакеты (они поставятся не в /opt/local, а в /usr/local, поэтому нужно будет проверить $PATH, чтобы /usr/local/bin стоял перед /opt/local/bin):
cd ~/tmp cd gettext-0.17 ./configure && make -j 4 && sudo make install cd .. cd libiconv-1.13.1 ./configure && make -j 4 && sudo make install cd .. cd slang-2.2.1 ./configure && make -j 4 && sudo make install cd ..
Использование модифицированной сборки Midnight Commander 4.6.3
По оригинальному адресу модифицированного MC нет, берём с сайта
cd ~/tmp wget http://sudouser.com/mc-4.6.3-r504.tar.bz2 tar xfp mc-4.6.3-r504.tar.bz2
Особенность (!) – в качестве “Screen library” используем не mcslang, а slang
cd ~/tmp cd mc-4.6.3-r504 ./configure --with-screen=slang --with-libiconv-prefix=/usr/local Configuration: Screen library: S-Lang library (installed on the system) Enable support for utf-8: yes Enable support for charset: yes make -j 4 && sudo make install
Информация по сборке:
ole-mac:mc-4.6.3-r504 ctrld$ /usr/local/bin/mc -V GNU Midnight Commander 4.6.3 Virtual File System: tarfs, extfs, cpiofs, ftpfs, fish, smbfs With builtin Editor Using system-installed S-Lang library with terminfo database With subshell support as default With support for background operations With mouse support on xterm With internationalization support With multiple codepages support Data types: char 8 int 32 long 64 void * 64 off_t 64 ecs_char 8
Наслаждаемся нормальным отображением русских букв:
Midnight Commander 4.7.0 Pre 3
На сайте
cd ~/tmp wget http://www.midnight-commander.org/downloads/14 mv 14 mc-4.7.0-pre3.tar.bz2 tar xfp mc-4.7.0-pre3.tar.bz2 cd mc-4.7.0-pre3 ./configure --with-screen=slang --with-libiconv-prefix=/usr/local --with-slang-includes=/usr/local --with-slang-libs=/usr/local Configuration: Screen library: S-Lang library (installed on the system) Support for charset: yes make -j 4 && sudo make install
Информация по сборке:
ole-mac:mc-4.7.0-pre3 ctrld$ /usr/local/bin/mc -V GNU Midnight Commander 4.7.0-pre3 Virtual File System: tarfs, extfs, cpiofs, ftpfs, fish With builtin Editor Using system-installed S-Lang library with terminfo database With subshell support as default With support for background operations With mouse support on xterm With internationalization support With multiple codepages support Data types: char 8 int 32 long 64 void * 64 off_t 64 ecs_char 8
И эта версия нормально отображает русский текст:
Порты
Можно поменять “Screen library” в порту mc с ncurses на slang, однако это не работает. Приведу описание процесса просто для сведения.
$ cd /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/mc $ sudo cp Portfile Portfile.dist $ sudo chown ctrld Portfile $ cat Portfile.dist | sed 's/--with-screen=ncurses/--with-screen=slang/' > Portfile
Ставим slang, gettext и libiconv
$ sudo port install slang2 $ sudo port install gettext $ sudo port install libiconv $ sudo port -dv install mc
Информация по сборке
bash-3.2$ /opt/local/bin/mc -V GNU Midnight Commander 4.6.1 Using system-installed S-Lang library with terminfo database With internationalization support ...
Выводы
Штатная версия Midnight Commander из MacPorts некорректно отображает русские буквы в именах файлов. Решение я продемонстрировал – можно использовать либо отдельную сборку MC 4.6.3, либо версию 4.7.0pre3, они обе работают нормально. Я остановился на последней.