1

mc (Midnight Commander) в Kubuntu 9.10 (Karmic Koala) имеет проблему с доступом к .zip и другим архивам в качестве виртуальной файловой системы. Это связано с измененным форматом вывода из unzip . Обсуждения предлагают обходной путь, но для этого требуется системный (т.е. root) доступ к файлам; мой рабочий ящик заблокирован.

У меня дома есть Ubuntu (без K) 9.10, и я скачал пакет с исходным кодом и произвел изменение кода, что является ужасным хаком (я бы не мечтал опубликовать), что позволило бы мне запустить свою собственную правильно работающую копию mc в подкаталог моего $HOME . Увы, мой "дома" блок настроен по-разному, как с точки зрения процессора (ов) и KDE против Gnome; перенесенный исполняемый файл mc немедленно завершается с bus error .

Вопрос, тогда:

Дано

  • окно Ubuntu, которое я полностью контролирую,
  • не root на коробке KUbuntu, в которой есть make и gcc и некоторые другие инструменты, но не полный набор инструментов разработки, такой как материал под config
  • возможность скачивать любые нужные мне пакеты
  • возможность создавать и копаться в моем собственном дереве $ HOME

Как я могу создать mc который будет работать на моей заблокированной коробке Kubuntu?

2 ответа2

3

Поскольку mc собирается с помощью autotools, вы можете настроить пакет таким образом, чтобы он устанавливался не в систему, а в пользовательский каталог, доступный для записи вами. Вы делаете это, предоставляя дополнительные опции для вызова ./configure вы выпускаете. Чтобы увидеть все доступные варианты сборки, запустите

./configure --help

Волшебная пуля здесь - это используемая переменная PREFIX : она (примерно) сообщает процессу сборки, где устанавливаются все ваши программы и файлы поддержки. Это можно отрегулировать дальше.

Когда я собираю и устанавливаю как пользователь, я обычно устанавливаю в PREFIX в $HOME/bin/progname.dir , в то время как исполняемые файлы идут прямо в $HOME/bin , так что для вашего случая

./configure --prefix=$HOME/bin/mc.dir --bindir=$HOME/bin

а потом

make install

В вашем файле .profile вы должны обновить $PATH , добавив в нее строку $HOME/bin/ , добавив строку вроде

export PATH=$HOME/bin:PATH
0

Успех! Это обратная связь для тех, у кого есть похожие проблемы.

Как полезно объяснил honk , configure может помочь вместе с некоторыми опциями. Я обнаружил, что этого было недостаточно: мне пришлось вручную изменить ссылки с ./config/ на config.sub , config.guess , install-sh и missing .

После этого у меня было много проблем с configure чтобы найти мой glib 2.0 . Оказывается, что configure вызывает chk-config и у этого есть несколько различных способов найти glib , ни один из которых не работал. Я вручную искал материал, который он пытался найти, и обнаружил, что glib-2.0.pc действительно доступен. Я мог бы заставить chk-config найти его, указав PKG_CONFIG_PATH в каталог, содержащий все эти файлы .pc .

Я написал крошечный сценарий оболочки, чтобы обеспечить configure со всеми необходимыми переменными и параметрами среды. Вот:

#!/bin/bash
my_root=/home/carl/MC
export PKG_CONFIG=$my_root/usr/bin/pkg-config
export PKG_CONFIG_PATH=$my_root/usr/lib/pkgconfig
OPTS=""
OPTS="$OPTS --disable-glibtest"
OPTS="$OPTS --enable-extcharset"
OPTS="$OPTS --enable-netcode"
OPTS="$OPTS --enable-charset"
# OPTS="$OPTS --with-glib-static"
# OPTS="$OPTS --with-glib-12=no"
./configure --prefix=$my_root $OPTS

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .