এক্সিকিউটেবলগুলি কীভাবে ইনস্টল করবেন


13

আমি কখনও কখনও একটি সফটওয়্যার যা নেই দেওয়া হয় মধ্যে চালানো .debবা .rpmকিন্তু শুধুমাত্র একটি এক্সিকিউটেবল হিসাবে।
উদাহরণস্বরূপ ভিজ্যুয়াল স্টুডিও কোড , ওয়েবস্টোরম বা কেরবল স্পেস প্রোগ্রামাম

এই প্রশ্নের জন্য, আমি রেফারেন্স পয়েন্ট হিসাবে ভিজ্যুয়াল স্টুডিও কোড গ্রহণ করব।

সফটওয়্যারটি জিপড প্যাকেজ হিসাবে দেওয়া হয়।
যখন এটিকে আনজিপ, আমি একটি ফোল্ডার নামক অবশিষ্ট করছি VSCode-linux-x64যে নামে একজন এক্সিকিউটেবল রয়েছে Code
আমি Codeআমার টার্মিনালটি ডাবল ক্লিক করতে বা এটি নির্দেশ করতে পারি এটি /home/user/Downloads/VSCode-linux-x64/Codeকার্যকর করতে পছন্দ করে।
তবে, আমি এই অ্যাপ্লিকেশনগুলি ইনস্টল করার কোনও সঠিক উপায় আছে কিনা তা জানতে চাই।

