Назад | Перейти на главную страницу

p4: Нет такого файла или каталога - когда он существует на самом деле

Я установил клиент командной строки p4 на сервер, и происходит что-то странное. Он существует, имеет права на исполнение, но я не могу его выполнить, потому что получил сообщение об ошибке, что его не существует.

Я попытался осмотреться, и все остальные, у кого была эта проблема, поняли, что выбрали неправильный двоичный файл для своей коробки, но я был на 100% уверен, что я этого не сделал.

файл / usr / local / bin / p4:

вот мой вывод терминала:

ubuntu@ubuntu:~$ sudo su
+ sudo su

root@ubuntu:/home/ubuntu# wget http://cdist2.perforce.com/perforce/r16.1/bin.freebsd100x86_64/p4
--2017-09-25 22:21:45--  http://cdist2.perforce.com/perforce/r16.1/bin.freebsd100x86_64/p4
Resolving cdist2.perforce.com (cdist2.perforce.com)... 54.192.36.127, 54.192.36.104, 54.192.36.217, ...
Connecting to cdist2.perforce.com (cdist2.perforce.com)|54.192.36.127|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3683848 (3.5M) [application/x-executable]
Saving to: ‘p4’

100%[===================================================================================================================>] 3,683,848   5.06MB/s   in 0.7s

2017-09-25 22:21:46 (5.06 MB/s) - ‘p4’ saved [3683848/3683848]

root@ubuntu:/home/ubuntu# chmod +x p4

root@ubuntu:/home/ubuntu# mv p4 /usr/local/bin/

root@ubuntu:/home/ubuntu# p4
bash: /usr/local/bin/p4: No such file or directory

root@ubuntu:/home/ubuntu# ls -lah /usr/local/bin/p4
-rwxr-xr-x 1 root root 3.6M Mar  2  2017 /usr/local/bin/p4

root@ubuntu:/home/ubuntu# file /usr/local/bin/p4
/usr/local/bin/p4: ELF 64-bit LSB  executable, x86-64, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 10.0 (1000510), stripped

root@ubuntu:/home/ubuntu# uname -m
x86_64

любая помощь приветствуется!

Запутывающая фраза «нет такого файла или каталога», скорее всего, на самом деле относится к любому динамическому компоновщику, который этот (несоответствующий!) Двоичный файл пытается вызвать.

Хорошо, я нашел решение, я изменил свой сценарий обеспечения на это, и он отлично работает. Понятия не имею, почему это решило мою проблему ...

#!/bin/bash

# bash strict and verbose mode
set -o pipefail -e -u -x

if [ ! -z `which p4` ]; then
  exit 0
fi

# Installs Perforce

echo "deb http://package.perforce.com/apt/ubuntu/ trusty release" > /etc/apt/sources.list.d/perforce.list
wget -qO - https://package.perforce.com/perforce.pubkey | apt-key add -
apt-get update
apt-get install -y helix-cli