ডকার, আলপাইন এবং ম্যাটপ্ল্লোব ib


11

আমি বর্তমানে আলপাইন ব্যবহার করে আমাদের একটি ডকার চিত্র সঙ্কুচিত করার চেষ্টা করছি:

FROM python:2.7-alpine

যাইহোক, matplotlib.h ইনস্টল করতে পাইপটিতে আমার সমস্যা হচ্ছে:

EOF
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.pyd' found anywhere in distribution
numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory
compilation terminated.
numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory
compilation terminated.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-kCID_8/matplotlib/setup.py", line 383, in <module>
    **extra_args
  File "/usr/local/lib/python2.7/distutils/core.py", line 111, in setup
    _setup_distribution = dist = klass(attrs)
  File "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", line 269, in __init__
    self.fetch_build_eggs(attrs['setup_requires'])
  File "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", line 313, in fetch_build_eggs
    replace_conflicting=True,
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 826, in resolve
    dist = best[req.key] = env.best_match(req, ws, installer)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1071, in best_match
    return self.obtain(req, installer)
  File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1083, in obtain
    return installer(requirement)
  File "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", line 380, in fetch_build_egg
    return cmd.easy_install(req)
  File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 640, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 670, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 850, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1078, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1066, in run_setup
    raise DistutilsError("Setup script exited with %s" % (v.args[0],))
distutils.errors.DistutilsError: Setup script exited with error: Command "gcc -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_NPY_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DHAVE_CBLAS -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Inumpy/core/include -Ibuild/src.linux-x86_64-2.7/numpy/core/include/numpy -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/usr/local/include/python2.7 -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -c numpy/core/src/multiarray/numpyos.c -o build/temp.linux-x86_64-2.7/numpy/core/src/multiarray/numpyos.o" failed with exit status 1

আমি বুঝতে পারি এটি সম্ভবত কারণেই musl

আমার প্রাসঙ্গিক বিট এখানে Dockerfile:

# xmlsec is only available in the testing repo
RUN apk add --no-cache --virtual .build-deps \
  xmlsec \
  xmlsec-dev \
  py-numpy \
  py-numpy-dev \
  --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ \
  --allow-untrusted

RUN apk add --no-cache --virtual .build-deps \
  build-base \
  postgresql-dev \
  libffi-dev \
  nodejs \
  swig \
  git \
  libpng-dev \
  freetype-dev \
  libxml2-dev \
  libxslt-dev \
  python-dev \
  musl-dev \
  tk-dev \
  gfortran \
  py-setuptools \
  netcat-openbsd

RUN pip install -r requirements.txt

এটি আমার প্রয়োজনীয়তা। টেক্সট:

