/usr/bin/realpath не найден в Centos 6.5

Я пытаюсь набрать 'realpath' в CentOS 6.5. Но, похоже, не установлено. Я проверил это содержится в coreutils (archlinux). Я дважды проверяю пакет coreutils, предоставляемый CentOS, в нем отсутствует /usr/bin/realpath. Я не хочу устанавливать сторонние rpm, такие как " http://pkgs.org/centos-6/repoforge-x86_64/realpath-1.17-1.el6.rf.x86_64.rpm.html".

Я сделал yum search realpath, не могу его найти. Утилита содержится в другом пакете? Или просто быть удаленным по соображениям безопасности?

4 ответа

Решение

realpath это очень полезный инструмент, однако большинство его функций уже readlink, realpath Страница руководства гласит:

Обратите внимание, что в основном та же функциональность обеспечивается опцией '-e' команды readlink(1).

И readlink Страница руководства гласит:

-e, --canonicalize-существующие: канонизировать, рекурсивно следуя каждой символической ссылке в каждом компоненте данного имени, все компоненты должны существовать.

readlink команда была добавлена ​​в coreutils, AFAIK, в 2008 году: она, безусловно, доступна в Ubuntu Hardy 8.04. Так что, если у вас нет реального пути, возможно, что у вас есть readlink Сразу Доступно.

realpath инструмент был добавлен в GNU coreutils в версии 8.15 (commit 77ea441f79aa), выпущенной в 2012 году. Вероятно, в вашем выпуске CentOS установлен coreutils v8.4. Инструмент не был удален; это еще не было добавлено во-первых.

Обычно realpath обеспечивается coreutils пакет, поэтому вы должны установить его через:

yum install coreutils

В качестве альтернативы попробуйте: readlink или определите свою собственную функцию, такую ​​как:

realpath () { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" }

или посмотрите еще несколько примеров здесь.

Я протестировал команду в CentOS 7 VM через Vagrant:

vagrant init bento/centos-7.1 && vagrant up --provider virtualbox && vagrant ssh

похоже на то realpath устанавливается по умолчанию.

была аналогичная проблема. В MacOS:

      brew install coreutils
Другие вопросы по тегам