अल्पाइन में एक विशिष्ट पैकेज संस्करण कैसे स्थापित करें?


89

मेरे पास एक Dockerfileडॉकर छवि बनाने के लिए है जो अल्पाइन लिनक्स पर आधारित है। अब मुझे इसके भाग के रूप में एक पैकेज स्थापित करने की आवश्यकता है Dockerfile

वर्तमान में मेरे पास है:

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

स्पष्ट रूप से यह एक बुरा विचार है, क्योंकि परिणाम गैर-नियतात्मक है। इसके बजाय, यह उस समय के बिंदु पर निर्भर करता है जिस पर मैं छवि बनाता हूं, कौन सा संस्करण gitस्थापित हो रहा है।

ऐसा करने का सही तरीका क्या है?

मुझे लगता है कि मुझे बताना होगा updated, upgradeऔर addकिन संस्करणों का उपयोग करना है, लेकिन मैं यह कैसे करूं?

मैंने देखा है कि apkरिपॉजिटरी का पिनिंग का समर्थन करता है, लेकिन यह वह नहीं है जो मैं चाहता हूं (कम से कम मुझे ऐसा लगता है), क्योंकि मैं रिपॉजिटरी को पिन नहीं करना चाहता, लेकिन एक पैकेज।

दूसरे शब्दों में: यदि के gitमाध्यम से स्थापित किया जा सकता है npm, मैं चलाने में सक्षम हो जाएगा:

npm install git@1.9.2

(या जो भी संस्करण मेरे पास है)। अल्पाइन लिनक्स के लिए इसके बराबर क्या है?

जवाबों:


78

आप "चिपचिपा" संस्करण इस तरह सेट कर सकते हैं:

# 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"

यदि आपको पैकेज नहीं मिल रहा है, तो आप इसे यूपी में अल्पाइन पैकेज के लिए देख सकते हैं, अपने स्रोतों / पैकेज डेटाबेस को अपडेट कर सकते हैं:

apk update

पैकेज रिपॉजिटरी यहां मिल सकती है :

https://pkgs.alpinelinux.org/packages

क्या आपको यकीन है कि यह काम करता है? इस सूत्र से, ऐसा लगता है कि यह वास्तव में कुछ भी नहीं करता है: forum.alpinelinux.org/forum/general-discussion/…
ट्रैविस रीडर

2
@TravisR यहाँ अल्पाइन एपीके डॉक्स पर एक नज़र डालें ।
कैसर

मेरे मामले में, इसने अल्पाइन 3.7 से अल्पाइन 3.6 तक डाउनग्रेड करने में मदद की!
डेजुन

सेमर टिल्ड पर्वतमाला भी apk add ansible~=2.4.1अर्थ के अनुसार काम करती है >=2.4.1 <2.5.0। अपनी खुद की श्रेणियों का परीक्षण करने के लिए जुबांची.गिथुब.इओ / सेवर- चेक देखें ।
माइक डी

उपलब्ध पैकेज pkgs.alpinelinux.org/packages की सूची के साथ रेपो मेरे लिए सबसे अधिक मददगार था।
ईगेल

16

वर्तमान में, अल्पाइन लिनक्स में आधिकारिक रिपॉजिटरी से पैकेज के पुराने संस्करणों को स्थापित करने का कोई तरीका नहीं है। सबसे अच्छी चीज जो आप प्राप्त कर सकते हैं, वह पहले रिलीज के रिपॉजिटरी का उपयोग कर रही है:

# 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 फाइल के कमिट लॉग को पाने के लिए। फिर अपनी 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

फिर इसे packagerउसी डायरेक्टरी में बनाएं जैसे कि APKBUILD फाइल:

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भाग को कैसे हटाया जाए , लेकिन कदमों ने मेरे लिए काम किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.