AR(1)

الاسم
ar - إنشاء، تعديل، واستخراج من الأرشيفات

موجز
ar [-X32_64] [-]p[mod] [--plugin name] [--target bfdname] [--output dirname] [--record-libdeps libdeps] [--thin] [relpos] [count] archive [member...]

الوصف
يقوم برنامج GNU ar بإنشاء وتعديل واستخراج من الأرشيفات. archive هو ملف واحد يحتوي على مجموعة من الملفات الأخرى في هيكل يجعل من الممكن استرجاع الملفات الفردية الأصلية (تسمى members للأرشيف).

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

يمكن لـ GNU ar صيانة أرشيفات لأعضائها أسماء بأي طول؛ ومع ذلك، اعتمادًا على كيفية تكوين ar على نظامك، قد يُفرض حد على طول اسم العضو للتوافق مع صيغ الأرشيف التي تُصان بأدوات أخرى. إذا كان موجودًا، فغالبًا ما يكون الحد 15 حرفًا (نموذجي للصيغ المتعلقة بـ a.out) أو 16 حرفًا (نموذجي للصيغ المتعلقة بـ coff).

ar يُعتبر أداة ثنائية لأن الأرشيفات من هذا النوع تُستخدم غالبًا كـ libraries تحتوي على إجراءات فرعية شائعة الاستخدام. نظرًا لأن المكتبات غالبًا ما تعتمد على مكتبات أخرى، يمكن لـ ar أيضًا تسجيل تبعيات مكتبة عند تحديد الخيار --record-libdeps.

ar ينشئ فهرسًا للرموز المعرفة في وحدات الكائن القابلة لإعادة التموضع في الأرشيف عند تحديد المُعدِّل s. بمجرد إنشائه، يُحدَّث هذا الفهرس في الأرشيف كلما أجرى ar تغييرًا على محتوياته (باستثناء عملية التحديث q). الأرشيف الذي يحتوي على مثل هذا الفهرس يُسرِّع الربط بالمكتبة، ويسمح للإجراءات في المكتبة باستدعاء بعضها البعض بغض النظر عن موضعها في الأرشيف.

يمكنك استخدام nm -s أو nm --print-armap لسرد جدول الفهرس هذا. إذا كان الأرشيف يفتقر إلى الجدول، يمكن استخدام شكل آخر من ar يُسمى ranlib لإضافة الجدول فقط.

يمكن لـ GNU ar اختياريًا إنشاء أرشيف thin، والذي يحتوي على فهرس رموز ومراجع للنسخ الأصلية من ملفات الأعضاء في الأرشيف. هذا مفيد لبناء مكتبات للاستخدام داخل شجرة بناء محلية، حيث يُتوقع أن تظل الكائنات القابلة لإعادة التموضع متاحة، ونسخ محتويات كل كائن سيُضيع الوقت والمساحة فقط.

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

الأرشيفات الرقيقة تكون أيضًا flattened، بحيث أن إضافة أرشيف رقيق إلى أرشيف رقيق آخر لا يُداخله، كما يحدث مع الأرشيف العادي. بدلاً من ذلك، تُضاف عناصر الأرشيف الأول بشكل فردي إلى الأرشيف الثاني.

تُخزَّن المسارات إلى عناصر الأرشيف بشكل نسبي بالنسبة للأرشيف نفسه.

صُمم GNU ar ليكون متوافقًا مع مرفقين مختلفين. يمكنك التحكم في نشاطه باستخدام خيارات سطر الأوامر، مثل الأنواع المختلفة من ar على أنظمة Unix؛ أو، إذا حددت خيار سطر الأوامر الفردي -M، يمكنك التحكم فيه باستخدام سكريبت يُقدم عبر الإدخال القياسي، مثل برنامج "أمين المكتبة" MRI.

الخيارات
يسمح لك GNU ar بخلط رمز العملية p وأعلام المُعدِّل mod بأي ترتيب، ضمن وسيطة سطر الأوامر الأولى.

