সাইগউইন থেকে অপ্রয়োজনীয় নির্ভরতা অপসারণ করুন


15

সাইগউইনে যখন আমি একটি নতুন প্যাকেজ ইনস্টল করি এটি স্বয়ংক্রিয়ভাবে সেই প্যাকেজের জন্য প্রয়োজনীয় কোনও নির্ভরতা ইনস্টল করে।

পরে যদি আমি সেই প্যাকেজটি অপসারণের জন্য বেছে নিই, তবে এটির সাথে ইনস্টল করা নির্ভরতাগুলি কীভাবে আমি সরিয়ে ফেলব, যার আর প্রয়োজন নেই?

উত্তর:


8

ঠিক আছে, এখানে আমার বর্তমান সমাধানটি নিয়ে এসেছি। বাশ এবং গুগল সম্পর্কে আমার (খুব) সীমিত জ্ঞান ব্যবহার করা।

#!/bin/bash
# Print a list of packages that no other package depends on

PackageCount=0
PackageIter=0

# Populate package array
declare -A Packages
PackageList=$(cygcheck.exe -c | cut -d' ' -f1 | tail -n +3)
for P in $PackageList; do
    Packages[${P,,}]=0
    ((PackageCount++))
done

# Determine the last mirror used
LastMirror=$(sed -n '/last-mirror/{n;p}' /etc/setup/setup.rc | tr -d '\t')
echo "[DEBUG] LastMirror = $LastMirror"

# Download the setup.ini file from the mirror server
echo "[DEBUG] Downloading setup.ini from mirror"
if which bzcat &>/dev/null; then
    wget --quiet "${LastMirror}$(uname -m)/setup.bz2" -O - | bzcat > setup.ini
else
    wget --quiet "${LastMirror}$(uname -m)/setup.ini" -O setup.ini
fi

for P in $PackageList; do
    ((PackageIter++))
    echo -ne "[DEBUG] Processing packages $((PackageIter * 100 / PackageCount))%\r"

    deps=$(sed -n "/^@ $P$/,/^requires/p" setup.ini | grep -i '^requires' | cut -d' ' -f2-)

    for dep in $deps; do
        if [[ ${Packages[${dep,,}]} ]]; then
            Packages[${dep,,}]=$((Packages[${dep,,}]+1))
        fi
    done
done

echo -e "\n== Packages =="

for P in $PackageList; do
    if [[ ${Packages[${P,,}]} == 0 ]]; then
        echo $P
    fi
done

rm setup.ini

আমার স্ক্রিপ্টটি উন্নত করার জন্য কারওর থেকে আরও ভাল সমাধান বা কোনও টিপস রয়েছে কিনা তা আমি দেখতে চাই।


আপনি এখনও সাইটে রয়েছেন কিনা তা আমি জানি না, তবে N=$N+1ত্রুটি সমাধানের জন্য আমি আপনার স্ক্রিপ্ট সম্পাদনা করেছি - ব্যাশে এটি গণিতের পরিবর্তে একটি স্ট্রিং তৈরি করবে। বিবৃতিটিকে চারপাশে ঘনিয়ে দেওয়া (( ))আপনাকে বাশে আসল গণিত করতে দেয় (যেমন আপনি অবশ্যই স্ক্রিপ্টে পরে আবিষ্কার করেছেন)। এছাড়াও, আমি এই অংশটি পরিবর্তন করি নি, তবে আপনাকে অ্যারেতে উপাদানগুলির সংখ্যা গণনা করার দরকার নেই। পরিবর্তে $PackageCount, আপনি ${#PackageList}সরাসরি উপাদান সংখ্যা পেতে অ্যাক্সেস করতে পারেন।
piojo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.