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

6821
Daniel YC Lin

Я пытаюсь набрать '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
Попробуйте `sudo yum предоставляет -C realpath`, чтобы увидеть, в каком пакете он находится; затем установите его (или попробуйте переустановить, если он уже установлен). BenjiWiebe 9 лет назад 0
`yum предоставляет -C / usr / bin / realpath` Загруженные плагины: fastestmirror, refresh-packagekit, security * Совпадения не найдены * Daniel YC Lin 9 лет назад 0
@DanielYCLin Разве вы не можете просто использовать * readlink -e *? Это точно то же самое. MariusMatutiae 9 лет назад 0
@MariusMatutiae, пожалуйста, напишите в качестве ответа, я пишу свой скрипт, поэтому можно использовать readlink, если Centos 6.5 его поддерживает. Daniel YC Lin 9 лет назад 0
@DanielYCLin Я сделал это, согласно вашему запросу. MariusMatutiae 9 лет назад 0
Кстати, `yum предоставляет -C / usr / bin / realpath` не правильная команда ... это может быть в` / bin`! Поэтому при использовании `yum обеспечивает`, просто используйте имя команды:` sudo yum обеспечивает -C realpath`. BenjiWiebe 9 лет назад 0

3 ответа на вопрос

5
MariusMatutiae

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

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

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

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

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

2
grawity

The realpath tool was added to GNU coreutils in version 8.15 (commit 77ea441f79aa), released in 2012. Your CentOS release likely has coreutils v8.4. The tool wasn't removed; it was not yet added in the first place.

Таким образом, 'realpath' не содержится в официальном хранилище centos. Установить сторонний rpm это единственный способ? Daniel YC Lin 9 лет назад 0
@DanielYCLin Вы можете просто загрузить его с [ftp.gnu.org] (ftp://ftp.gnu.org/gnu/coreutils/coreutils-8.22.tar.xz), запустить `tar -xJf coreutils-8.22.tar. XZ; ./configure; делать; sudo make install`. Он поместит его в `/ usr / local / bin`, который, вероятно, находится в вашем` PATH` (если нет, вы можете добавить его). BenjiWiebe 9 лет назад 1
или просто `echo '/ usr / bin / readlink -e" $ @ "'> / usr / local / bin / realpath; chmod + x / usr / local / bin / realpath` djsadinoff 9 лет назад 2
0
kenorb

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

yum install coreutils 

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

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

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

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

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

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

Похожие вопросы