Ответ зависит много от типа и формата файлов, которые Вы сравниваете.
Если файлы, которые Вы сравниваете, являются отсортированными текстовыми файлами, то инструмент GNU, записанный Richard Stallman и позвонившим Davide McKenzie comm
может выполнить фильтрацию, Вы после. Это - часть coreutils.
Скажите, что у Вас есть следующие 2 файла:
$ cat a
1
2
3
4
5
$ cat b
1
2
3
4
5
6
Строки в файле b
это не находится в файле a
:
$ comm <(sort a) <(sort b) -3
6
Большинство двоичных файлов компилируется, чтобы быть установленным в определенные местоположения под /
.
Существуют некорневые диспетчеры пакетов как хинду Префикс и Беспочвенный GoboLinux и возможно 0install.
Поскольку Вы сказали, что компиляция себя облегчит ту проблему или использование chroot. Однако Ваше самое большое препятствие с chrooting будет предпосылками и соединением с общими объектами ядра.
Вместо того, чтобы использовать yum
, найдите rpms, Вы хотите и загружаете их. Вы все еще не можете установить их непосредственно, не будучи корнем, но RPM-пакеты являются на самом деле необычными .cpio файлами, и можно распаковать их содержание. Самый легкий способ сделать это, вероятно, через mc
("полуночный командующий") файловый браузер (одна из самых больших частей программного обеспечения когда-либо), который позволяет Вам просматривать содержание .rpm
и файлы копии прямо из него.
Без этого можно использовать rpm2cpio
преобразовать его в .cpio, затем cpio
извлечь файлы внутри и поместить их в правильные места. Оба из них будут уже установлены в фетровой системе или Redhat. Вот пример, устанавливающий "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
Viola! Теперь я могу ввести xsnow
и ничего не наблюдайте, так как как оказалось, xsnow не играет хорошо с KDE :( но надо надеяться jist процесса ясен. Я ничего не должен был делать вне своего корневого каталога.
Если необходимо установить библиотеки, необходимо будет создать каталог в доме для них также и добавить к ~/.bashrc
:
export LD_LIBRARY_PATH=/home/you/lib