मैं एक डेबियन / ubuntu डेब्यू पैकेज के लिए चैंज कैसे देख सकता हूं?


19

मैं उबंटू चला रहा हूं और मेरे पास एक डिबेट फ़ाइल स्थापित है। मैंने पहले भी डेब्यू पैकेज बनाए हैं, इसलिए मुझे पता है कि एक डेबियन चेंजलॉग (डीबचेंज) है। क्या मेरे द्वारा स्थापित किसी भी पैकेज के लिए डेबियन चैंज देखने के लिए वैसे भी है? मान लें कि मेरे पास इस पैकेज के लिए डिबेट स्रोत फ़ाइल तक पहुंच नहीं है, और मेरे पास डिबेट फ़ाइल उपलब्ध नहीं है। मैं जरूरत पड़ने पर अतिरिक्त पैकेज स्थापित करने में सक्षम हूं।


5
apt-getस्थापित पैकेजों में बदलाव देखने के लिए :apt-get changelog <package>
jfs

@JFSebastian के apt-getपास ऐसा कोई आदेश नहीं है।
जिप्सी १०'१३

2
@gipi: apt-get changelog apt | grep -C5 'apt-get changelog'दिखाता है कि यह कमांड apt (0.8.9ubuntu1) natty(2010) में पेश किया गया है। आप स्रोत प्राप्त कर सकते हैं (यह सब के बाद खुला स्रोत है): भागो apt-get source aptऔर cmdline/apt-get.ccफ़ाइल ढूंढें और DoChangelog()फ़ंक्शन को देखें (btw, DoMoo()फ़ंक्शन को देखें)।
jfs

अजीब बात है, मेरे पास (डेबियन) उपयुक्त 0.9.12.1 है और यह आदेश उपलब्ध नहीं है।
जिप्पी

जवाबों:


21

वैकल्पिक रूप से यदि बहस रिपॉजिटरी में भी है और आप पुराने संस्करणों चैंज जानना चाहते हैं, तो आप apt-get changelog packageसभी चैंज को पढ़ने के लिए उपयोग कर सकते हैं । उदहारण के लिए उदाहरण के लिए:

apt-get changelog libssl1.0.0

यह डेबियन जेसी और उबंटू दोनों में 2016 के लिए निश्चित रूप से प्रासंगिक उत्तर है:
दिमित्री डीबी

यह सही जवाब है।
टेक्निन

12

apt-listchangesके आसपास होने के लिए एक अच्छा पैकेज है, लेकिन आपके सबसे अच्छे दांव के आसपास एक डिब फाइल होने के बिना शायद /usr/share/doc/somepackage/changelog.Debian.gz से डेबियन चेंजलॉग पढ़ना है ।

इसके साथ एक शेल फंक्शन बनाएं:

function debchanglog () {
  zless "/usr/share/doc/$1/changelog.Debian.gz"
}

जैसा कि ओपी ने कहा, debchangeवास्तव में चैंज एंट्री बनाने के लिए इस्तेमाल किए जाने वाले भक्तों में एक मौजूदा उपकरण है । इसलिए मैं दृढ़ता से एक और नाम चुनने की सलाह दूंगा। इसके अलावा, शायद वह नहीं करेंगे जो आप उम्मीद कर रहे हैं। मेरे मामले में, यह हमेशा निष्पादित होगा । आपके मामले में, उस शेल या स्क्रिप्ट के नाम से बदलें जिसे आप इसे निष्पादित कर रहे हैं। $0zless /usr/share/doc/bash/changelog.Debian.gzbash
छह

3

जैने पिकरकेन के उत्तर का विस्तार करने के लिए , यहां एक उपनाम है जिसका उपयोग किसी भी दिए गए पैकेज के लिए चैंज।डिबियन.गज़ को पढ़ने के लिए किया जा सकता है:

alias changelog="xargs -I% -- zless /usr/share/doc/%/changelog.Debian.gz <<<"

यह इस तरह से इस्तेमाल किया जा सकता है:

changelog PACKAGE

कृपया ध्यान दें कि यह एक बहुत ही हैकिश समाधान है और अधिकांश परिस्थितियों में इसकी अनुशंसा नहीं की जाती है। एक फ़ंक्शन या स्टैंडअलोन स्क्रिप्ट एक बेहतर समाधान है।

यहाँ एक फ़ंक्शन है जो पैकेज के लिए सभी उपलब्ध चैंज को पढ़ता है:

changelog(){
    if (( $# != 1 )); then
        echo "Usage: ${FUNCNAME[0]} PACKAGE"
        return 1
    fi

    find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' -exec zless {} \; 2>/dev/null
}

यहां एक फ़ंक्शन है जो पैकेज के लिए सभी उपलब्ध चैंज की सूची प्रिंट करता है और उपयोगकर्ता को यह चुनने के लिए प्रश्न करता है कि कौन सा पढ़ना है:

changelog(){
    if (( $# != 1 )); then
        echo "Usage: ${FUNCNAME[0]} PACKAGE"
        return 1
    fi

    local changelog changelogs

    readarray -t changelogs < <(find -L "/usr/share/doc/$1" -type f -name 'changelog*.gz' 2>/dev/null)

    if (( ${#changelogs[@]} == 0 )); then
        return 0
    elif (( ${#changelogs[@]} == 1 )); then
        zless "${changelogs[0]}"
        return $?
    fi

    select changelog in "${changelogs[@]}" EXIT; do
        case $changelog in
            '')
                echo "ERROR: Invalid selection" >&2
                continue
                ;;
            EXIT)
                return 0
                ;;
            *)
                zless "$changelog"
                return $?
                ;;
        esac            
    done
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.