apt-get আপডেট কেবলমাত্র একটি নির্দিষ্ট সংগ্রহস্থলের জন্য


108

আমি যখন পিপিএ যুক্ত করি এবং আমি এর কিছু সামগ্রী ইনস্টল করতে চাই, তখন এটি ব্যবহার করে আমার সমস্ত অ্যাপ্লিকেশন তালিকা পুনরায় আপডেট করা বেশ বিরক্তিকর apt-get update

পরিবর্তে কেবলমাত্র প্রদত্ত সংগ্রহস্থলের সামগ্রীটি সিঙ্ক করা সম্ভব?


1
উইল থেকে শুরু করে, আপনি কেবল ব্যবহার করতে পারেনadd-apt-repository -u
ট্রেভিও

-uআমি যতদূর বলতে পারি উবুন্টু (15.x) তেমন কোনও নেই ।
কেনারব

@ ট্র্যাভিওও উইলির ম্যানপেজে এটি উল্লেখ করা হয়নি: manpages.ubuntu.com/manpages/wily/en/man1/… এটি অন্য কোথাও দলিলযুক্ত ?
মুড়ু

@ মুরু আমি মনে করি এটি ঠিক করতে হবে, এটি কেবলমাত্র উল্লেখ করা হয়েছে add-apt-repository --help। ম্যানপেজটি ঠিক করার জন্য দয়া করে একটি বাগ খুলুন।
ট্রেভিও

@ ট্রেভিও @ এমুরু এফওয়াইআই, -uকার্যকারিতাটি 18.04 সাল থেকে সরানো হয়েছে। দেখুন askubuntu.com/questions/65245/...
wisbucky

উত্তর:


82

হ্যাঁ, অপ্ট-গেট এটি করতে পারে এবং এটি একটি দুর্দান্ত উপায়ে করতে পারে।

  1. নিম্নলিখিত যুক্ত করুন ~/.bash_funcs

    update-repo() {
        for source in "$@"; do
            sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/${source}" \
            -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"    
        done
    }
    
  2. নিম্নলিখিত যুক্ত করুন ~/.bashrc

    if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
    fi
    
  3. নিম্নলিখিত যুক্ত করুন ~/.bash_completion

    # Debian user-defined completion                             -*- shell-script -*-
    
    _ppa_lists(){
        local cur
        _init_completion || return
    
        COMPREPLY=( $( find /etc/apt/sources.list.d/ -name "*$cur*.list" \
    -exec basename {} \; 2> /dev/null ) )
        return 0
    } &&
    complete -F _ppa_lists update-repo
    
  4. তারপরে ফাইলগুলি উত্স করুন

    . ~/.bashrc
    . ~/.bash_completion
    
  5. সম্পন্ন এবং এটি ফায়ার শুরু

    update-repo <tab> <tab>

আপনি ব্যাশ-সমাপ্তির বাস্তবায়ন সহ পুরো অ্যাপটি উত্স আপডেট না করেই একক পিপিএ সংগ্রহস্থল আপডেট করতে পারেন।


14
আপনার এই প্যাকেজ করা উচিত।
পাইরুলেজ

3
আপনি কি নিশ্চিত যে অটোকম্প্লিপশন স্ক্রিপ্টটি কাজ করছে?
কিয়েড

1
আমি যখন ট্যাবটিতে আঘাত করি তখন এটি প্রদর্শিত হয়update-repo _init_completion: command not found
কেবি

2
এফওয়াইআই: এই পোস্টটি থেকে আমি যে জ্ঞান অর্জন করেছি তা ব্যবহার করে আমি স্বয়ংক্রিয়ভাবে এটি করার জন্য অ্যাড-অ্যাপ-রিপোজিটরির বিকল্প প্রস্তাব করতে পারি। Code.launchpad.net/~evarlast/software-properties/support-update/…
জয় _সিলি_ভেরালাস্ট_ ওয়ারেন

2
@ সিপ্রিয়ানটোমিয়াগা এটি একীভূত হয়ে গেছে, তবে উত্সটি এখানে: b بازار.launchpad.net/~evarlast/software-poperties/… আমি আশা করছি এটি ম্লান হয়ে যাবে।
জে _সিলি_ইভারলাস্ট_ ওয়েরেন

41

ডিরেক্টরিতে যদি একটি নির্দিষ্ট ফাইলের মধ্যে সংগ্রহস্থল কনফিগার করা থাকে /etc/apt/sources.list.d/, বলুন myrepo.list, আপনি কমান্ডটি দিয়ে সেই একক সংগ্রহস্থলটি আপডেট করতে পারেন:

sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/myrepo.list" \
    -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"

