Czy można używać RPM bez dostępu do roota?
Czy można używać RPM bez dostępu do roota?
Odpowiedzi:
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.
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.
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
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:
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.
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.
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
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.
rpm
polecenia bez dostępu do sudo / root.