إذا أردت، يمكنك بدء وسيطة سطر الأوامر الأولى بشرطة.

يحدد الحرف الرئيسي p العملية التي سيتم تنفيذها؛ قد يكون أيًا مما يلي، ولكن يجب تحديد واحد فقط منها:

d   حذف الوحدات من الأرشيف. حدد أسماء الوحدات المراد حذفها كـ member...؛ يبقى الأرشيف دون تغيير إذا لم تحدد أي ملفات للحذف.

    إذا حددت المُعدِّل v، يسرد ar كل وحدة عند حذفها.

m   استخدم هذه العملية لـ نقل الأعضاء في أرشيف.

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

    إذا لم تُستخدم أي معدّلات مع "m", فإن أي أعضاء تسميها في وسائط member تُنقل إلى نهاية الأرشيف؛ يمكنك استخدام المعدّلات a أو b أو i لنقلها إلى مكان محدد بدلاً من ذلك.

p   اطبع الأعضاء المحددين من الأرشيف، إلى ملف الإخراج القياسي. إذا تم تحديد المعدّل v، اعرض اسم العضو قبل نسخ محتوياته إلى الإخراج القياسي.

    إذا لم تحدد أي وسائط member، تُطبع جميع الملفات في الأرشيف.

q   إلحاق سريع؛ تاريخيًا، أضف الملفات member... إلى نهاية archive، دون التحقق من الاستبدال.

    المعدّلات a و b و i لا تؤثر على هذه العملية؛ الأعضاء الجدد يُوضعون دائمًا في نهاية الأرشيف.

    المعدّل v يجعل ar يسرد كل ملف عند إلحاقه.

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

    ملاحظة - GNU ar يعامل الأمر qs كمرادف لـ r - استبدال الملفات الموجودة بالفعل في الأرشيف وإلحاق ملفات جديدة في النهاية.

r   أدخل الملفات member... في archive (مع استبدال). تختلف هذه العملية عن q في أن أي أعضاء موجودين سابقًا يُحذفون إذا تطابقت أسماؤهم مع تلك التي تُضاف.

    إذا كان أحد الملفات المذكورة في member... غير موجود، يعرض ar رسالة خطأ، ويترك أي أعضاء موجودين في الأرشيف يطابقون ذلك الاسم دون تغيير.

    بشكل مبدئي، يُضاف الأعضاء الجدد في نهاية الملف؛ ولكن يمكنك استخدام أحد المعدّلات a أو b أو i لطلب وضع نسبة إلى عضو موجود.

    المعدّل v المستخدم مع هذه العملية يُنتج سطرًا من المخرجات لكل ملف مُدرَج، مع أحد الحرفين a أو r للإشارة إلى ما إذا كان الملف قد أُلحق (لم يُحذف عضو قديم) أو استُبدل.

s   أضف فهرسًا إلى الأرشيف، أو حدّثه إذا كان موجودًا بالفعل. لاحظ أن هذا الأمر استثناء للقاعدة التي تنص على أنه يمكن أن يكون هناك حرف أمر واحد فقط، حيث يمكن استخدامه إما كأمر أو كمعدّل. في كلتا الحالتين يفعل الشيء نفسه.

t   اعرض جدولاً يسرد محتويات archive، أو تلك الخاصة بالملفات المدرجة في member... الموجودة في الأرشيف. عادةً ما يُعرض اسم العضو فقط، ولكن إذا تم تحديد المعدّل O، فسيُعرض الإزاحة المقابلة للعضو أيضًا. أخيرًا، لرؤية الأوضاع (الأذونات) والطابع الزمني والمالك والمجموعة والحجم، يجب تضمين المعدّل v.

    إذا لم تحدد member، تُسرد جميع الملفات في الأرشيف.

    إذا كان هناك أكثر من ملف بنفس الاسم (مثلاً fie) في أرشيف (مثلاً b.a)، فإن ar t b.a fie يسرد فقط المثيل الأول؛ لرؤيتها جميعًا، يجب طلب قائمة كاملة---في مثالنا، ar t b.a.

