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


11

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

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


serverfault.com/questions/23734 може бути досить подібним, щоб допомогти. Більшість відповідей передбачає встановлення ефективної цілої системи у вашому homedir, але це можна вирішити в префіксі Gentoo та Gootless Gobo.
ефеміент

Відповіді:


14

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

  • Створіть каталог ~ / usr і під ним включіть, lib та bin каталоги.
  • У свій .profile, .bashrc або інший скрипт init скрипту додайте таке (або еквівалент у діалекті вашої оболонки):
    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

Ця домовленість працювала для мене в більшості ситуацій, коли мені потрібно було будувати речі в просторі користувачів. Найважча частина - це пошук і побудова всіх необхідних вам залежностей, але це просто потребує певного або розумного використання функцій «отримати джерело» менеджера пакунків.


Мені не дуже вдалося. Сценарій налаштування, схоже, не знаходить нічого в ~ / usr
postfuturist

У мене була така ж проблема @postfuturist. Я закінчив виправити це, використовуючи ${HOME}замість ~всіх моїх експортних дзвінків, і тоді pkg-config був задоволений і зміг знайти мої встановлені користувачем бібліотеки та пакети.
фіат

3

Зазвичай ви повинні мати змогу повторно налаштувати та змінити код, щоб визначити нове місце у вашому домашньому каталозі чи інший шлях для всіх бібліотек та програм ...

Але, IMHO, найпростіший спосіб (якщо у вас багато місця) - використовувати chroot у підкаталозі з усім встановленим у ньому дистрибутивом Linux. З cuorse як звичайного користувача ви не можете використовувати chroot , але ви можете використовувати ці чудові інструменти: fakechroot та fakeroot

Для створення файлової системи chroot я люблю розгорнути каталог з Debian (або будь-яким похідним Debian, як ubuntu) за допомогою утиліти debootstrap .

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

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

Якщо вам потрібно більше деталей, я думаю, що у мене був десь сценарій, щоб все це зробити.


2

Іншим рішенням цієї проблеми є використання префікса Gentoo, як це роблять користувачі MacOSX та інша платформа (solaris, AIX).

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

Він буде компілювати стек Gentoo (з portage) у $ PREFIX. Він використовує пакети Gentoo, більшість пакетів підтримує використання цих параметрів.

Portage буде відслідковувати всі залежності, у вас буде остання версія програмного забезпечення, вона перевірена громадою ...


1

Якщо prefix=/home/foo/usrце не працює, спробуйте:

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.