مخازن Debian
ساختار مخازن Debian، پیکربندی sources.list، دستههای main/contrib/non-free، Backports، Security و افزودن مخازن شخصی.
مخازن (Repositories) منابعی هستند که APT از آنها بستهها را دریافت میکند. در این آموزش، ساختار مخازن Debian، نحوهٔ پیکربندی sources.list و افزودن مخازن اضافی را بهطور کامل بررسی میکنیم.
مخازن رسمی Debian
مخزن رسمی Debian در deb.debian.org قرار دارد و چندین mirror آن در سراسر جهان موجود است:
| آدرس | نوع | توضیح |
|---|---|---|
http://deb.debian.org/debian | اصلی | مخزن اصلی با mirror خودکار |
http://security.debian.org/debian-security | امنیتی | بهروزرسانیهای امنیتی |
http://deb.debian.org/debian | Backports | نرمافزار جدیدتر برای Stable |
deb.debian.org بهترین گزینه
آدرس deb.debian.org بهصورت خودکار به نزدیکترین mirror جغرافیایی هدایت میشود. نیازی به انتخاب mirror دستی نیست.
فایل sources.list
فایل پیکربندی مخازن در /etc/apt/sources.list قرار دارد. محتوای پیشفرض Debian 12 (Bookworm):
# مشاهدهٔ محتوای فعلی sources.list
cat /etc/apt/sources.list
# خروجی پیشفرض Debian 12:
# deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
# deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
# deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmwareساختار خط مخزن
هر خط مخزن با deb (باینری) یا deb-src (سورس) شروع میشود. سپس آدرس مخزن، نسخه (suite) و دستهها (components) قرار میگیرند:
deb URL suite component1 component2 ...
مثال: deb http://deb.debian.org/debian bookworm main contrib non-free
از نسخهٔ ۱۲ به بعد: فرمت deb822
در Debian 12 به بعد، فایل جدیدی بهنام /etc/apt/sources.list.d/debian.sources با فرمت deb822 معرفی شده است:
# /etc/apt/sources.list.d/debian.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: bookworm bookworm-updates bookworm-backports
Components: main contrib non-free non-free-firmware
Types: deb deb-src
URIs: http://security.debian.org/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmwareمزایای فرمت deb822:
- خوانایی بهتر
- امکان گروهبندی چند suite در یک بلوک
- پشتیبانی از signed-by و سایر گزینهها
دستههای بستهها (Components)
هر مخزن Debian شامل چندین دسته است:
| دسته | توضیح | مثال |
|---|---|---|
main | بستههای آزاد منطبق با DFSG | nmap, vim, apache2 |
contrib | بستههای آزاد که به بستههای غیرآزاد وابستهاند | برخی درایورها |
non-free | بستههای غیرآزاد | firmware-iwlwifi, nvidia-driver |
non-free-firmware | فریمورهای غیرآزاد برای سختافزار | firmware-realtek, firmware-misc-nonfree |
تفاوت non-free و non-free-firmware
از Debian 12 به بعد، فریمورهای غیرآزاد به دستهٔ جداگانهای به نام non-free-firmware منتقل شدند. این کار به این دلیل انجام شد که فریمورها برای کارکرد سختافزار ضروریاند و باید بهطور پیشفرض فعال باشند، در حالی که بستههای non-free اختیاریتر هستند.
مخزن Backports
Backports شامل بستههایی است که از Testing یا Unstable برای Stable بازکامپایل شدهاند. این مخزن برای دسترسی به نرمافزار جدیدتر بدون ترک Stable مناسب است:
# افزودن backports به sources.list
deb http://deb.debian.org/debian bookworm-backports main contrib# نصب بسته از backports
sudo apt update
sudo apt install -t bookworm-backports linux-image-amd64
# یا با اولویت پایینتر
sudo apt install -t bookworm-backports blenderBackports امن است
بستههای Backports بهصورت رسمی توسط تیم Debian پشتیبانی میشوند و پایداری Stable را حفظ میکنند. اما همیشه آخرین نسخه را ندارند؛ نسخهای ارائه میشود که کاربران درخواست دادهاند.
مخزن Security
بهروزرسانیهای امنیتی در مخزن جداگانهای نگهداری میشوند:
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmwareاین مخزن بهمحض انتشار بهروزرسانی امنیتی، فعال میشود و نیازی به انتظار برای نسخهٔ Stable بعدی نیست.
فعالسازی Source Packages
برای دریافت سورس بستهها (مثلاً برای کامپایل یا بررسی کد):
# فعالسازی deb-src (حذف علامت کامنت)
sudo sed -i 's/^# deb-src/deb-src/' /etc/apt/sources.list
# بهروزرسانی
sudo apt update
# دانلود سورس یک بسته
apt source nmapمدیریت کلیدهای مخزن
Debian از کلید GPG برای امضای بستهها استفاده میکند. کلیدها در /etc/apt/trusted.gpg.d/ و /etc/apt/keyrings/ نگهداری میشوند:
# نمایش کلیدهای نصبشده
ls /etc/apt/trusted.gpg.d/
# خروجی:
# debian-archive-bookworm-automatic.gpg
# debian-archive-bookworm-security-automatic.gpg
# debian-archive-bookworm-stable.gpg
# نصب مجدد کلید رسمی Debian
sudo apt install -y debian-archive-keyringافزودن کلید مخزن شخصی (روش صحیح)
# ساخت دایرکتوری keyrings
sudo install -d /etc/apt/keyrings
# دریافت کلید (مثلاً برای Docker)
curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# افزودن مخزن با ارجاع به کلید
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
# بهروزرسانی
sudo apt updateapt-key منسوخ شده است
apt-key add در نسخههای اخیر منسوخ شده و ممکن است در آینده حذف شود. همیشه از روش signed-by با کلید در /etc/apt/keyrings/ استفاده کنید. این روش امنتر است چون کلید فقط برای آن مخزن خاص اعتبار دارد.
افزودن مخزن شخصی (محلی)
برای نصب بستههای محلی یا آزمایشی، میتوانید مخزن شخصی بسازید:
# ساخت دایرکتوری مخزن
sudo mkdir -p /opt/local-repo
# کپی بستههای .deb
sudo cp my-package.deb /opt/local-repo/
# ساخت Packages index
cd /opt/local-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
# افزودن به sources.list
echo "deb [trusted=yes] file:///opt/local-repo ./" | \
sudo tee /etc/apt/sources.list.d/local.list
# بهروزرسانی
sudo apt updateبررسی نسخهٔ بسته و mirror
# مشاهدهٔ mirror استفادهشده برای هر بسته
apt-cache policy nmap
# خروجی:
# nmap:
# Installed: 7.93+git20240122-1
# Candidate: 7.93+git20240122-1
# Version table:
# *** 7.93+git20240122-1 500
# 500 http://deb.debian.org/debian bookworm/main amd64 Packages
# 100 /var/lib/dpkg/status
# 7.94+git20240122-1~bpo12+1 100
# 100 http://deb.debian.org/debian bookworm-backports/main amd64 Packagesتست اتصال به mirror
# تست اتصال به مخزن
curl -I http://deb.debian.org/debian/dists/bookworm/InRelease
# در صورت عدم اتصال، DNS را بررسی کنید
nslookup deb.debian.org
# تغییر mirror
sudo sed -i 's|deb.debian.org|ftp.de.debian.org|g' /etc/apt/sources.list
sudo apt updateخطاهای رایج
۱. NO_PUBKEY
مشکل: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9.
راهحل:
# نصب مجدد keyring رسمی
sudo apt install -y debian-archive-keyring
# یا وارد کردن کلید دستی (روش قدیمی)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0E98404D386FA1D9
# روش جدید با gpg
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9
sudo gpg --export 0E98404D386FA1D9 | sudo tee /etc/apt/trusted.gpg.d/debian.gpg > /dev/null۲. Hash Sum mismatch
مشکل: Hash Sum mismatch هنگام apt update.
راهحل:
# پاکسازی cache
sudo rm -rf /var/lib/apt/lists/*
sudo apt update۳. Repository is not signed
مشکل: The repository 'xxx' is not signed.
راهحل: برای مخازن رسمی، کلید را نصب کنید. برای مخازن شخصی، گزینهٔ trusted=yes در خط مخزن اضافه کنید:
deb [trusted=yes] file:///opt/local-repo ./هرگز مخازن غیررسمی را اعتماد نکنید
استفاده از trusted=yes برای مخازن ناشناس خطرناک است؛ زیرا APT دیگر امضای بستهها را بررسی نمیکند. تنها برای مخازن محلی شخصی از این گزینه استفاده کنید.
۴. Failed to fetch
مشکل: Failed to fetch http://deb.debian.org/debian/....
راهحل:
# تست اتصال
ping -c 3 deb.debian.org
# بررسی DNS
nslookup deb.debian.org
# تغییر mirror
sudo sed -i 's|deb.debian.org|ftp.fr.debian.org|g' /etc/apt/sources.list
sudo apt updateخلاصه و مرحلهٔ بعد
مخازن Debian بهصورت پیشفرض پیکربندی شدهاند و برای اکثر کاربران نیازی به تغییر ندارند. اما برای کاربران پیشرفته، امکان اضافه کردن Backports، مخازن شخصی و مخازن شخص ثالث وجود دارد. همیشه از روش signed-by برای افزودن کلیدهای شخص ثالث استفاده کنید.
بهعنوان گام بعدی:
- آموزش APT را برای نصب و مدیریت بستهها بخوانید
- آموزش dpkg و aptitude را برای ابزارهای سطح پایینتر ببینید
- آموزش بهروزرسانی سیستم را برای روتین نگهداری دنبال کنید
این صفحه در تاریخ ۹ تیر ۱۴۰۵ بهروزرسانی شده است.