উবুন্টু ১.0.০৪-তে সোর্স ইউআরআই সহ /etc/apt/sources.list কীভাবে স্বয়ংক্রিয়ভাবে আপডেট করবেন?


10

নিম্নলিখিত কমান্ড উবুন্টু 15.10 এ ভাল কাজ করেছে:

sudo apt-get build-dep emacs24

তবে উবুন্টু 16.04 এ চালানোর সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

Reading package lists... Done
E: You must put some 'source' URIs in your sources.list

15,10 সব লাইন (সংখ্যায় প্রায় 10) দিয়ে deb-srcমধ্যে /etc/apt/sources.listযেখানে uncommented, যেহেতু 16,04 সংশ্লিষ্ট লাইন যেখানে আউট মন্তব্য করেছে। উদাহরণস্বরূপ, এখানে আমার বর্তমান থেকে 4 টি লাইন রয়েছে sources.list:

## Major bug fix updates produced after the final release of the
## distribution.
deb http://no.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
# deb-src http://no.archive.ubuntu.com/ubuntu/ xenial-updates main restricted

এই পরিবর্তনের কারণ কী?

এরপরে, আমি /etc/apt/sources.listপ্রতিবার উবুন্টু পুনরায় স্থাপনার সময় ম্যানুয়ালি সম্পাদনা এড়াতে চাই । কীভাবে এটি ( deb-srcলাইনগুলিকে সংঘবদ্ধ করা ) স্বয়ংক্রিয়ভাবে করা যায়?


সম্ভবত কারণটি হ'ল বেশিরভাগ ব্যবহারকারীর জন্য এটি প্রতিটি সময় উপলব্ধ উত্স প্যাকেজগুলির ডাটাবেস আপডেট করতে অযথা সময় / ব্যান্ডউইথ নষ্ট করে। আপনি যে জিওআইআই ব্যবহার করা সংগ্রহস্থলগুলি কনফিগার করেন, সেখান থেকে আপনি সহজেই সেই লাইনগুলি অক্ষম / সক্ষম করতে (মন্তব্য / অসাধারণ) করতে পারেন। sedচারপাশে কিছু স্ক্রিপ্টও রয়েছে।
জানক

python3-software-propertiesপ্যাকেজের মাধ্যমে একটি পাইথন স্ক্রিপ্ট খুব লিখতে সহায়ক হতে পারে।
জানু

@ জ্যানসি ধন্যবাদ, আমি আমার নিজস্ব স্ক্রিপ্ট লিখেছি। নীচে উত্তর দেখুন।
হ্যাকন হাগল্যান্ড

উত্তর:



12

আমার একই সমস্যাটি উবুন্টু 16.04 এর একটি সার্ভার ইন্সটলে ছিল, তাই কোনও জিইউআই নেই। আমার যা দরকার ছিল তা হ'ল কয়েকটি sedকমান্ড।

sudo sed -i -- 's/#deb-src/deb-src/g' /etc/apt/sources.list && sudo sed -i -- 's/# deb-src/deb-src/g' /etc/apt/sources.list

তারপরে sudo apt-get updateএবং চালিয়ে যান।


2

এখানে একটি (বর্তমানে অপরিবর্তিত) বাশ স্ক্রিপ্ট রয়েছে যা এতে অসুবিধে deb-srcরেখাগুলিতে ব্যবহৃত হতে পারে sources.list:

tempdir=$(mktemp -d)
cd "$tempdir"
source_file=/etc/apt/sources.list
new_file=sources.list.new
perl -pE 's/^#\s+(deb-src)/$1/' "$source_file" > "$new_file"
sudo cp "$new_file" "$source_file"
sudo apt-get update

স্ক্রিপ্টের দরকার নেই। আমার উত্তর দেখুন দয়া করে।
গুনার হেজালমারসন

1

সহজ সমাধান যা অন্যেরা আরও সংক্ষেপে পোস্ট করেছে তা করে:

sudo perl -p -i -n -e "s/# *deb-src/deb-src/"  /etc/apt/sources.list

মূল পার্থক্য: পার্ল -i ইনপ্লেস বিকল্প রয়েছে যা ফাইলগুলিকে জায়গায় পরিবর্তন করে; আমি ব্যাকআপ ফাইলগুলির জন্য প্রত্যয় যুক্ত করিনি কারণ আমি চাইনি যে দুর্ঘটনাক্রমে ব্যাকআপ ফাইলগুলি ডেটা ফাইল হিসাবে বিবেচিত হবে। এবং "*" optionচ্ছিক সাদা স্থান নিয়ে কাজ করে। "perl -p -n -e" বেশিরভাগ ক্ষেত্রে "সেড-ই" এর সমান, যদিও লোভী রেজেক্স ম্যাচের জন্য নজর রাখুন।

অন্যদের মতো একই সীমাবদ্ধতা রয়েছে: মূলটি সক্ষম না করা সত্ত্বেও এটি উত্স সক্ষম করে (অর্থাত্ অংশীদার), এবং এটি /etc/apt/sources.list.d এ কাজ করে না। নিম্নলিখিতগুলি /etc/apt/sources.list.d* প্রক্রিয়া করবে তবে প্রথমে একটি ব্যাকআপ দেয়।

(cd /etc/apt/; sudo tar cvf sources.list.tar sources.list sources.list.d);  for i in /etc/apt/sources.list /etc/apt/sources.list.d/*; do sudo perl -p -i -n -e "s/# *deb-src/deb-src/" $i; done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.