x   استخرج الأعضاء (المسماة member) من الأرشيف. يمكنك استخدام المعدّل v مع هذه العملية، لطلب أن يسرد ar كل اسم عند استخراجه.

    إذا لم تحدد member، تُستخرج جميع الملفات في الأرشيف.

    لا يمكن استخراج الملفات من أرشيف رقيق، وهناك قيود على الاستخراج من الأرشيفات المنشأة بـ P: يجب ألا تكون المسارات مطلقة، ولا يجوز أن تحتوي على ".."، ويجب أن توجد أي أدلة فرعية في المسارات. إذا كان من المرغوب تجنب هذه القيود، فاستخدم الخيار --output لتحديد دليل إخراج.

عدد من المُعدّلات (mod) قد تتبع الحرف الرئيسي p مباشرة، لتحديد تنويعات في سلوك العملية:

a   أضف ملفات جديدة بعد عضو موجود في الأرشيف. إذا استخدمت المعدّل a، يجب أن يكون اسم عضو أرشيف موجود حاضرًا كوسيطة relpos، قبل تحديد archive.

b   أضف ملفات جديدة قبل عضو موجود في الأرشيف. إذا استخدمت المعدّل b، يجب أن يكون اسم عضو أرشيف موجود حاضرًا كوسيطة relpos، قبل تحديد archive. (نفس i).

c   أنشئ الأرشيف. يُنشأ archive المحدد دائمًا إذا لم يكن موجودًا، عند طلب تحديث. ولكن يُصدر تحذير ما لم تحدد مسبقًا أنك تتوقع إنشاءه، باستخدام هذا المعدّل.

D   اعمل في وضع حتمي. عند إضافة الملفات وفهرس الأرشيف، استخدم صفرًا لـ UIDs وGIDs والطوابع الزمنية، واستخدم أوضاع ملفات متسقة لجميع الملفات. عند استخدام هذا الخيار، إذا استُخدم ar مع خيارات متطابقة وملفات إدخال متطابقة، ستُنشئ عمليات تشغيل متعددة ملفات إخراج متطابقة بغض النظر عن مالكي ملفات الإدخال أو مجموعاتهم أو أوضاع ملفاتهم أو أوقات تعديلهم.

    إذا تم تكوين binutils باستخدام --enable-deterministic-archives، فإن هذا الوضع يكون نشطًا بشكل مبدئي. يمكن تعطيله باستخدام المعدّل U، أدناه.

f   اقتطاع الأسماء في الأرشيف. يسمح ar غنو عادةً بأسماء ملفات بأي طول. يؤدي هذا إلى إنشاء أرشيفات غير متوافقة مع برنامج ar الأصلي على بعض الأنظمة. إذا كان هذا مصدر قلق، يمكن استخدام المُعدِّل f لاقتطاع أسماء الملفات عند وضعها في الأرشيف.

i   إدراج ملفات جديدة قبل عضو موجود في الأرشيف. إذا استخدمت المُعدِّل i، يجب أن يكون اسم عضو موجود في الأرشيف موجودًا كوسيط relpos، قبل مواصفة archive. (نفس b).

l   تحديد تبعيات هذه المكتبة. يجب أن تتبع التبعيات حرف الخيار هذا فورًا، ويجب أن تستخدم نفس بناء جملة سطر أوامر الرابط، ويجب تحديدها ضمن وسيط واحد. أي، إذا كانت هناك حاجة لعناصر متعددة، يجب وضعها بين علامتي اقتباس لتشكيل وسيط سطر أوامر واحد. على سبيل المثال l "-L/usr/local/lib -lmydep1 -lmydep2"

N   استخدام وسيط count. يُستخدم هذا إذا كانت هناك إدخالات متعددة في الأرشيف بنفس الاسم. استخراج أو حذف المثيل count للاسم المُعطى من الأرشيف.

