فایل sources.list در اوبونتو؛ راهنمای مدیریت مخازن APT
فایل sources.list و در نسخههای جدید ubuntu.sources مشخص میکنند APT بستهها و بهروزرسانیها را از کدام مخازن دریافت کند. در این راهنما ساختار فایل، روش ویرایش امن، افزودن مخزن (Repository) و رفع خطاهای رایج را بررسی میکنیم.
اگر هنگام کار با Ubuntu دستور apt update را اجرا کرده باشید، احتمالاً با فایلهایsources.list، ubuntu.sources یا پوشه sources.list.d روبهرو شدهاید. این فایلها مشخص میکنند APT اطلاعات بستهها و بهروزرسانیهای سیستم را از کدام مخازن دریافت کند.
در Ubuntu 22.04 و نسخههای قدیمیتر، تنظیمات اصلی مخازن معمولاً در /etc/apt/sources.list قرار داشت؛ اما از Ubuntu 24.04 LTS به بعد، Ubuntu بهصورت پیشفرض از فرمت Deb822 و فایل /etc/apt/sources.list.d/ubuntu.sources استفاده میکند. هر دو فرمت همچنان توسط APT پشتیبانی میشوند.
در ادامه، محل این فایلها، ساختار آنها، روش ویرایش امن، افزودن مخازن شخص ثالث و رفع خطاهای رایج APT را بررسی میکنیم.
sources.list Ubuntu چیست و چه کاری انجام میدهد؟
فایل sources.list Ubuntu یکی از محلهایی است که آدرس مخازن نرمافزاری مورد استفاده APT در آن تعریف میشود. زمانی که دستور زیر را اجرا میکنید:
Copy
sudoaptupdate
Bash
APT فایلهای تنظیمات Sources مانند:
Copy
/etc/apt/sources.list
Bash
یا در نسخههای جدید Ubuntu:
Copy
/etc/apt/sources.list.d/ubuntu.sources
Bash
را بررسی میکند و به مخازن تعریفشده متصل میشود.
در این مرحله، APT خود نرمافزارها را دانلود یا نصب نمیکند؛ بلکه فقط فهرست بستهها (Package Index)، اطلاعات نسخهها و لیست نرمافزارهای موجود در Repositoryها را بهروزرسانی میکند.
به عنوان مثال، اگر یک Repository جدید به فایل Sources اضافه کنید، تا زمانی که دستور زیر را اجرا نکنید، APT از وجود بستههای موجود در آن مخزن اطلاعی ندارد:
Copy
sudoaptupdate
Bash
بعد از بهروزرسانی فهرست بستهها، میتوانید نرمافزار موردنظر خود را نصب کنید:
Copy
sudoaptinstallnginx
Bash
در این مرحله، دستور apt install از اطلاعاتی که در مرحله قبل دریافت شده استفاده میکند، بسته موردنظر را پیدا کرده و فایلهای لازم را از Repository مربوطه دانلود و نصب میکند.
Repository یک مخزن نرمافزاری است که بستههای قابل نصب Ubuntu در آن نگهداری میشوند. sources.list یا ubuntu.sources آدرس این مخزن (Repository)ها را در اختیار APT قرار میدهد. مستندات رسمی Ubuntu نیز توضیح میدهند که APT اطلاعات منابع تعریفشده در /etc/apt/sources.list و /etc/apt/sources.list.d/ را هنگام Update دریافت میکند.
اگر هنوز با ساختار و مفاهیم پایه این سیستمعامل آشنا نیستید، پیشنهاد میکنیم ابتدا مقاله لینوکس چیست؟ را مطالعه کنید.
فایل sources.list Ubuntu کجاست؟
در نسخههای مختلف Ubuntu ممکن است فایل اصلی مخزن (Repository)ها در مسیر متفاوتی قرار داشته باشد. در نسخههای قدیمیتر معمولاً فایل زیر را خواهید دید:
Copy
/etc/apt/sources.list
Bash
همچنین مخزن (Repository) های اضافی معمولاً در این پوشه قرار میگیرند:
Copy
/etc/apt/sources.list.d/
Bash
برای مشاهده فایلهای موجود میتوانید اجرا کنید:
Copy
ls-lah/etc/apt/
Bash
و سپس:
Copy
ls-lah/etc/apt/sources.list.d/
Bash
تفاوت Ubuntu 24.04 و نسخههای قدیمیتر
نسخه Ubuntu
فایل رایج
Ubuntu 22.04 و قدیمیتر
/etc/apt/sources.list
Ubuntu 24.04 و جدیدتر
/etc/apt/sources.list.d/ubuntu.sources
در Ubuntu 24.04 LTS و نسخههای جدیدتر، بهصورت پیشفرض از فرمت Deb822 و فایل ubuntu.sources برای تعریف مخازن استفاده میشود. برای اطلاعات بیشتر درباره نحوه مدیریت بستهها و مخازن، میتوانید مستندات رسمی Ubuntu درباره مدیریت Packageها را مطالعه کنید.
بنابراین اگر در Ubuntu 24.04 دستور زیر را اجرا کردید:
Copy
cat/etc/apt/sources.list
Bash
و فایل خالی بود یا اطلاعات اصلی مخزن (Repository) ها را مشاهده نکردید، الزاماً مشکلی وجود ندارد. ابتدا این فایل را بررسی کنید:
Copy
cat/etc/apt/sources.list.d/ubuntu.sources
Bash
ساختار سنتی فایل sources.list چگونه است؟
در نسخههای قدیمیتر Ubuntu، هر مخزن (Repository) معمولاً در یک خط تعریف میشود. برای مثال:
deb مشخص میکند مخزن (Repository) شامل بستههای باینری آماده نصب است.
Repository URL آدرس سروری است که بستههای Ubuntu روی آن قرار دارند.
Distribution یا Suite نسخه Ubuntu یا نوع مخزن (Repository) را مشخص میکند. برای مثال noble مربوط به Ubuntu 24.04 است و noble-security شامل بهروزرسانیهای امنیتی آن نسخه میشود.
Component نیز مشخص میکند بسته متعلق به کدام بخش مخزن (Repository) است.
گاهی ممکن است با deb-src نیز مواجه شوید:
Copy
deb-srchttp://archive.ubuntu.com/ubuntunoblemain
Bash
deb-src برای دریافت Source Packageها استفاده میشود و کاربران معمولی معمولاً نیازی به فعالکردن آن ندارند. در Ubuntu 24.04 و جدیدتر نیز میتوان deb-src را در قسمت Types فایل ubuntu.sources فعال کرد.
فرمت جدید ubuntu.sources و Deb822 چیست؟
در Ubuntu جدید، ساختار تکخطی قدیمی بهتدریج جای خود را به فرمت خواناتر Deb822 داده است. نمونه یک فایل ubuntu.sources:
Suites نسخه یا بخشهای مختلف مخزن (Repository) مانند Release، Updates و Security را مشخص میکند.
Components بخشهای main، restricted، universe و multiverse را مشخص میکند.
Signed-By تعیین میکند امضای مخزن (Repository) باید با کدام Keyring اعتبارسنجی شود. فرمت Deb822 نسبت به ساختار قدیمی خواناتر است و امکان مدیریت چند مقدار را در یک Block فراهم میکند. فایلهای این فرمت با پسوند .sources ذخیره میشوند.
مخازن main، restricted، universe و multiverse چیست؟
هنگام مشاهده sources.list Ubuntu معمولاً چهار عبارت زیر را خواهید دید:
Copy
mainrestricteduniversemultiverse
Bash
main: شامل بستههای متنباز اصلی است که توسط Canonical پشتیبانی میشوند.
restricted: شامل نرمافزارها و Driverهایی است که بهصورت کامل متنباز نیستند اما توسط Canonical پشتیبانی میشوند.
universe: شامل طیف گستردهای از نرمافزارهای متنباز است که عمدتاً توسط جامعه Ubuntu نگهداری میشوند.
multiverse: شامل نرمافزارهایی است که ممکن است محدودیتهای مجوز، کپیرایت یا شرایط توزیع داشته باشند.
Canonical این چهار Component را بر اساس وضعیت Open Source بودن و نوع پشتیبانی از یکدیگر تفکیک میکند.
برای اغلب کاربران، فعال بودن تنظیمات پیشفرض Ubuntu کافی است و بهتر است بدون دلیل مشخص Componentها را تغییر ندهید.
چگونه sources.list Ubuntu را مشاهده و ویرایش کنیم؟
قبل از هر تغییری ابتدا نسخه Ubuntu را مشخص کنید.
بررسی نسخه و نام رمز (Codename) اوبونتو
دستور زیر اطلاعات سیستمعامل را نمایش میدهد:
Copy
cat/etc/os-release
Bash
برای مشاهده نام رمز (Codename) نیز میتوانید اجرا کنید:
Copy
source/etc/os-releaseecho"$VERSION_CODENAME"
Bash
برای مثال در Ubuntu 24.04 خروجی معمولاً:
Copy
noble
Bash
خواهد بود.
مهم: نام رمز (Codename) فایل Sources را بهصورت دستی از jammy به noble یا نسخه دیگری تغییر ندهید تا Ubuntu را Upgrade کنید. ارتقای نسخه سیستمعامل باید از روش رسمی Upgrade انجام شود.
بکاپگیری و ویرایش فایل
قبل از ویرایش sources.list Ubuntu حتماً نسخه پشتیبان تهیه کنید. در نسخههای قدیمی:
اگر برای مدیریت سرور از راه دور به ترمینال دسترسی ندارید، ابتدا با روشهایاتصال به سرور با SSH آشنا شوید.
چگونه مخزن (Repository) جدید به Ubuntu اضافه کنیم؟
برخی نرمافزارها مانند Docker، دیتابیسها یا ابزارهای توسعه مخزن (Repository) اختصاصی خود را دارند. در این شرایط ممکن است لازم باشد یک Repository خارجی به APT اضافه شود.
بهتر است مخزن (Repository) های شخص ثالث مستقیماً با مخازن اصلی Ubuntu مخلوط نشوند و در /etc/apt/sources.list.d/ فایل جداگانه داشته باشند.
برای مثال ساختار کلی یک مخزن (Repository) در فرمت جدید میتواند چنین باشد:
این مثال صرفاً برای نمایش ساختار است و نباید بهعنوان مخزن (Repository) واقعی استفاده شود.
استفاده امن از Signed-By و GPG Key
در آموزشهای قدیمی اینترنت ممکن است دستوری مانند apt-key add را ببینید. استفاده از apt-key منسوخ شده است و روش جدید، استفاده از Keyring اختصاصی همراه با گزینه Signed-By است. مستندات Ubuntu نیز قرار دادن Keyهای مدیریتی در /etc/apt/keyrings/ و اتصال آنها به مخزن (Repository) مشخص را توصیه میکنند.
پس از اضافهکردن مخزن (Repository) جدید اجرا کنید:
Copy
sudoaptupdate
Bash
اگر میخواهید یک نمونه عملی از افزودن مخزن (Repository) شخص ثالث را ببینید، در آموزش نصب Docker روی Ubuntu 24.04 نحوه اضافهکردن مخزن رسمی Docker و کلید GPG آن را بهصورت عملی توضیح دادهایم.
چگونه یک مخزن (Repository) را غیرفعال یا حذف کنیم؟
گاهی یک مخزن (Repository) قدیمی شده، دیگر در دسترس نیست یا باعث خطای apt update میشود. در این شرایط الزاماً نباید تمام Sources سیستم را حذف کنید.
غیرفعال کردن مخزن (Repository) های اضافی
در فایلهای قدیمی .list میتوانید با اضافهکردن # ابتدای خط، Repository را موقتاً غیرفعال کنید:
Copy
# deb https://example.com/ubuntu noble main
Bash
در فرمت Deb822 نیز میتوان Repository را با گزینه زیر غیرفعال کرد:
Copy
Enabled:no
Bash
APT بهصورت رسمی این روش را برای فایلهای .sources پشتیبانی میکند.
اگر مخزن (Repository) خارجی در فایل جداگانه قرار گرفته باشد، برای حذف کامل آن نیز میتوان فایل مربوطه را از /etc/apt/sources.list.d/ حذف کرد؛ اما قبل از حذف مطمئن شوید فایل مربوط به مخزن (Repository)رسمی Ubuntu نیست.
خطاهای رایج sources.list Ubuntu و روش رفع آنها
اشتباه در تنظیمات sources.list Ubuntu یکی از دلایل رایج خطا هنگام اجرای:
Copy
sudoaptupdate
Bash
است.
تشخیص خطاهای مخزن (Repository)در APT
خطای 404 یا Release file not found
این خطا معمولاً زمانی رخ میدهد که نام رمز (Codename) اشتباه باشد، مخزن (Repository)دیگر نسخه Ubuntu شما را پشتیبانی نکند یا از نسخه End of Life استفاده کنید.
ابتدا نسخه Ubuntu را بررسی کنید:
Copy
cat/etc/os-release
Bash
سپس مطمئن شوید مقدار Suites یا Codename Repository با نسخه سیستمعامل مطابقت دارد.
خطای Repository تکراری
گاهی یک مخزن (Repository) هم در /etc/apt/sources.list و هم در یکی از فایلهای sources.list.d تعریف شده است. در این حالت ممکن است پیغامهایی مانند:
Copy
TargetPackagesisconfiguredmultipletimes
Bash
نمایش داده شود. مخزن (Repository) تکراری را پیدا کرده و فقط یکی از تعریفها را نگه دارید.
خطای GPG یا NO_PUBKEY
اگر Key یک مخزن (Repository) موجود نباشد یا منقضی شده باشد، APT ممکن است امضای آن Repository را تأیید نکند.
در این شرایط بررسی امنیتی APT را غیرفعال نکنید و گزینههایی مانند trusted=yes را صرفاً برای حذف خطا اضافه نکنید. Key رسمی مخزن (Repository) را دریافت کرده و از Signed-By استفاده کنید. Ubuntu هشدار میدهد که Trusted کردن مخزن (Repository) بدون اعتبارسنجی مناسب میتواند امنیت سیستم را تضعیف کند.
خطای Could not get lock
این خطا معمولاً مستقیماً به Sources مربوط نیست و اغلب زمانی رخ میدهد که فرآیند دیگری از APT یا dpkg در حال اجرا باشد.
اگر هنگام اجرای APT با این خطا مواجه شدهاید، روشهای تشخیص Process قفلکننده و رفع مشکل را در مقاله رفع خطای Could not Get lock در Ubuntuتوضیح دادهایم.
سوالات متداول درباره sources.list Ubuntu
آیا حذف فایل sources.list مشکلی ایجاد میکند؟
اگر Repositoryهای موردنیاز APT را حذف کنید، سیستم دیگر نمیتواند Package Listها را از آن منابع دریافت کند و نصب یا Update بسیاری از نرمافزارها با مشکل مواجه میشود. بنابراین بهجای حذف بدون بررسی، ابتدا نسخه پشتیبان (Backup) تهیه کنید.
چرا در Ubuntu 24.04 فایل sources.list من خالی است؟
در Ubuntu 24.04 و نسخههای جدیدتر، خالی یا حتی استفادهنشدن /etc/apt/sources.list لزوماً مشکلساز نیست؛ زیرا مخازن پیشفرض معمولاً در /etc/apt/sources.list.d/ubuntu.sources تعریف شدهاند. اما اگر فایل فعالی که مخزن (Repository) های موردنیاز سیستم در آن قرار دارند حذف شود، APT دیگر نمیتواند اطلاعات آن مخازن را دریافت کند.
بعد از تغییر مخزن (Repository) چه دستوری اجرا کنیم؟
پس از هر تغییر در Sources، اجرا کنید:
sudo apt update
تا APT اطلاعات Repositoryها را مجدداً دریافت کند.
آیا میتوان هر مخزن (Repository) اینترنتی را به Ubuntu اضافه کرد؟
خیر. مخزن (Repository) شخص ثالث میتواند بسته (Package) های سیستم را جایگزین کند یا باعث تداخل و مشکلات امنیتی شود. فقط از مخزن (Repository) رسمی پروژه یا توسعهدهنده مورد اعتماد استفاده کنید. Canonical نیز درباره استفاده از Package Sourceهای ناشناس هشدار داده است.
جمعبندی
فایلهای sources.list و ubuntu.sources مشخص میکنند APT بستهها و بهروزرسانیهای Ubuntu را از چه مخازنی دریافت کند. در Ubuntu 22.04 و نسخههای قدیمیتر معمولاً فایل /etc/apt/sources.list استفاده میشود، در حالی که Ubuntu 24.04 و نسخههای جدیدتر بهصورت پیشفرض از ubuntu.sources و فرمت Deb822 استفاده میکنند.
اگر هنگام ویرایش این فایلها نسخه Ubuntu، نام رمز (Codename) و ساختار مخزن (Repository) را بهدرستی بررسی کنید، بسیاری از خطاهای apt update قابل پیشگیری هستند. همچنین برای مخازن شخص ثالث فقط از منابع معتبر و کلیدهای GPG رسمی استفاده کنید و پیش از هر تغییر، یک نسخه پشتیبان از تنظیمات فعلی داشته باشید.
اگر میخواهید این تنظیمات را روی یک سرور واقعی Ubuntu اجرا و تمرین کنید، میتوانید پلنهای سرور مجازی ایران وبداده را بررسی کنید و سیستمعامل موردنظر خود را روی VPS نصب کنید.