উত্তর:
আপনি এর repotrack
পরিবর্তে এটি ব্যবহার করতে পারেন :
repotrack -a x86_64 -p /repos/Packages [packages]
দুর্ভাগ্যক্রমে -a
পতাকা (খিলান) সহ একটি ত্রুটি রয়েছে । এটি i686 এবং x86_64 ডাউনলোড করবে।
এটি ঠিক করার উপায় এখানে:
if opts.arch:
#archlist = []
#archlist.extend(rpmUtils.arch.getArchList(opts.arch))
archlist = opts.arch.split(',') # Change to this
else:
archlist = rpmUtils.arch.getArchList()
আপনি repoquery
গ্রুপ প্যাকেজগুলির তালিকা পেতে ব্যবহার করতে পারেন :
repoquery --qf=%{name} -g --list --grouppkgs=all [groups]
যা আপনি রেপট্র্যাকে খাওয়াতে পারেন:
repoquery --qf=%{name} -g --list --grouppkgs=all [groups] | xargs repotrack -a x86_64 -p /repos/Packages
--recursive
পুনরাবৃত্তির সাথে কাজ করার জন্য পুনরায় জিজ্ঞাসা কমান্ডটিতে বিকল্প যুক্ত করুন ।
yum-utils
প্রকল্পে ফাইল করা উচিত । এটি প্রত্যাশার চেয়ে বেশি প্যাকেজ ডাউনলোড করার কারণ হ'ল ফাংশন rpmUtils.arch.getArchList()
প্রদত্তটির জন্য সমস্ত সামঞ্জস্যপূর্ণ আর্কিটেকচার ফিরিয়ে দেয়। এটি উদাহরণস্বরূপ noarch
আর্কিটেকচারের অন্তর্ভুক্ত যা x86_64
প্যাকেজগুলির দ্বারা প্রয়োজন হতে পারে । আপনি উত্সটি পরীক্ষা করতে পারেন: yum.baseurl.org/gitweb?p=yum.git
প্রত্যেকের তথ্যের জন্য, yumdownloader
কাজটি করবেন না। Anyone yum এর সাথে প্যাকেজ পরিচালনার কিছু অভিজ্ঞতা আছে এমন ব্যক্তির পক্ষে প্রত্যাশা করা স্বাভাবিক যে নিম্নলিখিত কমান্ড-লাইনটি পুনরায় প্যাকেজ আরপিএম এবং তার সমস্ত নির্ভরতা ডাউনলোড করবে:
yumdownloader --resolve <package>
তবে তা হয় না। এটি প্রথম স্তরের নির্ভরতা বা ইতিমধ্যে ইনস্টল না থাকাগুলি মুদ্রণ করতে পারে। আমি নিশ্চিত না.
এখানে একটি পদ্ধতি যা CentOS 6.5 এ কাজ করে। জন্য downloadonly প্ল্যাগইন ইনস্টল করতে ধাপগুলি অনুসরণ করুন yum
যেমন কর্তৃক প্রদত্ত রেড হ্যাট । মূলত, CentOS 6.x এ, করুন:
$ sudo yum install yum-plugin-downloadonly.noarch
তারপরে --installroot
স্যুইচটির সাথে মিলিয়ে প্লাগইনটি ব্যবহার করুন yum
। এটি yum
সমাধান করতে এবং তারপরে সিস্টেমে ইতিমধ্যে ইনস্টল করা নির্ভরতাগুলি এড়িয়ে যাওয়া থেকে বাধা দেয় ।
sudo yum install \
--installroot=</path/to/tmp_dir> \
--downloadonly --downloaddir <rpm_dir> <package>
আপনি প্যাকেজটির আরপিএম <package>
এবং ডিরেক্টরিতে এর সমস্ত নির্ভরতা ডাউনলোড করবেন <rpm_dir>
। গিট সহ উদাহরণ:
$ mkdir root rpms
$ sudo yum install --installroot=/home/roy/root \
--downloadonly --downloaddir rpms/ git
sudo yum install yum-plugin-downloadonly.noarch
বলে No package yum-plugin-downloadonly.noarch available.
কি করবে?
yum search yumdownloader
ফিরছেনyum-utils.noarch
Cannot find a valid baseurl for repo: base/$releasever/x86_64
যুক্ত করার সময় আমি এই ত্রুটিটি পেয়েছি --installroot
।
Cannot find a valid baseurl...
সমাধান সহ সেন্টোস 7-তে সমস্যা থেকে মুক্তি পেয়েছেন : প্যারামিটারটি যুক্ত করুন--releasever=/
আমি বুঝতে পারি যে থ্রেডটি পুরানো, তবে যদি কেউ এর মধ্যে থেকে হোঁচট খায় তবে আপনি পছন্দসই আচরণটি সম্পাদন করতে yum ব্যবহার করতে পারেন।
প্রথমে তাত্ক্ষণিকভাবে ডাউনলোডনিয় প্লাগইন (আরএইচইএল-র জন্য নির্দেশাবলী): (আরএইচইল 5)
$ yum install yum-downloadonly
(RHEL6)
$ yum install yum-plugin-downloadonly
এরপরে নিম্নলিখিত কমান্ডটি চালান:
$ yum install --downloadonly --downloaddir=/some/arbitrary/path [package]
আপনি যদি ইয়ম উপেক্ষা করেন --downloaddir
তবে স্বয়ংক্রিয়ভাবে ডাউনলোড হয়ে যাবে/var/cache/yum
সুতরাং আপনার বিশেষত yumdownloader ব্যবহার করার প্রয়োজন না হলে আমি মনে করি লক্ষ্যটি অর্জনের এটি সহজতম উপায়।
যদি আপনি ভবিষ্যত (ফেডোরা 23+) থেকে থাকেন তবে যেখানে ইউন ডিএনএফ দ্বারা প্রতিস্থাপন হচ্ছে, আপনি সম্ভবত এই বাশ স্ক্রিপ্টটিকে দরকারী মনে করতে পারেন।
rpmDownloader:
#!/bin/sh
set -xev
rm -fr packages
#dnf download $1 --destdir packages
export PATH=.:$PATH
echo $PWD
DEPS=$(rpmResolver $1)
dnf download $DEPS --destdir packages
rm -fr ${1}-dependencies
mv packages ${1}-dependencies
rpmResolver:
#!/bin/sh
goal=$1
deps=$(rpm -q --qf '[%{REQUIRENAME}\n]' $goal | egrep -v '^(rpmlib|rtld|config|/)')
goals=
while true; do
subs=$(rpm -q --qf '%{NAME}\n' --whatprovides $deps | sort -u | tr '\n' ' ')
if [ ."$subs" = ."$goals" ]; then
echo -n "$goals "
exit 0
fi
goals=$(echo $goals $subs | tr ' ' '\n' | sort -u | tr '\n' ' ')
for sub in $subs; do
subdeps=$(rpm -q --qf '[%{REQUIRENAME}\n]' $sub | egrep -v '^(rpmlib|rtld|config|/)')
deps=$(echo $deps $subdeps | sort -u)
done
done
আমি দেখতে পেয়েছি যে অনুশীলনে এই জাতীয় রক্ষণাবেক্ষণ করা কঠিন। আমরা এই রেপো তৈরি করেছি কারণ:
আমরা যে বিষয়গুলি পেরেছি তা হ'ল:
শেষ পর্যন্ত আমাদের সমস্যার আরও ভাল সমাধানটি ছিল অফিসিয়াল রেপো এবং আমাদের ব্যবহৃত প্যাকেজগুলি ক্যাশে করা। এটি ভাল কাজ করে কারণ:
আমরা এনগিনেক্স এবং অন্তর্নির্মিত প্রক্সি সমর্থন ব্যবহার করেছি।
লুক এর উত্তর এবং মন্তব্য উপর ভিত্তি করে ...
এই লেখার হিসাবে repotrack
নিম্নলিখিত আর্কিটেকচারের সব ম্যাচ হবে x86_64
নিদিষ্ট হয়: x86_64
, athlon
, i686
, i586
, i486
, i386
, এবং noarch
।
আমার উদ্দেশ্যে আমি কেবল আগ্রহী x86_64
এবং noarch
প্যাকেজগুলিতে আগ্রহী এবং আমি জানি যে আমার বিতরণে কোনও athlon
প্যাকেজ নেই।
নিম্নলিখিত কমান্ডটি প্যাকেজ ইউআরএলগুলির একটি তালিকা পেয়েছে, i?86
আর্কিটেকচার ফিল্টার আউট করে এবং প্যাকেজগুলি ডাউনলোড করার সাথে সাথে এর নামগুলি ছাপিয়ে দেয়:
repotrack --arch=x86_64 --urls gs1000-server \
| sed '/\.i[3-6]86\.rpm$/d' \
| xargs -I {} sh -c 'curl -s -O {}; echo {} | rev | cut -d '/' -f 1 | rev'
মনে রাখবেন যে repotrack
এটি আপনাকে সক্ষম করে না যদি এমন কোনও প্যাকেজ খুঁজে না পায় যা আপনার সক্ষম পোষাগুলির মধ্যে নির্ভরতা সন্তুষ্ট করে। এটি নিঃশব্দে এড়িয়ে যায়।
চেষ্টাও করুন
repoquery -R --resolve --recursive <name> | xargs -r yumdownloader
উদাহরণ:
repoquery -R --resolve --recursive firefox | xargs -r yumdownloader
সূত্র: https://www.thegeekdiary.com/downloading-rpm-packages-with-d dependferences- yumdownloader- vs- yum-downloadonly- vs- repoquery/
--requires
--resolve
বিকল্পটি ডিপ্সের জন্য পুনরাবৃত্তভাবে কাজ করে না।