আমি যা অর্জন করতে চাই তা হ'ল:

  • একটি জায়গা যেখানে আমি এই পদ্ধতিতে দেওয়া সমস্ত অ্যাপ্লিকেশন / সফ্টওয়্যার রাখতে পারি (এক্সিকিউটেবল)
  • টার্মিনাল সমর্থন (যার অর্থ উদাহরণস্বরূপ: আমি vscodeআমার টার্মিনালের যে কোনও ফোল্ডার থেকে লিখতে পারি এবং এটি স্বয়ংক্রিয়ভাবে ভিজ্যুয়াল স্টুডিও কোড কার্যকর করে।

অতিরিক্ত তথ্য:

  • ডেস্কটপ পরিবেশ: Gnome3
  • ওএস: দেবিয়ান

সম্পাদনা:
আমি @ কেবিএর উত্তর দেওয়ার সিদ্ধান্ত নিয়েছি কারণ তার পন্থাটি আমার ব্যাকআপ সমাধানের সাথে আরও ভাল কাজ করে। বাইনারিগুলি কার্যকর করার জন্য স্ক্রিপ্ট থাকা আপনাকে যুক্তি যুক্ত করার সম্ভাবনা দেয়।
তবে সত্যি কথা বলতে গেলে @ জন ডাব্লুএইচ স্মিথ পদ্ধতির @ কেবিএর মতোই দুর্দান্ত is

উত্তর:


12

একটি প্রোগ্রামকে এর নামে কল করতে, শেলগুলি $PATHপরিবেশ পরিবর্তনশীল ডিরেক্টরিতে অনুসন্ধান করে । ডেবিয়ানে, $PATHআপনার ব্যবহারকারীর জন্য ডিফল্টটিতে /home/YOUR-USER-NAME/bin(যেমন ~/bin) অন্তর্ভুক্ত করা উচিত ।

ডিরেক্টরিটি ~/binবিদ্যমান কিনা তা নিশ্চিত করুন বা এটি না থাকলে এটি তৈরি করুন:

mkdir -p ~/bin

শেলটিতে এটি উপলভ্য করার জন্য আপনি বাইনারিগুলিকে সেই ডিরেক্টরিতে সিমিলিংক করতে পারেন:

mkdir -p ~/bin
ln -s /home/user/Downloads/VSCode-linux-x64/Code ~/bin/vscode

এটি আপনাকে vscodeকমান্ড লাইনে বা কমান্ড লঞ্চার থেকে চালানোর অনুমতি দেবে ।

দ্রষ্টব্য: আপনি $PATHডিরেক্টরিতে বাইনারিগুলি অনুলিপি করতে পারেন তবে যদি তারা আপেক্ষিক পথে নির্ভর করে তবে সমস্যা হতে পারে।

যদিও সাধারণভাবে, ওএস (অ্যাপট-গেট, ডেব প্যাকেজ) বা সফ্টওয়্যার প্রকল্পের বিল্ড সরঞ্জামগুলি সরবরাহ করে সেগুলি ব্যবহার করে সফ্টওয়্যারটি সঠিকভাবে ইনস্টল করা ভাল always এটি নিশ্চিত করবে যে নির্ভরশীল পাথ (যেমন শুরু স্ক্রিপ্টস, ম্যান পৃষ্ঠা, কনফিগারেশন ইত্যাদি) সঠিকভাবে সেট আপ হয়েছে।

আপডেট করুন: এছাড়াও অনুধ্যায়ী টমাস Dickey মন্তব্য এবং ফাহিম মিঠা এর উত্তর কি আমি সাধারণত সফ্টওয়্যার জন্য যে একটি টপ লেভেল বাইনারি আশা সঙ্গে একটি tarball রূপে হিসাবে আসে সেখান থেকে চালানো হবে:

(মান-সম্মতি ক্রমানুসারে একটি বিবেকী অবস্থান রাখা /opt, /usr/localঅথবা আপনার হোম ডিরেক্টরীতে, যেমন একটি ফোল্ডার ~/build) এবং একটি মধ্যে একটি এক্সিকিউটেবল স্ক্রিপ্ট মোড়কের তৈরি $PATHঅবস্থান (যেমন /usr/local/binঅথবা ~/bin) যে যে অবস্থান পরিবর্তন এবং বাইনারি executes:

#/bin/sh
cd "$HOME/build/directory"
exec ./top-level-binary "$@"

যেহেতু এটি সেই ডিরেক্টরিতে পরিবর্তিত হয়ে ম্যানুয়ালি বাইনারি চালিত করে তাই এটি অ-বিদ্যমান আপেক্ষিক পাথের মতো সমস্যাগুলি ডিবাগ করা সহজ করে।


1
আমি এই পদ্ধতির পছন্দ। ব্যক্তিগতভাবে আমি কেবলমাত্র ব্যাশ প্রোফাইলে একটি উপনাম নিক্ষেপ করব, যদিও আপনার যদি প্রচুর প্রোগ্রাম দিয়ে থাকেন তবে এটি অগোছালো হয়ে উঠবে।
ওয়ার্লুব্লু

1
তারপরে এটি কেবল শেল থেকে ব্যবহার করা যেতে পারে। কোনও সময়ে আপনি .desktopমেনু থেকে শুরু করতে একটি এন্ট্রি ইনস্টল করতে চাইতে পারেন বা আপনি কনফিগারেশন যুক্ত করতে পারেন, কমান্ড লাইনের পতাকাগুলি আবিষ্কার করতে পারেন। একটি উপাধি খুব জটিল নয়।
কেবি

8

টিএলডিপি অনুসারে , /optএই ধরণের সফ্টওয়্যারটির জন্য ভাল জায়গা হতে পারে। আমি নিজে এটি মুদ্রক সংক্রান্ত কিছু সরঞ্জাম সঞ্চয় করতে ব্যবহার করেছি এবং স্কাইপের "গতিশীল" সংস্করণ (যেমন কেবিএ বলেছে, ততক্ষণে PATHভেরিয়েবলটি সেট করে "টার্মিনাল সমর্থন" অর্জন করা যেতে পারে )।

আরও সাধারণভাবে, আমি /optএক্সিকিউটেবল হিসাবে প্যাকেজযুক্ত মালিকানাধীন সফটওয়্যারটি "ইনস্টল" করতে ব্যবহার করি , তবে সম্ভবত এটি আমার পক্ষে সম্ভবত। তদুপরি, আমি কেবল এই ধরণের সফ্টওয়্যার এড়াতে চাইছি, যেহেতু আমি সাধারণত চালানোর পরে এটি কী করতে চলেছে সে সম্পর্কে আমার কোনও নিশ্চিততা নেই।

আমি বেছে নেওয়ার আরেকটি কারণ /optহ'ল এটি সাধারণত তৃতীয় পক্ষের, স্বতন্ত্র কোডের জন্য বোঝানো হয় যা এর /opt/'package'ডিরেক্টরিতে (এবং অন্যান্য optডিরেক্টরি যেমন /etc/opt) এর বাইরে কোনও ফাইলে নির্ভর করে না ।

কোনও অবস্থাতেই অন্য প্যাকেজ ফাইলগুলি / opt, / var / opt, এবং / etc / opt hierarchies এর বাইরে থাকা প্যাকেজ ফাইলগুলিকে বাদ দেওয়া উচিত যা সঠিকভাবে কাজ করার জন্য ফাইল সিস্টেমের গাছের মধ্যে নির্দিষ্ট স্থানে থাকতে হবে। [...] সাধারণত, কোনও সিস্টেমে প্যাকেজ সমর্থন করার জন্য প্রয়োজনীয় সমস্ত ডেটা / opt / 'প্যাকেজ'-এর মধ্যে উপস্থিত থাকতে হবে, / etc / opt /' প্যাকেজ 'এবং / var / opt /' এ অনুলিপি করা ফাইলগুলি অন্তর্ভুক্ত প্যাকেজ 'পাশাপাশি / অপ্টে সংরক্ষিত ডিরেক্টরিগুলি।

উত্স কোড প্রকাশের একটি সুবিধা হ'ল লোকেরা তাদের সিস্টেমের নির্দিষ্টকরণের ভিত্তিতে কাস্টম লাইব্রেরি / শিরোনাম পাথ সরবরাহ করে সংকলন প্রক্রিয়াটি কনফিগার করতে পারে। যখন কোনও বিকাশকারী কোড সম্পাদনযোগ্য হিসাবে কোড প্রকাশের সিদ্ধান্ত নেন, তখন সেই সুবিধাটি হারাবে। আইএমএইচও, এই মুহুর্তে, বিকাশকারীকে এখন ধরে নিতে পারছে না যে তার / তার প্রোগ্রামের নির্ভরতা উপলব্ধ থাকবে (এজন্য এক্সিকিউটিভের পাশাপাশি সবকিছু প্যাকেজ করা উচিত)।

এখানে ইনস্টল করা যে কোনও প্যাকেজটির অবশ্যই পৃথক / অপ্ট / 'প্যাকেজ' বা / অপ্ট / 'সরবরাহকারী' ডিরেক্টরি গাছের (যেমন উইন্ডোজ ইনস্টল করবে তার অনুরূপ) স্ট্যাটিক ফাইলগুলি (যেমন অতিরিক্ত ফন্ট, ক্লিপার্ট, ডাটাবেস ফাইলগুলি) সনাক্ত করতে হবে নিজস্ব ডিরেক্টরি ট্রিতে নতুন সফ্টওয়্যার সি: \ উইন্ডোজ \ প্রোগ্রামাম ফাইলগুলি Program "প্রোগ্রামের নাম"), যেখানে 'প্যাকেজ' এমন একটি নাম যা সফ্টওয়্যার প্যাকেজ বর্ণনা করে এবং 'সরবরাহকারী' সরবরাহকারীর ল্যানএএনএ নিবন্ধিত নাম।

