SSD Nodes Learn Hosting plans →
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-08-30

Duplicate apt sources ఎర్రర్‌ను పరిష్కరించడం ఎలా

apt update రన్ చేసినప్పుడు 'target configured multiple times' అని వస్తుందా? పాత .list ఫైల్ మరియు కొత్త deb822 .sources ఫైల్ మధ్య ఉన్న వైరుధ్యాన్ని తొలగించి, aptని ఎలా సరిచేయాలో చూడండి.

Duplicate apt sources error అంటే ఏమిటి

Duplicate apt sources అంటే ఒక రిపోజిటరీ రెండు వేర్వేరు ఫైళ్లలో రెండుసార్లు ప్రకటించబడిందని, APT (advanced package tool) ఆ రెండు కాపీలను గుర్తించిందని అర్థం. Ubuntu 24.04 మరియు ఆ తర్వాతి వెర్షన్లలో, ఇది దాదాపు ఎప్పుడూ ఒక థర్డ్-పార్టీ ఇన్‌స్టాల్ స్క్రిప్ట్ పాత పద్ధతిలోని ఒక లైన్ ఉన్న .list ఫైల్‌ను సృష్టించడం వల్ల జరుగుతుంది, అప్పటికే అదే రిపోజిటరీ కోసం ఒక deb822 .sources ఫైల్ డిస్క్‌లో ఉంటుంది. దీనివల్ల ఏదీ పాడవ్వదు మరియు ఏ ప్యాకేజీకి ప్రమాదం ఉండదు. ఆ రెండు ప్రకటనలలో ఒకదానిని తొలగిస్తే, ఈ సందేశం పోతుంది.

ప్రజలు సెర్చ్ బాక్స్‌లో పేస్ట్ చేసే లైన్ ఇది:

