PPA و مخازن Ubuntu
آموزش کامل کار با PPA (Personal Package Archive) و مخازن شخصی Ubuntu: افزودن، حذف، پینکردن اولویت و روش مدرن کلیدهای GPG.
PPA (Personal Package Archive) یکی از ویژگیهای منحصربهفرد Ubuntu است که به توسعهدهندگان اجازه میدهد بستههای خود را خارج از مخازن رسمی ارائه کنند. در این آموزش با PPA، مخازن شخصی و روش مدرن مدیریت کلیدهای GPG آشنا میشوید.
PPA چیست؟
PPA یک مخزن بستهٔ شخصی روی سرویس Launchpad است که به هر کاربر Ubuntu اجازه میدهد بستههای خود را بسازد، کامپایل کند و در اختیار دیگران قرار دهد. PPAها معمولاً برای ارائهٔ نسخههای جدیدتر یا نرمافزارهایی که در مخازن رسمی نیستند، استفاده میشوند.
مزایای PPA
- نصب نسخههای جدیدتر نرمافزار (مثلاً Firefox جدیدتر، Kernel HWE)
- نصب نرمافزارهایی که در مخازن رسمی نیستند
- بهروزرسانی خودکار همراه با
apt upgrade - مدیریت با همان ابزار APT
معایب PPA
- هیچ تضمینی برای امنیت یا کیفیت (هر کسی میتواند PPA بسازد)
- در ارتقا به نسخهٔ بعدی Ubuntu ممکن است مشکل ایجاد کند
- بستههای PPA ممکن است وابستگیهای ناسازگار با سیستم داشته باشند
PPA مورد اعتماد نصب کنید
هر PPA مسئولیتی روی دوش شما میگذارد. فقط PPAهای رسمی پروژهها (مانند mozillateam/ppa برای Firefox) یا توسعهدهندگان شناختهشده را اضافه کنید. PPAهای ناشناس میتوانند سیستم را ناپایدار کنند یا امنیت را بهخطر بیندازند.
افزودن PPA
روش ۱: با add-apt-repository
# افزودن PPA (بهطور خودکار کلید GPG را اضافه میکند)
sudo add-apt-repository ppa:mozillateam/ppa
# بهروزرسانی فهرست
sudo apt update
# نصب بسته
sudo apt install firefox-esrنحوهٔ فرمت PPA
فرمت PPA بهصورت ppa:username/ppa-name است. بهعنوان مثال:
ppa:mozillateam/ppa— تیم Mozillappa:git-core/ppa— تیم Gitppa:deadsnakes/ppa— نسخههای مختلف Python
روش ۲: با ویرایش دستی sources.list
اگر PPA روی Launchpad نیست، میتوانید مخزن را دستی اضافه کنید:
# ساخت فایل مخزن
sudo nano /etc/apt/sources.list.d/myapp.listdeb https://download.example.com/ubuntu noble mainسپس کلید GPG را اضافه کنید (روش مدرن):
# دانلود کلید و ذخیره در keyrings
curl -fsSL https://download.example.com/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/myapp.gpg
# بهروزرسانی فهرست
sudo apt updateروش مدرن افزودن مخزن شخصی
از Ubuntu 22.04 به بعد، روش صحیح افزودن مخزن شخصی با کلید GPG به این شکل است:
# ۱. ساخت پوشهٔ keyrings (اگر نیست)
sudo install -d -m 0755 /etc/apt/keyrings
# ۲. دانلود و ذخیرهٔ کلید
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# ۳. افزودن مخزن با معماری و نسخهٔ پویا
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# ۴. بهروزرسانی و نصب
sudo apt update
sudo apt install docker-ceapt-key منسوخ شده است
دستور apt-key add از Debian 12 و Ubuntu 22.04 به بعد منسوخ شده است. روش صحیح، قرار دادن کلیدها در /etc/apt/keyrings/ و ارجاع به آنها با signed-by= در خط مخزن است.
لیست PPAهای نصبشده
# لیست تمام مخازن (شامل PPA و مخازن شخصی)
ls /etc/apt/sources.list.d/
# مشاهدهٔ محتوای یک مخزن
cat /etc/apt/sources.list.d/mozillateam-ubuntu-ppa-noble.list
# مشاهدهٔ همهٔ مخازن بهصورت یکپارچه (Ubuntu 24.04 به بعد)
apt-cache policyدر Ubuntu 24.04 و جدیدتر، مخازن در فایل /etc/apt/sources.list.d/ubuntu.sources به فرمت Deb822 ذخیره میشوند:
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حذف PPA
روش ۱: با add-apt-repository
# حذف PPA
sudo add-apt-repository --remove ppa:mozillateam/ppa
# بهروزرسانی فهرست
sudo apt updateروش ۲: با ppa-purge (پیشنهادی)
ppa-purge不仅 PPA را حذف میکند، بلکه بستههای نصبشده از آن PPA را هم به نسخهٔ رسمی برمیگرداند:
# نصب ابزار
sudo apt install ppa-purge
# حذف PPA و برگرداندن بستهها
sudo ppa-purge ppa:mozillateam/ppappa-purge برای ارتقای امن
اگر میخواهید از نسخهٔ Ubuntu فعلی به نسخهٔ بعدی ارتقا دهید، توصیه میشود پیش از ارتقا همهٔ PPAها را با ppa-purge حذف کنید. این کار از تداخل وابستگیها در زمان ارتقا جلوگیری میکند.
روش ۳: حذف دستی
# حذف فایل مخزن
sudo rm /etc/apt/sources.list.d/mozillateam-ubuntu-ppa-noble.list
# حذف کلید (اگر جداگانه اضافه شده بود)
sudo rm /etc/apt/keyrings/myapp.gpg
# بهروزرسانی
sudo apt updateپینکردن اولویت مخزن (APT Pinning)
گاهی میخواهید بستهای از یک PPA نصب شود، نه از مخزن رسمی. این کار با apt pinning انجام میشود:
# ساخت فایل پین
sudo nano /etc/apt/preferences.d/mozilla-pinPackage: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001# بررسی اولویت
apt-cache policy firefox
# نمایش اولویتهای هر منبع| اولویت | معنا |
|---|---|
| 1000+ | نصب حتی اگر downgrade شود |
| 990 | پیشفرض برای نسخهٔ نصبشده |
| 500 | پیشفرض معمولی |
| 100 | نصبشده اما نه از مخزن |
| 0- | هرگز نصب نشود |
مثال کاربردی پین
اگر میخواهید Firefox از PPA Mozilla (نسخهٔ deb) نصب شود نه از Snap، یک پین با اولویت 1001 برای PPA mozillateam/ppa تعریف کنید.
PPAهای معروف و مفید
| PPA | کاربرد |
|---|---|
ppa:mozillateam/ppa | Firefox و Thunderbird نسخهٔ deb |
ppa:git-core/ppa | آخرین نسخهٔ Git |
ppa:deadsnakes/ppa | نسخههای مختلف Python (3.10، 3.11، 3.12) |
ppa:obsproject/obs-studio | OBS Studio |
ppa:graphics-drivers/ppa | درایورهای NVIDIA جدیدتر |
ppa:kisak/kisak-mesa | Mesa (درایور گرافیک آزاد) جدیدتر |
مخازن رسمی Ubuntu
علاوه بر PPA، مخازن رسمی Ubuntu در /etc/apt/sources.list.d/ubuntu.sources (یا /etc/apt/sources.list در نسخههای قدیمی) تعریف میشوند:
| کامپوننت | توضیح | مجوز |
|---|---|---|
main | رسمی Canonical، آزاد | آزاد |
restricted | رسمی Canonical، غیرآزاد | غیرآزاد |
universe | جامعهای، آزاد | آزاد |
multiverse | جامعهای، غیرآزاد | غیرآزاد |
بهعلاوه، شاخههای زیر هم موجودند:
noble-updates— بهروزرسانیهای نسخهٔ فعلیnoble-backports— نسخههای جدیدتر بازکامپایلشده برای LTSnoble-security— بهروزرسانیهای امنیتی
فعالکردن مخازن اضافی
# فعالکردن universe و multiverse
sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo add-apt-repository restricted
# فعالکردن backports و proposed
sudo add-apt-repository -s # proposed
# بهروزرسانی
sudo apt updateخطاهای رایج
۱. خطای GPG در مخزن
W: An error occurred during the signature verification.
GPG error: ... NO_PUBKEY 0E98404D386FA1D9راهحل:
# روش مدرن: دریافت کلید و ذخیره در keyrings
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
# بهروزرسانی فایل مخزن برای ارجاع به کلید
# deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/ubuntu noble main۲. 403 Forbidden یا 404 Not Found
راهحل: PPA برای نسخهٔ Ubuntu شما ساخته نشده. میتوانید نسخهٔ قدیمیتر را در /etc/apt/sources.list.d/ ویرایش و نام نسخهٔ قبل را جایگزین کنید (مثلاً noble را به jammy تغییر دهید).
۳. وابستگیهای شکسته پس از افزودن PPA
راهحل:
# تلاش برای رفع خودکار
sudo apt --fix-broken install
# اگر حل نشد، PPA را با ppa-purge حذف کنید
sudo apt install ppa-purge
sudo ppa-purge ppa:username/ppa-name۴. خطای "Repository is not signed"
E: The repository '...' is not signed.راهحل: اگر مطمئن هستید مخزن امن است:
# روش موقت (با رد کردن تأیید)
sudo apt -o Acquire::AllowInsecureRepositories=true update
# روش صحیح: اضافهکردن کلید GPG
# (به روش مدرن بالا مراجعه کنید)احتیاط با مخازن غیرامن
اضافهکردن کلید AllowInsecureRepositories خطر امنیتی دارد و توصیه نمیشود. همیشه کلید GPG رسمی مخزن را بهدرستی اضافه کنید.
خلاصه و مرحلهٔ بعد
PPA و مخازن شخصی به شما اجازه میدهند نرمافزارهایی خارج از مخازن رسمی Ubuntu نصب کنید. با رعایت نکات امنیتی (فقط PPAهای مورد اعتماد، استفاده از روش مدرن کلید GPG و استفاده از ppa-purge برای حذف)، میتوانید از این ابزار بهصورت ایمن بهره ببرید.
بهعنوان گام بعدی:
- آموزش APT و Snap را برای مدیریت بستهها بخوانید
- آموزش Flatpak را برای جایگزین Snap و PPA ببینید
- آموزش بهروزرسانی سیستم را برای روتین نگهداری دنبال کنید
این صفحه در تاریخ ۹ تیر ۱۴۰۵ بهروزرسانی شده است.