Установка пакета локально для пользователя - лучшие практики?

18

Я хочу установить Git локально для пользователя на сервере RHEL (у меня нет доступа с правами root). Каков ваш самый чистый / наиболее организованный способ установки программного обеспечения для локальной учетной записи пользователя?

  • Установка всего в домашнем каталоге этого пользователя?
  • Как будет выглядеть макет каталога?
  • Вы бы установили из источника или RPM?
  • Если из RPM вы бы использовали YUM или RPM?
wiredin
источник

Ответы:

17

Существуют способы установки rpms в пользовательский каталог с использованием rpm, но я не верю, что это просто. Я не верю, что есть способ yum.

Моя стандартная практика стала собирать из источника в localкаталог в моем доме

$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include

Я загружаю исходный код, как если бы у /usr/localменя был root, например, в ~/local/git.

При компиляции я устанавливаю префикс в localкаталог

$ configure --prefix=/home/user_name/local
$ make
$ make install

Затем я добавляю ~/local/binк своему $ PATH в .bash_profile.

Конечно, проблема с установкой из исходного кода заключается в том, что вы не получаете автоматического разрешения зависимостей. Если вы обнаружите, что вам нужно установить зависимости, скомпилируйте и установите их, как указано выше. Затем, когда вы компилируете git, вам нужно обновить флаги компиляции, чтобы они смотрели в правильном месте для библиотек зависимости и включаемых файлов:

./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'
DRS
источник
Это сработало отлично, спасибо за совет!
wiredin
13

Файл .rpm на самом деле является формой cpioархива, который во многом похож на простую форму tar. rpm2cpioУтилита, вероятно , установлен в системе и не требует привилегий использования; он пишет в стандарт, чтобы преобразовать:

rpm2cpio whatever.rpm > whatever.cpio

Там это man cpioвы можете посмотреть на себя, но и то , что теперь вы хотите сделать , это кормить архив в CPIO в «экземпляре» режиме:

cat whatever.cpio | cpio -i

Весьма вероятно, что материал организован в дерево каталогов, поэтому файлы помещаются в соответствующие места (bin и т. Д. И т. Д.). Если их нет в вашем pwd, вы получите сообщение об ошибке, но в нем будут перечислены файлы в архиве (вы можете получить то же самое с ключом -t/ --list). Если вы хотите создать каталоги автоматически, используйте -d. Итак, быстрый способ распаковать об / мин:

rpm2cpio whatever.rpm | cpio -i -d

Вы можете использовать это для установки в $ HOME. Единственная проблема будет в том, что программа ожидает что-то найти /etcи т. Д., Поскольку многие вещи имеют жестко запрограммированное место установки для любой цели, когда они компилируются.

Построение из исходного кода, вероятно, является лучшим вариантом (поскольку вы можете указать правильное местоположение), но если вы можете заставить это работать в любом случае, тогда это быстро и просто.

Кроме того, файловый браузер midnight commander ( mc) и, возможно, другие файловые браузеры, кроме того, позволят вам перемещаться по иерархии rpm или cpio (или сжатого tar, или zip) и копировать отдельные файлы, как если бы архив был распакован (он создает временная файловая система для просмотра содержимого архива).

лютик золотистый
источник
0

Это альтернатива (не использующая yum), и разрешение будет дурацким, но chownвпоследствии вы можете обратиться к целевому пользователю: - также это удар или промах :-(

#-## Download all dependency for the RPM -- 
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash

#-## Install all downloaded to an alternate root 
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*

Затем добавьте соответствующие места на вашем пути.

Калпеш Патель
источник