আমি কীভাবে একটি লিনাক্স পরিবেশ তৈরি করব যা প্যাকেজের নির্দিষ্ট সংস্করণ নির্দিষ্ট করে?


9

আমি এমন একটি ডকফাইল তৈরি করছি যা একটি কাস্টম অ্যাপ্লিকেশন চালায় যা জাভার নির্দিষ্ট সংস্করণে আবদ্ধ।

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

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

আমি যে নিবন্ধটি অনুসরণ করছিলাম সেটি প্রাসঙ্গিক ডকফেরফিল জেডিকে ইনস্টলের অংশগুলির মতো দেখতে শুরু হয়েছিল:

FROM centos:centos7
RUN yum makecache \
    && yum update -y \
    && yum install -y \
    java-1.8.0-openjdk-devel \
    && yum clean all

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

আমি দেখতে ডকার ফাইলটি পরিবর্তন করেছি:

FROM centos:centos7
RUN yum makecache \
    && yum update -y \
    && yum install -y \
    java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7 \
    && yum clean all

এবং ডকারের চিত্রটি ভাল তৈরি করছিল। সেটা ছিল ডিসেম্বরে।

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

বিল্ডটি এখন ব্যর্থ হয়েছে কারণ জাভা প্যাকেজের সেই নির্দিষ্ট সংস্করণটি আর উপলভ্য নয় (কমপক্ষে, আমি মনে করি এটিই আমাকে বলছে):

Error: Package: 1:java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64 (base)
Requires: java-1.8.0-openjdk-headless = 1:1.8.0.65-3.b17.el7
Available: 1:java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64 (base)
java-1.8.0-openjdk-headless = 1:1.8.0.65-3.b17.el7
Installing: 1:java-1.8.0-openjdk-headless-1.8.0.71-2.b15.el7_2.x86_64 (updates)
java-1.8.0-openjdk-headless = 1:1.8.0.71-2.b15.el7_2

আমি কীভাবে আমার ডকফিলিলটি পুনর্নির্মাণ করব যাতে আমি সর্বদা জাভার নির্দিষ্ট সংস্করণটি ব্যবহার করতে পারি (উদাহরণস্বরূপ, আমি চাই জাভাটির সংস্করণটি 1.8.0 আপডেট 65 হবে)?

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

অন্য লোকেরা কীভাবে এটি করে? জেডিকে ইনস্টল করার কি অন্য উপায় আছে যাতে আমার সর্বশেষ আপডেটগুলি (এফআরওএম ক্লজ এবং ইয়ম আপডেটে বেস ইমেজ দ্বারা সংজ্ঞায়িত) সহ ওএস ডিস্ট্রিবিউশনটির সাম্প্রতিক সংস্করণটি পাওয়া যায় তবে জেডিকে একটি নির্দিষ্ট সংস্করণ ইনস্টল করতে পারি?

এই ধরণের প্রয়োজনীয়তার জন্য কি লিনাক্স সংস্করণটি আরও উপযুক্ত (আমি সেন্টোসে বিবাহিত নই, ইউজারল্যান্ড লিনাক্স বিতরণ আমার পক্ষে বিশেষ গুরুত্বপূর্ণ নয়)?


ডকারের সাহায্যে ব্যবহারযোগ্য কি ?
অ্যারন কোপলি

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

1
দুঃখিত, আমি মনে করি আমি ভুল বুঝেছি। আপনি যে সংস্করণটির জন্য অনুরোধ করছেন সেটি বেসে রয়েছে এবং যে কোনও কারণে আপডেটগুলি থেকে এটি ইনস্টল করা যেতে পারে । চেষ্টা করুনyum install -y $package --disablerepo=updates
অ্যারন কোপলি

1
@ অ্যারোনপোলে ইয়েপ, এটি কার্যকর বলে মনে হচ্ছে - ধন্যবাদ! আপনি যদি এটির উত্তর দেন তবে আমি এটি সফল হিসাবে চিহ্নিত করব। অথবা আমি এটি পরে যুক্ত করব।
কর্তিত

উত্তর:


2

দেখে মনে হচ্ছে এটি আপনার পছন্দমতো প্যাকেজটি দেখে, তবে যে কোনও কারণে আপডেট সংগ্রহস্থল থেকে ইনস্টল করা হচ্ছে।

আপনি আপনার yum কমান্ডে আপডেট সংগ্রহস্থল অক্ষম করতে পারেন;

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