o   الحفاظ على التواريخ الأصلية للأعضاء عند استخراجهم. إذا لم تحدد هذا المُعدِّل، تُختم الملفات المستخرجة من الأرشيف بوقت الاستخراج.

O   عرض إزاحات الأعضاء داخل الأرشيف. يُستخدم مع الخيار t.

P   استخدام اسم المسار الكامل عند مطابقة أو تخزين الأسماء في الأرشيف. الأرشيفات المُنشأة بأسماء مسار كامل غير متوافقة مع POSIX، وبالتالي قد لا تعمل مع أدوات غير أدوات غنو الحديثة. تعديل هذه الأرشيفات باستخدام ar غنو دون استخدام P سيزيل أسماء المسار الكامل ما لم يكن الأرشيف أرشيفًا رقيقًا. لاحظ أن P قد يكون مفيدًا عند إضافة ملفات إلى أرشيف رقيق لأن r دون P يتجاهل المسار عند اختيار العنصر المراد استبداله. وبالتالي

            ar rcST archive.a subdir/file1 subdir/file2 file1

    سينتج عن ذلك استبدال أول "subdir/file1" بـ "file1" من الدليل الحالي. إضافة P ستمنع هذا الاستبدال.

s   كتابة فهرس ملف كائن في الأرشيف، أو تحديث فهرس موجود، حتى لو لم يُجرَ أي تغيير آخر على الأرشيف. يمكنك استخدام علامة المُعدِّل هذه إما مع أي عملية، أو بمفردها. تشغيل ar s على أرشيف يعادل تشغيل ranlib عليه.

S   عدم إنشاء جدول رموز للأرشيف. يمكن أن يُسرع هذا بناء مكتبة كبيرة في عدة خطوات. لا يمكن استخدام الأرشيف الناتج مع الرابط. لبناء جدول رموز، يجب حذف المُعدِّل S في آخر تنفيذ لـ ar، أو يجب تشغيل ranlib على الأرشيف.

T   اسم مستعار مهمَل لـ --thin. لا يُوصى باستخدام T لأنه في العديد من تطبيقات ar يكون لـ T معنى مختلف، كما هو محدد بواسطة واجهة نظام X/Open.

u   عادةً، يُدرج ar r... جميع الملفات المدرجة في الأرشيف. إذا أردت إدراج فقط تلك الملفات التي تدرجها والتي هي أحدث من الأعضاء الموجودين بنفس الأسماء، استخدم هذا المُعدِّل. المُعدِّل u مسموح به فقط للعملية r (استبدال). على وجه الخصوص، التركيبة qu غير مسموح بها، لأن التحقق من الطوابع الزمنية سيفقد أي ميزة سرعة من العملية q.

    ملاحظة - إذا تم إنشاء أرشيف بطريقة حتمية، مثلاً عبر استخدام المُعدِّل D، فسيحدث الاستبدال دائمًا وسيكون المُعدِّل u غير فعال.

U   عدم العمل في وضع حتمي. هذا هو عكس المُعدِّل D أعلاه: الملفات المضافة وفهرس الأرشيف سيحصلون على قيم UID و GID والطابع الزمني ووضع الملف الفعلية.

    هذا هو المبدئي ما لم يتم ضبط binutils بـ --enable-deterministic-archives.

v   يطلب هذا المُعدِّل النسخة المفصلة من العملية. تعرض العديد من العمليات معلومات إضافية، مثل أسماء الملفات التي تمت معالجتها، عند إلحاق المُعدِّل v.

V   يُظهر هذا المُعدِّل رقم إصدار ar.

يدعم برنامج ar أيضًا بعض خيارات سطر الأوامر التي ليست معدِّلات ولا إجراءات، ولكنها تغير سلوكه بطرق محددة:

--help
    عرض قائمة خيارات سطر الأوامر التي يدعمها ar ثم الخروج.

--version
    عرض معلومات إصدار ar ثم الخروج.

