Makefile не расширяет файл * подстановочный знак в NFS - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть следующие настройки:

  • Ubuntu LTS guest
  • MacBook Pro под управлением MacOS 10.13.5 (17F77)
  • Гипервизор - VMware Fusion Professional версии 8.5.9 (7098239)
  • NFS экспортируется с хоста MacBook на гостевую Ubuntu

Это соответствующая строка из /etc/exports:

/Users/stephenrasku/w/Edge-Agent -alldirs -mapall=501:20 edgeos-dev

У меня естьследующее Makefile:

build:
    ls -l
    ls -l foo*

Сбой при запуске в контейнере i386 при монтировании NFS.Я использую VMware Fusion:

$ docker run --rm -t -v /home/stephen/some-nfs-mount:/home/edge registry.gear.ge.com/predix_edge/edge-agent-i386 "cd tmp && make"
Setting uid/gid to 501 501
ls -l
total 4
-rw-r--r-- 1 builduser builduser 26 Sep 25 17:58 Makefile
-rw-r--r-- 1 builduser builduser  0 Sep 25 17:58 bart
-rw-r--r-- 1 builduser builduser  0 Sep 25 17:58 fool
ls -l foo*
ls: cannot access 'foo*': No such file or directory
Makefile:2: recipe for target 'build' failed
make: *** [build] Error 2

Контейнер i386 работает, если я клонирую репозиторий в собственную файловую систему и связываю его с контейнером:

$ docker run --rm -t -v /home/stephen/this-directory-is-not-nfs:/home/edge registry.gear.ge.com/predix_edge/edge-agent-i386 "cd tmp && make"
Setting uid/gid to 501 501
ls -l
total 8
-rw-rw-r-- 1 builduser builduser 971 Sep 26 14:21 Dockerfile-i386
-rw-rw-r-- 1 builduser builduser  26 Sep 26 15:06 Makefile
-rw-rw-r-- 1 builduser builduser   0 Sep 26 14:21 bart
-rw-rw-r-- 1 builduser builduser   0 Sep 26 14:21 fool
ls -l foo*
-rw-rw-r-- 1 builduser builduser 0 Sep 26 14:21 fool

И этотакже работает в NFS, если я запускаю в контейнере x86_64:

$ docker run --rm -t -v /home/stephen/some-nfs-mount:/home/edge registry.gear.ge.com/predix_edge/edge-agent-x86_64 "cd tmp && make"
Setting uid/gid to 501 501
ls -l
total 4
-rw-r--r-- 1 builduser builduser 26 Sep 25 17:58 Makefile
-rw-r--r-- 1 builduser builduser  0 Sep 25 17:58 bart
-rw-r--r-- 1 builduser builduser  0 Sep 25 17:58 fool
ls -l foo*
-rw-r--r-- 1 builduser builduser 0 Sep 25 17:58 fool

Контейнер i386 равен FROM i386/ubuntu:18.04, а контейнер x86_64 равен FROM ubuntu:18.04.

Есть ли способ исправить это, кроме "не использовать NFS"?

1 Ответ

0 голосов
/ 26 сентября 2018

Функция подстановки звуков была каким-то образом отключена в вашей оболочке для образа i386.

Попробуйте set +o noglob, чтобы включить ее для registry.gear.ge.com/predix_edge/edge-agent-i386.

В некоторых пробных версиях, подобных ниже, только для справки.

# set -o noglob
# ls Doc*
ls: cannot access Doc*: No such file or directory
# set +o noglob
# ls Doc*
Dockerfile
...