Не, если Вы не заботитесь о том, где это установлено. Используя предварительно созданные двоичные файлы будет хорошо работать, если они будут статически связаны, или у Вас уже есть все соответствующие библиотеки (запрашиваемых версий) в системе. RPMs в целом статически не связаны, но они действительно содержат информацию о зависимостях, таким образом, Вы могли проверить, есть ли у Вас все предпосылки прежде, чем идти далее.
В то время как я уверен Ваша установка поддержек диспетчера пакетов на другом префиксе (например, $HOME, где у Вас есть полный доступ для записи), это может все еще хотеть записать метаданные, журналы и других в системные пути. В этом случае можно все еще попробовать ручной путь путем преобразования файла в нормальный tarball. Выезд rpmunpack
или rpm2targz
сделать это. Я просто надеюсь, что у Вас уже есть любой в системе.;)
какие 2 команды?
/usr/bin/java
- мягкая (символическая) ссылка на /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
Разницы нет, так как это один и тот же файл.
Если вы наберете что-то вроде
ls -l /usr/bin/java
, вы можете получить результат, например:
lrwxrwxrwx. 1 root root 22 Aug 5 17:01 /usr/bin/java -> /etc/alternatives/java
, что означает, что вы можете иметь несколько java-версий на вашей системе и использовать альтернативы для изменения версии по умолчанию. В противном случае Вы можете просто добавить и удалить ссылки для изменения версии по умолчанию вручную.
Для создания символических ссылок используйте команду
ln -s /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java /usr/bin/java
Или в общем виде
ln -s <original file> <link to file>
И используйте rm
, чтобы удалить ссылку, так как вы удалите любой другой файл.
canonicalize a path by follow every symlink in every component of the given name recursively; all but the last component must exist
для исполняемого файла или скрипта в каталогах, перечисленных в переменной окружения PATH, используя тот же алгоритм, что и bash(1)
который
не заботится о том, является ли то, что он находит, симлинкией или нет: только то, что он исполняемый. Это гарантирует, что путь, который она распечатает, всегда будет внутри одного из каталогов в PATH
.
В вашей системе, /usr/bin/java
является symlink к /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
. При таком объединении двух команд вы заменяете выводом , который
в командной строке считывает ссылку -f
для создания:
readlink -f /usr/bin/java
То есть , который
нашел, где первый исполняемый файл с именем java
находится в вашем PATH
, и оболочка вставила этот путь в качестве аргумента к readlink -f
. Затем readlink
ищет путь вверх и находит, что это символическая ссылка link, и таким образом решает эту ссылку (и любые другие, которые она находит), чтобы получить полный прямой путь к самому файлу.
Почти для всех целей эти пути будут вам взаимозаменяемы - сим-ссылка java
будет автоматически разрешена в реальный путь при ее использовании, и изменения в самом файле будут сделаны вашим менеджером пакетов, а не вами, так что вам никогда не придется его видеть. Вы можете запустить программу по любому из двух путей, или только с помощью java
, и результат будет точно таким же, потому что это тот же самый реальный исполняемый файл, который запускается в конце.
Менеджер пакетов будет использовать symlink вместо того, чтобы помещать реальный файл внутрь /usr/bin
, потому что JRE имеет целый набор файлов, которые ему нравятся друг другу в необычных конфигурациях, а symlink позволяет менеджеру пакетов представить вам, как пользователю, нормально выглядящую компоновку. Внутри /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
будет много других файлов, с которыми у вас никогда не будет причин иметь дело, и которые не участвуют в обычных библиотечных аранжировках системы.