তবুও এটি খুব সুবিধাজনক নয়।
এটি ব্যাশ ফাংশন সংজ্ঞায়িত করে সরলীকৃত করা যেতে পারে

update_repo() {
    sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" \
        -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}

যাতে আপনি সহজেই চালাতে পারেন

update_repo myrepo

আমি এটি আবার পরীক্ষা করে দেখেছি, তবে এটি কার্যকর হয় না যদি আপনি এমন কোনও প্যাকেজ ইনস্টল করতে চান যা অন্য কোনও সংগ্রহস্থলের (মূল সংরক্ষণাগারেও) কিছু সমাধান না করা নির্ভরতা রয়েছে
ট্রেভিও

1
আপনি কি ব্যাখ্যা করতে পারেন যে '-' স্যুরসেভার্ট কনফিগারেশনে কী বোঝায়?
সাজুউক

আমি মনে করি '-' বলার জন্য কেবল একটি জঘন্য উপায় sourcepartsব্যবহার করা উচিত নয়। Github.com/Debian/apt/blob/master/apt-pkg/sourcelist.cc#L313 দেখুন । যদিও আমি ভুল হতে পারি, '-' এর ব্যাখ্যা দেওয়ার জন্য কোনও উপযুক্ত ডক খুঁজে পাইনি।
র্যান্ডমনেস

12

ওয়াই পিপিএ ম্যানেজার একটি কমান্ড লাইন টুল নামে আসে যা update-ppaআপনাকে একটি একক পিপিএ আপডেট করতে দেয়।

উদাহরণ স্বরূপ:

sudo update-ppa ppa:nilarimogard/webupd8

এছাড়াও, ওয়াই পিপিএ পরিচালকের মাধ্যমে পিপিএ যুক্ত করার সময়, পিপিএ উত্স স্বয়ংক্রিয়ভাবে আপডেট হয় (কেবলমাত্র সেই পিপিএর জন্য)। ভবিষ্যতের সংস্করণে, একক পিপিএও ম্যানুয়ালি আপডেট করার জন্য একটি জিইউআই হতে চলেছে।

ওয়াই পিপিএ পরিচালক সম্পর্কে আরও তথ্য, এখানে


5
sudo add-apt-repository ppa:webupd8team/y-ppa-managerতারপরে sudo apt-get updateএবং অবশেষেsudo apt-get install y-ppa-manager
mchid

8

একটি নির্দিষ্ট সংগ্রহস্থল আপডেট করতে -o, যেমন:

apt-get update -o Dir::Etc::sourcelist=/path/to/repo.list

এখানে একটি ওয়ান-লাইনার আপডেট করা হচ্ছে সম্প্রতি যুক্ত এপ্ট সংগ্রহস্থল

find /etc/apt/sources.list.d -type f -name '*.list' -exec sudo apt-get update -o Dir::Etc::sourcelist="{}" ';'

সমস্ত সংগ্রহস্থল আপডেট করার চেয়ে এটি দ্রুততর, বিশেষত নতুন যোগ করার পরে ভিএম প্রভিশনের সময়।


3
আমি মনে করি /path/to
এটিতে

পছন্দ করুন
রোমান

1

-uবিকল্প 15,10 মধ্যে যোগ করা হয়েছিল । 15.10 থেকে 17.10 পর্যন্ত আপনি -uকেবলমাত্র যে নির্দিষ্ট রেপো যুক্ত করছেন তা স্বয়ংক্রিয়ভাবে আপডেট করতে আপনি ব্যবহার করতে পারেন :

add-apt-repository -u my-ppa

নির্বোধ জিনিসটি এই বিকল্পটি man18.04 অবধি যুক্ত করা হয়নি (তবে এটি ডকুমেন্টেড ছিল add-apt-repository --help)। তবে 18.04-এ, এই কার্যকারিতাটি সরানো হয়েছিল! (আবার, ভিতরে না man, তবে আপনি দেখতে পাবেন add-apt-repository --help)।

18.04 সালে আপডেট কার্যকারিতা পরিবর্তন করা হয়েছে সবসময় একটি পূর্ণ করতে apt-get updateপরে add-apt-repository-uবিকল্প কার্যকরভাবে সরানো হয়েছে। এটি লিগ্যাসি সিনট্যাক্সের জন্য রয়ে গেছে, তবে এটি সর্বদা সেট করা থাকে options.update = False। 18.04-এ, আপনার কাছে বিকল্প রয়েছে -n, --no-updateযা পুরানো আচরণের মতো। তবে এটি সমস্ত বা কিছুই নয়, আপনি 18.04 সাল থেকে কোনও একক রেপো আপডেট করতে পারবেন না।

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