আরও তথ্যের জন্য, আমি এই অন্যান্য ইউঅ্যান্ডএল প্রশ্নটি পড়ারও পরামর্শ দিচ্ছি , যা হ'ল পার্থক্যগুলি /optএবং এর সাথে সম্পর্কিত /usr/local। আমি ব্যক্তিগতভাবে /usr/localএই ক্ষেত্রে এড়াতে চাই, বিশেষত যদি আমি ইনস্টল না করা প্রোগ্রামটি তৈরি না করি তবে।


6

আপনার ভিজ্যুয়াল স্টুডিও কোডের উদাহরণ হিসাবে, বাইনারি জিপ সংরক্ষণাগার বা টারবাল থেকে বিতরণ বাইনারি প্যাকেজ তৈরি করা সম্পূর্ণভাবে সম্ভব এবং বাস্তবে যথেষ্ট সহজ।

হ্যাঁ, লিনাক্স ডিস্ট্রিবিউশন বাইনারি প্যাকেজগুলি যেমন debএস এবং rpmএস থেকে প্রথমে উত্স থেকে উত্পন্ন হয়, তবে সেগুলি হবার দরকার নেই। এবং প্রায়শই (যদিও সর্বদা নয়) এমন জিনিসগুলি সজ্জিত করা সম্ভব হয় যে ফলাফল বিতরণ বাইনারি প্যাকেজ বিতরণ নীতি অনুসারে "ডান" জায়গায় জিনিসগুলি ইনস্টল করে।

