ARCHINSTALL(1) python-archinstall 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 0.0 3.5 { "username": "<USERNAME>", "enc_password": "<PASSWORD_HASH>", "sudo": false } 168u 168u قائمة بيانات استيثاق المستخدمين العاديين، راجع الضبط كمرجع ربما

ملاحظة:

يعد 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() ستستدعي وظيفة الملحق وتستبدل قائمة الحزم الأولية بالنتيجة من الملحق.

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

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

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

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

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

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

المؤلف

Anton Hvornum

حقوق النسخ

2022، Anton Hvornum

ترجمة

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

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

20 أبريل 2026