W: Target Packages (stable/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list.d/docker.list:1 and /etc/apt/sources.list.d/docker.sources:1

దీనిని చివర నుండి చదవండి. రెండు ఫైళ్లు, ప్రతి ఒక్కటి ఒక లైన్ నంబర్‌తో, ఒకే విషయాన్ని ప్రకటిస్తున్నాయి. Target Packages అనేది ఒక రిపోజిటరీ ఏ ప్యాకేజీలను అందిస్తుందో తెలుసుకోవడానికి apt డౌన్‌లోడ్ చేసే ఇండెక్స్, మరియు stable/binary-amd64/Packages అనేది ఆ ఇండెక్స్ కవర్ చేసే కాంపోనెంట్ (stable) మరియు ఆర్కిటెక్చర్ (amd64) పేర్లను సూచిస్తుంది. కాబట్టి, stable కాంపోనెంట్ కోసం amd64 ఇండెక్స్ docker.list లోని 1వ లైన్‌లో, మరియు మళ్ళీ docker.sources లోని 1వ లైన్‌లో కాన్ఫిగర్ చేయబడిందని apt మీకు చెబుతోంది.

apt 3.0 మరియు ఆ తర్వాతి వెర్షన్లలో, అంటే Ubuntu 25.04 నుండి మరియు Debian 13 నుండి, అదే సందేశం W: కి బదులుగా Warning: తో మొదలవుతుంది. ఆ ప్రిఫిక్స్ తర్వాత ఉండే టెక్స్ట్ ఒకేలా ఉంటుంది.

ఆ హెచ్చరిక తేలికపాటి సమస్య మాత్రమే. apt ఆ రెండు ప్రకటనలను విలీనం చేస్తుంది మరియు అప్‌డేట్ విజయవంతంగా జరుగుతుంది, ఎందుకంటే రెండూ ఒకే కీతో ఒకే ఆర్కైవ్‌ను వివరిస్తాయి. కఠినమైన సమస్య వచ్చినప్పుడు మాత్రం అన్నీ ఆగిపోతాయి:

E: Conflicting values set for option Signed-By regarding source https://download.docker.com/linux/ubuntu/ noble: /usr/share/keyrings/docker-archive-keyring.gpg != /etc/apt/keyrings/docker.asc
E: The list of sources could not be read.

ఇక్కడ apt నిరాకరిస్తుంది, ఎందుకంటే ఆ రెండు ప్రకటనలు ఒకే ఆర్కైవ్ కోసం వేర్వేరు సైనింగ్ కీలను పేర్కొంటున్నాయి. ఇది రెండు ఒకేలా ఉన్న ప్రకటనలను విలీనం చేస్తుంది, కానీ రెండు Signed-By విలువల మధ్య ఒకదానిని ఎంచుకోదు, ఎందుకంటే తప్పు కీని ఎంచుకోవడం అంటే ఆర్కైవ్ యజమాని సంతకం చేయని కీతో ప్యాకేజీ సంతకాలను సరిచూడడం అవుతుంది. కాబట్టి apt ఏ సోర్సులను చదవదు. మీరు ఫైళ్లను మాన్యువల్‌గా ఎడిట్ చేసే వరకు apt update మరియు apt install రెండూ అదే రెండు లైన్లతో విఫలమవుతాయి.

డూప్లికేట్ ఎలా ఏర్పడుతుంది

ఈ రెండు ఫార్మాట్లు వేర్వేరు ఎక్స్‌టెన్షన్లతో వేర్వేరు ఫైళ్లలో ఉంటాయి, కాబట్టి డిస్క్‌పై ఇవి రెండూ ఉండటాన్ని ఏదీ ఆపదు. apt ఈ ఓవర్‌ల్యాప్‌ను ఆలస్యంగా గుర్తిస్తుంది; అంటే, ప్రతి సోర్స్ ఫైల్‌ను అది సేకరించాల్సిన ఇండెక్స్ టార్గెట్ల జాబితాగా విస్తరించినప్పుడు మాత్రమే ఇది తెలుస్తుంది. ఆ క్షణం వరకు docker.list మరియు docker.sources అనేవి రెండు సంబంధం లేని ఫైళ్లు.

ఈ జంట ఏర్పడటానికి నాలుగు సాధారణ కారణాలు ఉన్నాయి:

  • ఒక వెండర్ ఇన్‌స్టాల్ స్క్రిప్ట్, లేదా పాత పోస్ట్ నుండి కాపీ చేసిన కమాండ్, /etc/apt/sources.list.d/vendor.list ఫైల్‌ను tee లైన్‌తో రాస్తుంది.
  • ఆ తర్వాత వెండర్ ప్యాకేజీ స్వయంగా /etc/apt/sources.list.d/vendor.sources ను విడుదల చేసి, దానిని మీ కోసం ఇన్‌స్టాల్ చేస్తుంది.
  • Ubuntu 24.04 మరియు ఆ తర్వాతి వెర్షన్లలో add-apt-repository అనేది deb822 .sources ఫైళ్లను రాస్తుంది, కాబట్టి మీరు గతంలో మాన్యువల్‌గా .list గా జోడించిన PPA (personal package archive), ఇప్పుడు .sources గా తిరిగి వస్తుంది.
  • ఒక రిలీజ్ అప్‌గ్రేడ్, డిస్ట్రిబ్యూషన్ యొక్క సొంత సోర్స్‌లను deb822 ఫార్మాట్‌లోకి మార్చినప్పుడు, మీరు మాన్యువల్‌గా రాసిన .list ఫైల్‌ను అలాగే వదిలేస్తుంది.

ప్రతి మార్గం విడిగా చూసినప్పుడు సరైనదే. కానీ, వీటిలో రెండు వేర్వేరు సమయాల్లో (తరచుగా నెలల వ్యవధిలో) ఒకే సిస్టమ్‌పై జరిగినప్పుడు డూప్లికేట్ సమస్య ఏర్పడుతుంది.

రెండు ఫార్మాట్లు, పక్కపక్కన

పాత ఫార్మాట్ ప్రతి రిపోజిటరీకి ఒక లైన్ కలిగి ఉంటుంది, మరియు అందులోని ప్రతి భాగం స్థానాన్ని బట్టి ఉంటుంది.

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable

క్రమం స్థిరంగా ఉంటుంది: రకం (బైనరీ ప్యాకేజీల కోసం deb, సోర్స్ ప్యాకేజీల కోసం deb-src), ఆ తర్వాత చతురస్రాకార బ్రాకెట్లలో ఆప్షన్లు, ఆపై ఆర్కైవ్ యొక్క URI (uniform resource identifier), ఆ తర్వాత సూట్, చివరగా ఒకటి లేదా అంతకంటే ఎక్కువ కాంపోనెంట్లు. స్థానాన్ని బట్టి అర్థం మారుతుంది కాబట్టి, తప్పు చోట స్పేస్ ఇస్తే apt చదివే విధానం మారిపోతుంది.

deb822 అదే విషయాన్ని పేరున్న ఫీల్డ్స్ కలిగిన ఒక స్టాంజా (stanza) రూపంలో తెలియజేస్తుంది. ఈ పేరు RFC 822 నుండి వచ్చింది, ఇది డెబియన్ ఇప్పటికే ప్యాకేజీ కంట్రోల్ ఫైల్స్ కోసం ఉపయోగిస్తున్న మెయిల్ హెడర్ శైలి.

Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: noble
Components: stable
Architectures: amd64
Signed-By: /etc/apt/keyrings/docker.asc

అదే రిపోజిటరీ, అదే కీ, కొత్తగా ఏమీ చేర్చలేదు. మ్యాపింగ్ నేరుగా ఉంటుంది: deb అనేది Types గా మారుతుంది, ఆర్కైవ్ అడ్రస్ URIs అవుతుంది, సూట్ Suites అవుతుంది, కాంపోనెంట్లు Components అవుతాయి, మరియు ప్రతి బ్రాకెట్ ఆప్షన్ దాని స్వంత ఫీల్డ్ అవుతుంది, కాబట్టి signed-by= అనేది Signed-By: గా మరియు arch= అనేది Architectures: గా మారుతాయి.

ప్రతి ఫీల్డ్ పేరు బహువచనంలో ఉంటుంది ఎందుకంటే ప్రతి ఫీల్డ్ స్పేస్‌తో వేరు చేయబడిన జాబితాను తీసుకుంటుంది. ఒక స్టాంజాలోని Suites: noble noble-updates noble-backports మూడు వేర్వేరు deb లైన్లను భర్తీ చేస్తుంది. ఒక ఖాళీ లైన్ స్టాంజాను ముగిస్తుంది, కాబట్టి ఒకే .sources ఫైల్ అనేక రిపోజిటరీలను కలిగి ఉండవచ్చు. deb822 పాత వన్-లైన్ ఫార్మాట్ సరిగ్గా నిర్వహించలేని సెట్టింగులను కూడా కలిగి ఉంటుంది: రిపోజిటరీని ఆఫ్ చేయడానికి Enabled: no, Trusted, Check-Valid-Until, మరియు ప్రతి లైన్ ఒక స్పేస్ ఇండెంట్ చేయబడి, ఖాళీ లైన్లు ఒక చుక్కగా (dot) వ్రాయబడిన, నేరుగా Signed-By లో పేస్ట్ చేయబడిన ఇన్‌లైన్ కీ.

ప్రతి ఫైల్ ఎక్కడ ఉంటుంది

  • /etc/apt/sources.list: అసలైన సింగిల్ ఫైల్. Ubuntu 24.04 మరియు ఆ తర్వాతి వెర్షన్లలో ఇది సాధారణంగా ఖాళీగా ఉంటుంది లేదా కొత్త లొకేషన్‌ను సూచించే ఒక కామెంట్‌ను మాత్రమే కలిగి ఉంటుంది.
  • /etc/apt/sources.list.d/*.list: ఒకే లైన్ ఎంట్రీలు, సాధారణంగా ప్రతి రిపోజిటరీకి ఒక ఫైల్ ఉంటుంది.
  • /etc/apt/sources.list.d/*.sources: deb822 స్టాంజాలు. Ubuntu 24.04 మరియు ఆ తర్వాతి వెర్షన్లు డిస్ట్రిబ్యూషన్ యొక్క సొంత రిపోజిటరీలను ఇక్కడ, అంటే ubuntu.sources లో ఉంచుతాయి.
  • /etc/apt/keyrings/: మీరు జోడించే కీలు ఇక్కడ ఉండాలి. /usr/share/keyrings/ ప్యాకేజీ ద్వారా వచ్చిన కీలను కలిగి ఉంటుంది.

apt కేవలం .list లేదా .sources తో ముగిసే ఫైళ్లను మాత్రమే చదువుతుంది, మరియు ఫైల్ పేరులో అక్షరాలు, అంకెలు, అండర్‌స్కోర్, హైఫన్ మరియు పీరియడ్ ఉండవచ్చు. వేరే ఏదైనా ఎక్స్‌టెన్షన్ ఉన్న ఫైల్ ఒక నోటీసుతో దాటవేయబడుతుంది, ఇది కింద పేర్కొన్న పరిష్కారానికి ముఖ్యమైనది.

డూప్లికేట్ జతను కనుగొనండి

డైరెక్టరీ లిస్టింగ్‌తో ప్రారంభించండి:

ls -l /etc/apt/sources.list.d/
-rw-r--r-- 1 root root  195 Aug  3 09:12 docker.list
-rw-r--r-- 1 root root  254 Aug  9 14:40 docker.sources
-rw-r--r-- 1 root root 2683 Jun 11 08:02 ubuntu.sources

ఒకే పేరు (stem) ఉండి వేర్వేరు ఎక్స్‌టెన్షన్లు కలిగిన రెండు ఫైళ్లు సాధారణ జతగా ఉంటాయి, కానీ పేర్లను నమ్మవద్దు. ఫైల్ కంటెంట్‌ను చదవండి, ఎందుకంటే డూప్లికేట్ ఏదైనా పేరుతో ఉన్న ఫైల్‌లో దాగి ఉండవచ్చు:

grep -rn -E '^(deb |deb-src |Types:|URIs:|Suites:|Signed-By:)' /etc/apt/sources.list /etc/apt/sources.list.d/
/etc/apt/sources.list.d/docker.list:1:deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu noble stable
/etc/apt/sources.list.d/docker.sources:1:Types: deb
/etc/apt/sources.list.d/docker.sources:2:URIs: https://download.docker.com/linux/ubuntu
/etc/apt/sources.list.d/docker.sources:3:Suites: noble
/etc/apt/sources.list.d/docker.sources:6:Signed-By: /etc/apt/keyrings/docker.asc

ఒకే హోస్ట్ మరియు ఒకే సూట్ (suite) కలిగిన రెండు ఎంట్రీలే ఈ జత. రెండూ https://download.docker.com/linux/ubuntu ని మరియు noble సూట్‌ను సూచిస్తున్నాయి, కాబట్టి అవి ఒకే రిపోజిటరీని రెండుసార్లు రాసినట్లు అవుతుంది. వాటి Signed-By పాత్‌లు కూడా భిన్నంగా ఉన్నాయి, దీనివల్లనే పైన చూపిన Conflicting values ఎర్రర్ వస్తుంది.

ఈ దశ కోసం apt కమాండ్‌కు బదులుగా grep ని ఉపయోగించండి. apt ఇప్పటికే ఈ కాన్ఫ్లిక్ట్ వల్ల ఆగిపోయినప్పుడు అది మీ సోర్స్‌లను లిస్ట్ చేయలేదు, కాబట్టి apt-cache policy మీకు కావలసిన సమాధానానికి బదులుగా అదే ఎర్రర్‌ను ప్రింట్ చేస్తుంది.

సమస్యను పరిష్కరించండి: deb822 ఫైల్‌ను ఉంచండి, పాత ఫైల్‌ను తొలగించండి

.sources ఫైల్‌ను ఉంచండి. ఇది ప్రస్తుతం apt టూలింగ్ వాడుతున్న ఫార్మాట్, Debian మరియు Ubuntu రెండూ దీనినే అనుసరిస్తున్నాయి. దేనినైనా తొలగించే ముందు, ఈ రెండు కీ పాత్‌లలో ఏది డిస్క్‌లో ఉందో తనిఖీ చేయండి:

ls -l /etc/apt/keyrings/ /usr/share/keyrings/ | grep -i docker
-rw-r--r-- 1 root root 4813 Aug  9 14:40 docker.asc

/etc/apt/keyrings/docker.asc మాత్రమే అందుబాటులో ఉంది, కాబట్టి deb822 ఫైల్ సరైన సమాచారాన్ని కలిగి ఉంది మరియు .list ఫైల్ తొలగించబడిన కీని సూచిస్తోంది. మీరు ఉంచాలనుకుంటున్న ఫైల్‌లో లేని కీ పేరు ఉంటే, ముందుగా పనిచేస్తున్న పాత్‌ను అందులోకి కాపీ చేసి, ఆపై రెండో ఫైల్‌ను తొలగించండి.

పాత ఫైల్‌ను నేరుగా తొలగించే బదులు డైరెక్టరీ నుండి బయటకు తరలించండి:

sudo mkdir -p /root/apt-sources-backup
sudo mv /etc/apt/sources.list.d/docker.list /root/apt-sources-backup/
sudo apt update

దీనిని docker.list.bak గా పేరు మార్చి అక్కడే ఉంచినా పనిచేస్తుంది, ఎందుకంటే apt తెలియని ఎక్స్‌టెన్షన్లను పట్టించుకోదు, కానీ ప్రతి apt రన్ అప్పుడు ఇలా కనిపిస్తుంది:

N: Ignoring file 'docker.list.bak' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

ఫైల్‌ను వేరే చోటికి తరలించడం వల్ల ఆ నోటీసు స్క్రీన్‌పై కనిపించదు మరియు బ్యాకప్ కూడా భద్రంగా ఉంటుంది. ఆ తర్వాత ఒక ఆరోగ్యకరమైన apt update ఇలా కనిపిస్తుంది, ఇందులో రెండు ఫైళ్లను పేర్కొనే లైన్ ఉండదు:

Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 https://download.docker.com/linux/ubuntu noble InRelease [48.8 kB]
Get:3 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Fetched 175 kB in 1s (146 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

ఇప్పుడు రిపోజిటరీ మార్పులను తట్టుకుందో లేదో నిర్ధారించుకోండి:

apt-cache policy | grep download.docker.com
 500 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages
     origin download.docker.com

ఒకవేళ వెండర్ డాక్యుమెంటేషన్ ఇంకా పాత సింగిల్ లైన్ ఫైల్ పద్ధతినే అనుసరిస్తుంటే, మీరు దానిని ఉంచుకుని .sources ఫైల్‌ను తొలగించవచ్చు. ఒక నియమం దీనిని నిర్ణయిస్తుంది: ఒక నిర్దిష్ట ఆర్కైవ్ మరియు సూట్ కోసం కేవలం ఒక ఫైల్ మాత్రమే ఉండాలి.

ఒక విఫలమైన థర్డ్-పార్టీ సోర్స్ ఎందుకు apt update ను నిలిపివేస్తుంది

పక్కనే ఉన్న వైఫల్యం భిన్నంగా కనిపిస్తుంది, కానీ దీనికి మూల కారణం ఒక్కటే: apt ఉపయోగించలేని ఒక థర్డ్-పార్టీ సోర్స్. మొదటి సందర్భం ఒక తప్పిపోయిన కీకి సంబంధించినది:

Err:5 https://download.docker.com/linux/ubuntu noble InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository 'https://download.docker.com/linux/ubuntu noble InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Signed-By ఫీల్డ్ అందుబాటులో లేదు, లేదా అది ఉపయోగించలేని కీ ఫైల్‌ను సూచిస్తోంది. దీనివల్ల ఆర్కైవ్ యొక్క InRelease ఫైల్‌పై ఉన్న సంతకాన్ని apt ధృవీకరించలేదు. తనిఖీ చేయలేని ప్యాకేజీ జాబితాలను నమ్మడం కంటే, ఆ రిపోజిటరీ మొత్తాన్ని apt తిరస్కరిస్తుంది. కీ ఫైల్‌ను స్వయంగా పరిశీలించండి:

ls -l /etc/apt/keyrings/docker.asc
gpg --show-keys /etc/apt/keyrings/docker.asc

సరిగ్గా పనిచేసే కీ, కీ ఐడితో కూడిన pub లైన్‌ను మరియు వెండర్ పేరుతో కూడిన uid లైన్‌ను చూపుతుంది. gpg: no valid OpenPGP data found. అని వస్తే, ఆ ఫైల్ కీ కాదని అర్థం. సాధారణంగా కీ URL మారడం వల్ల, డౌన్‌లోడ్ సమయంలో ఒక ఎర్రర్ పేజీ సేవ్ అవ్వడం వల్ల ఇలా జరుగుతుంది. కీని మళ్ళీ పొందండి, ఫైల్‌ను తనిఖీ చేయండి, ఆపై apt update రన్ చేయండి.

రెండవ సందర్భం రిలీజ్ అప్‌గ్రేడ్ తర్వాత వస్తుంది:

Err:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu plucky InRelease
  404  Not Found [IP: 10.0.0.80 443]
E: The repository 'https://ppa.launchpadcontent.net/ondrej/php/ubuntu plucky Release' does not have a Release file.

ఆ సూట్ (suite) కోసం PPA ఏ సమాచారాన్ని ప్రచురించలేదు, కాబట్టి సర్వర్‌లో ఆ పాత్ (path) లేదు మరియు అభ్యర్థన 404 ఎర్రర్‌ను ఇస్తుంది. మీ ఇతర రిపోజిటరీలు అప్‌డేట్ అవుతూనే ఉంటాయి, మరియు మీ వద్ద ఉన్న ప్యాకేజీలు అలాగే ఉంటాయి. అయితే, ఈ రన్ నాన్-జీరో (non-zero) ఎగ్జిట్ కోడ్‌తో ముగుస్తుంది. కాబట్టి, apt update ఎగ్జిట్ స్టేటస్‌ను తనిఖీ చేసే ఏ స్క్రిప్ట్ అయినా ప్రతిసారీ వైఫల్యాన్ని చూపిస్తుంది. అందుకే unattended security upgrades కాన్ఫిగర్ చేసిన సర్వర్‌లో ఒక పనికిరాని సోర్స్‌ను తొలగించడం ముఖ్యం: రోజువారీ వచ్చే అనవసరమైన హెచ్చరికల మధ్య అసలైన వైఫల్యాలు దాగిపోయే అవకాశం ఉంది. వెండర్ ఇన్‌స్టాల్ స్క్రిప్ట్‌లు ఈ రెండు రకాల సమస్యలను ఎదుర్కొంటాయి. అందుకే చాలా Tailscale install errors on Ubuntu సమస్యలు, స్క్రిప్ట్ రాయలేకపోయిన కీరింగ్ వల్ల లేదా ఆర్కైవ్‌లో లేని రిలీజ్ కోడ్‌నేమ్ వల్ల వస్తుంటాయి.

మిగిలిన వాటికి ఆటంకం కలగకుండా ఒక source ను నిలిపివేయడం

deb822 ఫైల్ కోసం, ఆ stanza కు ఒక ఫీల్డ్‌ను జోడించి సేవ్ చేయండి:

Types: deb
URIs: https://ppa.launchpadcontent.net/ondrej/php/ubuntu
Suites: plucky
Components: main
Signed-By: /etc/apt/keyrings/ondrej-php.asc
Enabled: no

stanza లోని ప్రతి లైన్‌ను కామెంట్ చేయడం కంటే ఇదే ఉత్తమమని apt మాన్యువల్ సిఫార్సు చేస్తుంది, అంతేకాకుండా దీన్ని వెనక్కి తీసుకోవడం సులభం. ఒకే లైన్ ఉన్న ఫైల్ కోసం, లైన్ ప్రారంభంలో # ను చేర్చండి. ఏ ఫార్మాట్ అయినా, ఫైల్‌ను /etc/apt/sources.list.d/ నుండి బయటకు తరలించడం కూడా పనిచేస్తుంది; రిపోజిటరీ శాశ్వతంగా తొలగిపోయినప్పుడు ఈ పద్ధతిని ఎంచుకోవాలి.

sudo apt update ను మళ్ళీ రన్ చేయండి. ఆ రిపోజిటరీకి సంబంధించిన Err: బ్లాక్ అదృశ్యమవుతుంది మరియు exit status 0 కి చేరుకుంటుంది, దీన్ని తర్వాతి లైన్‌లో echo $? తో మీరు తనిఖీ చేయవచ్చు.

పాడైపోయిన source ను ఎప్పుడూ sudo rm /etc/apt/sources.list.d/* తో సరిచేయకండి. Ubuntu 24.04 మరియు ఆ తర్వాతి వెర్షన్లలో ఇది ubuntu.sources ను తొలగిస్తుంది, దీనిలో డిస్ట్రిబ్యూషన్ యొక్క సొంత రిపోజిటరీలు ఉంటాయి. ఫలితంగా apt వద్ద ఎటువంటి ప్యాకేజీ జాబితాలు ఉండవు మరియు స్పష్టంగా అందుబాటులో ఉన్న సాఫ్ట్‌వేర్ కోసం కూడా E: Unable to locate package curl అని చూపిస్తుంది. ఒకవేళ మీరు ఇప్పటికే దాన్ని రన్ చేసి ఉంటే, ఫైల్‌ను తిరిగి ఇలా రాయండి:

Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

దీనిని /etc/apt/sources.list.d/ubuntu.sources గా సేవ్ చేయండి, ఇక్కడ noble స్థానంలో lsb_release -cs నుండి మీ సొంత release పేరును ఉంచండి, ఆపై sudo apt update ను రన్ చేయండి.

పాత .list ఫైళ్లను deb822 ఫార్మాట్‌లోకి మార్చడం

ఆగస్టు 2026 నాటికి, apt 3.0 మరియు ఆ తర్వాతి వెర్షన్లు దీని కోసం ఒక కన్వర్టర్‌ను కలిగి ఉన్నాయి. Debian 13, Ubuntu 25.04 మరియు ఆ తర్వాత వచ్చిన ప్రతి రిలీజ్ (26.04 తో సహా) దీనిని కలిగి ఉన్నాయి. వెర్షన్‌ను తనిఖీ చేసి, ఆపై ఈ కమాండ్‌ను రన్ చేయండి:

apt --version
sudo apt modernize-sources

ఇది /etc/apt/sources.list.d/ లో ఉన్న ఒకే లైన్ ఫైళ్లను deb822 .sources ఫైళ్లుగా మారుస్తుంది. అది ప్రింట్ చేసే సమాచారాన్ని చదవండి, ఆపై డైరెక్టరీని మీరే స్వయంగా తనిఖీ చేసి, ఫలితాన్ని నమ్మే ముందు apt update రన్ చేయండి. Ubuntu 24.04 లో పాత apt వెర్షన్ ఉంటుంది, అందులో ఈ సబ్‌కమాండ్ ఉండదు, కాబట్టి ఆ కమాండ్ E: Invalid operation modernize-sources అని సమాధానం ఇస్తుంది. ఆ రిలీజ్‌లో, పైన పేర్కొన్న ఫీల్డ్ మ్యాపింగ్‌ను ఉపయోగించి మాన్యువల్‌గా మార్చండి.

ప్రస్తుతానికి మార్పిడి అనేది ఐచ్ఛికం, ఎందుకంటే apt ఇప్పటికీ రెండు ఫార్మాట్లను చదవగలదు. మీరు దీర్ఘకాలం పాటు ఉంచాలనుకుంటున్న సర్వర్‌లలో ఇది చేయడం మంచిది, ఎందుకంటే సోర్స్‌లను రాసే ప్రతి టూల్ ఇప్పుడు deb822 ఫార్మాట్‌నే ఉపయోగిస్తోంది. కేవలం .sources ఫైళ్లు మాత్రమే ఉన్న సిస్టమ్‌లో ఇటువంటి డూప్లికేషన్ సమస్యలు తలెత్తవు.

సర్వర్‌లో థర్డ్-పార్టీ సోర్స్‌లను క్రమపద్ధతిలో ఉంచడం

సర్వర్‌లో థర్డ్-పార్టీ రిపోజిటరీలు కాలక్రమేణా నిర్వహణకు అత్యంత కష్టతరమైనవిగా మారుతాయి. ప్రతి రిపోజిటరీ మీ Ubuntu వెర్షన్ కోసం సాఫ్ట్‌వేర్‌ను నిరంతరం అందిస్తామని మరొకరు ఇచ్చే హామీ. OS వెర్షన్ అప్‌గ్రేడ్ చేసినప్పుడు, ఆ హామీలన్నీ ఒకేసారి పరీక్షించబడతాయి.

  • డిస్ట్రిబ్యూషన్ ప్యాకేజీతో పని జరగనప్పుడు మాత్రమే థర్డ్-పార్టీ రిపోజిటరీని జోడించండి. సాధారణ Ubuntu 24.04 పై LAMP stack కోసం అదనపు రిపోజిటరీలు అవసరం లేదు: Ubuntu ఆర్కైవ్‌లోనే అవసరమైన అన్ని ప్యాకేజీలు ఉంటాయి, మరియు ఆ వెర్షన్ జీవితకాలం వరకు సెక్యూరిటీ అప్‌డేట్‌లు అందుతాయి.
  • కీలను /etc/apt/keyrings/ లో ఉంచండి, ప్రతి వెండర్‌కు ఒక ఫైల్ చొప్పున, 644 పర్మిషన్లతో ఉండాలి. ప్రివిలేజ్ లేని _apt యూజర్ డౌన్‌లోడ్ ప్రక్రియను నిర్వహిస్తారు మరియు కీని చదవాల్సి ఉంటుంది, కాబట్టి కేవలం root మాత్రమే చదవగలిగే కీ ఫైల్ ఉంటే, ప్రతిసారీ రిపోజిటరీ నుంచి డేటా తెచ్చేటప్పుడు పర్మిషన్ ఎర్రర్ వస్తుంది.
  • ప్రతి stanza లో Signed-By ను ఆ నిర్దిష్ట ఫైల్‌కు పాయింట్ చేయండి. /etc/apt/trusted.gpg లేదా /etc/apt/trusted.gpg.d/ లో ఉండే కీ సర్వర్‌లోని అన్ని రిపోజిటరీలకు నమ్మదగినదిగా మారుతుంది, అంటే ఏళ్ల క్రితం జోడించిన ఒక వెండర్ కీ ఎక్కడి నుంచైనా వచ్చే ప్యాకేజీలను ధృవీకరించగలదు.
  • వెర్షన్ అప్‌గ్రేడ్‌కు ముందు, మీ సోర్స్ ఫైళ్లను పరిశీలించి, మీరు అప్‌గ్రేడ్ అవుతున్న కొత్త వెర్షన్ కోసం ప్రతి వెండర్ ప్యాకేజీలను అందిస్తున్నారో లేదో తనిఖీ చేయండి.

పాత గ్లోబల్ కీరింగ్‌లో ఉన్న కీ ప్రతి అప్‌డేట్ సమయంలో హెచ్చరికను జారీ చేస్తుంది:

W: https://download.docker.com/linux/ubuntu/dists/noble/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

ఆ ఒక్క కీని విడిగా ఒక ఫైల్‌లోకి ఎగుమతి చేసి, ఆపై stanza లో దానికి పాయింట్ చేయండి:

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --export 7EA0A9C3F273FCD8 | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
sudo chmod 644 /etc/apt/keyrings/docker.gpg

రిపోజిటరీ stanza కు Signed-By: /etc/apt/keyrings/docker.gpg ను జోడించి, sudo apt update ను రన్ చేయండి. పాత కీరింగ్‌పై ఏ రిపోజిటరీ ఆధారపడనప్పుడు ఆ హెచ్చరిక ఆగిపోతుంది, ఆ తర్వాత మీరు sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --delete-key 7EA0A9C3F273FCD8 తో ఆ ఎంట్రీని తొలగించవచ్చు.

మరొక అలవాటు చాలా ఇబ్బందులను తగ్గిస్తుంది. do-release-upgrade అప్‌గ్రేడ్ సమయంలో థర్డ్-పార్టీ సోర్స్‌లను డిసేబుల్ చేస్తుంది మరియు అప్‌గ్రేడ్ తర్వాత కూడా అవి ఆఫ్‌లోనే ఉంటాయి. వాటిని ఒక్కొక్కటిగా మాన్యువల్‌గా ఆన్ చేయడం వల్లే డూప్లికేట్ డిక్లరేషన్లు ఏర్పడతాయి. ప్రారంభించే ముందు Ubuntu 24.04 నుంచి 26.04 కు అప్‌గ్రేడ్ గైడ్ చదవండి మరియు మీకు అవసరమైన రిపోజిటరీలను నోట్ చేసుకోండి. మీరు ఇప్పుడే కొత్తగా సెటప్ చేసిన మెషీన్ అయితే, సోర్స్‌లను సరిగ్గా అమర్చుకోవడానికి ఉత్తమ సమయం కొత్త VPS లో మొదటి పది నిమిషాలు, ఆ సమయంలో సర్వర్‌లో Ubuntu అందించిన డిఫాల్ట్ ఎంట్రీలు మాత్రమే ఉంటాయి.

FAQ

ఒకే target ను పలుమార్లు కాన్ఫిగర్ చేసినట్లు apt ఎందుకు చెబుతుంది?

ఎందుకంటే /etc/apt/sources.list.d/ కింద ఉన్న రెండు ఫైళ్లు ఒకే repository, suite మరియు component ను సూచిస్తున్నాయి. ఈ సందేశం docker.list:1 మరియు docker.sources:1 వంటి లైన్ నంబర్లతో సహా ఆ రెండు ఫైళ్లను పేర్కొంటుంది. apt వాటిని విలీనం చేసి తన పనిని కొనసాగిస్తుంది, కాబట్టి update ప్రక్రియకు ఎటువంటి ఆటంకం కలగదు. అయితే, ఈ డూప్లికేట్లను తొలగించడం మంచిది: ఎందుకంటే ఆ రెండు ఫైళ్లు వేర్వేరు signing keys ను పేర్కొన్న వెంటనే, apt E: Conflicting values set for option Signed-By తో ఆగిపోతుంది మరియు ఏ source ను చదవడానికి నిరాకరిస్తుంది, ఇది apt install ప్రక్రియను కూడా నిలిపివేస్తుంది.

నేను .list ఫైల్‌ను ఉంచుకోవాలా లేక .sources ఫైల్‌ను ఉంచుకోవాలా?

.sources ఫైల్‌ను ఉంచుకోండి. Ubuntu 24.04 మరియు ఆ తర్వాతి వెర్షన్లలో add-apt-repository దీనినే ఉపయోగిస్తుంది. ఇది positional text కు బదులుగా ప్రతి setting కు ఒక named field ను కలిగి ఉంటుంది మరియు భవిష్యత్తులో ఇదే ప్రమాణంగా మారుతోంది. .list ఫైల్‌ను తొలగించే ముందు, .sources ఫైల్‌లోని Signed-By మార్గం, ls -l /etc/apt/keyrings/ తో అందుబాటులో ఉన్న కీని సూచిస్తుందో లేదో నిర్ధారించుకోండి. పాత ఫైల్‌ను అదే డైరెక్టరీలో పేరు మార్చకుండా, /etc/apt/sources.list.d/ నుండి బయటకు తరలించండి. ఎందుకంటే మిగిలిపోయిన .bak పేరు వల్ల, ప్రతిసారీ apt ఒక ignored-file నోటీసును చూపిస్తుంది.

ఒక apt repository ని తొలగించకుండా ఎలా నిలిపివేయాలి?

deb822 .sources ఫైల్‌లో, ఆ stanza కు Enabled: no ను జోడించండి. ఒకే లైన్ ఉన్న .list ఫైల్‌లో, ఆ లైన్ ప్రారంభంలో # ను చేర్చండి. ఏ పద్ధతిని అనుసరించినా, ఆ తర్వాత sudo apt update ను రన్ చేయండి; అప్పుడు ఆ repository కి సంబంధించిన Err: బ్లాక్ తొలగిపోతుంది. థర్డ్ పార్టీ repository లో మీ Ubuntu వెర్షన్‌కు తగిన ప్యాకేజీలు లేనప్పుడు మరియు దాని 404 error వల్ల apt update నాన్-జీరో ఎగ్జిట్ కోడ్‌ను ఇస్తున్నప్పుడు, ఈ పద్ధతిని పాటించడం సరైనది.

ఒకే లైన్ ఉన్న sources.list ఫార్మాట్ తొలగించబడుతుందా?

ఇది deprecated చేయబడింది, కానీ తొలగించబడలేదు. apt ఇప్పటికీ .list ఫైళ్లను చదువుతుంది మరియు ఇది ఇంకా చాలా కాలం పాటు కొనసాగుతుంది, కాబట్టి మీ సర్వర్‌లో ఏదీ వెంటనే పాడవదు. కొత్త టూల్స్ deb822 ఫార్మాట్‌ను వాడుతున్నాయి: Ubuntu 24.04 మరియు ఆ తర్వాతి వెర్షన్లు డిస్ట్రిబ్యూషన్ రిపోజిటరీలను /etc/apt/sources.list.d/ubuntu.sources లో ఉంచుతాయి, మరియు add-apt-repository అనేది .sources ఫైళ్లను రాస్తుంది. apt 3.0 మరియు ఆ తర్వాతి వెర్షన్లలో, sudo apt modernize-sources కమాండ్ మీ వద్ద ఉన్న పాత ఫైళ్లను కొత్త ఫార్మాట్‌లోకి మారుస్తుంది.

#apt#ubuntu#deb822#package-management#troubleshooting