setuptools==19.7
alabaster==0.7.4
amqp==1.4.6
anyjson==0.3.3
authy==2.1.2
awscli==1.9.12
Babel==1.3
backports.ssl-match-hostname==3.4.0.2
blessings==1.6
boto==2.9.9
certifi==2015.4.28
click==4.0
cryptography==1.0.1
Django==1.8.2
django-oauth-toolkit==0.8.1
django-appconf==1.0.1
django-compressor==1.5
django-cors-headers==1.1.0
django-coverage==1.2.4
django-crispy-forms==1.5.2
django-crontab==0.6.0
django-debug-panel==0.8.1
django-debug-toolbar==1.3.0
django-easy-pdf==0.1.0
django-email-extras==0.3.1
django-filter==0.10.0
django-forms-builder==0.11.1
django-libsass==0.3
django-markdown-deux==1.0.5
django-model-utils==2.2
django-nose==1.4
django-pgjson==0.3.1
django-phonenumber-field==0.7.2
django-pickling==0.1
django-ratelimit==0.6.0
django-redis==4.0.0
djangorestframework==3.3.1
djangorestframework-csv==1.3.4
django-rq==0.7.0
django-s3-cache==1.4.2
django-sphinx==2.2.4
django-storages==1.1.8
django-templatetag-handlebars==1.3.0
django-timedeltafield==0.7.10
django-twilio==0.8.0
docutils==0.12
ecdsa==0.11
extras==0.0.3
factory-boy==2.5.2
fake-factory==0.5.1
flex==4.3.0
functools32==3.2.3-1
gdata==2.0.18
gnureadline==6.3.3
greenlet==0.4.7
gunicorn==19.3.0
html5lib==0.999
httplib2==0.9.1
httpretty==0.8.10
inflection==0.3.1
ipdb==0.8
ipython==3.1.0
Jinja2==2.7.3
jsonschema==2.5.1
libsass==0.8.2
linecache2==1.0.0
lockfile==0.9.1
lxml==3.4.4
matplotlib==1.5.0
mimeparse==0.1.3
mistune==0.6
mock==1.3.0
newrelic==2.50.0.39
nose==1.3.6
nose-progressive==1.5.1
numpy==1.9.2
oauth2client==1.4.11
oauthlib==0.7.2
pandas==0.16.1
paramiko==1.15.2
pbr==1.0.1
pep8==1.6.2
phonenumbers==7.0.9
Pillow==2.8.1
pipdeptree==0.4.2
progressbar33==2.4
psycopg2==2.5.5
ptyprocess==0.5
pyasn1==0.1.7
pyasn1-modules==0.0.5
pycrypto==2.6.1
Pygments==2.0.2
PyJWT==1.3.0
pyOpenSSL==0.13
PyPDF2==1.24
python-daemon==1.6
python-dateutil==2.4.2
python-gnupg==0.3.7
python-logstash==0.4.6
python-memcached==1.54
python-mimeparse==0.1.4
python-openid==2.2.5
python-saml==2.1.3
python-social-auth==0.2.12
pytz==2015.4
PyYAML==3.11
pyzmq==14.6.0
raven==5.5.0
redis==2.10.3
reportlab==3.1.44
requests==2.7.0
requests-oauthlib==0.5.0
rq==0.5.2
rq-scheduler==0.5.1
rsa==3.1.4
simplejson==3.7.2
six==1.10.0
soaplib==2.0.0-beta2
sorl-thumbnail==12.2
Sphinx==1.3.1
sphinx-me==0.3
sqlparse==0.1.15
ssh==1.8.0
stripe==1.27.1
suds==0.4
terminado==0.5
testtools==1.8.0
traceback2==1.4.0
Unidecode==0.4.17
unittest2==1.0.1
uritemplate==0.6
vobject==0.6.6
Werkzeug==0.9.6
whitenoise==1.0.6
xhtml2pdf==0.0.6
django-absoluteuri==1.1.0

এটি ইনস্টল করার জন্য আমার কী করা দরকার?

উত্তর:


13

আমি এই সমস্যাটি যুক্ত করে সমাধান করেছি:

RUN ln -s /usr/include/locale.h /usr/include/xlocale.h

সবকিছু সঠিকভাবে ইনস্টল করতে পারে। তবে আমি নিশ্চিত নই যে এটি ভাল অনুশীলন।


আমি বুঝতে পেরেছি আপনি কোথা থেকে এসেছেন - তবে আমি আমার ডকফাইফিলে (একটি মন্তব্যে এই সঠিক পোস্টে একটি উপযুক্ত লিঙ্কটি সহ) সংশোধন করতে সক্ষম হতে আরও অনেক ভাল অনুভব করছি। সমালোচকদের সত্ত্বেও ডকার এই জাতীয় জিনিসের কারণে কিছু অংশে চিত্তাকর্ষক।
LOL

এটি সাইগউইনের পক্ষেও কাজ করে। নম্পি যদি উপলব্ধ হয় তবে xlocale.h লোড করার চেষ্টা করে এবং কোনও কারণে এটি মনে করে যে এটি সমস্ত জায়গার সাইগউইনে উপলব্ধ but
সিএমসিডিগ্রাগনকাই

