عن المشروع

Spack هو مدير حزم متعدد المنصات يقوم ببناء وتثبيت إصدارات وتكوينات متعددة من البرمجيات. وهو يعمل على Linux وmacOS وWindows والعديد من الحواسيب الفائقة. يتميز Spack بأنه غير مدمّر: تثبيت إصدار جديد من حزمة ما لا يؤدي إلى تعطيل عمليات التثبيت الموجودة، لذا يمكن أن تتعايش تكوينات متعددة للحزمة نفسها. يوفر Spack صيغة "spec" بسيطة تتيح للمستخدمين تحديد الإصدارات وخيارات التكوين. تُكتب ملفات الحزم بلغة Python الصرفة، وتتيح مواصفات spec لمؤلفي الحزم كتابة نص برمجي واحد لعمليات بناء متعددة ومختلفة للحزمة نفسها. باستخدام Spack، يمكنك بناء برمجياتك *بكل* الطرق التي تريدها. راجع [نظرة عامة على الميزات](https://spack.readthedocs.io/en/latest/features.html) للحصول على أمثلة وأبرز النقاط. ## التثبيت لتثبيت spack، تأكد أولاً من توفر Python وGit. ثم: ```bash git clone --depth=2 https://github.com/spack/spack.git ``` ```bash # For bash/zsh/sh . spack/share/spack/setup-env.sh # For tcsh/csh source spack/share/spack/setup-env.csh # For fish . spack/share/spack/setup-env.fish ``` ```bash # Now you're ready to install a package! spack install zlib-ng ``` ## الوثائق تتوفر [**الوثائق الكاملة**](https://spack.readthedocs.io/)، أو يمكنك تشغيل `spack help` أو `spack help --all`. للحصول على ورقة مرجعية سريعة حول صيغة Spack، شغّل `spack help --spec`. ## البرنامج التعليمي نحن نوفر [**برنامجاً تعليمياً عملياً**](https://spack-tutorial.readthedocs.io/). ويغطي الاستخدام من المستوى الأساسي إلى المتقدم، وإنشاء الحزم، وميزات المطورين، وعمليات النشر الكبيرة في الحوسبة عالية الأداء (HPC). يمكنك تنفيذ جميع التمارين على حاسوبك المحمول باستخدام حاوية Docker. لا تتردد في استخدام هذه المواد لتعليم المستخدمين في مؤسستك حول Spack. ## المجتمع Spack هو مشروع مفتوح المصدر. الأسئلة والمناقشات والمساهمات مرحّب بها. يمكن أن تكون المساهمات أي شيء من حزم جديدة إلى إصلاحات الأخطاء أو الوثائق أو حتى ميزات أساسية جديدة. الموارد: * **مساحة عمل Slack**: [spackpm.slack.com](https://spackpm.slack.com). للحصول على دعوة، قم بزيارة [slack.spack.io](https://slack.spack.io). * **مساحة Matrix**: [#spack-space:matrix.org](https://matrix.to/#/#spack-space:matrix.org): [مرتبطة بجسر](https://github.com/matrix-org/matrix-appservice-slack#matrix-appservice-slack) مع Slack. * [**مناقشات Github**](https://github.com/spack/spack/discussions): للأسئلة والأجوبة والمناقشات. لاحظ المناقشات المثبّتة للإعلانات. * **X**: [@spackpm](https://twitter.com/spackpm). تأكد من ذكرنا باستخدام `@mention`! * **القائمة البريدية**: [groups.google.com/d/forum/spack](https://groups.google.com/d/forum/spack): للإعلانات فقط. يرجى استخدام منصات أخرى للمناقشات. ## المساهمة المساهمة في Spack سهلة نسبياً. فقط أرسل لنا [طلب سحب](https://help.github.com/articles/using-pull-requests/). سيرغب معظم المساهمين في المساهمة في وصفات الحزم المجتمعية الخاصة بـ Spack. للقيام بذلك، يجب عليك زيارة **[مستودع spack-packages](https://github.com/spack/spack-packages)**. إذا كنت تريد المساهمة في Spack نفسه، يمكنك تقديم طلب سحب إلى [مستودع spack](https://github.com/spack/spack) (هذا المستودع). يجب أن يستوفي طلب السحب الخاص بك ما يلي: 1. أن يكون `develop` هو فرع الوجهة؛ 2. أن يجتاز اختبارات الوحدة الخاصة بـ Spack، واختبارات الوثائق، واختبارات بناء الحزم؛ 3. أن يتوافق مع [PEP 8](https://www.python.org/dev/peps/pep-0008/)؛ 4. أن يتم التوقيع على جميع الالتزامات باستخدام `git commit --signoff`. ويعني التوقيع أنك توافق على [شهادة أصل المطور](https://developercertificate.org). لاحظ أن هذا يختلف عن [توقيع الالتزامات](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits)، والذي يمكنك القيام به أيضاً، لكنه ليس مطلوباً. نحن نفرض هذه الإرشادات من خلال عملية التكامل المستمر (CI) لدينا. لتشغيل الاختبارات محلياً، وللحصول على نصائح مفيدة حول git، راجع [دليل المساهمة](https://spack.readthedocs.io/en/latest/contribution_guide.html). ## الإصدارات لعمليات النشر متعددة المستخدمين أو حالات الاستخدام الأخرى التي تحتاج إلى عمليات تثبيت برمجيات مستقرة جداً، نوصي باستخدام [الإصدارات المستقرة](https://github.com/spack/spack/releases) من Spack. لكل سلسلة إصدارات من Spack أيضاً فرع مقابل، على سبيل المثال يحتوي `releases/v0.14` على إصدارات `0.14.x` من Spack، ويحتوي `releases/v0.13` على إصدارات `0.13.x`. نحن ننقل إصلاحات الأخطاء المهمة إلى هذه الفروع لكننا لا نقدم إصدارات الحزم أو نجري تغييرات أخرى من شأنها تغيير طريقة تجسيد Spack للاعتماديات داخل فرع الإصدار. لذا، يمكنك أن تبني نشر Spack الخاص بك على فرع إصدار وتنفذ `git pull` للحصول على الإصلاحات، دون التغييرات الكثيرة في الحزم التي تأتي مع `develop`. يتوفر أحدث إصدار دائماً بوسم `releases/latest`. راجع [الوثائق حول الإصدارات](https://spack.readthedocs.io/en/latest/developer_guide.html#releases) لمزيد من التفاصيل. ## مدونة السلوك يرجى ملاحظة أن Spack لديه [**مدونة سلوك**](.github/CODE_OF_CONDUCT.md). من خلال المشاركة في مجتمع Spack، فإنك توافق على الالتزام بقواعده. ## المؤلفون نشكر كثيراً [المساهمين](https://github.com/spack/spack/graphs/contributors) في Spack. تم إنشاء Spack بواسطة Todd Gamblin، tgamblin@llnl.gov. ### الاستشهاد بـ Spack إذا كنت تشير إلى Spack في منشور، يرجى الاستشهاد بالورقة التالية: * Todd Gamblin, Matthew P. LeGendre, Michael R. Collette, Gregory L. Lee, Adam Moody, Bronis R. de Supinski, and W. Scott Futral. [**The Spack Package Manager: Bringing Order to HPC Software Chaos**](https://www.computer.org/csdl/proceedings/sc/2015/3723/00/2807623.pdf). In *Supercomputing 2015 (SC'15)*, Austin, Texas, November 15-20 2015. LLNL-CONF-669890. على GitHub، يمكنك نسخ هذا الاستشهاد بصيغة APA أو BibTeX عبر زر "Cite this repository". أو راجع التعليقات في `CITATION.cff` للحصول على BibTeX الخام. ## الترخيص يُوزَّع Spack بموجب شروط ترخيص MIT وترخيص Apache (الإصدار 2.0) معاً. يمكن للمستخدمين اختيار أي من الترخيصين، حسب تقديرهم. يجب تقديم جميع المساهمات الجديدة بموجب ترخيصي MIT وApache-2.0 معاً. راجع [LICENSE-MIT](https://github.com/spack/spack/blob/develop/LICENSE-MIT) و[LICENSE-APACHE](https://github.com/spack/spack/blob/develop/LICENSE-APACHE) و[COPYRIGHT](https://github.com/spack/spack/blob/develop/COPYRIGHT) و[NOTICE](https://github.com/spack/spack/blob/develop/NOTICE) للحصول على التفاصيل. SPDX-License-Identifier: (Apache-2.0 OR MIT) LLNL-CODE-811652