</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

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 — تیم Mozilla
  • ppa:git-core/ppa — تیم Git
  • ppa:deadsnakes/ppa — نسخه‌های مختلف Python

روش ۲: با ویرایش دستی sources.list#

اگر PPA روی Launchpad نیست، می‌توانید مخزن را دستی اضافه کنید:

# ساخت فایل مخزن
sudo nano /etc/apt/sources.list.d/myapp.list
deb 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-ce

apt-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/ppa

ppa-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-pin
Package: *
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/ppaFirefox و Thunderbird نسخهٔ deb
ppa:git-core/ppaآخرین نسخهٔ Git
ppa:deadsnakes/ppaنسخه‌های مختلف Python (3.10، 3.11، 3.12)
ppa:obsproject/obs-studioOBS Studio
ppa:graphics-drivers/ppaدرایورهای NVIDIA جدیدتر
ppa:kisak/kisak-mesaMesa (درایور گرافیک آزاد) جدیدتر

مخازن رسمی Ubuntu#

علاوه بر PPA، مخازن رسمی Ubuntu در /etc/apt/sources.list.d/ubuntu.sources (یا /etc/apt/sources.list در نسخه‌های قدیمی) تعریف می‌شوند:

کامپوننتتوضیحمجوز
mainرسمی Canonical، آزادآزاد
restrictedرسمی Canonical، غیرآزادغیرآزاد
universeجامعه‌ای، آزادآزاد
multiverseجامعه‌ای، غیرآزادغیرآزاد

به‌علاوه، شاخه‌های زیر هم موجودند:

  • noble-updates — به‌روزرسانی‌های نسخهٔ فعلی
  • noble-backports — نسخه‌های جدیدتر بازکامپایل‌شده برای LTS
  • noble-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 برای حذف)، می‌توانید از این ابزار به‌صورت ایمن بهره ببرید.

به‌عنوان گام بعدی:

اشتراک‌گذاری:

این صفحه در تاریخ ۹ تیر ۱۴۰۵ به‌روزرسانی شده است.