apt-get डाउनलोड संस्करण बाधा के साथ


18

मुझे apt-get downloadएक .debफ़ाइल का एक विशिष्ट संस्करण लाने के लिए उपयोग करने की आवश्यकता है , लेकिन जरूरी नहीं कि सटीक संस्करण। .debआश्रितों को जैसे कि अभिव्यक्ति का उपयोग करने की अनुमति है >=0.3.0और मैं apt-get downloadउसी संस्करण को लाना चाहूंगा जो कि इस तरह की निर्भरता का उपयोग करके डाउनलोड किया जाएगा।

इसे संक्षेप में, मैं जो काम करना चाहता हूं वह यह है:

$ apt-get download package='>=0.3.0'

किसी भी विचार कैसे मैं उस कार्यक्षमता मिल सकता है?


आप संकुल को केवल संकुल से डाउनलोड क्यों नहीं करते हैं
टेराडॉन

क्योंकि मुझे यह सुनिश्चित करने की आवश्यकता है कि डाउनलोड किया गया पैकेज ठीक वही पैकेज है जिसे "apt-get install" निष्पादित होने पर डाउनलोड किया जाएगा। मैं इसे cmake एक्सटेंशन स्क्रिप्ट में शामिल कर रहा हूं।
मिकोज़ज़

जवाबों:


2

आप पहले यह पता लगा सकते हैं कि कौन सा संस्करण सबसे नया संस्करण है जो आपके इच्छित न्यूनतम संस्करण से अधिक या बराबर है। फिर, आप बिल्कुल उस संस्करण का उपयोग करके डाउनलोड करते हैं apt-get download। यहां एक स्क्रिप्ट है जो ऐसा करती है (यह थोड़ा बदसूरत है, लेकिन आपको यह विचार मिलता है):

#!/bin/bash

if [ $# -lt 2 ]; then
    echo "Usage: $0 <packagename> <minimum version>"
    exit 1
fi

pkgname="$1"
minversion="$2"

V="0"

for version in `apt-cache madison $pkgname | awk -F'|' '{print $2}'`; do
    echo "Considering $version"
    if dpkg --compare-versions $version ge $minversion; then
        echo "- Version is at least $minversion"
        if dpkg --compare-versions $version gt $V; then
            echo "- This is the newest version so far"
            V=$version
        else
            echo "- We already have a newer version"
        fi
    else
        echo "- This is older than $minversion"
    fi
done

if [ "$V" = "0" ]; then
    echo "There is no version greater than or equal to $minversion"
    exit 1
fi

echo "Selected version: $V"

echo "Downloading"
apt-get download $pkgname=$V
echo "Done"

यदि पैकेज मौजूद नहीं है, तो आपको त्रुटि जाँच को जोड़ना होगा, लेकिन इसमें मूल समाधान शामिल है। इसके अलावा, मैंने यहां यह मान लिया है कि आप नवीनतम उपलब्ध पैकेज चाहते हैं जो कम से कम एक निश्चित संस्करण हो। यदि आप इसके बजाय सबसे पुराने उपलब्ध पैकेज को पसंद करते हैं जो कम से कम एक निश्चित संस्करण है, तो आपको एक बार खोज करने से रोकने के लिए स्क्रिप्ट को समायोजित करना होगा क्योंकि यह कुछ ऐसा है जो कम से कम आपका वांछित संस्करण है।


0

चूँकि आप चाहते हैं कि वास्तव में आपको क्या apt-get installदेना है, इसलिए यह apt-get installकस्टम अभिलेखागार निर्देशिका का उपयोग करके 'डाउनलोड-ओनली मोड' में चलने लायक हो सकता है :

-d, --download-only
  Download only; package files are only retrieved, not unpacked or installed.
  Configuration Item: APT::Get::Download-Only.

अभिलेखागार निर्देशिका कैसे बदलें? यह एक कॉन्फ़िगरेशन विकल्प है:

FILES
  [...]

  /var/cache/apt/archives/
  Storage area for retrieved package files. Configuration Item: Dir::Cache::Archives.

उन्हें अस्थायी रूप से --optionपैरामीटर के साथ बदला जा सकता है :

-o, --option
  Set a Configuration Option; This will set an arbitrary configuration option. 
  The syntax is -o Foo::Bar=bar.  -o and --option can be used multiple times 
  to set different options.

संक्षेप में:

apt-get install -d -o dir::cache::archives="/some/cache/dir" <package>

यह आदेश डाउनलोड करेगा (और केवल डाउनलोड, नहीं स्थापित) प्रासंगिक .debके लिए फ़ाइलों <package>को /some/cache/dir। निर्देशिका .debमें पैकेज के लिए फाइलें, उसकी निर्भरता, एक लॉक फ़ाइल और 'आंशिक' निर्देशिका (जो खाली होनी चाहिए) शामिल होगी। .debआपके द्वारा आवश्यक सटीक फ़ाइल को फ़िल्टर करना तुच्छ होना चाहिए।


दुर्भाग्य से, apt-get installसुपरसुसर पहुंच की आवश्यकता होती है।
मिकोज़ेज़

0

apt-get downloadआपको लक्ष्य रिलीज़ सेट करने की भी अनुमति देता है। यह मदद नहीं करेगा?

apt-get download package/testing

# 1 पर टिप्पणी करें (टिप्पणियों का उपयोग नहीं कर सकते) - पैरामीटर जोड़ने के --print-urisलिए apt-get installमूल अधिकारों की आवश्यकता नहीं है (लेकिन आपको इसे स्वयं डाउनलोड करना होगा - wget -i File_LIST के साथ सबसे अच्छा)।


मिकोलाज राडवान विशिष्ट संस्करणों को लाने के लिए एक रास्ता ढूंढ रहे हैं जो संभवतः बाद के स्क्रिप्ट उपयोग के लिए अभिव्यक्ति का उपयोग कर रहे हैं। यह सिर्फ वर्तमान पैकेज को डाउनलोड करने की अनुमति देगा।
22.

0

SU प्राइवेट के बिना आप अभी भी apt-cache चला सकते हैं और उस जानकारी को प्राप्त करने के लिए फ़िल्टरिंग के साथ संयोजन कर सकते हैं। कुछ का उपयोग करें:

डेबियन 5 पर:

apt-cache show <pkg> | head | grep -i version 

6 पर आप उपयोग कर सकते हैं:

apt-cache show <pkg> | tail | grep -i version

Apt-cache ने 5 और 6 के बीच सूची के क्रम में व्यवहार को बदल दिया है, ताकि 6 में से सबसे नया अंतिम आए।

सावधानी का एक शब्द यह है कि यदि आप इस आउटपुट का उपयोग कर रहे हैं जैसा कि आप कहते हैं "उसी संस्करण को लाने के लिए जैसे कि निर्भरता का उपयोग करके डाउनलोड किया जाएगा", तो उपलब्ध पैकेज का संस्करण बदल सकता है यदि आप apt-get update चलाते हैं (के साथ) सु निजी तौर पर), या यदि वह स्वचालित रूप से चलाने के लिए सेट किया गया है और बीच में होता है जब आप संस्करण को इकट्ठा करते हैं, और जब आप स्क्रिप्ट चलाते हैं जो उन चीजों को स्थापित करता है जो अपेक्षा करते हैं कि संस्करण हो।

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