আমি কোনও ডেবিয়ান / উবুন্টু ডিবে প্যাকেজের জন্য চেঞ্জলগটি কীভাবে দেখতে পারি?


19

আমি উবুন্টু চালাচ্ছি এবং আমার একটি ডেব ফাইল ইনস্টল আছে। আমি এর আগেও ডেব প্যাকেজ তৈরি করেছি, সুতরাং আমি জানি যে এখানে একটি ডেবিয়ান চেঞ্জলগ রয়েছে (পুনর্বিবেচনা)। আমি যে কোনও প্যাকেজ ইনস্টল করেছি তার জন্য ডেবিয়ান চেঞ্জলগটি কি এখনও দেখতে পাবে? ধরুন এই প্যাকেজের জন্য আমার কাছে ডেব সোর্স ফাইলে অ্যাক্সেস নেই এবং আমার কাছে ডেব ফাইল উপলব্ধ নেই। প্রয়োজনে অতিরিক্ত প্যাকেজ ইনস্টল করতে সক্ষম হয়েছি।


5
apt-getইনস্টল হওয়া প্যাকেজগুলির জন্য পরিবর্তনগুলি দেখতে :apt-get changelog <package>
jfs

@ জেএসএবেস্টিয়ানের apt-getএমন কমান্ড নেই।
জিপি

2
@ জিপি: apt-get changelog apt | grep -C5 'apt-get changelog'দেখায় যে এই কমান্ডটি apt (0.8.9ubuntu1) natty(২০১০) সালে প্রবর্তিত হয়েছিল । আপনি উত্সটি পেতে পারেন (এটি সর্বোপরি ওপেন সোর্স): ফাইলটি চালান apt-get source aptএবং সন্ধান cmdline/apt-get.ccকরুন এবং DoChangelog()ফাংশনটি দেখুন (বিটিডাব্লু, 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.Deban.gz থেকে ডেবিয়ান চেঞ্জলগটি পড়া ।

এর সাথে একটি শেল ফাংশন তৈরি করুন:

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

ওপিতেdebchange যেমন নির্দেশিত হয়েছে, আসলে চেঞ্জলগ এন্ট্রি তৈরির জন্য ব্যবহৃত ডিভস্ক্রিপ্টগুলির একটি বিদ্যমান সরঞ্জাম । সুতরাং আমি দৃ strongly়ভাবে অন্য নাম চয়ন করার পরামর্শ দিচ্ছি। এছাড়াও, $0সম্ভবত আপনি যা প্রত্যাশা করছেন তা করবে না। আমার ক্ষেত্রে, এটি সর্বদা কার্যকর করা হবে zless /usr/share/doc/bash/changelog.Debian.gz। আপনার ক্ষেত্রে, bashআপনি যে শেল বা স্ক্রিপ্টটি থেকে এটি চালাচ্ছেন তার নামটি প্রতিস্থাপন করুন ।
ছয়

3

জেন পিক্কারাইনের উত্তরটি প্রসারিত করার জন্য , এখানে এমন একটি নাম রয়েছে যা চেঞ্জলগটি পড়তে ব্যবহার করা যেতে পারে any যে কোনও প্রদত্ত প্যাকেজের জন্য ডেবিয়ান.gz :

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