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, не могу его найти. Утилита содержится в другом пакете? Или просто быть удаленным по соображениям безопасности?

3 ответа3

7

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

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

И страница readlink гласит:

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

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

2

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

1

Обычно 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 установлен по умолчанию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .