এই উত্তরটির উদ্দেশ্য হ'ল গিথুব ক্রিয়াকলাপ দিয়ে ক্যাচিং কীভাবে করা যায় তা দেখানো। কীভাবে ক্যাশে করবেন valgrind
তা দেখাতে হবে না, যা এটি প্রদর্শন করে তা নয়, তবে এটিও দেখানো উচিত যে সমস্ত কিছু ক্যাশে করা যায় না / হওয়া উচিত নয় এবং নির্ভরতা পুনরায় ইনস্টল করে ক্যাশে পুনরুদ্ধার করা এবং ক্যাশে পুনরুদ্ধারের ট্রেড অফগুলি বিবেচনায় নেওয়া উচিত।
এটি করার জন্য আপনি actions/cache
ক্রিয়াটি ব্যবহার করবেন।
এটি একটি পদক্ষেপ হিসাবে যুক্ত করুন (আপনার ভালগ্রাইন্ড ব্যবহার করার আগে):
- name: Cache valgrind
uses: actions/cache@v1.0.3
id: cache-valgrind
with:
path: "~/valgrind"
key: ${{secrets.VALGRIND_VERSION}}
পরবর্তী পদক্ষেপে ক্যাশেড সংস্করণ ইনস্টল করার চেষ্টা করা উচিত বা কোনও সংগ্রহস্থল থেকে ইনস্টল করা উচিত:
- name: Install valgrind
env:
CACHE_HIT: ${{steps.cache-valgrind.outputs.cache-hit}}
VALGRIND_VERSION: ${{secrets.VALGRIND_VERSION}}
run: |
if [[ "$CACHE_HIT" == 'true' ]]; then
sudo cp --verbose --force --recursive ~/valgrind/* /
else
sudo apt-get install --yes valgrind="$VALGRIND_VERSION"
mkdir -p ~/valgrind
sudo dpkg -L valgrind | while IFS= read -r f; do if test -f $f; then echo $f; fi; done | xargs cp --parents --target-directory ~/valgrind/
fi
ব্যাখ্যা
VALGRIND_VERSION
এর আউটপুট হতে গোপন সেট করুন :
apt-cache policy valgrind | grep -oP '(?<=Candidate:\s)(.+)'
এটি যখন গোপনের মান পরিবর্তন করে কোনও নতুন সংস্করণ প্রকাশিত হয় তখন আপনাকে ক্যাশেটি অবৈধ করার অনুমতি দেবে।
dpkg -L valgrind
ব্যবহার করার সময় ইনস্টল করা সমস্ত ফাইলের তালিকা করতে ব্যবহৃত হয় sudo apt-get install valgrind
।
আমরা এখন এই আদেশটি দিয়ে যা করতে পারি তা হ'ল আমাদের ক্যাশে ফোল্ডারে সমস্ত নির্ভরতা অনুলিপি করা:
dpkg -L valgrind | while IFS= read -r f; do if test -f $f; then echo $f; fi; done | xargs cp --parents --target-directory ~/valgrind/
তদ্ব্যতীত
এর সমস্ত উপাদানগুলি valgrind
অনুলিপি করার পাশাপাশি নির্ভরতাগুলি (যেমন libc
এই ক্ষেত্রে) অনুলিপি করাও প্রয়োজনীয় হতে পারে তবে আমি এই পথ ধরে চালিয়ে যাওয়ার পরামর্শ দিচ্ছি না কারণ নির্ভরতা শৃঙ্খলা কেবল সেখান থেকে বেড়ে যায়। সুনির্দিষ্টভাবে বলতে গেলে, অবশেষে ভালগ্রাইন্ডের জন্য উপযুক্ত পরিবেশের জন্য অনুলিপি করার জন্য প্রয়োজনীয়তাগুলি নিম্নরূপ:
- libc6
- libgcc1
- জিসিসি-8-বেস
এই সমস্ত নির্ভরতা অনুলিপি করতে, আপনি উপরের মত একই বাক্য গঠন ব্যবহার করতে পারেন:
for dep in libc6 libgcc1 gcc-8-base; do
dpkg -L $dep | while IFS= read -r f; do if test -f $f; then echo $f; fi; done | xargs cp --parents --target-directory ~/valgrind/
done
valgrind
প্রথম স্থানটিতে ইনস্টল করার জন্য যে সমস্ত প্রয়োজনীয় জিনিসগুলি কেবল চালানো হয় তখন কি এই সমস্ত কাজটি সত্যিই সমস্যার পক্ষে মূল্যবান sudo apt-get install valgrind
? যদি আপনার লক্ষ্যটি বিল্ডিং প্রক্রিয়াটিকে গতিময় করে তোলা হয়, তবে আপনাকে ক্যাচ বনাম পুনরায় ইনস্টল করতে আবার কমান্ডটি চালিয়ে যাওয়া পুনরুদ্ধার করতে (ডাউনলোডিং এবং এক্সট্র্যাক্ট করা) সময় লাগছে তাও আপনাকে বিবেচনা করতে হবে valgrind
।
এবং অবশেষে ক্যাশেটি পুনরুদ্ধার করতে, এটি ধারণ করা হয়েছে তা ধরে রেখে /tmp/valgrind
, আপনি কমান্ডটি ব্যবহার করতে পারেন:
cp --force --recursive /tmp/valgrind/* /
যা মূলত ক্যাশে থেকে রুট বিভাজনে সমস্ত ফাইল অনুলিপি করবে।
উপরোক্ত প্রক্রিয়াটি ছাড়াও, উত্স থেকে ইনস্টল করে এবং সংকলন করে আমার কাছে "ক্যাশে ভ্যালগ্রিড" উদাহরণ রয়েছে। ক্যাশেটি এখন আকারের প্রায় 63MB (সঙ্কুচিত) এবং কোনটি এখনও libc
উদ্দেশ্যকে হারাতে আলাদাভাবে ইনস্টল করতে হবে ।
তথ্যসূত্র:
Cache not found for input keys: ***.
। আমিVALGRIND_VERSION
সেটিংস> গোপনীয়তাগুলিতে গোপনীয়তা যুক্ত করেছি, তা কি ঠিক?