ديبيان

مستودع Sury لـ PHP مقابل حزم التوزيعة: المفاضلة والإعداد الآمن وضبط الأولوية والتراجع

ما هما packages.sury.org وppa:ondrej/php، ومتى يكونان أنسب من PHP الخاص بـ Debian أو Ubuntu، وكيف تضيفهما وتضبط أولويتهما وتتراجع عنهما بأمان.

تاريخ النشر
مدة القراءة
7 دقائق
الكاتب
SKYLINE Engineering

يأتي كل إصدار من Debian وUbuntu بفرع واحد من PHP. وعندما يحتاج تطبيق إلى فرع آخر، مثل PHP 8.4 على Debian 12، يلجأ معظم مديري الأنظمة إلى المستودعات التي يصونها Ondřej Surý: المستودع packages.sury.org/php لـ Debian، وppa:ondrej/php لـ Ubuntu. هذه المستودعات واسعة الانتشار ومتقنة، لكن إضافتها تغيّر الطريقة التي يتلقى بها خادمك تحديثات PHP. يشرح هذا الدليل المفاضلة، وكيف تضيفها وتضبط أولويتها وتزيلها عن قصد.

ما هذه المستودعات

بحسب موقع deb.sury.org، فإن Ondřej Surý مطوّر في مشروع Debian يحزّم PHP لـ Debian منذ PHP 5، وحزم PHP الرسمية في Debian وUbuntu إما من عمله أو مبنية عليه. تحمل مستودعاته التحزيم نفسه مبنيًا لكل إصدار مدعوم من التوزيعات، مع إمكانية تثبيت فروع PHP متعددة جنبًا إلى جنب. ووقت كتابة هذا المقال يضم packages.sury.org/php أقسامًا لـ Debian 11 و12 و13 ولـ Ubuntu 22.04 و24.04 و26.04، وينشر PHP من 5.6 حتى 8.5، إضافة إلى إصدارات مرشحة من PHP 8.6.

هناك تغييران حديثان يستحقان المعرفة:

  • مستودع PPA الخاص بـ Ubuntu يُدمج في packages.sury.org. تذكر صفحة ppa:ondrej/php على Launchpad أن packages.sury.org/php هو المصدر المعتمد لـ Ubuntu 26.04 (resolute)، وأن الـ PPA ما زال قابلًا للاستخدام على 22.04 و24.04، وأن تعليمات الانتقال للإصدارات الأقدم ستأتي لاحقًا.
  • إنه جهد تطوعي في معظمه. يذكر القائم عليه أن التحزيم يتم في الغالب في وقت فراغه، ويطلب الإبلاغ عن الأخطاء في متتبع المشروع، ويوجّه الشركات إلى الدعم التجاري (PHP LTS من Freexian) أو التبرعات.

حزم التوزيعة أم Sury: المفاضلة

حزم التوزيعةمستودع Sury
فروع PHPفرع واحد لكل إصدارفروع متعددة قابلة للتثبيت معًا
تحديثات الأمانمن فريق أمان التوزيعة، وتُعلن في DSA/DLA (Debian) أو USN (Ubuntu)من القائم على المستودع، ولا تغطيها إشعارات Debian أو Ubuntu
المدةطوال عمر الإصدار، بما في ذلك دعم Debian الطويلما دام القائم عليه ينشر لإصدارك
الثقةموثوقة أصلًا في نظامكتضيف مفتاح توقيع خارجيًا تُنفَّذ حزمه بصلاحيات root أثناء التثبيت
آثار جانبيةلا شيء خارج PHPقد تستبدل بعض حزم التوزيعة (انظر أدناه)

يكون المستودع منطقيًا حين تحتاج إلى فرع لا يأتي به إصدارك ولا تستطيع ترقية نظام التشغيل بعد، أو حين يجب أن يشغّل خادم واحد عدة إصدارات من PHP لمواقع مختلفة. أما إن كان إصدارك يأتي بفرع مدعوم يناسب تطبيقك، فحزم التوزيعة هي الخيار الأبسط.

آثار جانبية ينبغي فهمها قبل الإضافة

  • إصداراته تُرتَّب أعلى من إصدارات التوزيعة. على Debian 12 يتقدم إصدار Sury 8.2.35-1+0~20261021.94+debian12~1 على إصدار Debian 8.2.35-1~deb12u1، وعلى Ubuntu 24.04 يتقدم إصدار الـ PPA 8.3.36-1+ubuntu24.04.1+deb.sury.org+1 على إصدار Ubuntu 8.3.6-0ubuntu0.24.04.13. لذا تستبدل الترقية التالية حزم PHP الخاصة بتوزيعتك ما لم تضبط الأولوية.
  • الحزم الوصفية تشير إلى فرع أحدث. في قسم Debian 12 تعتمد الحزمتان الوصفيتان php وphp-fpm من Sury على PHP 8.4. ولأن apt upgrade يثبّت حزمًا جديدة إن احتاجتها الترقية، فقد يكتسب خادم مثبتة عليه هاتان الحزمتان فرعًا كاملًا جديدًا من PHP.
  • قد يتغير أمر سطر الأوامر بصمت. تسجّل حزم PHP بأسلوب Debian المسار /usr/bin/php عبر update-alternatives بأولوية مبنية على رقم الإصدار، فتثبيت فرع أحدث يجعله الأمر php الافتراضي لمهام cron والسكربتات.
  • يشحن مكتبات أيضًا. يتضمن المستودع نسخًا من مكتبات مثل libgd3 وlibpcre3 قد تستبدل نسخ التوزيعة التي تستخدمها برامج أخرى.

الإضافة على Debian

هذه هي الخطوات الواردة في ملف README الرسمي على packages.sury.org/php، وتُنفَّذ بصلاحيات root أو عبر sudo. لا تشغّل ترقية كاملة بعدها مباشرة، بل أضف ضبط الأولوية في القسم التالي أولًا.

sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt-get update

على Ubuntu 22.04 و24.04 ما زال الـ PPA متاحًا عبر sudo add-apt-repository ppa:ondrej/php، أما على Ubuntu 26.04 فيوجّه القائم عليه المستخدمين إلى packages.sury.org/php. ولأن الـ PPA في طور الدمج، راجع صفحة Launchpad للتعليمات الحالية قبل إعداد خادم جديد.

اضبط الأولوية ليقدّم فقط ما تريده

تتيح تفضيلات APT منح المستودع أولوية منخفضة افتراضيًا ورفعها فقط للفرع الذي تحتاجه. هذا المثال لـ Debian 12 يأخذ PHP 8.4 (والحزمة المشتركة php-common التي يتطلبها) من Sury، ويُبقي كل ما عداه، بما في ذلك PHP 8.2 والمكتبات الخاصة بـ Debian، من Debian:

# /etc/apt/preferences.d/sury-php
Package: *
Pin: origin packages.sury.org
Pin-Priority: 100

Package: src:php8.4 php-common
Pin: origin packages.sury.org
Pin-Priority: 500

يأتي السجل العام (*) أولًا كي يتغلب عليه السجل المحدد، كما ينصح دليل apt_preferences. وعلى Ubuntu مع الـ PPA طابق المستودع بالسطر Pin: release o=LP-PPA-ondrej-php بدل اسم المضيف. ثم تحقق من النتيجة قبل تثبيت أي شيء:

apt policy php8.4-fpm php-common libgd3 php8.2-cli
apt-get install --simulate php8.4-fpm php8.4-cli php8.4-mysql

يعرض apt policy الإصدار المرشح ومصدره لكل حزمة، وتُظهر المحاكاة بالضبط ما سيُثبَّت أو يُستبدل. وقد تحتاج الامتدادات المبنية من حزم مصدرية أخرى، مثل php8.4-redis، إلى سجلات خاصة بها إن تطلبت اعتمادياتها ذلك. عدّل ضبط الأولوية حتى لا تتضمن المحاكاة إلا ما تقصده، ثم ثبّت فعليًا. وثبّت الحزم ذات الإصدار المحدد (php8.4-fpm وphp8.4-cli) لا الحزمتين الوصفيتين php أو php-fpm، حتى لا يتغير الفرع إلا بقرارك.

إبقاؤه محدّثًا

تصل التحديثات من المستودع عبر apt update وapt upgrade المعتادين، لكنها لا تُعلن في إشعارات الأمان الخاصة بـ Debian أو Ubuntu. تابع إعلانات إصدارات php.net، وراجع apt changelog للحزم التي تستخدمها، وتأكد من ضبط أدوات الترقية التلقائية لتشمل هذا المصدر إن كنت تعتمد عليها، إذ تكتفي افتراضيًا بتحديثات مصادر التوزيعة نفسها (في Debian عبر القائمة Unattended-Upgrade::Origins-Pattern).

التراجع

  1. أعد توجيه خادم الويب إلى مقبس PHP-FPM الخاص بالتوزيعة إن كنت أبقيت ذلك الإصدار مثبتًا.
  2. أزل حزم الفرع الذي لم يوفره إلا Sury، مثلًا:
    sudo apt remove $(dpkg-query -W -f='${Package}\n' 'php8.4*')
  3. احذف الملف /etc/apt/sources.list.d/php.list وملف ضبط الأولوية، ثم شغّل sudo apt update.
  4. إن كانت حزم Sury قد استبدلت حزمًا من التوزيعة، فأعدها بضبط أولوية مؤقت أعلى من 1000 يسمح بالرجوع إلى إصدارات أقدم، مع المعاينة أولًا:
    # /etc/apt/preferences.d/back-to-debian (temporary)
    Package: *
    Pin: release o=Debian
    Pin-Priority: 1001
    
    sudo apt update
    apt-get --simulate dist-upgrade
    sudo apt-get dist-upgrade
    ثم احذف ملف الأولوية المؤقت. وعلى Ubuntu استخدم o=Ubuntu.

ما الذي ينبغي فعله

  • فضّل PHP الخاص بتوزيعتك حين تأتي بفرع مدعوم يناسب تطبيقك.
  • إن أضفت مستودع Sury أو الـ PPA فاضبط أولويته قبل أول ترقية، وتحقق بالأمر apt policy وبتثبيت تجريبي بالمحاكاة.
  • ثبّت حزم PHP ذات الإصدار المحدد لا الحزم الوصفية العامة، واضبط أمر سطر الأوامر عبر update-alternatives عن قصد.
  • تابع التحديثات بنفسك، فلن تظهر في إشعارات الأمان الخاصة بـ Debian أو Ubuntu.
  • دوّن طريقة التراجع قبل أن تحتاج إليها، واختبرها على خادم تجريبي.

المصادر

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

صفحة الكاتب
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Debian for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.