SSD Nodes Learn Hosting plans →
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-08-30

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

Ubuntu 24.04 பதிப்பில் apt update இயக்கும்போது வரும் Target is configured multiple times பிழையை நீக்க, பழைய .list மற்றும் புதிய .sources கோப்புகளை எவ்வாறு கையாள்வது என்பதை அறிக.

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

Ubuntu 25.04 மற்றும் Debian 13-க்கு பிந்தைய apt 3.0 மற்றும் புதிய பதிப்புகளில், அதே செய்தி 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-ஐக் கொண்டு package கையொப்பங்களைச் சரிபார்க்க வேண்டியிருக்கும். எனவே, apt எந்த source-ஐயும் படிக்காது. நீங்கள் கோப்புகளைக் கையால் திருத்தும் வரை apt update மற்றும் apt install ஆகிய இரண்டுமே அந்த இரண்டு வரிகளுடன் தோல்வியடையும்.

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

இந்த இரண்டு வடிவங்களும் வெவ்வேறு கோப்பு நீட்டிப்புகளுடன் தனித்தனி கோப்புகளில் இருப்பதால், அவை இரண்டையும் ஒரே வட்டில் வைத்திருப்பதை எந்தக் கட்டுப்பாடும் தடுப்பதில்லை. apt, தான் பதிவிறக்க வேண்டிய index இலக்குகளின் பட்டியலை விரிவுபடுத்தும் போது மட்டுமே இந்த மேலெழுதலைக் கவனிக்கிறது. அதுவரை 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, .sources ஆக மீண்டும் வருகிறது.
  • ஒரு release upgrade, distribution-ன் சொந்த sources-ஐ deb822 வடிவத்திற்கு மாற்றியமைக்கிறது, ஆனால் நீங்கள் கைமுறையாக எழுதிய .list கோப்பை அப்படியே விட்டுவிடுகிறது.

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

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

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

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), பிறகு சதுர அடைப்புக்குறிக்குள் உள்ள விருப்பங்கள் (options), அதன் பின் காப்பகத்தின் URI (uniform resource identifier), பிறகு suite, இறுதியாக ஒன்று அல்லது அதற்கு மேற்பட்ட components. இதன் பொருள் அதன் இடத்தைப் பொறுத்து அமைவதால், தவறான இடத்தில் ஒரு இடைவெளி (space) இருந்தால், apt வாசிக்கும் விதம் மாறிவிடும்.

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

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; இதில் ஒவ்வொரு வரியும் ஒரு இடைவெளி தள்ளி (indented) இருக்க வேண்டும் மற்றும் காலி வரிகள் ஒரு புள்ளியாக (dot) எழுதப்பட வேண்டும்.

ஒவ்வொரு கோப்பும் எங்குள்ளது

  • /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) கொண்ட கோப்புகள் ஒரு அறிவிப்புடன் தவிர்க்கப்படும்; கீழே உள்ள தீர்வுக்கு இது முக்கியமானது.

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

முதலில் directory-ல் உள்ள கோப்புகளைப் பட்டியலிடவும்:

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

மற்றவற்றை பாதிக்காமல் ஒரு 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-ஐ மீண்டும் இயக்கவும். அந்த களஞ்சியத்திற்கான Err: தொகுதி மறைந்துவிடும், மேலும் exit status 0 எனத் திரும்பும்; இதை அடுத்த வரியில் echo $? மூலம் சரிபார்க்கலாம்.

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

server-ல் மூன்றாம் தரப்பு மூலங்களை (third-party sources) நேர்த்தியாக வைத்திருத்தல்

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

  • விநியோகப் பொதிகள் (distribution packages) உங்கள் தேவைக்குப் போதுமானதாக இல்லாதபோது மட்டுமே மூன்றாம் தரப்பு repository-ஐச் சேர்க்கவும். ஒரு சாதாரண Ubuntu 24.04-ல் LAMP stack அமைப்பதற்கு இவை தேவையில்லை: Ubuntu archive-ல் அது பயன்படுத்தும் அனைத்துப் பொதிகளும் உள்ளன, மேலும் அந்த release-ன் வாழ்நாள் முழுவதும் அவற்றுக்கு security updates கிடைக்கும்.
  • Cryptographic keys-ஐ /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-ஐ மட்டும் தனியாக ஒரு கோப்பிற்கு ஏற்றுமதி (export) செய்து, பின் அந்த 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-ன் போது மூன்றாம் தரப்பு மூலங்களை முடக்கிவிடும், upgrade முடிந்த பிறகும் அவை முடங்கியே இருக்கும். அவற்றை ஒவ்வொன்றாகக் கையால் மீண்டும் இயக்கும்போதுதான் duplicate declarations உருவாகின்றன. தொடங்குவதற்கு முன் Ubuntu 24.04-லிருந்து 26.04-க்கு upgrade செய்யும் வழிகாட்டியை வாசிக்கவும், உங்களுக்குத் தேவையான repository-களைக் குறித்து வைத்துக்கொள்ளவும். புதிதாக உருவாக்கிய ஒரு machine-ல், புதிய VPS-ன் முதல் பத்து நிமிடங்கள் எனும் கட்டத்தில் sources-ஐச் சரியாக அமைப்பதே சிறந்தது; அப்போதுதான் Ubuntu-வுடன் வந்த பதிவுகள் மட்டுமே அந்த machine-ல் இருக்கும்.

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-க்கு பதிலாக, ஒவ்வொரு அமைப்பிற்கும் ஒரு பெயரிடப்பட்ட 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 release-க்கான 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