Tab
للسماح بالإكمال التلقائي لأسماء الملفات غير الحساسة لحالة الأحرف ، فهذه ليست مشكلة أيضًا. عادة ، يتم تنفيذ هذه الإعدادات في أحد ما يسمى "ملفات التعريف" ، نوع من
.bashrc
الموجودة في الدليل الرئيسي للمستخدم. إذا كان شخص ما يعمل على جهاز كمبيوتر واحد ، فلن يواجه أي مشاكل في الإعدادات. يساهم في الملف
.bashrc
، وفي ملفات أخرى مماثلة ، التغييرات اللازمة ، يخصص النظام لنفسه ، ويعمل في بيئة تتصرف بالطريقة التي يريدها. تنشأ المشاكل عندما يضطر شخص ما إلى استخدام أجهزة كمبيوتر متعددة. ربما نتحدث عن خادم ويب ، وجهاز كمبيوتر مكتبي ، وآلة تلعب دور جدار الحماية ، وبضع عشرات من Raspberry Pi. كيف تقوم بتكوين كل هذه الأنظمة لتكون هي نفسها؟ وكيف تحافظ على تحديث الإعدادات بعد أن تمت تهيئتها جميعًا بنفس الطريقة؟
عدة خيارات لمزامنة الإعدادات
في الواقع ، هناك عدة طرق لمزامنة الإعدادات على أنظمة Linux. نظرًا لأنه يتم تخزين هذه الإعدادات عادةً في نوع ما من الملفات ، يمكن استخدام أي آلية مزامنة تقريبًا لحل مشكلتنا. سيستغرق هذا بعض الوقت ، ولكن نتيجة لذلك يمكنك تحقيق ما تريد. لنفترض أنه يمكنك وضع جميع ملفات التكوين في دليل واحد ، ثم وضع روابط رمزية لهذه الملفات في الأماكن الصحيحة في دليلك الرئيسي. علاوة على ذلك ، يمكنك ، باستخدام
rsync
، مزامنة هذا المجلد بين أنظمة مختلفة.
إذا كنت معتادًا على Git ، فقد خمنت بالفعل بشأن خيار آخر لحل هذه المشكلة. هنا ، بالإضافة إلى القدرة على مزامنة الإعدادات ، ستتاح لك أيضًا الفرصة لمعرفة ما ومتى يتم تغييره في ملفات التكوين الخاصة بك. في الواقع ، أنا في مادة ذات طرق غير معتادة لاستخدام Git ، وقد تحدثت عنها ، وأظهرت مزامنة إعدادات النظام ، بناءً على Git. ومع ذلك ، اكتشفت مؤخرًا أن هناك نظامًا يسمى chezmoi ، وهو مكتوب بلغة Go ، ويستخدم أسلوبًا لمزامنة الإعدادات يختلف تمامًا عن نظامي.
ميزات Chezmoi
وفقًا للبيانات الواردة من مستودع المشروع ، فإنه
chezmoi
يوفر للمستخدم الخيارات التالية:
- وصف تعريفي للحالة المطلوبة لملفات الدليل الرئيسي.
- استخدام القوالب لإنشاء الملفات.
- يتم ضمان أمان العمل من خلال التكامل مع Bitwarden و LastPass ومع بعض البرامج للتخزين المحلي للمفاتيح.
- دعم معالجة التحديث الذري. هذا يحمي النظام من الوقوع في حالة "وسيطة".
- دعم لأنظمة تشغيل متعددة.
- يتم إبلاغ المستخدم بالإجراءات المخطط تنفيذها ، ويتم دعم وضع "التشغيل التجريبي".
- سرعة عالية في العمل ، والقدرة على اختيار أيهما يستخدم مع
chezmoi
نظام التحكم في الإصدار.
كل شيء يبدو ممتع جدا يتميز إجراء تثبيت الأداة المساعدة في أنظمة التشغيل المختلفة بخصائصه الخاصة ، ويمكن العثور على التعليمات المقابلة في مستودع المشروع.
باستخدام chezmoi
chezmoi
ليس من المستغرب أن يكرر الملف القابل للتنفيذ الذي يتيح الوصول إلى الإمكانات اسم المشروع. يدعم العديد من الأوامر ، من بينها أود أن أشير إلى ما يلي:
add
- إضافة ملف إلى قائمة الملفات التي يديرها النظام.edit
- تحرير الملف.diff
- معرفة التغييرات ، إن وجدت ، التي تنتظر إدراجها في نسخة العمل من الملف.apply
- إدراج التغييرات المعلقة الموافقة في نسخة العمل من الملف.
عند إضافة ملف جديد إلى النظام ، يتم وضع نسخة منه في الدليل
~/.local/share/chezmoi
. للتوافق مع أنظمة التحكم في الإصدار ،
chezmoi
يتجاهل الملفات الموجودة في هذا الدليل والتي يبدأ اسمها بنقطة. لذلك ، إذا أضفت ، على سبيل المثال ، ملف إلى النظام
.bashrc
، فستتم إعادة تسميته تلقائيًا إلى
dot_bashrc
.
إذا
chezmoi
اقتصرت الاحتمالات فقط على هذا ، فلن يكون هناك شيء رائع في هذه الأداة. الشيء الأكثر إثارة للاهتمام هنا هو مزامنة نسخ الملفات. لحل هذه المشكلة ،
chezmoi
يستخدم نظام التحكم في الإصدار الخارجي. ولكن ماذا يحدث إذا احتاجت بعض أجهزة الكمبيوتر التي تتم مزامنة إعداداتها إلى بعض الإعدادات الخاصة؟
دعم الإعدادات الخاصة
على سبيل المثال ، على كمبيوتر سطح المكتب الخاص بك ، تحتاج إلى استخدام موجه سطر أوامر مخصص. وعلى الخادم وجدار الحماية وعلى أجهزة كمبيوتر Raspberry Pi ، ستكون راضيًا عن الدعوة المعتادة. هذا يعني أنه
.bashrc
يجب أن تكون قيمة المعلمة الخاصة موجودة في كل جهاز كمبيوتر ، في الملف
PS1
.
يمكن القيام بذلك عن طريق إضافة الإدخالات المناسبة إلى قسم
data
الملف
chezmoi.yaml
. في الواقع ، يمكنك استخدام تنسيقات مختلفة هنا ، على وجه الخصوص -
JSON
و
TOML
. هذا الملف فريد لكل كمبيوتر. يسمح لك بإجراء تغييرات على ملفات القوالب. على سبيل المثال ،
chezmoi.yaml
قد يحتوي كمبيوتر سطح المكتب على إدخال حول
PS1String
، يصف الإعدادات المعقدة لموجه سطر الأوامر ، وفي نفس الملف لـ Raspberry Pi ، سيتم بالفعل ترتيب إدخال مشابه أسهل بكثير.
لإضافة ملف معين إلى النظام الذي سيتم استخدامه كقالب (على سبيل المثال ، ملف
.bashrc
) ، تحتاج إلى استخدام خيار
-T
الأمر
add
. سيكون لملف القالب المعتمد على
.bashrc
اسم
dot_bashrc.tmpl
. توفر آليات قوالب Go القياسية للمستخدم
chezmoi
مجموعة متنوعة من الخيارات. بالإضافة إلى ذلك ،
chezmoi
فإنه يسمح لك باستخدام المتغيرات التي ، على سبيل المثال ، تسمح لك بالعمل مع اسم الكمبيوتر واسم المستخدم ، مع معرفات نظام التشغيل والبنية.
بفضل القدرات المستخدمة في
chezmoi
لغة النموذج ، يتمتع المستخدم بحرية أكبر بكثير من مجرد استخدام المتغيرات. في القوالب ، على وجه الخصوص ، يمكنك استخدام الشروط. على سبيل المثال ، يمكن أن يبدو كالتالي:
# export EDITOR=vi # , {{- if eq .chezmoi.hostname "work-laptop" }} # ~/<code>.bashrc</code> work-laptop {{- end }}
سلامة
Chezmoi
يتعرف على الملفات الخاصة ويعالجها وفقًا لذلك. لذلك ، يكون الدليل خاصًا
chezmoi
، ويستخدم النظام بادئة
private_
عند تعيين أسماء لملفات خاصة (على سبيل المثال ، قد يبدو اسم مثل هذا الملف
private_dot_bashrc
).
من المفترض أنه سيتم استخدام بعض أنظمة التحكم في الإصدار لتنظيم مزامنة الملفات. بمعنى آخر ، عند إعداد جهاز كمبيوتر جديد أو تحديث إعدادات جهاز معين ، فإنك تقوم بمزامنة محتويات الدليل
chezmoi
مع نسخة من الإعدادات المخزنة في نظام التحكم في الإصدار. ثم يتم بعد ذلك إعداد كل ما يلزم تهيئته في ملف التكوين ويتم تطبيق التغييرات ، ربما من خلال فحص أولي لما سيتم تطبيقه بالضبط من التغييرات.
هذا يعني ، بالطبع ، أن الملفات المخزنة ستكون "خاصة" كما يسمح نظام التحكم في الإصدار. إذا قمت بنشر ملفات التكوين الخاصة بك على نظام عام ، فهذا يعني أنه لم يعد هناك أي سؤال حول "الخصوصية". تتمثل إحدى طرق حل هذه المشكلة في استخدام نظام القوالب ، وليس معالجة ملف التكوين باستخدام نظام التحكم في الإصدار. وبما أنه فريد لكل كمبيوتر ، فلا ينبغي بأي حال معالجته باستخدام نظام التحكم في الإصدار. هذا يعني ، من بين أمور أخرى ، أنه يجب تخزينها بشكل مختلف عن الملفات الأخرى.
افترض أن لديك إدخالًا مثل هذا في ملف التكوين الخاص بك:
hackaday: password: 0xdeadbeef
يجب أن تبقى كلمة المرور سرية. وفي الملفات العامة يمكن استخدام البناء التالي:
password = {{ .hackaday.password }}
عند العمل مع
chezmoi
، لا يزال بإمكانك استخدام ملفات التكوين المشفرة بـ
gpg
.
نظام التحكم في الإصدار
إذا تحدثنا عن أنظمة التحكم في الإصدار ،
chezmoi
فهناك أوامر لإرسال المواد إلى أنظمة التحكم في الإصدار المدعومة ، وبالتالي ، أوامر لتحميل البيانات. يتم استخدام الإعداد الافتراضي
git
، ولكن هناك خيارات أخرى ، مثل
hg
. يتم إجراء الإعدادات المقابلة في ملف التكوين.
هناك أيضًا أوامر تسمح لك ببساطة بالحصول على مجموعة كاملة من ملفات التكوين أو تصدير التكوين. يمكنك أن تقرأ عن هذه الأوامر في مستودع المشروع. بشكل افتراضي ، يتم تنفيذ جميع الأعمال في الدليل الرئيسي ، ولكن إذا لزم الأمر ، يمكنك تكوين البرنامج للعمل مع دليل هدف مختلف.
النتيجة
بشكل عام ، يمكن ملاحظة
chezmoi
أنه يبدو وكأنه مشروع مدروس جيدًا. لكنني لم أر أي شيء هنا من شأنه أن يجبرني على التبديل
chezmoi
من نظام مزامنة الإعدادات. إذا كنت قد تعثرت
chezmoi
عندما كنت أفكر للتو في كيفية حل المشكلة المعنية ، فمن المحتمل أن أستخدم هذا المشروع المحدد ، وليس إنشاء مشروع خاص بي. لا أجادل في أن نظام القوالب
chezmoi
جيد جدًا ، لكن نظامي يحقق تأثيرًا مشابهًا عن طريق اختيار ملفات مختلفة اعتمادًا على البيئة.
ملف إعدادات فريد
chezmoi
يصعب التعامل معها باستخدام نظام التحكم في الإصدار. نعم ، لا يميل المستخدمون عادةً إلى القيام بذلك. إذا كان المستودع المستخدم لتخزين الإعدادات خاصًا ، أو إذا لم يتم تضمين المعلومات الخاصة في ملفات التكوين ، فيمكنك وضع خيارات لملف الإعدادات في هذا النظام
chezmoi
(على سبيل المثال ، قد يكون هناك إصدار من هذا الملف لـ Raspberry Pi وللكمبيوتر العادي). بعد ذلك ، عند إعداد الكمبيوتر لأول مرة ، يمكنك إعادة تسمية الملف المناسب. ولكن من المرجح أن يتم نسخ ملف إعدادات النظام ببساطة. النهج هو أن ملف التكوين
chezmoi
لا يتم التعامل معها من خلال التحكم بالمصادر ، فهناك ميزة أنه إذا تم تكوينها بشكل صحيح ، يمكنك استخدام مستودع عام بأمان لتخزين البيانات.
ولتشغيل نظامي ، من المهم جدًا استخدام مستودع خاص - إذا كان الشخص الذي يستخدمه فقط لا يهتم بإدخال ملفات التكوين الخاصة به إلى المجال العام. ومع ذلك ، تتم معالجة جميع الملفات باستخدام نظام التحكم في الإصدار. يتيح لك النظام مواكبة جميع التغييرات دون الحاجة إلى استخدام القوالب ، والتي تستغرق وقتًا لإتقانها. تحتاج فقط إلى وضع الإعدادات في الملفات المناسبة. الميزة الوحيدة التي يمكنني إضافتها إلى نظامي ، مستوحاة من
chezmoi
، هذه هي القدرة على إضافة ملفات جديدة إليها والتي تتم مراقبتها. على الرغم من أن نظامي يسمح لك بمزامنة الإعدادات ، فأنت الآن بحاجة إلى إضافة الملفات إليه يدويًا. يتم نقل الملف إلى دليل خاص ، وبعد ذلك يتم إضافة إدخالات الملف إلى النظام ويتم إنشاء ارتباط رمزي.
لكن هذا ما يجيده Linux. هناك طرق عديدة لحل نفس المشكلة. إذا كنت لا تحب شيئًا واحدًا ، فيمكنك العثور على شيء آخر. وإذا لم يعجبك أي شيء ، يمكنك إنشاء شيء خاص بك دون صعوبة كبيرة. ومع ذلك ، فإن هذا يخلق بعض المشاكل عند استخدام Linux من قبل العديد من الأشخاص العاديين الذين لم يعتادوا على ذلك. إنهم لا يسعون للاختيار من بين العديد من الخيارات ، فهم يريدون حل عمل بسيط وواضح. وفي مجتمع Linux ، على العكس من ذلك ، من المعتاد أن تقارن كل شيء باستمرار بكل شيء وتتجادل بحماس حول أيهما أفضل -
emacs
إما
vi
C أو Python.
كيف تقوم بمزامنة الإعدادات عبر أجهزة Linux؟
