Intereting Posts
Диски (в корпусе USB) продолжают просыпаться, даже если они не установлены Значение strange inode с / dev / vzfs Миграция Virsh не удалась с ошибкой «выход из процесса при подключении к монитору» /: это проблема с каталогом в bash Почему проверка SHA256 контрольной суммы с `sha256sum` терпит неудачу на Debian и работает на Ubuntu? Переключение между двумя программами framebuffer Как вызвать файл сценария оболочки с переменным аргументом через python Почему эта команда не удаляет файлы, как ожидалось? Проблема с обновлением Gentoo 3.8.13 x86_64 меньше команда с трубой Как вы можете объединить все строки, которые заканчиваются символом обратной косой черты? Как автоматически создать папку времени выполнения с помощью службы systemd или tmpfiles.d? Как я могу отслеживать потребление каждого потока / потока (разделенное на кучу, стек, данные, код)? Как кота два heredocs? Как настроить постоянную настройку моста iproute2?

Установить файлы разработки локально для создания системы без доступа root?

Существует сервер, на котором я работаю, работая на более ранней версии Linux. У меня нет корневого доступа к системе, поэтому я хотел создать более новую версию инструмента, который я использую много (Vim 7.3). Я решил, что я просто его создам и установлю в ~ / bin. Однако для него требуются файлы разработки ncurses, которые не установлены в системе. Я нашел ncurses-devel rpm и извлек папки «lib» и «include», где бы я их поместил, и как бы я сказал скрипту ./configure найти их, чтобы я мог правильно настроить и построить пакет локально?

Редактирование: я закончил работу над этим, установив идентичную ОС в Virtualbox и создав там пакет и скопировав по двоичным файлам.

Я делал это довольно часто в своей последней работе – решение, которое, казалось, лучше всего работало, заключалось в создании каталога ~ / usr и использовании аргумента -prefix для указания сценариев ./configure в правильном направлении. Вот шаги:

  • Создайте каталог ~ / usr и включите в него каталоги lib и bin.
  • В вашем .profile, .bashrc или другом скрипте инициализации оболочки добавьте следующее (или эквивалентное на диалекте вашей оболочки):
export PATH=$PATH:~/usr/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include 
  • При создании пакетов используйте ./configure --prefix=/home/<username>/usr

Эта схема работала для меня в большинстве ситуаций, когда мне нужно было создавать вещи в пользовательском пространстве. Самая сложная часть – это поиск и построение всех зависимостей, которые вам нужны, но это просто требует некоторого поиска или разумного использования функций «получить исходный код» вашего менеджера пакетов.

Обычно вы должны иметь возможность повторно настраивать и изменять код для определения нового местоположения в вашем домашнем каталоге или другом пути для всех библиотек и программ …

Но, ИМХО, самый простой способ (если у вас много места) – использовать chroot в подкаталоге со всем дистрибутивом linux, установленным в нем. Из cuorse как обычный пользователь вы не можете использовать chroot , но вы можете использовать эти замечательные инструменты: fakechroot и fakeroot

Чтобы создать файловую систему chroot, мне нравится разворачивать каталог с Debian (или любой девайс Debian, такой как ubuntu), используя утилиту debootstrap .

Таким образом, процедура проста (я не буду входить в технические подробности, читайте руководства по эксплуатации):

  • Получить и установить: инструменты fakeroot, fakechroot и debootstrap
  • создайте подкаталог с помощью debootstrap (я смог выполнить это только как root. Вы можете сделать это на другом компьютере и скопировать файлы в случае необходимости)
  • Выполнить: fakechroot fakeroot chroot mydebian-dir

Если вам нужна более подробная информация, я думаю, что у меня был сценарий где-то, чтобы сделать все это.

Другим решением этой проблемы является использование префикса Gentoo, поскольку пользователи MacOSX и другая платформа (solaris, AIX):

http://www.gentoo.org/proj/en/gentoo-alt/prefix/

Он скомпилирует стек Gentoo (с портом) в местоположении $ PREFIX. Он использует пакеты Gentoo, большинство пакетов поддерживают использование этих параметров.

Portage будет отслеживать все зависимости, у вас будет последняя версия программного обеспечения, она была протестирована сообществом …

Если prefix=/home/foo/usr не работает, попробуйте:

 CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure