ARCHINSTALL(1)

الاسم
archinstall - توثيق archinstall

archinstall هي مكتبة يمكن استخدامها لتثبيت آرتش لينكس (Arch Linux). تأتي المكتبة مرفقة مع مثبتات مختلفة مسبقة الضبط، مثل مثبت الـ دليل الـ guided المبدئي <#guided>.

بعض ميزات Archinstall هي:

•   صديق للسياق. تنفذ المكتبة الاستدعاءات دائماً بترتيب تسلسلي لضمان عدم تداخل خطوات التثبيت أو تنفيذها بترتيب خاطئ. كما تدعم (وتستخدم) أغلفة سياقية لضمان استدعاء مهام التنظيف والمهام النهائية مثل mkinitcpio عند الحاجة.

•   شفافية كاملة يمكن العثور على السجلات والرؤى في /var/log/archinstall سواء في قرص ISO الحي أو جزئياً على النظام المثبت.

•   صديق لإمكانية الوصول يعمل Archinstall مع espeakup وأدوات إمكانية الوصول الأخرى بفضل استخدام واجهة مستخدم نصية (TUI).

التثبيت الموجه (GUIDED)

يأتي Archinstall مع مثبت موجه مبرمج مسبقاً <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py> يرشدك عبر الخطوات الإلزامية بالإضافة إلى بعض التشكيلات الاختيارية التي يمكن القيام بها.

ملاحظة: يمكن استدعاء سكربتات مبرمجة مسبقاً أخرى عبر تنفيذ archinstall --script <script> (بدون .py). لرؤية قائمة كاملة بالسكربتات، شغّل archinstall --script list أو تحقق من دليل سكربتات الكود المصدري <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>.

ملاحظة: يُوصى بتشغيل archinstall من قرص ISO الرسمي لآرتش لينكس.

تحذير: لن يقوم المثبت بـ ضبط الواي فاي (WiFi) قبل بدء التثبيت. يجب عليك القراءة عن شبكات آرتش لينكس <https://wiki.archlinux.org/index.php/Network_configuration> قبل المتابعة.

  تشغيل التثبيت الموجه

لبدء المثبت، شغّل ما يلي في أحدث قرص ISO لآرتش لينكس:

    archinstall

بما أن المثبت الموجه <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py> هو السكربت المبدئي، فإن هذا يعادل تشغيل archinstall guided

يدعم التثبيت الموجه أيضًا التثبيت بإجابات مسبقة الضبط لجميع الخطوات الموجهة. يمكن أن تكون هذه طريقة سريعة ومريحة لإعادة تشغيل تثبيت واحد أو عدة تثبيتات.

يوجد ملفا تهيئة، وكلاهما اختياري.

  --config

يأخذ هذا المعامل ملف .json محلي كوسطاء ويحتوي على التهيئة العامة وإجابات القائمة للمثبت الموجه.

  --config-url

يأخذ هذا المعامل ملف .json بعيد كوسطاء ويحتوي على التهيئة العامة وإجابات القائمة للمثبت الموجه.

ملاحظة: يمكنك دائماً الحصول على أحدث الخيارات لهذا الملف عبر archinstall --dry-run، حيث ينفذ هذا المثبت الموجه في وضع آمن لا تُتخذ فيه أي إجراءات دائمة على نظامك ولكن يُحاكي التشغيل ويحفظ التهيئة على القرص.

  مثال على الاستخدام

    archinstall --config config.json

    archinstall --config-url https://domain.lan/config.json

محتويات https://domain.lan/config.json:

    {
      "additional-repositories": [],
      "archinstall-language": "English",
      "audio_config": null,
      "bootloader_config": {
        "bootloader": "Systemd-boot",
        "uki": false,
        "removable": false
      },
      "bootloader": "Systemd-boot",
      "debug": false,
      "disk_config": {
        "config_type": "manual_partitioning",
        "device_modifications": [
          {
            "device": "/dev/sda",
            "partitions": [
              {
                "btrfs": [],
                "flags": [
                  "boot"
                ],
                "fs_type": "fat32",
                "length": {
                  "sector_size": null,
                  "total_size": null,
                  "unit": "B",
                  "value": 99982592
                },
                "mount_options": [],
                "mountpoint": "/boot",
                "obj_id": "369f31a8-2781-4d6b-96e7-75680552b7c9",
                "start": {
                  "sector_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 512
                  },
                  "total_size": null,
                  "unit": "sectors",
                  "value": 34
                },
                "status": "create",
                "type": "primary"
              },
              {
                "btrfs": [],
                "flags": [],
                "fs_type": "fat32",
                "length": {
                  "sector_size": null,
                  "total_size": null,
                  "unit": "B",
                  "value": 100000000
                },
                "mount_options": [],
                "mountpoint": "/efi",
                "obj_id": "13cf2c96-8b0f-4ade-abaa-c530be589aad",
                "start": {
                  "sector_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 512
                  },
                  "total_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 16106127360
                  },
                  "unit": "MB",
                  "value": 100
                },
                "status": "create",
                "type": "primary"
              },
              {
                "btrfs": [],
                "flags": [],
                "fs_type": "ext4",
                "length": {
                  "sector_size": null,
                  "total_size": null,
                  "unit": "B",
                  "value": 15805127360
                },
                "mount_options": [],
                "mountpoint": "/",
                "obj_id": "3e75d045-21a4-429d-897e-8ec19a006e8b",
                "start": {
                  "sector_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 512
                  },
                  "total_size": {
                    "sector_size": null,
                    "total_size": null,
                    "unit": "B",
                    "value": 16106127360
                  },
                  "unit": "MB",
                  "value": 301
                },
                "status": "create",
                "type": "primary"
              }
            ],
            "wipe": false
          }
        ]
      },
      "disk_encryption": {
        "encryption_type": "luks",
        "partitions": [
          "3e75d045-21a4-429d-897e-8ec19a006e8b"
        ]
      },
      "hostname": "archlinux",
      "kernels": [
        "linux"
      ],
      "locale_config": {
        "kb_layout": "us",
        "sys_enc": "UTF-8",
        "sys_lang": "en_US"
      },
      "mirror_config": {
        "custom_servers": [
          {
            "url": "https://mymirror.com/$repo/os/$arch"
          }
        ],
        "mirror_regions": {
          "Australia": [
            "http://archlinux.mirror.digitalpacific.com.au/$repo/os/$arch"
          ]
        },
        "optional_repositories": [
          "testing"
        ],
        "custom_repositories": [
          {
            "name": "myrepo",
            "url": "https://myrepo.com/$repo/os/$arch",
            "sign_check": "Required",
            "sign_option": "TrustAll"
          }
        ]
      },
      "network_config": {},
      "no_pkg_lookups": false,
      "ntp": true,
      "offline": false,
      "packages": [],
      "parallel downloads": 0,
      "profile_config": null,
      "save_config": null,
      "script": "guided",
      "silent": false,
      "swap": true,
      "timezone": "UTC",
      "version": "2.6.0"
    }

  خيارات --config

تحذير: يجب أن تتوافق جميع إدخالات المفاتيح والقيم مع معيار JSON. فيما يلي أمثلة مقروءة للبشر مع روابط، مما يكسر الصيغة فعلياً. قم بتكييف الأوصاف أدناه لتناسب احتياجاتك وتنسيق JSON.

ملاحظة: قم بالتمرير إلى اليمين في الجدول لرؤية الخيارات المطلوبة.

  خيارات JSON
المفتاح | القيم(ة) | الوصف | مطلوب
additional-repositories | [ multilib <https://wiki.archlinux.org/title/Official_repositories#multilib>, testing <https://wiki.archlinux.org/title/Official_repositories#Testing_repositories> ] | يُمكّن واحداً أو أكثر من مستودعات testing و multilib قبل المتابعة في التثبيت | لا
archinstall-language | lang <https://github.com/archlinux/archinstall/blob/master/archinstall/locales/languages.json> | يضبط لغة واجهة المستخدم النصية (TUI) المستخدمة (تأكد من استخدام قيمة ``lang`` وليس ``abbr``) | لا
audio_config | pipewire <https://wiki.archlinux.org/title/PipeWire>, pulseaudio <https://wiki.archlinux.org/title/PulseAudio> | خادم الصوت المراد تثبيته | لا
bootloader_config | { bootloader: Systemd-boot <https://wiki.archlinux.org/title/Systemd-boot>, grub <https://wiki.archlinux.org/title/GRUB>, limine <https://wiki.archlinux.org/title/Limine>, uki: true/false, removable: true/false } | تهيئة محمل الإقلاع. يحدد bootloader أي محمل إقلاع سيتم تثبيته (grub/limine إلزامي على BIOS). يُمكّن uki صور النواة الموحدة (UEFI فقط، systemd-boot/limine فقط). يثبت removable في مسار الوسائط القابلة للإزالة المبدئي /EFI/BOOT/ بدلاً من NVRAM (UEFI فقط، grub/limine فقط) | نعم
debug | true، false | يُمكّن مخرجات التنقيح | لا
disk_config | اقرأ المزيد تحت تهيئة القرص <#disk-config> | يحتوي على إعداد القرص المطلوب استخدامه أثناء التثبيت | لا
disk_encryption | اقرأ المزيد تحت تعمية القرص <#disk-encryption> | معاملات لتعمية القرص تُطبق فوق disk_config | لا
hostname | str | سلسلة نصية تحدد اسم مضيف جهازك على الشبكة (المبدئي هو ``archinstall``) | لا
نوى | [ linux <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-hardened <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-lts <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-rt <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-rt-lts <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels>, linux-zen <https://wiki.archlinux.org/title/Kernel#Officially_supported_kernels> ] | يحدد أي النوى يجب تثبيتها وإعدادها في خيارات محمل الإقلاع | نعم
custom_commands | اقرأ المزيد تحت أوامر مخصصة <#custom-commands> | أوامر مخصصة ستُشغل بعد التثبيت داخل بيئة chroot في النظام المثبت | لا
locale_config | {kb_layout: lang <https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration>, sys_enc: ترميز المحارف <https://wiki.archlinux.org/title/Locale>, sys_lang: المحلّية <https://wiki.archlinux.org/title/Locale>} | يحدد تخطيط لوحة المفاتيح، وترميز النظام، ومحلّية النظام | لا
mirror_config | {custom_mirrors: [ <https://>... ], mirror_regions: { "Worldwide": [ "<https://geo.mirror.pkgbuild.com/$repo/os/$arch>" ] } } | يضبط المرايا المختلفة (المبدئي هو ``/etc/pacman.d/mirrors`` الخاص بقرص ISO إذا لم يُعرف) | لا
network_config | `انظر الخيارات تحت تهيئة الشبكة` | يحدد أي نوع من تهيئة الشبكة (إن وجد) يجب استخدامه | لا
no_pkg_lookups | true، false | عطّل فحص الحزم مقابل <https://archlinux.org/packages/> | لا
ntp | true، false | يُمكّن أو يعطل NTP <https://wiki.archlinux.org/title/Network_Time_Protocol_daemon> أثناء التثبيت | لا
offline | true، false | يُمكّن أو يعطل فحوصات معينة عبر الإنترنت مثل إمكانية الوصول للمرآة وما إلى ذلك | لا
حزم | [ <package1>, <package2>, ... ] | قائمة بالحزم المراد تثبيتها أثناء التثبيت | لا
تنزيلات متوازية | 0-∞ | يضبط عدداً معيناً من التنزيلات المتوازية ليستخدمها pacman <https://wiki.archlinux.org/title/Pacman#Enabling_parallel_downloads> | لا
profile_config | `اقرأ المزيد تحت قسم التشكيلات` | يثبت تشكيلة معينة إذا عُرفت | لا
سماك | guided <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py> (مبدئي)، minimal <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/minimal.py>، only_hdd <https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/only_hdd.py>، عند استخدامه للتشغيل الآلي للتثبيت، يحدد هذا أي سماك سيُشغل آليًا به | لا |
صامت | true، false | يعطل أو يفعل أسئلة المستخدم باستخدام واجهة المستخدم النصية (TUI) | لا
swap | true، false | يفعل أو يعطل الـ swap | لا
المنطقة الزمنية | المنطقة الزمنية <https://wiki.archlinux.org/title/System_time#Time_zone> | يضبط المنطقة الزمنية للنظام المثبت | لا

ملاحظة: إذا لم توجد أي مدخلات في disk_config، سيستخدم تثبيت archinstall الموجه كل ما هو موصول حاليًا تحت /mnt/archinstall دون تنفيذ أي عمليات قرص.

  خيارات --creds

Creds هو ملف ضبط منفصل لفصل الخيارات العادية عن البيانات الأكثر حساسية مثل كلمات المرور. يوجد أدناه مثال لكيفية ضبط كلمة مرور الجذر (root) ويليه وصف للقيم الأخرى التي يمكن ضبطها.

    {
        "root_enc_password" : "SecretSanta2022"
    }

  خيارات --creds
المفتاح | القيم | الوصف | مطلوب
!encryption-password | str | كلمة المرور لتعمية القرص، لن يُعمى إذا لم توفر كلمة المرور | لا
root_enc_password | str | كلمة مرور حساب الجذر | لا
users | { "username": "<USERNAME>", "enc_password": "<PASSWORD_HASH>", "sudo": false } | قائمة بيانات استيثاق المستخدمين العاديين، راجع الضبط كمرجع | ربما

ملاحظة: يعد users اختياريًا فقط إذا ضُبط root_enc_password. سيُفرض users خلاف ذلك وسيُضبط الحد الأدنى من المستخدمين المطلوبين بامتيازات sudo إلى 1.

المشكلات المعروفة

بعض المشكلات خارج نطاق مشروع archinstall <https://github.com/archlinux/archinstall/>، والمشكلات التي نعرفها مدرجة أدناه.

  بانتظار مزامنة الوقت #2144 <https://github.com/archlinux/archinstall/issues/2144>

السبب الرئيس المعتاد لهذا هو طوبولوجيا الشبكة. وبشكل أكثر تحديدًا، timedatectl show <https://github.com/archlinux/archinstall/blob/e6344f93f7e476d05bbcd642f2ed91fdde545870/archinstall/lib/installer.py#L136> لا يمكنه إجراء مزامنة وقت صحيحة مقابل الخواديم المبدئية.

قد تنجح إعادة تشغيل systemd-timesyncd.service ولكن في أغلب الأحيان تحتاج إلى اضبط /etc/systemd/timesyncd.conf ليتوافق مع تصميم شبكتك.

ملاحظة: إذا كنت تعرف أن الوقت صحيح على الحاسوب، يمكنك تشغيل archinstall --skip-ntp لتجاهل مزامنة الوقت.

  بانتظار اكتمال مزامنة حلقة مفاتيح آرش لينكس (archlinux-keyring-wkd-sync). #2679 <https://github.com/archlinux/archinstall/issues/2679>

قد تعادق خدمة archlinux-keyring-wkd-sync.service أو المؤقت archlinux-keyring-wkd-sync.timer "إلى أجل غير مسمى" أحيانًا. يرجع هذا عادةً إلى عدم القدرة على الوصول إلى خواديم المفاتيح، أو اتصال بطيء تجاه خواديم المفاتيح.

يمكن تشغيل السماك /usr/bin/archlinux-keyring-wkd-sync يدويًا، للتحقق مما إذا كان ينفذ ببطء أم لا.

إذا لم يظهر systemctl show --property=ActiveEnterTimestamp --no-pager archlinux-keyring-wkd-sync.timer أي شيء، فهذا يعني أن المزامنة المدمجة لم تنتهِ أبدًا. وبالمثل، من المرجح أن يظهر systemctl show --no-pager -p SubState --value archlinux-keyring-wkd-sync.service الحالة dead، مما يعني أن الخدمة لم تكتمل أبدًا.

لإصلاح هذا، جرب الآتي:

    # killall gpg-agent
    # rm -rf /etc/pacman.d/gnupg
    # pacman-key --init
    # pacman-key --populate
    # pacman -Sy archlinux-keyring
    # systemctl restart archlinux-keyring-wkd-sync.timer

ملاحظة: إذا كنت تعرف أن ملف ISO هو الأحدث، وأن لديك مفاتيح GPG صالحة، جرب archinstall --skip-wkd لتجاهل انتظار المزامنة.

إذا تخطيت مزامنة WKD، فقد تنتهي بـ:

    > خطأ: archinstall: التوقيع من "Anton Hvornum (Torxed) <torxed@archlinux.org>" ذو ثقة مجهولة
    > :: الملف /var/cache/pacman/pkg/archinstall-1.2.3-4-x86_64.pkg.tar.xz تالف (حزمة غير صالحة أو تالفة (توقيع PGP)).
    > هل تريد حذفه؟ [Y/n]

  مشغل Nvidia المملوك مفقود #2002 <https://github.com/archlinux/archinstall/issues/2002>

في بعض الحالات، قد لا يحتوي مشغل nvidia على جميع الحزم اللازمة مثبتة. يرجع هذا إلى اختيار النواة و/أو إعدادات العتاد التي تتطلب حزمًا إضافية للعمل بشكل صحيح.

حل بديل شائع هو تثبيت الحزمة linux-headers <https://archlinux.org/packages/core/x86_64/linux-headers/> و nvidia-dkms <https://archlinux.org/packages/extra/x86_64/nvidia-dkms/>

  تعطل معالجات ARM و 32 بت وأنواع المعالجات الأخرى #1686 <https://github.com/archlinux/archinstall/issues/1686>، #2185 <https://github.com/archlinux/archinstall/issues/2185>

هذه مشكلة معروفة تشمل حالات كثيرة. رسميًا x86_64 <https://wiki.archlinux.org/title/Frequently_asked_questions#What_architectures_does_Arch_support?> هو المدعوم فقط من قبل آرش لينكس. لذا لم يُبذل سوى جهد قليل في دعم المنصات الأخرى.

من الناحية النظرية، يجب أن تعمل المعماريات الأخرى ولكن قد تظهر بعض الثغرات الصغيرة.

طلبات السحب (PRs) مرحب بها ولكن يرجى احترام التأخير في الدمج. ستُعطى الأولوية للإصلاحات أو المشكلات أو الميزات الأخرى للأسباب المذكورة أعلاه.

  حلقة المفاتيح قديمة #2213 <https://github.com/archlinux/archinstall/issues/2213>

تميل مشكلات المفاتيح المفقودة إلى كون حزمة archlinux-keyring <https://archlinux.org/packages/core/any/archlinux-keyring/> قديمة، عادةً نتيجة لملف ISO قديم. توجد محاولة من المنبع لإصلاح هذه المشكلة، وهي خدمة archlinux-keyring-wkd-sync.service <https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/blob/7e672dad10652a80d1cc575d75cdb46442cd7f96/wkd_sync/archlinux-keyring-wkd-sync.service.in>

تبدأ الخدمة فور الإقلاع تقريبًا، وإذا لم تُضبط الشبكة في الوقت المناسب — ستفشل الخدمة. وبالتالي قد يعمل تشغيل archinstall على حلقة مفاتيح قديمة على الرغم من وجود خدمة تحديث لهذا.

لا توجد حقًا طريقة للالتفاف بشكل موثوق بمرور الوقت على هذه المشكلة في archinstall. بدلاً من ذلك، يجب اعتبار الجهود المبذولة في خدمة المنبع هي الطريق إلى الأمام. و/أو عدم انتهاء صلاحية المفاتيح بين كمية معقولة من ملفات ISO.

ملاحظة: يمكن أن تحدث المشكلة في ملفات ISO الجديدة أيضًا حتى بعد أيام قليلة من الإصدار، حيث قد تنتهي صلاحية بعض المفاتيح مباشرة بعد أن تُثبت حلقة المفاتيح "بشكل دائم" في ملف ISO.

ملاحظة: مشكلة شائعة أخرى تتعلق بعدم ضبط الشبكة، وهي أن الوقت قد لا يكون مضبوطًا بشكل صحيح - مما يؤدي إلى عدم قدرة حلقة المفاتيح على التحديث. انظر بانتظار مزامنة الوقت #2144.

  حزم AUR

هذه أيضًا مشكلة عامة. مستودع AUR غير مدعوم <https://wiki.archlinux.org/title/Arch_User_Repository#Updating_packages>، وإلى أن يتغير ذلك لا يمكننا استخدام حزم AUR لحل طلبات الميزات في archinstall.

هذا يعني أن طلبات الميزات مثل دعم نظم الملفات مثل ZFS <https://aur.archlinux.org/packages/zfs-linux> لا يمكن إضافتها، ولا يمكن حل المشكلات باستخدام حزم AUR أيضًا.

ملاحظة: لكن من باب منح المجتمع خيارات، يدعم archinstall ملحقات بايثون <#archinstall-plugins>، مما يعني أنه يمكنك تشغيل archinstall --plugin <url> واستخدام ملحق AUR.

torxed/archinstall-aur <https://github.com/torxed/archinstall-aur> هو تنفيذ مرجعي للملحقات:

    # archinstall --plugin https://archlinux.life/aur-plugin

phisch/archinstall-aur <https://github.com/phisch/archinstall-aur> هو بديل آخر:

    # archinstall --plugin https://raw.githubusercontent.com/phisch/archinstall-aur/master/archinstall-aur.py

تحذير: سيسمح هذا بالاستخدام غير المدعوم لـ AUR أثناء التثبيت.

الإبلاغ عن المشكلات والعلل

يجب الإبلاغ عن المشكلات والعلل في <https://github.com/archlinux/archinstall/issues>.

يمكن الإبلاغ عن الأسئلة العامة والتحسينات والقضايا الأمنية هناك أيضًا. للمشكلات السريعة أو إذا كنت بحاجة للمساعدة، توجه إلى خادوم ديسكورد الذي يحتوي على قناة مساعدة.

  ملفات السجل

عند تقديم تذكرة مساعدة، يرجى تضمين /var/log/archinstall/install.log. يمكن العثور عليه في ملف ISO المباشر وأيضًا في نظام الملفات المثبت إذا وُضعت الحزم الأساسية.

تلميحة:
طريقة سهلة لإرسال السجلات هي curl -F 'file=@/var/log/archinstall/install.log' https://0x0.st.
توخَّ الحذر عند إرسال ملفات سجل أخرى، لكن archinstall يتعهد بالحفاظ على install.log آمنًا للنشر العلني!

توجد ملفات سجل إضافية تحت /var/log/archinstall/ يمكن أن تكون مفيدة:

•   /var/log/archinstall/user_configuration.json - يخزن معظم الإجابات الموجهة في المثبت

•   /var/log/archinstall/user_credentials.json - يخزن أي أسماء مستخدمين أو كلمات مرور، ويمكن تمريره إلى --creds

•   /var/log/archinstall/user_disk_layouts.json - يخزن الأقراص المختارة وتخطيطاتها

•   /var/log/archinstall/install.log - ملف سجل بالخطوات التي اتخذها archinstall

•   /var/log/archinstall/cmd_history.txt - تاريخ كامل للأوامر، أمرًا بأمر بالترتيب

•   /var/log/archinstall/cmd_output.txt - مخرج خام من جميع الأوامر التي نفذها archinstall

    تحذير: نحاول فقط ضمان خلو /var/log/archinstall/install.log من المعلومات الحساسة. أي ملف سجل آخر يجب لصقه بـ منتهى العناية!

ديسكورد

توجد قناة ديسكورد يتردد عليها بعض المساهمين <https://github.com/archlinux/archinstall/graphs/contributors>.

للانضمام إلى الخادوم، توجه إلى <https://discord.gg/aDeMffrxNg> وانضم. لا توجد قواعد كثيرة بخلاف التفكير السليم ومعاملة الآخرين باحترام. الدردشة العامة مخصصة للأشياء الخارجة عن الموضوع أيضًا.

يوجد دور @Party Animals إذا كنت تريد إشعارات بالإصدارات الجديدة التي تُنشر في قناة #Release Party. الشيء الآخر هو أن دور @Contributors يمكن تفعيله من قبل المساهمين بكتابة !verify واتباع عملية الاستيثاق.

تفضل بالانضمام، نأمل أن نراك هناك! : )

مكتبة بايثون

يُشحن Archinstall على PyPi <https://pypi.org/> كـ archinstall <pypi.org/project/archinstall/>. ولكن يمكن تثبيت المكتبة يدويًا أيضًا.

تحذير: هذه الخطوات ليست مطلوبة إذا كنت تريد استخدام archinstall على ملف ISO الرسمي لآرش لينكس.

  التثبيت باستخدام pacman

يوجد Archinstall في المستودعات الرسمية <https://wiki.archlinux.org/index.php/Official_repositories>. وسيُثبت أيضًا archinstall كمكتبة بايثون.

لتثبيت كل من المكتبة وسماك archinstall:

    pacman -S archinstall

بدلاً من ذلك، يمكنك تثبيت المكتبة فقط وليس الملف التنفيذي المساعد باستخدام حزمة python-archinstall.

  التثبيت من PyPI

يطبق المفهوم الأساسي لـ PyPI باستخدام pip.

    pip install archinstall

  التثبيت باستخدام الكود المصدري

يمكنك أيضًا التثبيت باستخدام الكود المصدري. من أجل التبسيط سنستخدم git clone في هذا المثال.

    git clone https://github.com/archlinux/archinstall

يمكنك إما نقل المجلد إلى مشروعك والقيام ببساطة بـ

    import archinstall

أو يمكنك استخدام PyPa's build <https://github.com/pypa/build> و installer <https://github.com/pypa/installer> لتثبيته في مسار وحدة بايثون.

    $ cd archinstall
    $ python -m build .
    $ python -m installer dist/*.whl

وحدة بايثون

يدعم Archinstall التشغيل في وضع الوحدة <https://docs.python.org/3/library/__main__.html>. تقتصر طريقة استدعاء المكتبة في وضع الوحدة على تنفيذ السكربتات الموجودة تحت مجلد scripts <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>.

لذلك من المهم وضع أي سكربت أو تشكيلة تود استدعاءها في مجلد الأمثلة قبل البناء والتثبيت.

  المتطلبات المسبقة

سنفترض أنك اتبعت طريقة التثبيت باستخدام الكود المصدري <#installing-python-manual>. قبل تثبيت المكتبة فعليًا، ستحتاج إلى وضع سكربتات التثبيت المخصصة الخاصة بك تحت scripts <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts> كملف بايثون.

المزيد حول كيفية إنشاء هذه في القسم التالي.

تحذير: هذا عرضة للتغيير في المستقبل لأن هذه الطريقة جامدة قليلاً حاليًا. سيصبح مسار السكربت معطىً (parameter). لكن في الوقت الحالي، هذا هو التصميم المعتمد.

  إنشاء سكربت

لننشئ تثبيت test_installer كمثال. هذا بافتراض أن المجلد ./archinstall هو نسخة git-clone من المستودع الرئيس. نبدأ بإنشاء "scripts <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>/test_installer.py". مكان الوضع هنا مهم لاحقًا.

يمكن استدعاء هذا السكربت الآن بالفعل باستخدام python -m archinstall --script test_installer بعد تثبيت المكتبة نفسها بنجاح. لكن السكربت لن يفعل الكثير. لذا سنقوم بشيء بسيط مثل سرد جميع الأقراص الصلبة كمثال.

للقيام بذلك، سنبدأ باستيراد archinstall في "scripts <https://github.com/archlinux/archinstall/tree/master/archinstall/scripts>/test_installer.py" واستدعاء وظيفة داخل archinstall.

    from archinstall.lib.disk.device_handler import device_handler
    from pprint import pprint
    pprint(device_handler.devices)

الآن، تفضل بالرجوع إلى طريقة التثبيت باستخدام الكود المصدري <#installing-python-manual>. بعد تشغيل python -m archinstall test_installer يجب أن يطبع شيئًا يشبه:

    [
        BDevice(
            disk=<parted.disk.Disk object at 0x7fbe17156050>,
            device_info=_DeviceInfo(
                model='PC801 NVMe SK hynix 512GB',
                path=PosixPath('/dev/nvme0n1'),
                type='nvme',
                total_size=Size(value=512110190592, unit=<Unit.B: 1>,
                sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
                free_space_regions=[
                    <archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4250>,
                    <archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4c50>,
                    <archinstall.lib.disk.device.DeviceGeometry object at 0x7fbe166c4a10>],
                sector_size=SectorSize(value=512, unit=<Unit.B: 1>),
                read_only=False,
                dirty=False
            ),
            partition_infos=[
                _PartitionInfo(
                    partition=<parted.partition.Partition object at 0x7fbe166c4a90>,
                    name='primary',
                    type=<PartitionType.PRIMARY: 'primary'>,
                    fs_type=<FilesystemType.FAT32: 'fat32'>,
                    path='/dev/nvme0n1p1',
                    start=Size(value=2048, unit=<Unit.sectors: 'sectors'>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
                    length=Size(value=535822336, unit=<Unit.B: 1>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
                    flags=[
                        <PartitionFlag.BOOT: flag_id=1, alias=None>,
                        <PartitionFlag.ESP: flag_id=18, alias=None>
                    ],
                    partn=1,
                    partuuid='a26be943-c193-41f4-9930-9341cf5f6b19',
                    uuid='6EE9-2C00',
                    disk=<parted.disk.Disk object at 0x7fbe17156050>,
                    mountpoints=[
                        PosixPath('/boot')
                    ],
                    btrfs_subvol_infos=[]
                ),
                _PartitionInfo(...)
            ]
        )
    ]

هذا يعني أن السكربت الخاص بك في المكان الصحيح، وأن archinstall يعمل كما هو منشود.

ملاحظة: معظم الاستدعاءات، بما في ذلك الاستدعاء أعلاه، تتطلب صلاحيات root <https://en.wikipedia.org/wiki/Superuser>.

ملحقات بايثون

يدعم archinstall الملحقات عبر طريقتين.

الطريقة الأولى هي مباشرة عبر معطى --plugin عند التشغيل كأداة سطر أوامر. سيؤدي هذا إلى تحميل ملحق معين محليًا أو عن بُعد عبر مسار.

الطريقة الثانية هي عبر ميزة اكتشاف الملحقات المدمجة في بايثون <https://packaging.python.org/en/latest/specifications/entry-points/> باستخدام نقاط الإدخال <https://docs.python.org/3/library/importlib.metadata.html#entry-points> المصنفة كـ archinstall.plugin.

  معطى --plugin

يمتاز هذا المعطى بكونه يُخزن في حالة --conf، مما يعني عند إعادة تشغيل التثبيت — سيُحمل الملحق آليًا. العيب هو أنه يتطلب معرفة مسار أولي وكتابته وقد يكون مرهقًا.

  اكتشاف الملحقات

تسمح هذه الطريقة بتحميل عدة ملحقات مع عيب ضرورة تثبيتها مسبقًا على النظام الذي يشغل archinstall. يستهدف هذا بشكل رئيس أولئك الذين يبنون صور ISO الخاصة بهم ويحزمون إعدادات معينة لاحتياجاتهم.

  ما المدعوم؟

التوثيق لهذا شحيح حاليًا. وإلى أن يُحل ذلك، فإن أفضل طريقة للعثور على الميزات المدعومة هي البحث في الكود المصدري عن plugin.on_ <https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code> لأن هذا سيعطي مؤشرًا واضحًا على الاستدعاءات التي تتم للملحقات.

  كيف يعمل؟

تستخدم ملحقات archinstall نهجًا قائمًا على الاكتشاف حيث يتم الاستعلام في الملحقات عن وظائف معينة. كمثال، إذا كان للملحق الوظيفة التالية:

    def on_pacstrap(*packages):
        ...

الوظيفة archinstall.Pacman().strap(["some packages"]) مبرمجة بشكل ثابت للمرور على الملحقات والبحث عن on_pacstrap في الملحق. إذا كانت الوظيفة موجودة، فإن .strap() ستستدعي وظيفة الملحق وتستبدل قائمة الحزم الأولية بالنتيجة من الملحق.

أفضل طريقة لتوثيق هذه الاستدعاءات غير محددة حاليًا، حيث يصعب توثيق هذا السلوك ديناميكيًا.

  هل تكتب ملحقك الخاص؟

أبسط طريقة حاليًا هي النظر في تنفيذ مرجعي أو المجتمع. اثنان من هذه هما:

•   torxed/archinstall-aur <https://github.com/torxed/archinstall-aur>

•   phisch/archinstall-aur <https://github.com/phisch/archinstall-aur>

    وابحث عن plugin.on_ <https://github.com/search?q=repo%3Aarchlinux%2Farchinstall+%22plugin.on_%22&type=code> في قاعدة الكود للعثور على ما سيبحث عنه archinstall. نرحب بطلبات السحب (PRs) لتوسيع دعم هذا.

ARCHINSTALL.INSTALLER

المثبت هو الفئة الرئيسة للوصول إلى نسخة تثبيت. يمكنك النظر إلى هذه الفئة على أنها عملية التثبيت التي قمت بها أو ستقوم بها.

أي شيء متعلق بـ داخل التثبيت، سيوجد في هذه الفئة.

المؤلف
Anton Hvornum

حقوق النسخ
2022، Anton Hvornum

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.