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


84

আমি একটি আছে Dockerfileএকটি Docker চিত্র আলপাইন লিনাক্স উপর ভিত্তি করে তৈরি নির্মান করে। এর অংশ হিসাবে এখন আমার একটি প্যাকেজ ইনস্টল করা দরকার Dockerfile

বর্তমানে আমার আছে:

RUN apk update && \
    apk upgrade && \
    apk add git

দৃশ্যত এটি একটি খারাপ ধারণা, ফলাফলটি অ-সংঘবদ্ধ। পরিবর্তে, এটি সময়ে আমি যে ইমেজটি তৈরি করব, কোন সংস্করণটি gitইনস্টল হচ্ছে তা নির্ভর করে on

এটি করার সঠিক উপায় কী?

আমি বলতে হবে যে updated, upgradeএবং addযা সংস্করণ ব্যবহার করতে, কিন্তু আমি এই কিভাবে করব?

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

অন্য কথায়: যদি এর gitমাধ্যমে ইনস্টল npmকরা যায় তবে আমি চালাতে সক্ষম হব:

npm install git@1.9.2

(বা আমি যে সংস্করণটি পেতে চাই)। আলপাইন লিনাক্স এর সমতুল্য কি?

উত্তর:


74

আপনি এই জাতীয় "স্টিকি" সংস্করণ সেট করতে পারেন:

# Both are equal
apk add packagename=1.2.3-suffix
apk add 'packagename<1.2.3-suffix'

এটি কেবলমাত্র নির্দিষ্ট সংস্করণ না হওয়া পর্যন্ত প্যাকেজগুলি আপগ্রেড করবে। তারপরে আপনি নিরাপদে ব্যবহার করতে পারেন ...

apk upgrade

সমস্ত প্যাকেজ আপগ্রেড করতে, যখন সংস্করণ সহ প্যাকেজগুলি তাদের সংস্করণে থাকবে। সর্বনিম্ন সংস্করণ সেট করতে কেবল ব্যবহার করুন ...

apk add "packagename>1.2.3-suffix"

আপনি যদি কোনও প্যাকেজ খুঁজে না পান, তবে আপনি এটি আলপাইন প্যাকেজগুলির জন্য UI তে দেখতে পাচ্ছেন তবে আপনার উত্স / প্যাকেজ ডাটাবেস আপডেট করুন:

apk update

প্যাকেজ সংগ্রহস্থলটি এখানে পাওয়া যাবে :

https://pkgs.alpinelinux.org/packages

আপনি কি নিশ্চিত যে এটি কাজ করে? এই থ্রেড থেকে, দেখে মনে হচ্ছে এটি আসলে কিছুই করে না: ফোরাম.প্লিনেলিনাক্স.অর্গ
ট্র্যাভিস রেডার

2
@ ট্র্যাভিসআর এখানে আলপাইন এপিপি ডক্সটি একবার দেখুন ।
কায়সার

আমার ক্ষেত্রে, এটি কেবলমাত্র আলপাইন 3.7 থেকে অ্যালপাইন 3.6 এ ডাউনগ্রেড করতে সহায়তা করেছে!
DUzun

সেমভার টিলডে রেঞ্জগুলি apk add ansible~=2.4.1অর্থ হিসাবেও কাজ করে >=2.4.1 <2.5.0। আপনার নিজস্ব ব্যাপ্তি পরীক্ষা করতে jubianchi.github.io/semver- চেক দেখুন ।
মাইক ডি

উপলব্ধ প্যাকেজগুলির তালিকা সহ রেপো pkgs.lpinelinux.org/packages আমার জন্য সবচেয়ে সহায়ক ছিল।
ইগেল

15

বর্তমানে, আলপাইন লিনাক্সের অফিসিয়াল সংগ্রহস্থলগুলির থেকে প্যাকেজটির স্বেচ্ছাসেবী পুরানো সংস্করণ ইনস্টল করার কোনও উপায় নেই। আপনি যে সর্বোত্তম জিনিসটি অর্জন করতে পারবেন তা হ'ল পূর্বের রিলিজগুলির সংগ্রহস্থলগুলি ব্যবহার করা:

# cat /etc/alpine-release
3.3.3

# echo 'http://dl-cdn.alpinelinux.org/alpine/v3.2/main' >> /etc/apk/repositories

# apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.2/main/x86_64/APKINDEX.tar.gz

# apk add bash==4.3.33-r0
(1/1) Updating pinning bash (4.3.33-r0)
OK: 13 MiB in 17 packages

# apk add bash==4.3.42-r3
(1/2) Upgrading bash (4.3.33-r0 -> 4.3.42-r3)
Executing bash-4.3.42-r3.post-upgrade
(2/2) Purging ncurses5-libs (5.9-r1)
Executing busybox-1.24.1-r7.trigger
OK: 13 MiB in 16 packages

1

কারণ আমি testingরেপো ব্যবহার করছিলাম । আমি আমার নিজের অনুলিপি তৈরি শেষ করেছি। পদক্ষেপ:

প্যাকেজ বিশদে যান। উদা:

https://pkgs.alpinelinux.org/package/edge/testing/armhf/watchman

প্রতিশ্রুতিতে ক্লিক করুন, APKBUILD ফাইলের কমিট লগ পাওয়ার জন্য APKBUILD ফাইল লিঙ্কগুলি এবং মেনুতে "লগ" ক্লিক করুন Log তারপরে আপনার APKBUILD ফাইলের জন্য একটি প্রতিশ্রুতি চয়ন করুন এবং এটি ডাউনলোড করুন। উদা:

https://git.alpinelinux.org/cgit/aports/tree/testing/watchman/APKBUILD?id=63f5e7d295659a855709901ce22a3e5f40fce455

বিল্ড সরঞ্জামগুলি ইনস্টল করুন:

apk -U add alpine-sdk

আপনার rootব্যবহারকারীর প্রয়োজন নেই তাই packagerপাসওয়ার্ড সহ একটি ব্যবহারকারী তৈরি করুন :

adduser -D packager && addgroup packager abuild
passwd packager

তারপরে এটিকে packagerAPKBUILD ফাইলের মতো একই ডিরেক্টরিতে তৈরি করুন:

su - packager
abuild-keygen -a -i
abuild -r

আপনার ত্রুটিগুলি খুঁজে বের করতে হবে এবং নির্ভরতা ইনস্টল করতে হবে। আমার উদাহরণে, আমার বিদ্যমান ডকারের চিত্রটিতে আমার এটি করা দরকার root:

apk add python-dev

সফলভাবে নির্মাণের পরে packager, এটি ইনস্টল করুন root:

apk add /home/packager/packages/<something...>/watchman-4.7.0-r0.apk --allow-untrusted

কীভাবে --allow-untrustedঅংশটি সরানো যায় তা নিশ্চিত নয় , তবে পদক্ষেপগুলি আমার পক্ষে কাজ করেছিল।

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