এলোমেলো মালিকানাধীন টার্বল-এর ক্ষেত্রে যদি সফ্টওয়্যারটি যথাযথভাবে ইনস্টল করার কোনও উপায় থাকে, উদাহরণস্বরূপ কোনও মেকফাইলে একটি ইনস্টল লক্ষ্য, তবে তা বিতরণ প্যাকেজিং যন্ত্রপাতি ব্যবহার করা যেতে পারে। অন্যথায়, এতে "ডান" জায়গায় "ম্যানুয়ালি" ফাইল ম্যাপিং জড়িত থাকতে পারে যা অনেক কাজ হতে পারে। এই জাতীয় প্যাকেজ তৈরি করার সময় এটি একটি অদ্ভুত জিনিস বলে মনে হতে পারে তবে এটি প্যাকেজ পরিচালনার অন্যতম প্রধান সুবিধা হ'ল নাম সাফ ইনস্টল এবং আনইনস্টলগুলি। এবং অবশ্যই এই জাতীয় প্যাকেজটি কখনই নামের কোনও লিনাক্স বিতরণে গৃহীত হবে না, তবে এটি আপনার প্রশ্ন নয়।


এটি সত্য এবং এখনও: আপনি যখন চান কিছু অ-প্যাকেজযুক্ত, অ-মানক-নির্মিত-সফ্টওয়্যারটি আপনার স্থানীয় সিস্টেমে নির্ভরযোগ্যভাবে চালিত করতে চান, তখন একটি ডেবিয়ান প্যাকেজ তৈরি করা কিছু মারাত্মক ইয়াক শেভিং আইএমএইচও হতে পারে।
কেবিএ মনিকা সাথে

ঘোষণা: এই প্রশ্নটি লেখার সময় কোনও ইয়াক মুণ্ডিত হয়নি।
ফাহিম মিঠা

@ ফাহিমমিঠা - আপনি যন্ত্রণাহীনভাবে একটি ইয়াক শেভ করতে পারেন fpm
হরিণ হান্টার

@ ডিয়ারহান্টার আমি শুনেছি। আপনি এটি ব্যবহার করেছেন?
ফাহিম মিঠা

1
@DeerHunter গুড বিন্দু প্রকৃতপক্ষে, আমি ব্যবহার করেছি FPM কয়েক বছর আগে একটি প্রকল্পের জন্য ক্রস-প্ল্যাটফর্ম বাইনারি প্যাকেজ নির্মাণ করতে এবং এটি সত্যিই একটি হাওয়া ছিল।
কেবি

3

আমি খুব কমই এমন সফ্টওয়্যারটি দেখেছি যা কেবলমাত্র বাইনারি এক্সিকিউটেবল এবং অন্য কিছুই হিসাবে সরবরাহ করা হয় এবং আমি স্পষ্টতই এ সম্পর্কে কিছুটা সন্দেহজনক হয়ে উঠব। অন্য কিছু না হলে আমি কমপক্ষে একটি README(এটি ইনস্টল করার জন্য নির্দেশাবলীর সাথে) এবং এটির সাথে একটি আশা করবো LICENSE। বলা হচ্ছে যে...

স্বাভাবিক জায়গা যেখানে ডিস্ট্রো প্যাকেজ ম্যানেজার দ্বারা পরিচালিত স্থানীয়ভাবে ইনস্টল বাইনারি ফাইল রাখা হয় /usr/local/bin। আপনি এটি সেখানে রাখতে পারেন এবং যেহেতু ডিরেক্টরিটি ইতিমধ্যে আপনার মধ্যে রয়েছে (বা হওয়া উচিত) $PATHআপনি কমান্ড লাইনে সফ্টওয়্যারটির নাম টাইপ করে চালাতে পারেন।

সাধারণত সফ্টওয়্যারটিতে একটি ম্যানপেজ থাকা উচিত (অনির্ধারিত সফ্টওয়্যারটি খারাপ, তাই না?) যা /usr/local/manকিছু অন্যান্য ফাইল এবং প্লাগইনগুলিতে অনুবাদ করতে পারে এমন কিছু সমর্থন ফাইল থাকতে পারে যা এতে /usr/local/shareবা যেতে পারে /usr/local/liband এই কারণে, এমন সফ্টওয়্যার যা প্যাকেজ হিসাবে বিতরণ করা হয় না .debবা .rpmসাধারণত এমন একটি ইনস্টলার আসে যা সবকিছু ঠিক জায়গায় রাখে। আপনি উত্স থেকে ইনস্টল করার সময়, সাধারণত make install


ভিজ্যুয়াল স্টুডিও কোডের ক্ষেত্রে , এটিতে 77 টি LICENSE ফাইল ডিরেক্টরি গাছের মাধ্যমে ছড়িয়ে আছে। শীর্ষ-স্তরটি Codeকেবলমাত্র সূচনা পয়েন্ট। এটা তোলে লাইসেন্স প্রদর্শন পারে যখন (দৌড়ানো 64-বিট এক্সিকিউটেবল হাতে মেশিন চালানো না, কিন্তু কেউ যাচাই করা উচিত আর যে সাজানোর একটি প্রদান ভাল ওপি প্রকৃত প্রশ্ন অ্যাড্রেসিং উত্তর।
টমাস Dickey

স্পষ্টতার জন্য @ থমাসডিকিকে ধন্যবাদ। আমি বিশ্বাস করি যে আমি ওপি-র সঠিক পরিস্থিতিটি ভুল বুঝেছি। আমি ভেবেছিলাম যে তারা প্রাপ্তি কেবলমাত্র একক ইএলএফ এক্সিকিউটেবল (একটি টারবলে জড়িয়ে)
সেলদা

না - আমি একটি তাত্ক্ষণিকভাবে নজর রেখেছি (আমার করণীয় তালিকায় নয় ...), এবং এটি ~ 1500 ফাইল পেয়েছে। কেবল ওএসএক্সের সাথে একবার দেখুন, এটি দৌড়েছিল এবং একটি ওয়েব ব্রাউজারে একটি টিউটোরিয়াল শুরু করে। @ কেবির উত্তর আংশিকভাবে কার্যকর, যদিও একটি নিয়ম হিসাবে, আমি /usr/localআমার হোম ডিরেক্টরিটি না করে এটি আনজिप করার চেষ্টা করব। (সমস্ত প্রোগ্রাম কার্যকর হবে না - Eclipseউদাহরণস্বরূপ)।
থমাস ডিকি 20'16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.