কী সরবরাহ করে /usr/include/locale.h? আমি একটি আল্পাইন চিত্র ব্যবহার করছি এবং ইতিমধ্যে ইনস্টল করছি make python gcc libffi-dev linux-headers libgcc libstdc++তবে প্রয়োজনীয় ফাইলটি প্রথম স্থানে লিঙ্ক করার জন্য নেই
মাইকেএম

@ মাইকেলমাগেজ এটিই musl-devপ্যাকেজ
সেলিন অসুর্ড

2

আপনি সম্ভবত একটি আলপাইন লিনাক্স Docker চিত্র ব্যবহারের ব্যবহার করতে হবে glibcএবং প্রতিস্থাপন musl-devসঙ্গে glibc-headersনিখোঁজ হেডার ফাইলের মধ্যে বান্ডেল করা থেকে glibc-headers

আপনি যখন glibcসক্ষম আল্পাইন লিনাক্স ডকার চিত্রগুলি সন্ধান করেন তখন ডকার হাবের সমস্ত শীর্ষ ফলাফলগুলি APK প্যাকেজগুলির জন্য একই উত্স ব্যবহার করে glibc

এই বিল্ডটিতে শিরোনাম অন্তর্ভুক্ত নয়, তবে অনুপস্থিত ফাইলগুলির সাথে অন্য একটি সাবপ্যাকেজ অন্তর্ভুক্ত করে এটি করার জন্য টুইট করা যেতে পারে, (অচিহ্নিত) এর লাইনে কিছু:

headers() {
  mkdir -p "$subpkgdir"/usr/glibc-compat
  cp -a "$srcdir"/usr/glibc-compat/include "$subpkgdir"/usr/glibc-compat
}

মধ্যে APKBUILD ফাইল।

এটি গবেষণা করে, আমি আপনার চূড়ান্ত পাত্রে যদিও শিরোনাম রয়েছে তার দরকারীতা নিয়ে প্রশ্ন করি। আমার কাছে মনে হয়, যদি সম্ভব হয় তবে শিরোনামগুলির প্রয়োজন হয় এমন নির্ভরতা তৈরি করতে মধ্যবর্তী পাত্রে থাকা আরও দরকারী এবং আপনার পাত্রে ফলাফল প্যাকেজটি ইনস্টল করুন।


হার্মাম, এটি আমার পক্ষে কার্যকর হয়নি। আমি প্রায় একই ত্রুটি পেয়েছি xlocale.h। আমি দেখেছি এটি musl-devযেভাবেই ইনস্টল করা হয়েছে , those প্যাকেজগুলির মধ্যে একটির জন্য এটির প্রয়োজন রয়েছে বলে মনে হয়। libc-devযতদূর আমি বলতে পারি ইনস্টল করা।
synic

স্থানীয়ভাবে পুনরুত্পাদন করতে আপনি কী আপনার requirements.txt(বা প্রাসঙ্গিক অংশ যা বাস্তবে প্রয়োজনীয় বিল্ডটি ট্রিগার করে matplotlib.h) ভাগ করে নিতে পারেন ?
দাউদ

ঠিক আছে, আমি এটিকে এপি
সিনিক

সামান্য গবেষণার পরে, একটি কার্যক্ষম সমাধান সরবরাহ করার জন্য এটি একটি অপ্রয়োজনীয় সময় প্রয়োজন, আমি প্রয়োজনীয়তাগুলি এবং শিরোনাম ফাইলগুলি কেন নেই তারেখার চেষ্টা করেছি। শূন্যস্থান পূরণ করার জন্য এটি আপনার কাছে রেখেছি। আশা করি এটি কার্যকর, যদিও।
দাওদ

2

এই নির্ভরতাগুলি আমার পক্ষে কাজ করেছিল: docker run -c 'apk update && apk add g++ make subversion gcc gfortran ca-certificates python3-dev libpng-dev freetype-dev python3; ln -s /usr/include/locale.h /usr/include/xlocale.h; python3 -m pip install matplotlib'

প্রতিস্থাপন python3সঙ্গে pythonযদি আপনি 2.7 চান

(@ সেলিনের উত্তর ছাড়াও)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.