Lokalna instalacja pakietu dla użytkownika - najlepsze praktyki?

18

Chcę zainstalować Git lokalnie dla użytkownika na serwerze RHEL (nie mam dostępu do konta root). Jaki byłby twój najczystszy / najlepiej zorganizowany sposób instalowania oprogramowania na lokalnym koncie użytkownika?

  • Instalujesz wszystko w katalogu domowym użytkowników?
  • Jak wyglądałby układ katalogu?
  • Czy zainstalowałbyś się ze źródła lub RPM?
  • Jeśli z RPM użyłbyś YUM lub RPM?
wiredin
źródło

Odpowiedzi:

17

Istnieją sposoby instalacji rpms w katalogu użytkownika przy użyciu rpm, ale nie sądzę, że jest to proste. Nie wierzę, że jest na to sposób yum.

Moja standardowa praktyka polegała na kompilacji ze źródła do localkatalogu w moim domu

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

Pobieram źródło tak, jakbym to robił, /usr/localkiedy mam root, np ~/local/git.

Podczas kompilacji ustawiam prefiks do localkatalogu

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

Następnie dodaję ~/local/bindo mojej $ PATH w .bash_profile.

Oczywiście problem z instalacją ze źródła polega na tym, że nie można uzyskać automatycznego rozwiązania zależności. Jeśli okaże się, że musisz zainstalować zależności, skompiluj je i zainstaluj jak wyżej. Następnie podczas kompilacji gitmusisz zaktualizować flagi kompilacji, aby wyglądały we właściwej lokalizacji dla bibliotek zależności i zawierały pliki:

./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'
dr
źródło
To działało idealnie, dziękuję za radę!
wiredin
13

Plik .rpm jest tak naprawdę formą cpioarchiwum, która jest bardzo podobna do prostej formy tar. rpm2cpioNarzędzie jest prawdopodobnie zainstalowany w systemie i nie wymaga uprawnień do używania; wypisuje na standardowe wyjście, więc aby przekonwertować:

rpm2cpio whatever.rpm > whatever.cpio

Tam man cpiomożna spojrzeć na siebie, ale to, co chcesz teraz zrobić, to karmić do archiwum cpio w „kopii w trybie”:

cat whatever.cpio | cpio -i

Najprawdopodobniej pliki są zorganizowane w drzewo katalogów, dzięki czemu pliki trafiają do odpowiednich lokalizacji (bin itp.). Jeśli nie ma ich w twoim pwd, pojawi się błąd, ale spowoduje to wyświetlenie listy plików w archiwum (możesz uzyskać to samo za pomocą przełącznika -t/ --list). Jeśli chcesz automatycznie utworzyć katalogi, użyj -d. Tak szybki sposób na rozpakowanie rpm:

rpm2cpio whatever.rpm | cpio -i -d

Możesz użyć tego, aby zainstalować w $ HOME. Jedynym problemem będzie to, czy program spodziewa się znaleźć rzeczy /etcitp., Ponieważ wiele rzeczy ma ustaloną lokalizację instalacji w dowolnym celu podczas kompilacji.

Budowanie ze źródła jest prawdopodobnie lepszą opcją (ponieważ możesz podać prawidłową lokalizację), ale jeśli możesz sprawić, że zadziała w każdym przypadku, jest to szybkie i proste.

Ponadto przeglądarka plików midnight commander ( mc) i prawdopodobnie inne przeglądarki plików pozwalają na nawigację w hierarchii rpm lub cpio (lub skompresowanej tar lub zip) i kopiowanie pojedynczych plików, tak jakby archiwum zostało rozpakowane (tworzy tymczasowy system plików do przeglądania z zawartością archiwum).

Złotowłosa
źródło
0

Jest to alternatywa (nieużywanie yum), a pozwolenie będzie zwariowane, ale możesz chownpóźniej docelowemu użytkownikowi: - także jest trafieniem lub chybieniem :-(

#-## 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/*

Następnie dodaj odpowiednie lokalizacje do swojej ścieżki.

Kalpesh Patel
źródło