-X32_64
    يتجاهل ar خيارًا أوليًا مكتوبًا -X32_64، للتوافق مع AIX. السلوك الناتج عن هذا الخيار هو المبدئي لـ ar غنو. لا يدعم ar أيًا من خيارات -X الأخرى؛ على وجه الخصوص، لا يدعم -X32 وهو المبدئي لـ ar في AIX.

--plugin اسم
    يتسبب مفتاح سطر الأوامر الاختياري --plugin name في تحميل ar للإضافة المسماة name التي تضيف دعمًا لتنسيقات ملفات أكثر، بما في ذلك ملفات الكائنات مع معلومات تحسين وقت الربط.

    هذا الخيار متاح فقط إذا تم بناء سلسلة الأدوات مع تمكين دعم الإضافات.

    إذا لم يُقدم --plugin، ولكن دعم الإضافة مُمكّن، فإن ar يتكرر عبر الملفات في ${libdir}/bfd-plugins بترتيب أبجدي ويُستخدم أول إضافة تدّعي الكائن المعني.

    يُرجى ملاحظة أن دليل بحث الإضافة هذا ليس هو المستخدم بواسطة خيار ld -plugin. لجعل ar يستخدم إضافة الرابط، يجب نسخها إلى دليل ${libdir}/bfd-plugins. لترجمات GCC، تُسمى إضافة الرابط liblto_plugin.so.0.0.0. لترجمات Clang، تُسمى LLVMgold.so. إضافة GCC متوافقة دائمًا مع الإصدارات السابقة، لذا يكفي نسخ الأحدث فقط.

--target target
    المفتاح الاختياري لسطر الأوامر --target bfdname يُحدد أن أعضاء الأرشيف بصيغة كود كائن مختلفة عن الصيغة المبدئية لنظامك. انظر

--output dirname
    خيار --output يُستخدم لتحديد مسار دليل يُستخرج إليه أعضاء الأرشيف. إذا لم يُحدد هذا الخيار، يُستخدم الدليل الحالي.

    ملاحظة - على الرغم من أن وجود هذا الخيار يوحي بعملية استخراج x، إلا أن ذلك الخيار يجب أن يُضمن في سطر الأوامر.

--record-libdeps libdeps
    خيار --record-libdeps مطابق لمُعدّل l، لكنه يُعالج بالصيغة الطويلة.

--thin
    اجعل archive المحدد أرشيفًا رفيعًا. إذا كان موجودًا بالفعل وهو أرشيف عادي، يجب أن يكون الأعضاء الحاليون موجودين في نفس دليل archive.

@الملف
    اقرأ خيارات سطر الأوامر من file. تُدرج الخيارات المقروءة مكان خيار @file الأصلي. إذا كان file غير موجود، أو لا يمكن قراءته، فسيُعامل الخيار حرفيًا ولن يُزال.

    تُفصل الخيارات في file بمسافات فارغة. يمكن تضمين حرف مسافة فارغة في خيار ما عن طريق إحاطة الخيار بالكامل إما بعلامات اقتباس مفردة أو مزدوجة. يمكن تضمين أي حرف (بما في ذلك الشرطة المائلة العكسية) عن طريق سبق الحرف المراد تضمينه بشرطة مائلة عكسية. يمكن لـ file نفسه أن يحتوي على خيارات @file إضافية؛ وتُعالج أي خيارات من هذا القبيل بشكل متكرر (recursively).

انظر أيضًا
nm(1)، ranlib(1)، ومدخلات Info لـ binutils.

حقوق النسخ
حقوق الطبع والنشر (c) لعام 1991-2026 لمؤسسة البرمجيات الحرة، المحدودة.

يُمنح الإذن بنسخ وتوزيع و/أو تعديل هذا المستند بموجب شروط رخصة جنو للوثائق الحرة (GNU Free Documentation License)، الإصدار 1.3 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ مع عدم وجود أقسام ثابتة، وبدون نصوص غلاف أمامي، وبدون نصوص غلاف خلفي. نُسخة من الرخصة مضمنة في القسم المعنون "GNU Free Documentation License".

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

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

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