SSD Nodes Learn 🎉 VPS $5.50/மாதம் முதல்
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-08-13

Duplicate apt sources பிழையை சரி செய்வது எப்படி?

apt update கட்டளையில் 'Target is configured multiple times' என்ற பிழை வருகிறதா? பழைய .list கோப்பு மற்றும் புதிய .sources கோப்பு மோதலை நீக்கி, apt-ஐ சரிசெய்யும் முறையை அறியுங்கள்.

Duplicate apt sources பிழை எதைக் குறிக்கிறது

Duplicate apt sources என்பது ஒரு repository இரண்டு வெவ்வேறு கோப்புகளில் இருமுறை குறிப்பிடப்பட்டுள்ளது என்று பொருள்; APT (advanced package tool) இந்த இரண்டு பிரதிகளையும் கண்டறிந்துள்ளது. Ubuntu 24.04 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில், மூன்றாம் தரப்பு நிறுவல் ஸ்கிரிப்ட் (third party install script) பழைய பாணியிலான ஒரு வரி .list கோப்பை உருவாக்கியதாலும், அதே repository-க்கான deb822 .sources கோப்பு ஏற்கனவே வட்டில் இருந்ததாலும் இது பெரும்பாலும் நிகழ்கிறது. இதில் எந்த கோப்பும் சிதையவில்லை, எந்த தொகுப்பும் (package) ஆபத்தில் இல்லை. இந்த இரண்டு அறிவிப்புகளில் ஒன்றை நீக்கினால், இந்தச் செய்தி மறைந்துவிடும்.

மக்கள் தேடல் பெட்டியில் பதிவிடும் வரி இதுதான்:

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 என்பது ஒரு repository என்னென்ன தொகுப்புகளை வழங்குகிறது என்பதை அறிய apt பதிவிறக்கம் செய்யும் குறியீட்டு முறை (index) ஆகும். stable/binary-amd64/Packages என்பது அந்த index உள்ளடக்கிய component (stable) மற்றும் architecture (amd64) ஆகியவற்றைக் குறிக்கிறது. எனவே, stable component-க்கான amd64 index, docker.list கோப்பின் 1-வது வரியிலும், மீண்டும் docker.sources கோப்பின் 1-வது வரியிலும் கட்டமைக்கப்பட்டுள்ளது என்பதை apt உங்களுக்குத் தெரிவிக்கிறது.

apt 3.0 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில் (அதாவது Ubuntu 25.04 மற்றும் Debian 13 முதல்), அதே செய்தி W:-க்கு பதிலாக Warning: என்று தொடங்கும். முன்னொட்டுக்கு (prefix) பிறகு வரும் உரை ஒன்றாகவே இருக்கும்.

அந்த எச்சரிக்கை ஒரு லேசான பாதிப்பு மட்டுமே. apt அந்த இரண்டு அறிவிப்புகளையும் ஒன்றிணைத்துவிடும், update தொடர்ந்து இயங்கும்; ஏனெனில் இரண்டுமே ஒரே key-ஐக் கொண்ட ஒரே archive-ஐ விவரிக்கின்றன. ஆனால், கடுமையான பாதிப்பு அனைத்தையும் நிறுத்திவிடும்:

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 செயல்பட மறுக்கிறது, ஏனெனில் அந்த இரண்டு அறிவிப்புகளும் ஒரே archive-க்கு வெவ்வேறு signing keys-ஐக் குறிப்பிடுகின்றன. ஒரே மாதிரியான இரண்டு அறிவிப்புகளை அது ஒன்றிணைக்கும், ஆனால் இரண்டு வெவ்வேறு Signed-By மதிப்புகளுக்கு இடையே எதைத் தேர்ந்தெடுப்பது என்று அதற்குத் தெரியாது. தவறான ஒன்றைத் தேர்ந்தெடுத்தால், archive உரிமையாளர் கையொப்பமிடாத ஒரு key-ஐ வைத்து தொகுப்பின் கையொப்பத்தைச் சரிபார்க்க வேண்டியிருக்கும். எனவே, apt எந்த source-ஐயும் வாசிக்காது. நீங்கள் கோப்புகளைக் கையால் திருத்தும் வரை apt update மற்றும் apt install ஆகிய இரண்டுமே அந்த இரண்டு வரிகளுடன் தோல்வியடையும்.

