Emacs على جهاز iPad

مع استبدال جهاز iPad بجهاز MacBook ، كان آخر شيء فاتني هو Emacs ، والذي لا أحب اختراقه فحسب ، بل أحب أيضًا كيفية تحديث مدونتي واستئنافها! دعنا نقول فقط إنها أداة أساسية في حياتي أردت الوصول إليها ، وتمكنت من القيام بذلك.

إذن ، أولاً وقبل كل شيء ، لا يمكنك تشغيل Emacs مباشرةً على جهاز iPad كتطبيق ، ولكن يمكنك بالتأكيد الوصول إلى شيء آخر يقوم بتشغيله. في هذه الحالة ، خادم خاص افتراضي (VPS) عبر SSH ، كما قد يتم تكوينه على DigitalOcean. لدى مضيفي السحابة الكثير من المعلومات حول كيفية نشر VPS ، لذلك لن أكررها هنا. هذه التعليمات خاصة بجهاز Ubuntu 20.04.

أعتقد أن تطبيق Blink أكثر من ملائم كمحاكي طرفي (مع دعم ألوان 24 بت ، وهو أمر مهم!) مع وصول SSH وعدد من أدوات الدعم المفيدة (مثل ssh-agent).

لقد استخدمت إعدادات التطبيق (إما كتابة config أو الضغط على CMD- ،) لإنشاء زوج مفاتيح SSH جديد وإضافة VPS كمضيف باسم vps مع عنوان IPv6 الخاص به لاسم المضيف. قبل تسجيل الدخول ، أفتح علامة تبويب أولاً وأبدأ وكيل ssh ، ثم أفتح علامة تبويب ثانية وقمت بتشغيل ssh-add id_rsa (لا ، ليس المسار إلى المفتاح ، فقط اسم المفتاح الافتراضي ، الذي بالكاد يفهمه منفذ أدوات التطبيق) ، وأخيراً اتصل بالوكيل المُعاد توجيهه عبر ssh -A vps.

في إعدادات لوحة مفاتيح التطبيق ، قمت بتعيين "الخيار" لإرسال "Esc" (وهو "Alt" للأجهزة الطرفية و "Meta" لـ Emacs ، كما هو الحال في M من M-x). في إعدادات نظامي ، تم تكوين مفتاح "Caps Lock" على لوحة مفاتيح الجهاز ليعمل كـ "تحكم" ، ولكن بإمكان Blink أيضًا القيام بذلك في البرنامج. ثبّت الأساسيات

من هناك ، قمت أولاً بتثبيت بعض الأدوات المفيدة: git and stow لتهيئة ملفات dotfiles الخاصة بي أداة البحث ripgrep aspell للتدقيق الإملائي في Emacs مع Flyspell htop لأنه جميل ومفيد أن نرى ما يحدث sudo apt install git stow ripgrep aspell htop قم بتأمينه باستخدام SSHGuard

دائمًا ما يكون تثبيت SSHGuard مفيدًا جدًا للحد من محاولات الاتصال بخادم VPS مفتوح: sudo apt تثبيت sshguard sudo journalctl -u sshguard

بمجرد أن رأيت عدد محاولات تسجيل الدخول التي تم إجراؤها (ولكن فشلت جميعها لأنني لم يكن لدي سوى إعداد وصول مفتاح ، بدون كلمة مرور) ، أضفت جدار حماية قاعدة على DigitalOcean لرفض كل حركة المرور الواردة باستثناء المنفذ 22 (SSH) عبر IPv6 . يتيح لي ذلك الوصول إليه لأنني أعرف عنوان IPv6 الخاص به ، ولكن نظرًا لأن مساحة العنوان هذه كبيرة جدًا ، فلا يمكن العثور عليها حقًا عن طريق برامج الروبوت التي تم مسحها ضوئيًا. أضف ملف المبادلة

الآن ، قبل محاولة تجميع أي شيء من المصدر على VPS بذاكرة محدودة ، أود إعداد ملف مبادلة لتجنب أخطاء الذاكرة الغبية. أعتقد أنني اتبعت هذا الدليل على Linuxize. باختصار: sudo swap - إظهار sudo Fallocate -l 1G / swapfile sudo chmod 600 / swapfile sudo mkswap / swapfile سودو سوابون / ملف المبادلة sudo swap - إظهار sudo cp / etc / fstab /etc/fstab.bak echo '/ swapfile no swap swap 0 0' | sudo tee -a / etc / fstab بناء إيماكس من المصدر

حسنًا ، الآن للجزء الممتع: بناء Emacs 27 من المصدر ، للمحطة ، مع كل ما نحتاجه. أولاً نقوم باستنساخ فرع emacs-27 من مرآة GitHub:

git clone -b emacs-27 https://github.com/emacs-mirror/emacs.git اسطوانات emacs

نقوم الآن بتثبيت عدد لا يحصى من الحزم الضرورية (أعتقد أن هذا كل ما يمكن أن أجده في bash_history بعد تشغيل الأشياء). يتضمن ذلك أدوات البناء العادية ، و TeX للتوثيق ، و ncurses نظرًا لأنه يعد إصدارًا من طرفي ، و GNU TLS للاتصالات الآمنة عند تثبيت الحزم ، ومكتبة Jansson JSON لـ LSP ، ومكتبة XML ، ومكتبة zlib ، وأخيرًا مكتبة systemd سنستخدم ملف الوحدة لشيطنة إيماكس. sudo apt install build-basic autoconf pkg-config texinfo \ libncurses-dev libgnutls28-dev libjansson-dev \ libxml2-dev libz -...

