আমি একটি কম্পিউটারে ইম্যাক চালাতে সক্ষম হতে চাই:
server $ emacs --daemon
এবং তারপরে অন্যের সাথে এটি সংযুক্ত করুন:
local $ emacsclient -c server
এটা কি সম্ভব? যদি তাই হয়, কিভাবে?
আমি একটি কম্পিউটারে ইম্যাক চালাতে সক্ষম হতে চাই:
server $ emacs --daemon
এবং তারপরে অন্যের সাথে এটি সংযুক্ত করুন:
local $ emacsclient -c server
এটা কি সম্ভব? যদি তাই হয়, কিভাবে?
উত্তর:
রিমোট কম্পিউটারে চলমান ইমাস ইনস্ট্যান্সের সাথে সংযোগ রাখতে আপনি ইমালস্ক্লিয়েন্ট ব্যবহার করতে পারবেন না। এই ক্লায়েন্ট-সার্ভার ধারণাটি স্থানীয় নোডগুলির সাথে নয় (স্থানীয়) প্রক্রিয়াগুলির সাথে সম্পর্কিত। তবে, আপনি রিমোট কম্পিউটারে লগ ইন করতে, সেখানে চলমান একটি ইম্যাক্স সার্ভারের সাথে সংযুক্ত করতে এবং স্থানীয়ভাবে ইমস্ক্লিয়েন্টের পর্দা প্রদর্শন করতে বিভিন্ন নেটওয়ার্ক প্রযুক্তি ব্যবহার করতে পারেন। নেটওয়ার্কিং ব্যবহৃত অপারেটিং সিস্টেমের উপর নির্ভর করে এসএসএইচ (টার্মিনাল / এক্স-ফরওয়ার্ডিং), ভিএনসি, আরডিপি ইত্যাদির মাধ্যমে নেটওয়ার্কিং করা যেতে পারে net
আপডেট :
কিছু লোক নির্দেশিত হিসাবে, ইমালস্ক্লিয়েন্টের কাছে আসলে টিসিপির মাধ্যমে সার্ভারের সাথে সংযোগ স্থাপনের বিকল্প রয়েছে। তবে, এম্যাকস্ক্লিয়েন্টটি কখনই দূরবর্তীভাবে ব্যবহার করা উচিত নয়, নন-ইউএনআইএক্স সিস্টেমের সাথে সামঞ্জস্য করার জন্য টিসিপি সকেট বিকল্পের প্রয়োজন (যেমন উইন্ডোজের মতো ইউনিক্স ডোমেন সকেট পাওয়া যায় না এমন অপারেটিং সিস্টেম)।
সম্ভবত আপনি যা চেয়েছিলেন তা নয় তবে ধরে নিচ্ছেন যে এক্স-ফরওয়ার্ডিংয়ের মাধ্যমে আপনার ssh সেটআপ রয়েছে, আপনি সার্ভারে এমস্কিলিয়েন্ট শুরু করতে পারেন এবং এটিকে দূরবর্তী ডিসপ্লেতে ফরোয়ার্ড করতে পারেন। (অস্বীকৃতি: কোড সরাসরি ওয়েবফোমে টাইপ করা হয়)
local> ssh server -f emacsclient -c --display=$DISPLAY
এটি আপনি যা চান তা হতে পারে না তবে কেবল যদি এটি আপনাকে কোনওভাবে সহায়তা করতে পারে তবে দেখুন।
আমি সাধারণত ভ্যাগ্র্যান্টের সাথে বুটস্ট্র্যাপ করা ভার্চুয়াল মেশিনের অভ্যন্তরে কাজ করি, আমি আমার ~/.emacs.d
ডিরেক্টরিটি আমার মেশিনের (স্থানীয়) এবং ভার্চুয়াল মেশিনের (রিমোট) মধ্যে Vagrantfile
ফাইলগুলি নীচে রাখার মধ্যে সিঙ্ক করেছি :
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
এছাড়াও, আমার ইমাস কনফিগারেশন স্বয়ংক্রিয়ভাবে শুরুতে একটি সার্ভার শুরু করে:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
সুতরাং যখন আমি ভার্চুয়াল মেশিনের মধ্যে একটি ইমাসস সার্ভার চালু করি, তখন আমি এটির সাথে নিম্নলিখিতটির সাথে সংযোগ করতে পারি:
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
ভার্চুয়াল মেশিনের হোস্টনামটি আমার ~ / .ssh / কনফিগারারে ভার্চুয়াল মেশিনটির কনফিগার করা হোস্টের নাম:
Host <virtual machine hostname>
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/anler/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
দ্রষ্টব্য: ভার্চুয়াল মেশিনের মধ্যে ইমাসস সার্ভারটি চালু করার আগে আমি পরীক্ষা করে দেখছি যে ~/.emacs.d/server/server
ফাইলটি উপস্থিত নেই (এটি যদি আমি কেবল এটি সরিয়ে ফেলি) কারণ অন্যথায় এটি কাজ করবে না।
.ssh/config
। আপনি কেবল নির্দিষ্ট করতে হবে Host
। সন্দেহ হয় আপনি কমান্ডের আউটপুট ব্যবহার করতে পারেন: vagrant ssh-config
আপনার ~/.ssh/config
ফাইল সেট করতে ।
স্থানীয় ইমাসে স্বয়ংক্রিয়ভাবে দূরবর্তী ফাইলগুলি খুলুন
প্রথম সমাধান নিয়ে আমার সাফল্য আছে। দ্বিতীয়টি সহজ বলে মনে হচ্ছে, আমি এখনও এটি চেষ্টা করে দেখছি।