mniam zainstalować w domu użytkownika dla nie-administratorów

51

Jestem użytkownikiem niebędącym administratorem na dużym systemie komputerowym. Potrzebuję aktualnych pakietów, które nie są zainstalowane w systemie. Chcę użyć yum, aby je zainstalować. Czy jako użytkownik bez dostępu sudo, admin lub root, mogę używać zarządzania pakietami do instalowania pakietów w moim katalogu domowym? Zawsze mogę używać make ze źródeł, ale możliwość korzystania z yum ułatwi życie.

wysoka przepustowość
źródło
1
nie, chyba że plik binarny yum jest suid root (szanse na to są niewielkie).
h3rrmiller
1
@ h3rrmiller, ale czy istnieje jakiś menedżer pakietów, który może instalować programy w $ HOME, a zatem nie wymaga dostępu sudo? Wiem, że MacPorts na OSX może to zrobić. Jakie są takie opcje dla systemu Linux?
highBandWidth

Odpowiedzi:

8

Większość plików binarnych jest kompilowanych do zainstalowania w określonych lokalizacjach /.

Istnieją menedżery pakietów innych niż root, takie jak Prefiks Gentoo i GoboLinux bez rootowania i może 0install .

Jak powiedziałeś, samodzielne skompilowanie rozwiązania tego problemu lub użycie chroota. Jednak największą przeszkodą w chrootowaniu będą warunki wstępne i połączenie z obiektami współdzielonymi przez jądro.

h3rrmiller
źródło
10
Chroot nie jest tutaj opcją. Musisz być rootem dla chroot.
Marco
38

Zamiast używać yum, znajdź żądane RPM i pobierz je. Nadal nie możesz zainstalować ich bezpośrednio bez roota, ale pakiety RPM są tak naprawdę fantazyjnymi plikami .cpio i możesz rozpakować ich zawartość. Najłatwiejszym sposobem na to jest prawdopodobnie mcprzeglądarka plików („midnight commander”) (jedno z największych programów w historii), która pozwala przeglądać zawartość .rpmi kopiować pliki bezpośrednio z niej.

Poza tym możesz użyć go rpm2cpiodo konwersji na .cpio, a następnie cpiodo wyodrębnienia plików i umieszczenia ich we właściwych miejscach. Oba zostaną już zainstalowane w systemie redhat lub fedora. Oto przykład instalacji „xsnow” (prawdopodobnie chcesz to zrobić w pustym katalogu):

»rpm2cpio xsnow-1.42-17.fc17.x86_64.rpm > xsnow.cpio

Zauważ, że znalazłem .rpm odpowiedni dla mojego systemu, fc17 x86_64. Jest to ważne, ponieważ są to wstępnie skompilowane pliki binarne połączone z innymi komponentami. Teraz wypakuj .cpio:

»cpio -idv < xsnow.cpio 
./usr/bin/xsnow
./usr/share/doc/xsnow-1.42
./usr/share/doc/xsnow-1.42/README
./usr/share/man/man6/xsnow.6.gz
212 blocks
Press any key to continue...

Gdy przeglądam to drzewo katalogów, tam wszystko, czego potrzebuję, oprócz niektórych meta-informacji, które mogą pomóc mi rozwiązać zależności. Można to znaleźć za pomocą rpm -q -p [package] --[query]:

»rpm -q -p xsnow-1.42-17.fc17.x86_64.rpm --requires
warning: xsnow-1.42-17.fc17.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID d2382b83: NOKEY
libX11.so.6()(64bit)  
libXext.so.6()(64bit)  
libXpm.so.4()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1

Jestem pewien, że mam już wszystkie te rzeczy. Więc teraz wszystko, co muszę zrobić, to umieścić plik wykonywalny xsnow w mojej $ PATH, która już zawiera bin w moim katalogu domowym:

»cp ./usr/bin/xsnow ~/bin

Altówka! Teraz nie mogę xsnownic pisać i oglądać, bo jak się okazuje, xsnow nie działa dobrze z KDE :(, ale mam nadzieję, że pierwsza część procesu jest czysta. Nie musiałem nic robić poza moim katalogiem domowym.

Jeśli musisz zainstalować biblioteki, musisz również utworzyć dla nich katalog domowy i dodać ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib
Złotowłosa
źródło
@siamii Cóż, czy masz lepszą odpowiedź?
Marcin,
5
Ok, więc może ktoś stworzy narzędzie do tworzenia plików CPIO, a następnie skopiuje wszystko do folderu innego niż root, takiego jak ./usr/bin do $ PREFIX / usr / bin itp., A także rekurencyjnie sprawdzi i zainstaluje zależności.
highBandWidth
2
Dwa i pół roku później dziękuję za pomocną odpowiedź. Możesz to zrobić w jednym wierszu za pomocą: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Larry Engholm
1
Używam tego od ponad 2 lat na komputerze biurowym i za każdym razem działa jak urok. Chcę ci wyrazić szczerą wdzięczność. Chciałbym, aby informatyka mojego uniwersytetu była równie kompetentna.
Co jakiś czas robiąc to, napotykam link Cannot do „...”: Odmowa uprawnień lub cpio: ....: Nie można otworzyć: Odmowa uprawnień, czy istnieje sposób, aby to naprawić? Zauważ, że tworzę te pliki bez sudo, ale z jakiegoś powodu muszę użyć sudo, aby je odinstalować
Phylliida,