நகல் எவ்வாறு உருவாகிறது

இந்த இரண்டு வடிவங்களும் வெவ்வேறு extension-களைக் கொண்ட தனித்தனி கோப்புகளில் இருப்பதால், அவை இரண்டையும் ஒரே நேரத்தில் வைத்திருப்பதைத் தடுத்து நிறுத்த வட்டில் (disk) எந்தக் கட்டுப்பாடும் இல்லை. apt தான் பதிவிறக்கம் செய்ய வேண்டிய index இலக்குகளின் பட்டியலை விரிவுபடுத்தும் போதுதான், இந்த மேலெழுதலை (overlap) தாமதமாகக் கவனிக்கிறது. அந்தத் தருணம் வரை docker.list மற்றும் docker.sources ஆகிய இரண்டும் தொடர்பில்லாத கோப்புகளாகவே இருக்கும்.

நான்கு சாதாரண நிகழ்வுகள் இந்த இணையை உருவாக்குகின்றன:

  • ஒரு vendor நிறுவல் script, அல்லது பழைய பதிவிலிருந்து நகலெடுக்கப்பட்ட ஒரு கட்டளை, tee வரியுடன் /etc/apt/sources.list.d/vendor.list கோப்பை உருவாக்குகிறது.
  • அந்த vendor-ன் சொந்த package பிற்காலத்தில் /etc/apt/sources.list.d/vendor.sources-ஐ வெளியிட்டு, அதை உங்களுக்காக நிறுவுகிறது.
  • Ubuntu 24.04 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில் add-apt-repository, deb822 .sources கோப்புகளை எழுதுகிறது. எனவே, நீங்கள் முன்பு கைமுறையாக .list ஆகச் சேர்த்த PPA (personal package archive), இப்போது .sources ஆகத் திரும்ப வருகிறது.
  • ஒரு release upgrade, விநியோகத்தின் சொந்த source கோப்புகளை deb822 வடிவத்திற்கு மாற்றியமைக்கிறது, ஆனால் நீங்கள் கைமுறையாக எழுதிய .list கோப்பை அப்படியே விட்டுவிடுகிறது.

ஒவ்வொரு பாதையும் தனித்தனியாகப் பார்க்கும்போது சரியானதே. இவை இரண்டில் ஏதேனும் ஒன்று ஒரே கணினியில், பெரும்பாலும் பல மாத இடைவெளியில் நடக்கும்போது, இந்த நகல் சிக்கல் உருவாகிறது.

இரண்டு வடிவங்கள், அருகருகே

பழைய வடிவம் ஒரு களஞ்சியத்திற்கு (repository) ஒரு வரி என்ற அடிப்படையில் உள்ளது, மேலும் அதன் ஒவ்வொரு பகுதியும் குறிப்பிட்ட வரிசையில் (positional) அமைய வேண்டும்.

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

இதன் வரிசை நிலையானது: வகை (binary packages-க்கு deb, source packages-க்கு deb-src), பிறகு சதுர அடைப்புக்குறிக்குள் உள்ள விருப்பங்கள், அடுத்து காப்பகத்தின் URI (uniform resource identifier), பிறகு suite, இறுதியாக ஒன்று அல்லது அதற்கு மேற்பட்ட components. இதன் பொருள் அதன் இடத்தைப் பொறுத்தே அமைவதால், தவறான இடத்தில் ஒரு இடைவெளி (space) இருந்தால், apt வாசிக்கும் விதம் மாறிவிடும்.

deb822 அதே தகவலை பெயரிடப்பட்ட புலங்களின் (named fields) தொகுப்பாகக் குறிப்பிடுகிறது. Debian ஏற்கனவே package control கோப்புகளுக்குப் பயன்படுத்தும் மின்னஞ்சல் தலைப்பு பாணியான RFC 822 என்பதிலிருந்து இந்தப் பெயர் வந்தது.

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

ஒரே களஞ்சியம், அதே சாவி (key), புதிதாக எதுவும் சேர்க்கப்படவில்லை. இதன் மேப்பிங் நேரடியானது: deb என்பது Types ஆகிறது, காப்பக முகவரி URIs ஆகிறது, suite என்பது Suites ஆகிறது, components என்பது Components ஆகிறது, மேலும் ஒவ்வொரு அடைப்புக்குறி விருப்பமும் அதன் சொந்த புலமாக மாறுகிறது; எனவே signed-by= என்பது Signed-By: ஆகவும், arch= என்பது Architectures: ஆகவும் மாறுகிறது.

