Makefile не расширяет файл * подстановочный знак в NFS

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

  • Гость Ubuntu LTS
  • 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»?


person Stephen Rasku    schedule 25.09.2018    source источник
comment
Происходит ли то же самое, когда вы пытаетесь выполнить эти команды в командной строке? Если да, то эта проблема не имеет ничего общего с Make.   -  person Beta    schedule 26.09.2018
comment
Это не происходит в командной строке.   -  person Stephen Rasku    schedule 26.09.2018


Ответы (1)


Функция подстановки звуков каким-то образом была отключена в вашей оболочке для образа 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
person atline    schedule 26.09.2018
comment
К сожалению, это не помогло: set +o noglob && ls -l foo* ls: невозможно получить доступ к 'foo*': нет такого файла или каталога - person Stephen Rasku; 26.09.2018
comment
Странно, я пытался воспроизвести ваши проблемы с вашим новым обновленным nfs делом. Но я не могу его воспроизвести, на моей стороне все в порядке, даже использую nfs. - person atline; 27.09.2018
comment
Мои настройки для nfs: /nfsroot *(rw,sync,no_root_squash). Мой маунт: mount -t nfs -o nolock 10.192.224.45:/nfsroot kkk. Команда Docker: docker run --rm -t -v /root/kkk:/root withmake bash -c "cd /root && make", мой вывод: ls -l foo* -rw-rw-r-- 1 1000 1000 0 Sep 27 2018 fool. Dockerfile для withmake: from i386/ubuntu:18.04 RUN apt-get update && apt-get install make. Вы можете увидеть, если что-то отличается от вашей части, вам может понадобиться сравнить, чтобы увидеть, что произошло с вашей ситуацией. - person atline; 27.09.2018
comment
Одно отличие, которое я заметил, заключается в том, что оно появляется, когда вы используете сервер Linux NFS. Я использую сервер MacOS NFS. Я разместил дополнительную информацию в вопросе. - person Stephen Rasku; 27.09.2018
comment
У меня такая проблема на рабочем ноутбуке. Попробую воспроизвести на домашней машине. Я надеюсь, что это не проблема корпоративного вредоносного ПО. - person Stephen Rasku; 27.09.2018