yum встановити в будинку користувача для не-адміністраторів


51

Я користувач без адміністратора у великій комп'ютерній системі. Мені потрібні кілька оновлених пакетів, які не встановлені в системі. Я хочу використовувати yum, щоб встановити їх. Чи можу я використовувати користувач без доступу до sudo, адміністратора чи кореневого доступу для встановлення пакунків у своєму домашньому каталогу? Я завжди можу використовувати make з джерел, але вміння використовувати yum полегшить життя.


1
за винятком випадків, якщо у yum binary є suid root (шанси на це невеликі).
h3rrmiller

1
@ h3rrmiller, але чи є менеджер пакунків, який може встановлювати програми в $ HOME, а значить, не вимагає доступу до sudo? Я знаю, що MacPorts на OSX може це зробити. Які такі варіанти для Linux?
highBandWidth

Відповіді:


8

Більшість двійкових файлів складені для встановлення в певні місця під /.

Є не-кореневі менеджери пакунків, такі як префікс Gentoo та GooLinux Rootless і, можливо, 0встановити .

Як ви вже говорили, компіляція самостійно полегшить цю проблему або використовуючи chroot. Однак вашою найбільшою перешкодою при хронуванні будуть передумови та посилання на об'єкти, що діляться з ядром.


10
Chroot тут не є варіантом. Потрібно мати корінь до chroot.
Марко

38

Замість використання yumзнайдіть потрібні rpms та завантажте їх. Ви все одно не можете встановити їх безпосередньо, не використовуючи root, але пакети RPM - це фактично фантазійні файли .cpio, і ви можете розпакувати їх вміст. Найпростіший спосіб зробити це, мабуть, через mcфайловий браузер ("командир опівночі") (один із найбільших програм програм коли-небудь), який дозволяє переглядати вміст .rpmі копіювати файли прямо з нього.

rpm2cpioЦе означає, що ви можете перетворити його в .cpio, потім cpioвитягнути файли всередину і розмістити їх у потрібних місцях. Обидва вони вже будуть встановлені в системі redhat або fedora. Ось приклад встановлення "xsnow" (напевно, ви хочете зробити це в порожній каталозі):

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

Зверніть увагу, що я знайшов .rpm, відповідний моїй системі, fc17 x86_64. Це важливо, оскільки це попередньо складені бінарні файли, пов’язані з іншими компонентами. Тепер витягніть .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...

Якщо я переглянув це дерево каталогів, все, що мені потрібно, є, крім деяких метаінформацій, які можуть допомогти мені вирішити залежності. Це можна знайти за допомогою 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

Досить впевнений, у мене вже є всі ці речі. Отже, тепер все, що мені потрібно зробити, - це поставити виконуваний файл xsnow у мій $ PATH, який вже містить бін у моєму домашньому каталозі:

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

Віола! Тепер я не можу вводити xsnowі нічого дивитись, оскільки, як виявляється, xsnow не дуже добре грає з KDE :( але, сподіваюся, суть цього процесу зрозуміла. Мені нічого не потрібно було робити поза домашнім каталогом.

Якщо вам потрібно встановити бібліотеки, вам також потрібно створити каталог вдома для них і додати до ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib

@siamii Ну, у вас є краща відповідь?
Марцін

5
Добре, а як же хтось зробить інструмент для створення файлів cpio, а потім скопіюйте все у некореневу папку, наприклад ./usr/bin до $ PREFIX / usr / bin тощо, а також рекурсивно перевіряйте та встановлюйте залежності.
highBandWidth

2
Через два з половиною роки дякую за корисну відповідь. Це можна зробити в одному рядку за допомогою: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Ларрі Енгхолм

1
Я використовую це вже більше 2 років на своєму офісному комп’ютері, і це працює як шарм кожен раз. Я хочу висловити щиру подяку тобі. Я б хотів, щоб ІТ мого університету був таким же компетентним.

Кожен раз, виконуючи це, я стикаюсь із символьним посиланням Cannot на '...': дозвіл відхилено чи cpio: ....: не вдається відкрити: дозвіл відхилено, чи є спосіб виправити це? Зауважте, що я створюю ці файли без sudo, але потім мені чомусь потрібно використовувати sudo для їх видалення
Phylliida
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.