yum установить в дом пользователя для не-администраторов

51

Я не являюсь администратором в большой компьютерной системе. Мне нужны некоторые современные пакеты, которые не установлены в системе. Я хочу использовать yum для их установки. Как пользователь без прав sudo, admin или root, могу ли я использовать управление пакетами для установки пакетов в моем домашнем каталоге? Я всегда могу использовать make из источников, но возможность использовать yum сделает жизнь проще.

высокая пропускная способность
источник
1
нет, если бинарный файл yum не является suid root (шансы на это невелики).
h3rrmiller
1
@ h3rrmiller, но есть ли менеджер пакетов, который может устанавливать программы в $ HOME и, следовательно, не требует доступа sudo? Я знаю, что MacPorts на OSX может это сделать. Какие есть такие варианты для Linux?
highBandWidth

Ответы:

8

Большинство двоичных файлов скомпилированы для установки в определенных местах в /.

Существуют менеджеры пакетов без полномочий root, такие как Gentoo Prefix и Rootless GoboLinux и, возможно, 0install .

Как вы сказали, компиляция самостоятельно облегчила бы эту проблему или использовала chroot. Тем не менее, вашим самым большим препятствием при использовании chroot будут предварительные условия и ссылки на общие объекты ядра.

h3rrmiller
источник
10
Chroot здесь не вариант. Вы должны быть root для 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, который уже содержит bin в моем домашнем каталоге:

»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 на '...': Permission denied или cpio: ....: Cannot open: Permission denied, есть ли способ исправить это? Обратите внимание, что я создаю эти файлы без sudo, но затем по какой-то причине мне нужно использовать sudo для их удаления
Phylliida