Jak mogę zainstalować RPM bez uprawnień użytkownika root?

49

Jak mogę zainstalować RPM na komputerze, na którym nie mam uprawnień roota? Chcę zainstalować pakiet do własnego użytku tylko w osobistym katalogu roboczym. Używam SuSe SLES10.

Proszę, nie rozpalaj mnie słowami: „Ten pomysł jest tak głupi, że nie powinieneś tego robić, ponieważ wszystkie prośby muszą przejść od korporacyjnego boga roota, niech żyje wiecznie”.

Wiem, że mogę poprosić o to korzenia boga, ale zostanę zestrzelony (z nieskazitelnych, nienagannych powodów, jestem pewien ...). Poza tym nigdy nie będzie go instalował, nawet jeśli powie, że to zrobi.

Ross Rogers
źródło
6
To wcale nie jest duplikat. Przesłonięcie ścieżki nie zawsze pozwala nieuprzywilejowanemu użytkownikowi na korzystanie z rpm.
John T
Dzięki HarryMC. Sprawdzę to. Ponadto dodanie linku do drugiego biletu, który według mnie był duplikatem. Może bułka tarta pomoże komuś innemu: superuser.com/questions/160530/override-rpm-install-path
Ross Rogers
Aby uzyskać lepszą przyszłość, spójrz na appimage.org .
Ross Rogers

Odpowiedzi:

56
cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

Zobacz Jak wyodrębnić pakiet RPM bez jego instalowania (polecenie wyodrębnienia rpm) .

harrymc
źródło
2
Zrobiłem to i cpio wydaje się nie robić nic oprócz wypisania „1 bloku”. Czy zrobiłem coś złego?
Nate Parsons
Dzięki. Okazuje się, że udało mi się zainstalować ze źródła, więc nie muszę zawracać sobie głowy RPMami
Nate Parsons,
10
To po prostu rozpakowuje zawartość RPM i zrzuca ją tam, gdzie jesteś. To nie znaczy, że wynik działa (jego konfiguracja nie jest tam, gdzie powinna być, ...)
vonbrand
Chciałbym po prostu dać ci nagrodę za reputację w postaci miłości. Dziękuję Ci!
macetw
3

Jak wyodrębnić zawartość pakietów RPM

export ins=foo-bar.rpm
rpm2cpio $ins | cpio -idv

Jak wyodrębnić tar.gzarchiwum

gzip -dc foo-bar.tar.gz | tar xvf –
cd foo-bar-dir

Jak wyodrębnić tar.gzpakiety do bieżącego katalogu

export file=foo-bar.tar.gz
# Note that `xovf` switch order *matters*
gzip -dc $file | tar -xovf -

Jak budować pliki binarne jako użytkownik inny niż root

./configure --prefix=$HOME && make && make install
Yordan Georgiev
źródło
1

Inną opcją jest instalacja ze źródła, w której zwykle można zmienić katalog instalacyjny za pomocą --prefixprzełącznika.

John T.
źródło
1
Tak zwykle robię, ale liczyłem na więcej automatyzacji.
Ross Rogers,
2
Dla mnie to nie działa, ponieważ próbuje uzyskać blokadę pliku na czymś w / var (i odmowa dostępu).
Nir Friedman
0

Myślę, że „prawdziwą” odpowiedzią na „instalację” rpm bez uprawnień roota jest to, że nie możesz . ALE zakładając, że faktycznie możesz rozpocząć proces instalacji ...

Programy RPM są instalowane przy użyciu listy instrukcji zawartych w pliku specyfikacji (.spec), które zwykle są zgodne z hierarchią systemu plików. Większość ścieżek w tej hierarchii to prawie zawsze ścieżki systemu operacyjnego, a nie ścieżki użytkownika. Więc jeśli twoja nazwa użytkownika nie ma dostępu do wszystkich ścieżek, na których instaluje się RPM, to na pewno się nie powiedzie. Jeśli utworzysz RPM, który poprzedza wszystkie ścieżki /home/me(lub inną własną ścieżką), to zadziała. Wymagałoby to pozyskania pliku src.rpm i wyodrębnienia go, jak wyjaśniono w innych odpowiedziach, a następnie przebudowania. Zanim to zrobisz, możesz po prostu rozważyć uzyskanie dostępu do roota lub zbudowanie oprogramowania od zera (zwykle to, co robisz, jeśli nie planujesz dystrybucji oprogramowania na wiele komputerów).

Są sprytne sztuczki, które pomogą ci w procesie ręcznego budowania. Na przykład możesz wykorzystać zależności już wymienione w RPM, aby uzyskać wszystkie swoje zależności: https://stackoverflow.com/a/13877738/1236128 .

Jonathan Komar
źródło