ஒவ்வொரு புலத்தின் பெயரும் பன்மையில் உள்ளது, ஏனெனில் ஒவ்வொரு புலமும் இடைவெளியால் பிரிக்கப்பட்ட பட்டியலை ஏற்கும். ஒரு stanza-வில் உள்ள Suites: noble noble-updates noble-backports, மூன்று தனித்தனி deb வரிகளுக்குப் பதிலாக அமையும். ஒரு காலி வரி ஒரு stanza-வை முடிவுக்குக் கொண்டுவரும், எனவே ஒரே .sources கோப்பில் பல களஞ்சியங்களை வைத்திருக்க முடியும். பழைய ஒரு வரி வடிவம் சரியாகக் கையாள முடியாத அமைப்புகளையும் deb822 கொண்டுள்ளது: ஒரு களஞ்சியத்தை முடக்க Enabled: no, Trusted, Check-Valid-Until, மற்றும் ஒவ்வொரு வரியும் ஒரு இடைவெளி தள்ளி இடப்பட்டு, காலி வரிகள் ஒரு புள்ளியாக எழுதப்பட்ட நிலையில் நேரடியாக Signed-By-க்குள் ஒட்டப்படும் inline key ஆகியன இதில் அடங்கும்.

ஒவ்வொரு கோப்பும் எங்கே அமைகிறது

  • /etc/apt/sources.list: அசல் ஒற்றைக் கோப்பு. Ubuntu 24.04 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில், இது பொதுவாக காலியாக இருக்கும் அல்லது புதிய இடத்தைக் குறிக்கும் ஒரு குறிப்பை மட்டுமே கொண்டிருக்கும்.
  • /etc/apt/sources.list.d/*.list: ஒரு வரி உள்ளீடுகள், பொதுவாக ஒரு களஞ்சியத்திற்கு (repository) ஒரு கோப்பு வீதம் இருக்கும்.
  • /etc/apt/sources.list.d/*.sources: deb822 வகை உள்ளீடுகள். Ubuntu 24.04 மற்றும் புதிய பதிப்புகள், விநியோகத்தின் சொந்த களஞ்சியங்களை இங்கே ubuntu.sources-ல் வைத்திருக்கின்றன.
  • /etc/apt/keyrings/: நீங்கள் சேர்க்கும் திறவுகோல்கள் (keys) இருக்க வேண்டிய இடம். /usr/share/keyrings/ என்பது தொகுப்பிலிருந்து (package) வந்த திறவுகோல்களைக் கொண்டுள்ளது.

apt ஆனது .list அல்லது .sources என முடியும் கோப்புகளை மட்டுமே வாசிக்கும். கோப்பின் பெயரில் எழுத்துக்கள், எண்கள், அடிக்கோடு (underscore), ஹைபன் மற்றும் புள்ளி ஆகியவை இருக்கலாம். வேறு ஏதேனும் நீட்டிப்பு (extension) கொண்ட கோப்புகள் ஒரு அறிவிப்புடன் தவிர்க்கப்படும்; இது கீழே உள்ள திருத்தத்திற்கு முக்கியமானது.

நகல் ஜோடியைக் கண்டறிதல்

கோப்பகப் பட்டியலுடன் தொடங்கவும்:

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

ஒரே பெயரைக் கொண்டு வெவ்வேறு நீட்டிப்புகளைக் (extensions) கொண்ட இரண்டு கோப்புகள் பொதுவான ஜோடியாக இருக்கலாம், ஆனால் பெயர்களை மட்டும் நம்ப வேண்டாம். கோப்பின் உள்ளடக்கத்தைப் படிக்கவும், ஏனெனில் எந்தப் பெயரிலும் ஒரு நகல் மறைந்திருக்கலாம்:

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

ஒரே host மற்றும் ஒரே suite-ஐக் கொண்ட இரண்டு உள்ளீடுகளே அந்த ஜோடியாகும். இரண்டுமே https://download.docker.com/linux/ubuntu மற்றும் noble suite-ஐக் குறிக்கின்றன, எனவே இவை ஒரே களஞ்சியத்தை (repository) இருமுறை குறிப்பிடுகின்றன. அவற்றின் Signed-By பாதைகளும் முரண்படுகின்றன, இதுவே முன்னதாகக் காட்டப்பட்ட Conflicting values பிழையை உருவாக்குகிறது.

இந்தச் செயல்பாட்டிற்கு apt கட்டளைக்கு பதிலாக grep-ஐப் பயன்படுத்தவும். முரண்பாட்டால் apt ஏற்கனவே நின்றுவிட்டால், அதனால் உங்கள் sources-களைப் பட்டியலிட முடியாது; எனவே 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 கோப்பு நீக்கப்பட்ட ஒரு key-ஐக் குறிப்பிடுகிறது. நீங்கள் வைத்துக்கொள்ளத் திட்டமிட்டுள்ள கோப்பு விடுபட்ட key-ஐக் குறிப்பிடுகிறது என்றால், முதலில் வேலை செய்யும் பாதையை அதில் நகலெடுத்துவிட்டு, பிறகு மற்ற கோப்பை நீக்கவும்.

பழைய கோப்பை நேரடியாக நீக்குவதற்குப் பதிலாக, அதை அந்த directory-லிருந்து நகர்த்தவும்:

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 அறியப்படாத extension-களைப் புறக்கணிக்கும். ஆனால், ஒவ்வொரு முறை apt இயங்கும்போதும் இது தோன்றும்:

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

கோப்பை வேறொரு இடத்திற்கு நகர்த்துவது அந்த அறிவிப்பு திரையில் தோன்றுவதைத் தடுக்கும், அதே சமயம் backup-ம் பாதுகாப்பாக இருக்கும். இதற்குப் பிறகு ஒரு சரியான 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.

இப்போது repository மாற்றத்திற்குப் பிறகு சரியாகச் செயல்படுகிறதா என்பதை உறுதிப்படுத்தவும்:

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

ஒரு vendor-ன் ஆவணங்கள் இன்னும் பழைய ஒற்றை வரி கோப்பையே குறிப்பிடுகின்றன என்றால், நீங்கள் அதை வைத்துக்கொண்டு .sources கோப்பை நீக்கலாம். ஒரு விதியை மட்டும் நினைவில் கொள்ளுங்கள்: ஒரு குறிப்பிட்ட archive மற்றும் suite-ஐ ஒரு கோப்பு மட்டுமே அறிவிக்க வேண்டும்.

ஏன் ஒரு பழுதடைந்த மூன்றாம் தரப்பு source, apt update-ஐ முடக்குகிறது

அருகிலுள்ள தோல்வி வேறுபட்டதாகத் தெரிந்தாலும், அதன் அடிப்படை காரணம் ஒன்றுதான்; அது apt-ஆல் பயன்படுத்த முடியாத ஒரு மூன்றாம் தரப்பு source ஆகும். முதல் வகை தோல்வி, விடுபட்ட ஒரு key-ஆல் ஏற்படுகிறது:

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 புலம் விடுபட்டிருக்கலாம், அல்லது அது பயன்படுத்த முடியாத ஒரு கோப்பைச் சுட்டிக்காட்டலாம். இதனால், அந்த archive-ன் InRelease கோப்பில் உள்ள கையொப்பத்தை (signature) apt-ஆல் சரிபார்க்க முடியாது. சரிபார்க்க முடியாத package பட்டியல்களை நம்புவதற்குப் பதிலாக, அந்த repository முழுவதையும் apt நிராகரித்துவிடும். அந்த key கோப்பை நேரடியாகச் சரிபார்க்கவும்:

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

சரியாகச் செயல்படும் ஒரு key, ஒரு key id-உடன் கூடிய pub வரியையும், vendor-ன் பெயரைக் கொண்ட uid வரியையும் காட்டும். gpg: no valid OpenPGP data found. என்று வந்தால், அந்தக் கோப்பு ஒரு key-ஆக இல்லை என்று பொருள். பொதுவாக, key URL மாறியதால், பதிவிறக்கத்தின் போது ஒரு error பக்கம் சேமிக்கப்பட்டிருப்பதே இதற்குக் காரணம். key-ஐ மீண்டும் பதிவிறக்கம் செய்து, கோப்பைச் சரிபார்த்துவிட்டு, பின் apt update கட்டளையை இயக்கவும்.

இரண்டாவது வகை தோல்வி, release upgrade-க்குப் பிறகு நிகழ்கிறது:

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 எதையும் வெளியிடவில்லை என்பதால், server-ல் அந்தப் பாதை (path) இல்லை, எனவே அந்த request 404 பிழையைத் தருகிறது. உங்கள் பிற repositories தொடர்ந்து update ஆகும், உங்களிடம் ஏற்கனவே உள்ள packages பாதிக்கப்படாது. இருப்பினும், இந்தச் செயல்பாடு non-zero exit status-ஐத் தருவதால், apt update-ன் exit status-ஐச் சரிபார்க்கும் எந்தவொரு script-ம் ஒவ்வொரு முறையும் தோல்வியைக் காட்டும். இதனால்தான், தானியங்கி பாதுகாப்பு மேம்படுத்தல்கள் (unattended security upgrades) உள்ள கணினிகளில், செயலிழந்த source-களை நீக்குவது அவசியம்: தினசரி வரும் தேவையற்ற அறிவிப்புகளுக்கு இடையேதான் உண்மையான தோல்விகள் மறைந்திருக்கும்.

மற்றவற்றை பாதிக்காமல் ஒரு source-ஐ முடக்குதல்

ஒரு deb822 கோப்பிற்கு, stanza-வில் ஒரு field-ஐச் சேர்த்து சேமிக்கவும்:

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

ஒவ்வொரு வரியையும் comment செய்வதற்குப் பதிலாக, இதைச் செய்யவே apt கையேடு பரிந்துரைக்கிறது; மேலும் இதை மீண்டும் மாற்றுவது எளிது. ஒரு வரி கொண்ட கோப்பிற்கு, வரியின் தொடக்கத்தில் #-ஐச் சேர்க்கவும். எந்த வடிவமாக இருந்தாலும், கோப்பை /etc/apt/sources.list.d/-லிருந்து நகர்த்துவதும் வேலை செய்யும்; ஒரு repository நிரந்தரமாக நீக்கப்படும்போது இந்த முறையைத் தேர்ந்தெடுக்கவும்.

sudo apt update-ஐ மீண்டும் இயக்கவும். அந்த repository-க்கான Err: தொகுதி மறைந்துவிடும், மேலும் exit status 0 எனத் திரும்பும்; இதை அடுத்த வரியில் echo $? மூலம் நீங்கள் சரிபார்க்கலாம்.

sudo rm /etc/apt/sources.list.d/*-ஐப் பயன்படுத்தி பழுதடைந்த source-ஐ ஒருபோதும் சரிசெய்ய வேண்டாம். Ubuntu 24.04 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில், இது ubuntu.sources-ஐ நீக்கிவிடும். இது அந்த distribution-ன் சொந்த repository-களைக் கொண்டிருப்பதால், apt-இடம் package பட்டியல்கள் ஏதும் இருக்காது; இதனால் வெளிப்படையாக இருக்கும் மென்பொருளுக்கும் 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 மற்றும் அதற்குப் பிந்தைய பதிப்புகள் இதற்கான மாற்றியை (converter) கொண்டுள்ளன. Debian 13, Ubuntu 25.04 மற்றும் அதன் பிறகு வரும் அனைத்து பதிப்புகளிலும் (26.04 உட்பட) இது உள்ளது. பதிப்பைச் சரிபார்த்து, பின்வரும் கட்டளையை இயக்கவும்:

apt --version
sudo apt modernize-sources

இது /etc/apt/sources.list.d/-ன் கீழ் உள்ள ஒற்றை வரி கோப்புகளை deb822 .sources கோப்புகளாக மாற்றியமைக்கிறது. அது வெளியிடும் தகவல்களைப் படித்துவிட்டு, நீங்களே அந்த directory-ஐ சரிபார்த்து, முடிவுகளை நம்புவதற்கு முன் apt update கட்டளையை இயக்கவும். Ubuntu 24.04-ல் உள்ள பழைய apt பதிப்பில் இந்த subcommand இல்லை, அங்கு இக்கட்டளை E: Invalid operation modernize-sources என்று பதிலளிக்கும். அந்தப் பதிப்பில், மேலே உள்ள field mapping-ஐப் பயன்படுத்தி கைமுறையாக மாற்றவும்.

தற்போது apt இரண்டு வடிவங்களையும் வாசிப்பதால், இந்த மாற்றம் கட்டாயமில்லை. நீண்ட காலம் பயன்படுத்தப்போகும் server-களில் இதைச் செய்வது நல்லது; ஏனெனில், தற்போது sources-ஐ உருவாக்கும் அனைத்து கருவிகளும் deb822 வடிவத்திலேயே உருவாக்குகின்றன. .sources கோப்புகளை மட்டும் கொண்ட ஒரு கணினியில், இத்தகைய நகல் கோப்புகள் உருவாவதைத் தவிர்க்கலாம்.

server-ல் third-party sources-ஐ முறையாகப் பராமரித்தல்

Third-party repositories என்பது server-ன் மிக விரைவாகப் பழுதடையும் பகுதியாகும். ஒவ்வொன்றும் உங்கள் Ubuntu release-க்குத் தொடர்ந்து மென்பொருளை வெளியிடுவதாக மற்றொருவர் அளிக்கும் வாக்குறுதியாகும். ஒரு release upgrade-ன் போது, அந்த வாக்குறுதிகள் அனைத்தும் ஒரே நேரத்தில் சோதிக்கப்படுகின்றன.

  • விநியோகப் பொதிகள் (distribution packages) உங்கள் தேவைக்குப் போதுமானதாக இல்லாதபோது மட்டுமே third-party repository-ஐச் சேர்க்கவும். ஒரு சாதாரண Ubuntu 24.04-ல் LAMP stack அமைப்பதற்கு இவை தேவையில்லை: Ubuntu archive-ல் அதற்குத் தேவையான அனைத்துப் பொதிகளும் உள்ளன, மேலும் அந்த release-ன் வாழ்நாள் முழுவதும் பாதுகாப்பு மேம்பாடுகளும் (security updates) கிடைக்கும்.
  • Key-களை /etc/apt/keyrings/-ல் வைக்கவும்; ஒரு vendor-க்கு ஒரு கோப்பு வீதம், mode 644-ல் இருக்க வேண்டும். சலுகைகள் இல்லாத _apt பயனர் தான் பதிவிறக்கத்தைச் செய்கிறார், அவரே key-ஐப் படிக்கவும் வேண்டும். எனவே, root-க்கு மட்டும் படிக்கக்கூடிய வகையில் key கோப்பு இருந்தால், அந்த repository-லிருந்து தரவுகளைப் பெறும்போது permission error ஏற்படும்.
  • ஒவ்வொரு stanza-விலும் Signed-By-ஐ அந்த குறிப்பிட்ட கோப்பைச் சுட்டிக்காட்டும்படி அமைக்கவும். /etc/apt/trusted.gpg அல்லது /etc/apt/trusted.gpg.d/-ல் இருக்கும் ஒரு key, அந்த server-ல் உள்ள அனைத்து repository-களுக்கும் நம்பகமானதாகிவிடும். அதாவது, பல ஆண்டுகளுக்கு முன்பு சேர்க்கப்பட்ட ஒரு vendor key, எங்கிருந்தும் வரும் பொதிகளைச் சரிபார்க்கப் பயன்படுத்தப்படலாம்.
  • Release upgrade செய்வதற்கு முன்பு, உங்கள் sources-ஐப் படித்து, நீங்கள் மாறப்போகும் புதிய suite-க்கு அந்த vendor ஏற்கனவே ஆதரவு வழங்குகிறாரா என்பதைச் சரிபார்க்கவும்.

பழைய global keyring-ல் உள்ள ஒரு key, ஒவ்வொரு update-ன் போதும் எச்சரிக்கையை வெளிப்படுத்தும்:

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.

அந்த ஒரு key-ஐ மட்டும் தனியாக ஒரு கோப்பிற்கு ஏற்றுமதி செய்து, பின் அந்த 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

Repository-ன் stanza-வில் Signed-By: /etc/apt/keyrings/docker.gpg-ஐச் சேர்த்து, sudo apt update-ஐ இயக்கவும். பழைய keyring-ஐச் சார்ந்திருக்கும் repository-கள் இல்லாதபோது அந்த எச்சரிக்கை நின்றுவிடும். அதன் பிறகு sudo gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --delete-key 7EA0A9C3F273FCD8 மூலம் அந்தப் பதிவை நீக்கலாம்.

இன்னொரு பழக்கம் அதிக சிரமத்தைத் தவிர்க்க உதவும். do-release-upgrade upgrade-ன் போது third-party sources-ஐ முடக்கிவிடும், upgrade முடிந்த பிறகும் அவை முடங்கியே இருக்கும். அவற்றை ஒவ்வொன்றாகக் கையால் மீண்டும் இயக்க முயற்சிக்கும்போதுதான், duplicate declarations உருவாகின்றன. தொடங்குவதற்கு முன் Ubuntu 24.04-லிருந்து 26.04-க்கான upgrade வழிகாட்டியை வாசிக்கவும், உங்களுக்குத் தேவையான repository-களைக் குறித்து வைத்துக்கொள்ளவும். புதிதாக உருவாக்கிய ஒரு machine-ல், புதிய VPS-ன் முதல் பத்து நிமிடங்கள் எனும் கட்டத்தில் sources-ஐச் சரியாக அமைப்பதே சிறந்தது; அப்போதுதான் Ubuntu-வின் அசல் பதிவுகள் மட்டுமே அந்த box-ல் இருக்கும்.

FAQ

ஒரு target பலமுறை configure செய்யப்பட்டுள்ளதாக 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 deb822 வடிவத்தையே பயன்படுத்துகிறது. இது அடைப்புக்குறிக்குள் இருக்கும் positional text-க்கு பதிலாக, ஒவ்வொரு setting-க்கும் ஒரு பெயரிடப்பட்ட field-ஐக் கொண்டுள்ளது; இதுவே எதிர்காலத் தரநிலையாகும். .list கோப்பை நீக்கும் முன், .sources கோப்பிற்குள் உள்ள Signed-By பாதை, ls -l /etc/apt/keyrings/ மூலம் இருக்கும் ஒரு key-ஐக் குறிப்பிடுகிறதா என்பதை உறுதிப்படுத்தவும். பழைய கோப்பை அந்த directory-க்குள்ளேயே பெயர் மாற்றாமல், /etc/apt/sources.list.d/-லிருந்து வெளியே நகர்த்தவும். ஏனெனில், எஞ்சியிருக்கும் .bak பெயர், ஒவ்வொரு முறை apt இயங்கும்போதும் ஒரு ignored-file அறிவிப்பை அச்சிடச் செய்யும்.

ஒரு apt repository-ஐ நீக்காமல் எப்படி முடக்குவது?

ஒரு deb822 .sources கோப்பில், அந்த stanza-வில் Enabled: no என்பதைச் சேர்க்கவும். ஒரு வரி கொண்ட .list கோப்பில், வரியின் தொடக்கத்தில் ஒரு #-ஐச் சேர்க்கவும். எப்படிச் செய்தாலும், அதன் பிறகு sudo apt update-ஐ இயக்கவும்; அப்போது அந்த repository-க்கான Err: தொகுதி மறைந்துவிடும். ஒரு third party repository-ல் உங்கள் Ubuntu பதிப்பிற்கான packages இன்னும் இல்லை என்றாலும், அதன் 404 பிழையால் apt update non-zero status-ல் முடிவடையும் போதும், இந்த முறை சரியான தீர்வாகும்.

ஒரு வரி கொண்ட sources.list வடிவம் நீக்கப்படுகிறதா?

அது deprecated செய்யப்பட்டுள்ளது, நீக்கப்படவில்லை. apt இன்னும் .list கோப்புகளைப் படிக்கிறது, நீண்ட காலத்திற்குப் படிக்கும், எனவே உங்கள் server-ல் எதுவும் நாளை பாதிக்கப்படாது. புதிய கருவிகள் deb822-ஐயே உருவாக்குகின்றன: Ubuntu 24.04 மற்றும் புதிய பதிப்புகள் distribution repositories-ஐ /etc/apt/sources.list.d/ubuntu.sources-ல் வைத்திருக்கின்றன, மேலும் add-apt-repository ஆனது .sources கோப்புகளை உருவாக்குகிறது. apt 3.0 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில், sudo apt modernize-sources உங்களிடம் உள்ள பழைய கோப்புகளை மாற்றும்.

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