Как собрать mc для kubuntu без рут-доступа?

1488
Carl Smotricz

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?

1

2 ответа на вопрос

3
Benjamin Bannier

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

./configure --help 

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

Когда я собираю и устанавливаю как пользователь, я обычно устанавливаю в PREFIXin $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 
Спасибо! Я попробую завтра. Я немного волнуюсь за "GLIB". В моей системе есть некоторые `.so` GLIB 2.0, но нигде нет` glib-config`. Carl Smotricz 14 лет назад 0
Убирайся! У меня все еще есть проблемы. `configure` вызывает` chk-config` и ищет GLIB. Он хочет `glib-config` и не может его найти. Я сделал отдельный вопрос об этом: http://superuser.com/questions/115671/where-to-get-glib-config-for-kubuntu Carl Smotricz 14 лет назад 0
Хорошо, я получил это работает. Смотрите мой ответ для деталей. Тем не менее, вы хорошо меня начали, так что вот мой флажок для вас. Спасибо! Carl Smotricz 14 лет назад 0
0
Carl Smotricz

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

Как услужливо объяснил гудок, 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 

Похожие вопросы