আপনি যদি কোনো Homebrew সার্ভিসের কনফিগারেশন পরিবর্তন করে থাকেন এবং তা কার্যকর করতে চান, তবে সেটির formula নাম ব্যবহার করে সার্ভিসটি রিস্টার্ট করুন: brew services restart formula। উদাহরণস্বরূপ, আপনি যদি postgresql@16 ইনস্টল করে থাকেন, তবে brew services restart postgresql@16 ব্যবহার করুন। Homebrew প্রয়োজনে সার্ভিসটি থামায়, পুনরায় চালু করে এবং লগইনের সময় চালু হওয়ার জন্য রেজিস্টার করে। এর রিপোর্ট করা অবস্থা নিশ্চিত করতে পরবর্তীতে সার্ভিসের তালিকা পরীক্ষা করুন।

রিস্টার্ট করার আগে সার্ভিস এবং কনফিগারেশন শনাক্ত করুন

Homebrew সার্ভিসসমূহ macOS launchctl-এর মাধ্যমে ব্যাকগ্রাউন্ড প্রসেস পরিচালনা করে। sudo ছাড়া, Homebrew বর্তমান ব্যবহারকারীর LaunchAgents-এ কাজ করে, যা লগইনের সময় চালু হওয়ার উদ্দেশ্যে তৈরি। sudo সহ, এটি সিস্টেমের LaunchDaemons-এ কাজ করে, যা বুট করার সময় চালু হওয়ার উদ্দেশ্যে তৈরি। Homebrew-এর brew services রেফারেন্স-এ এই পার্থক্যের বিবরণ দেওয়া হয়েছে, তাই মূলত যে প্রিভিলেজ লেভেল দিয়ে সার্ভিসটি শুরু করা হয়েছিল সেটিই ব্যবহার করুন; ইউজার এবং রুট কনটেক্সটের মধ্যে অদলবদল করলে আপনি হয়তো ভিন্ন কোনো সার্ভিস রেজিস্ট্রেশন পরীক্ষা বা প্রভাবিত করতে পারেন।

আপনি যদি formula নামটি সম্পর্কে নিশ্চিত না হন, তবে আপনার বর্তমান ব্যবহারকারীর জন্য Homebrew যে সার্ভিসগুলি পরিচালনা করে তার তালিকা দেখুন:

brew services list

এই তালিকায় সার্ভিসের নাম, স্ট্যাটাস, ইউজার এবং plist পাথ দেখা যেতে পারে। সেখানে প্রদর্শিত formula নামটি রিস্টার্ট কমান্ডে ব্যবহার করুন। যদি না আপনি পরিচালিত প্রতিটি সার্ভিস রিস্টার্ট করতে চান, তবে --all এড়িয়ে চলুন, কারণ এটি আপনি যার কনফিগারেশন সম্পাদনা করেছেন তার চেয়েও বেশ কিছুকে প্রভাবিত করে। সমস্যা সমাধানের সময় অতিরিক্ত Homebrew এবং launchctl আউটপুটের জন্য রেফারেন্সটিতে brew services list --debug-এরও বিবরণ রয়েছে।

brew services restart দিয়ে পরিবর্তনটি প্রয়োগ করুন

যে macOS অ্যাকাউন্টটি সার্ভিসটি চালায়, সেই একই অ্যাকাউন্ট হিসেবে টার্মিনালে রিস্টার্ট কমান্ডটি চালান:

brew services restart postgresql@16

সার্ভিসের তালিকায় আপনি যে formula পেয়েছেন তা দিয়ে postgresql@16 প্রতিস্থাপন করুন। সংস্করণযুক্ত নামটি কেবল একটি উদাহরণ। Homebrew restart-কে সংজ্ঞায়িত করে প্রয়োজনে সার্ভিস বন্ধ করা এবং তা অবিলম্বে চালু করা হিসেবে, একই সাথে এটিকে লগইনে (বা sudo সহ ব্যবহার করা হলে বুট করার সময়) চালু হওয়ার জন্য রেজিস্টার করে। এর ফলে কোনো চলমান সার্ভিসকে যখন কনফিগারেশন পুনরায় লোড করতে হয়, তখন রিস্টার্ট করা উপযুক্ত পদক্ষেপ। কমান্ড রেফারেন্স-এ এর কার্যপদ্ধতি এবং ঐচ্ছিক --all ও --file ফ্ল্যাগগুলির তালিকা রয়েছে।

স্বয়ংক্রিয়ভাবে sudo যোগ করবেন না। সার্ভিসটি যদি ইচ্ছাকৃতভাবে সিস্টেম সার্ভিস হিসেবে রেজিস্টার করা হয়ে থাকে এবং আপনি রুট-লেভেলের রেজিস্ট্রেশন পরিচালনা করতে চান, তবেই কেবল এটি ব্যবহার করুন। অন্যথায়, sudo একটি ভিন্ন LaunchDaemon-কে লক্ষ্য করতে পারে এবং ইউজার-লেভেলের সার্ভিসটি অপ্রভাবিত থেকে যেতে পারে। আপনি যদি লগইনে চালু হওয়ার জন্য রেজিস্টার না করে কেবল একটি প্রসেস একবার চালাতে চান, তবে Homebrew-এ brew services run formula-এর বিবরণ রয়েছে; যে সার্ভিসটি আপনি পরিচালনাধীন রাখতে চান, তার জন্য এই কমান্ডটি কোনো রিস্টার্টের বিকল্প নয়।

