rpm bez rootowania

12

Czy można używać RPM bez dostępu do roota?

David Nehme
źródło

Odpowiedzi:

2

W zależności od zawartości pakietu możesz po prostu wyodrębnić zawartość rpm i użyć jej gdzieś z katalogu domowego. Nawet jeśli nie jest oznaczony jako relokowalny. Jeśli pliki binarne w pakiecie mają zakodowane ścieżki, lub jeśli aplikacja wymaga dostępu do konta root, może to nie być możliwe.

Zoredache
źródło
1
jest to w rzeczywistości niepoprawne, nie można uruchomić rpmpolecenia bez dostępu do sudo / root.
8

Istnieje wiele odpowiedzi sugerujących przemieszczalne pakiety. Opcja relokacji służy administratorom do wyboru miejsca docelowego (na przykład miejsca docelowego be / opt zamiast / usr / local) i nie jest tak naprawdę dla uprawnień użytkownika.

Chociaż możliwe jest obejście niektórych problemów związanych z uprawnieniami przy użyciu tej metody, głównym problemem jest to, że podczas wykonywania operacji RPM modyfikuje on bazy danych /var/lib/rpm/__db.*, które są własnością root: root. Tak jak powiedział JPerkSter „krótka odpowiedź = nie”. Najlepszym rozwiązaniem byłoby skonfigurowanie sudo w celu uwzględnienia określonych potrzeb.

Alex
źródło
8

Biorąc pod uwagę wszystkie powyższe kwestie dotyczące relokowalnych kompilacji, możesz spróbować wykonać instrukcje wymienione tutaj .

rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
 --relocate /usr=/home/username/local --nodeps -ivh package.rpm
Lee Gee
źródło
3

Specyfikacja RPM zawiera opcję o nazwie „relocatable”. Jeśli rpm jest zbudowany z włączoną relokowalnością, można go zainstalować w katalogu określonym przez użytkownika za pomocą opcji „--prefix”. Więc przypuszczalnie rpm może być zainstalowany lokalnie bez dostępu administratora, o ile spełnione są dwa warunki:

  1. Pakiet został pierwotnie zbudowany, aby można go było przenieść
  2. Plik binarny „rpm” nie próbuje dodać pakietu do globalnego katalogu systemowego

Ale generalnie nie, potrzebujesz dostępu administratora do zainstalowania RPM. Chociaż istnieje opcja relokacji, prawie nigdy nie widziałem pakietu, który zostałby zbudowany w celu jej obsługi.

Scott Pack
źródło
3

Niektóre pakiety są relokowalne, więc mogą działać poprawnie bez roota, po prostu określ prefiks podczas instalacji: rpm -i my.rpm --prefix = / my / home / folder

Jeśli pakietu nie da się przenieść, nadal możesz wyodrębnić pliki z RPM i spróbować je uruchomić. Możesz wyodrębnić pliki RPM na przykład:

Skopiuj pliki do folderu ~ /, dodaj dodatkowe biblioteki zależności i licz na najlepsze. Nie jest to gwarantowane, ale możesz otrzymać takie pakiety, które nie mogą być relokowane.

Datageek
źródło
2

Możesz zmusić go do zainstalowania w innym katalogu, używając innej ścieżki db. Ponadto prawdopodobnie nie powinieneś uruchamiać żadnych skryptów bezpośrednio bez ich sprawdzenia.

Spowoduje to umieszczenie rpm w bieżącym katalogu i wypakowanie skryptów, abyś mógł je edytować i uruchomić w razie potrzeby.

rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm

rpm --query --scripts -p package.rpm > scripts.txt
użytkownik12722
źródło
2

Tak, ale możesz tego nie chcieć. Użyłem niestandardowych manifestów marionetkowych i pakietów rpm do obsługi oprogramowania w klastrach obliczeniowych, do których nie miałem dostępu do roota. Teoretycznie jest to tak proste jak

rpm --inittb --root /foo 
rpm --dbpath /foo -i bar.rpm

Istnieją jednak dziwactwa w tym, jak to się zachowuje w EL4, EL5 i EL6, więc będziesz potrzebować innego zestawu kroków i opcji dla każdego z nich. Nie mam już pod ręką tych informacji. Te dziwactwa, a także częste problemy z bazą danych RPM (być może z powodu NFS) spowodowały, że żałuję używania rpm.

Sciurus
źródło
1

Możesz budować RPM bez dostępu do roota, po prostu zrób to w swoim katalogu domowym. Jeśli chodzi o instalowanie RPM, powiedziałbym, że krótka odpowiedź = nie.

JPerkSter
źródło
-2

nie jest możliwe niemożliwe rpm bez dostępu root, su lub sudo

Rajat
źródło