/ usr / bin / realpath wurde in Centos 6.5 nicht gefunden

6876
Daniel YC Lin

Ich versuche, in CentOS 6.5 "Realpath" einzugeben. Aber es scheint nicht installiert zu sein. Ich habe überprüft, dass es in coreutils (archlinux) enthalten ist. Ich überprüfe noch einmal das coreutils-Paket, das von CentOS bereitgestellt wird, es fehlt der / usr / bin / realpath. Ich möchte keine Drittanbieter-RPM wie ' http://pkgs.org/centos-6/repoforge-x86_64/realpath-1.17-1.el6.rf.x86_64.rpm.html ' installieren .

Ich habe yum Realpath gesucht, konnte es nicht finden. Ist das Dienstprogramm in einem anderen Paket enthalten? Oder einfach aus Sicherheitsgründen entfernt werden?

4
Versuchen Sie `sudo yum bietet -C realpath`, um zu sehen, in welchem ​​Paket es sich befindet. dann installieren Sie es (oder versuchen Sie es erneut zu installieren, falls es bereits installiert ist). BenjiWiebe vor 9 Jahren 0
`yum liefert -C / usr / bin / realpath` Geladene Plugins: fastmirror, refresh-packagekit, security * Keine Übereinstimmungen gefunden * Daniel YC Lin vor 9 Jahren 0
@DanielYCLin Können Sie nicht einfach * readlink -e * verwenden? Es ist genau das Gleiche. MariusMatutiae vor 9 Jahren 0
@MariusMatutiae Bitte schreibe als Antwort, ich schreibe mein Skript, also ist es möglich, readlink zu verwenden, wenn Centos 6.5 es unterstützt. Daniel YC Lin vor 9 Jahren 0
@DanielYCLin habe ich entsprechend deiner Anfrage gemacht. MariusMatutiae vor 9 Jahren 0
Übrigens, `yum liefert -C / usr / bin / realpath` ist nicht der richtige Befehl ... er könnte in` / bin` sein! Wenn Sie `yum supplies` verwenden, verwenden Sie einfach den Befehlsnamen:` sudo yum bietet -C realpath`. BenjiWiebe vor 9 Jahren 0

3 Antworten auf die Frage

5
MariusMatutiae

realpathist ein sehr nützliches Werkzeug, jedoch waren die meisten Funktionalitäten bereits mit vorhanden readlink. Die realpath Manpage besagt:

Bitte beachten Sie, dass die Funktion '-e' des Befehls readlink (1) zumeist die gleiche Funktionalität bietet.

Und auf der readlink Manpage heißt es:

-e, --canonicalize-exists: Kanonisieren Sie, indem Sie jedem Symlink in jeder Komponente des angegebenen Namens rekursiv folgen, dass alle Komponenten vorhanden sein müssen.

Der readlinkBefehl wurde 2008 zu coreutils, AFAIK hinzugefügt: Er ist sicherlich in Ubuntu Hardy 8.04 verfügbar . Wenn Sie also keinen Realpath haben, ist es möglich, dass Sie readlinksofort verfügbar sind.

2
grawity

Das realpathTool wurde GNU coreutils in Version 8.15 hinzugefügt ( Festschreiben 77ea441f79aa ) und wurde im Jahr 2012 veröffentlicht. Ihre CentOS-Version hat wahrscheinlich coreutils v8.4. Das Tool wurde nicht entfernt . es wurde erst gar nicht hinzugefügt .

Daher ist Realpath nicht im offiziellen Centos-Repository enthalten. Installieren von Drittanbieter-RPM ist der einzige Weg? Daniel YC Lin vor 9 Jahren 0
@DanielYCLin Sie können es einfach von [ftp.gnu.org] (ftp://ftp.gnu.org/gnu/coreutils/coreutils-8.22.tar.xz) herunterladen und `tar -xJf coreutils-8.22.tar ausführen. xz; ./konfigurieren; machen; sudo make install`. Es wird in `/ usr / local / bin` abgelegt, was wahrscheinlich in Ihrem` PATH` ist (falls nicht, können Sie es hinzufügen). BenjiWiebe vor 9 Jahren 1
oder einfach `echo '/ usr / bin / readlink -e" $ @ "'> / usr / local / bin / realpath; chmod + x / usr / local / bin / realpath` djsadinoff vor 9 Jahren 2
0
kenorb

Normalerweise realpathwird es vom coreutilsPaket bereitgestellt, also sollten Sie es installieren über:

yum install coreutils 

Alternativ können Sie versuchen: readlinkoder definieren Sie Ihre eigene Funktion, z.

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

oder sehen Sie sich hier weitere Beispiele an .

Ich habe den Befehl in CentOS 7 VM über Vagrant getestet :

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

es scheint realpathstandardmäßig installiert zu sein.