مع استبدال جهاز iPad بجهاز MacBook ، كان آخر شيء فاتني هو Emacs ، والذي لا أحب اختراقه فحسب ، بل أحب أيضًا كيفية تحديث مدونتي واستئنافها! دعنا نقول فقط إنها أداة أساسية في حياتي أردت الوصول إليها ، وتمكنت من القيام بذلك.

إذن ، أولاً وقبل كل شيء ، لا يمكنك تشغيل Emacs مباشرةً على جهاز iPad كتطبيق ، ولكن يمكنك بالتأكيد الوصول إلى شيء آخر يقوم بتشغيله. في هذه الحالة ، خادم خاص افتراضي (VPS) عبر SSH ، كما قد يتم تكوينه على DigitalOcean. لدى مضيفي السحابة الكثير من المعلومات حول كيفية نشر VPS ، لذلك لن أكررها هنا. هذه التعليمات خاصة بجهاز Ubuntu 20.04.

أعتقد أن تطبيق Blink أكثر من ملائم كمحاكي طرفي (مع دعم ألوان 24 بت ، وهو أمر مهم!) مع وصول SSH وعدد من أدوات الدعم المفيدة (مثل ssh-agent).

لقد استخدمت إعدادات التطبيق (إما كتابة config أو الضغط على CMD- ،) لإنشاء زوج مفاتيح SSH جديد وإضافة VPS كمضيف باسم vps مع عنوان IPv6 الخاص به لاسم المضيف. قبل تسجيل الدخول ، أفتح علامة تبويب أولاً وأبدأ وكيل ssh ، ثم أفتح علامة تبويب ثانية وقمت بتشغيل ssh-add id_rsa (لا ، ليس المسار إلى المفتاح ، فقط اسم المفتاح الافتراضي ، الذي بالكاد يفهمه منفذ أدوات التطبيق) ، وأخيراً اتصل بالوكيل المُعاد توجيهه عبر ssh -A vps.

في إعدادات لوحة مفاتيح التطبيق ، قمت بتعيين "الخيار" لإرسال "Esc" (وهو "Alt" للأجهزة الطرفية و "Meta" لـ Emacs ، كما هو الحال في M من M-x). في إعدادات نظامي ، تم تكوين مفتاح "Caps Lock" على لوحة مفاتيح الجهاز ليعمل كـ "تحكم" ، ولكن بإمكان Blink أيضًا القيام بذلك في البرنامج. ثبّت الأساسيات

من هناك ، قمت أولاً بتثبيت بعض الأدوات المفيدة: git and stow لتهيئة ملفات dotfiles الخاصة بي أداة البحث ripgrep aspell للتدقيق الإملائي في Emacs مع Flyspell htop لأنه جميل ومفيد أن نرى ما يحدث sudo apt install git stow ripgrep aspell htop قم بتأمينه باستخدام SSHGuard

دائمًا ما يكون تثبيت SSHGuard مفيدًا جدًا للحد من محاولات الاتصال بخادم VPS مفتوح: sudo apt تثبيت sshguard sudo journalctl -u sshguard

بمجرد أن رأيت عدد محاولات تسجيل الدخول التي تم إجراؤها (ولكن فشلت جميعها لأنني لم يكن لدي سوى إعداد وصول مفتاح ، بدون كلمة مرور) ، أضفت جدار حماية قاعدة على DigitalOcean لرفض كل حركة المرور الواردة باستثناء المنفذ 22 (SSH) عبر IPv6 . يتيح لي ذلك الوصول إليه لأنني أعرف عنوان IPv6 الخاص به ، ولكن نظرًا لأن مساحة العنوان هذه كبيرة جدًا ، فلا يمكن العثور عليها حقًا عن طريق برامج الروبوت التي تم مسحها ضوئيًا. أضف ملف المبادلة

الآن ، قبل محاولة تجميع أي شيء من المصدر على VPS بذاكرة محدودة ، أود إعداد ملف مبادلة لتجنب أخطاء الذاكرة الغبية. أعتقد أنني اتبعت هذا الدليل على Linuxize. باختصار: sudo swap - إظهار sudo Fallocate -l 1G / swapfile sudo chmod 600 / swapfile sudo mkswap / swapfile سودو سوابون / ملف المبادلة sudo swap - إظهار sudo cp / etc / fstab /etc/fstab.bak echo '/ swapfile no swap swap 0 0' | sudo tee -a / etc / fstab بناء إيماكس من المصدر

حسنًا ، الآن للجزء الممتع: بناء Emacs 27 من المصدر ، للمحطة ، مع كل ما نحتاجه. أولاً نقوم باستنساخ فرع emacs-27 من مرآة GitHub:

git clone -b emacs-27 https://github.com/emacs-mirror/emacs.git اسطوانات emacs

نقوم الآن بتثبيت عدد لا يحصى من الحزم الضرورية (أعتقد أن هذا كل ما يمكن أن أجده في bash_history بعد تشغيل الأشياء). يتضمن ذلك أدوات البناء العادية ، و TeX للتوثيق ، و ncurses نظرًا لأنه يعد إصدارًا من طرفي ، و GNU TLS للاتصالات الآمنة عند تثبيت الحزم ، ومكتبة Jansson JSON لـ LSP ، ومكتبة XML ، ومكتبة zlib ، وأخيرًا مكتبة systemd سنستخدم ملف الوحدة لشيطنة إيماكس. sudo apt install build-basic autoconf pkg-config texinfo \ libncurses-dev libgnutls28-dev libjansson-dev \ libxml2-dev libz -...

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow