Установка пакету на локальному рівні для користувача - найкращі практики?


18

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

  • Встановлювати все в домашній каталог користувачів?
  • Як виглядатиме макет каталогу?
  • Ви б встановили з джерела чи RPM?
  • Якщо з RPM ви б використовували YUM чи RPM?

Відповіді:


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'

Це спрацювало чудово, дякую за пораду!
провідний

13

Файл .rpm - це фактично форма cpioархіву, яка дуже схожа на просту форму tar. rpm2cpioУтиліта, ймовірно , встановлений в системі і не вимагає привілеїв використання; він пише в стандартний вид, щоб перетворити:

rpm2cpio whatever.rpm > whatever.cpio

Там це man cpioви можете подивитися на себе, але і то , що тепер ви хочете зробити , це годувати архів в CPIO в «екземплярі» режимі:

cat whatever.cpio | cpio -i

Дуже ймовірно, що матеріал організований у дерево каталогів, щоб файли переходили у відповідні місця (бін тощо) тощо. Якщо їх у вашому pwd не існує, ви отримаєте помилку, але це буде список файлів в архіві (ви можете отримати те ж саме за допомогою -t/ --listswitch). Якщо ви хочете створити каталоги автоматично, використовуйте -d. Отже, швидкий спосіб розпакувати обертів:

rpm2cpio whatever.rpm | cpio -i -d

Ви можете використовувати це для встановлення в $ HOME. Єдина проблема буде в тому випадку, якщо програма розраховує знайти речі /etcтощо, оскільки багато речей мають жорстке кодування свого місця встановлення з будь-якою метою, коли вони складаються.

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

Крім того, браузер файлів команди опівночі команди команди ( 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/*

Потім додайте відповідні місця до свого шляху.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.