ফলাফল পরীক্ষা করুন এবং ব্যর্থ রিস্টার্টের সমস্যা সমাধান করুন

কমান্ডটি সম্পন্ন হওয়ার পর, পরিচালিত সার্ভিসের তালিকাটি আবার পরীক্ষা করুন:

brew services list

কাঙ্ক্ষিত formula-টি started স্ট্যাটাস সহ উপস্থিত রয়েছে কিনা তা নিশ্চিত করুন এবং এর ইউজার ও plist পাথ পরীক্ষা করুন। একটি started স্ট্যাটাস নিশ্চিত করে যে Homebrew এটি চালু হয়েছে বলে রিপোর্ট করছে; এটি স্বাধীনভাবে প্রমাণ করে না যে অ্যাপ্লিকেশনটি নতুন সেটিংস গ্রহণ করেছে বা অনুরোধে সাড়া দিচ্ছে। অ্যাপ্লিকেশনটির নিজস্ব ডকুমেন্টেড হেলথ চেক দিয়ে বা পরিবর্তিত সেটিংটি যে আচরণ নিয়ন্ত্রণ করে তা পরীক্ষা করে অ্যাপ্লিকেশনটি যাচাই করুন।

যদি সার্ভিসটি চালু না হয়, তবে আরও পরিবর্তন করার আগে --debug সহ তালিকা কমান্ডটি চালান এবং সার্ভিসের নিজস্ব ত্রুটির আউটপুট বা লগগুলি পড়ুন। অ্যাপ্লিকেশনের কনফিগারেশন সিনট্যাক্স, ফাইলের অনুমতি এবং পাথগুলি সেই অ্যাপ্লিকেশনের ডকুমেন্টেশনের সাথে মিলিয়ে দেখুন। Homebrew-এর সার্ভিস কমান্ডটি সার্ভিসের সংজ্ঞা ব্যবহার করে সার্ভিসটি চালু করে; এটি অ্যাপ্লিকেশন-নির্দিষ্ট প্রতিটি কনফিগারেশন বিকল্প যাচাই করে না। প্রাথমিক সমাধান হিসেবে জেনারেট করা plist ফাইলগুলি সম্পাদনা করা এড়িয়ে চলুন: Homebrew-এর ডকুমেন্টেড কনফিগারেশন প্রক্রিয়াটি নির্ভর করে আপনার যে সেটিং পরিবর্তন করা প্রয়োজন তার ওপর।

পরিবর্তনটি যখন একটি এনভায়রনমেন্ট ভেরিয়েবল হয়

সার্ভিসের জন্য আপনার পরিবর্তনটি যদি কোনো এনভায়রনমেন্ট ভেরিয়েবল হয়, তবে Homebrew প্রতি-formula-র জন্য একটি নির্দিষ্ট এনভায়রনমেন্ট ফাইলের বিবরণ দেয়। ডিফল্টভাবে, এটি ~/.homebrew/services/formula.env-এ রাখুন; যদি HOMEBREW_USER_CONFIG_HOME সেট করা থাকে, তবে ডিরেক্টরিটি হবে $HOMEBREW_USER_CONFIG_HOME/services। প্রতি লাইনে একটি করে KEY=value অ্যাসাইনমেন্ট ব্যবহার করুন, এবং কমেন্ট লাইনের শুরুতে # ব্যবহার করুন। তারপর সার্ভিসটি রিস্টার্ট করুন; Homebrew জানায় যে এই মানগুলি পরবর্তী রিস্টার্টে কার্যকর হয় এবং আপগ্রেডের পরেও অপরিবর্তিত থাকে। Homebrew-এর রেফারেন্সে সার্ভিসের এনভায়রনমেন্ট সংক্রান্ত নির্দেশাবলী দেখুন।

উদাহরণস্বরূপ, ডকুমেন্টেড ফাইলের ফরম্যাট হলো KEY=value, তবে ভেরিয়েবলের নাম এবং মান অবশ্যই অ্যাপ্লিকেশনের ডকুমেন্টেশন থেকে আসতে হবে। ধরে নেবেন না যে প্রতিটি অ্যাপ্লিকেশন ইচ্ছেমতো এনভায়রনমেন্ট ভেরিয়েবল গ্রহণ করে, এবং কে এটি পড়তে পারে তা বিবেচনা না করে কোনো এনভায়রনমেন্ট ফাইলে গোপনীয় তথ্য (secrets) পেস্ট করবেন না। আপনার কনফিগারেশন পরিবর্তনটি যদি এনভায়রনমেন্ট ভেরিয়েবলের পরিবর্তে কোনো অ্যাপ্লিকেশনের কনফিগ ফাইল হয়, তবে সেই অ্যাপ্লিকেশনের নির্দিষ্ট করা ফাইল লোকেশনটি সম্পাদনা করুন, তারপর একই রিস্টার্ট কমান্ড ব্যবহার করুন।

নির্ভরযোগ্য ক্রমটি হলো: সঠিক formula এবং সার্ভিসের কনটেক্সট শনাক্ত করুন, অ্যাপ্লিকেশন বা Homebrew-এর ডকুমেন্টেশনে নির্দিষ্ট স্থানে সেটিংটি সম্পাদনা করুন, সেই নির্দিষ্ট formula-টি রিস্টার্ট করুন এবং Homebrew-এর স্ট্যাটাস ও অ্যাপ্লিকেশনের আচরণ উভয়ই যাচাই করুন।

সূত্রসমূহ