লিনাক্সে এক্সটেনশন ইনস্টল করা হচ্ছে

ক্রোম ওয়েব স্টোরের বাইরে হোস্ট করা এক্সটেনশনগুলি শুধুমাত্র লিনাক্স ব্যবহারকারীরা ইনস্টল করতে পারেন৷ এই নিবন্ধটি বর্ণনা করে কিভাবে একটি ব্যক্তিগত সার্ভার থেকে .crx ফাইল প্যাকেজ, হোস্ট এবং আপডেট করা যায়। যদি শুধুমাত্র Chrome ওয়েব স্টোরের মাধ্যমে একটি এক্সটেনশন বা থিম বিতরণ করা হয়, তাহলে ওয়েবস্টোর হোস্টিং এবং আপডেট করার পরামর্শ নিন।

প্যাকেজিং

এক্সটেনশন এবং থিম .crx ফাইল হিসাবে পরিবেশিত হয়। Chrome ডেভেলপার ড্যাশবোর্ডের মাধ্যমে আপলোড করার সময়, ড্যাশবোর্ড স্বয়ংক্রিয়ভাবে .crx ফাইল তৈরি করে। একটি ব্যক্তিগত সার্ভারে প্রকাশিত হলে, .crx ফাইলটি স্থানীয়ভাবে তৈরি করতে হবে বা Chrome ওয়েব স্টোর থেকে ডাউনলোড করতে হবে৷

Chrome ওয়েব স্টোর থেকে .crx ডাউনলোড করুন

ক্রোম ওয়েব স্টোরে একটি এক্সটেনশন হোস্ট করা থাকলে, .crx ফাইলটি ডেভেলপার ড্যাশবোর্ড থেকে ডাউনলোড করা যেতে পারে। "আপনার তালিকা" এর অধীনে এক্সটেনশনটি সনাক্ত করুন এবং "আরো তথ্য" এ ক্লিক করুন। পপআপ উইন্ডোতে, এটি ডাউনলোড করতে নীল main.crx লিঙ্কে ক্লিক করুন।

ডেভেলপার ড্যাশবোর্ড থেকে .crx ডাউনলোড করুন

ডাউনলোড করা ফাইলটি একটি ব্যক্তিগত সার্ভারে হোস্ট করা যেতে পারে। এটি স্থানীয়ভাবে একটি এক্সটেনশন হোস্ট করার সবচেয়ে নিরাপদ উপায় কারণ এক্সটেনশনের বিষয়বস্তু Chrome ওয়েব স্টোর দ্বারা স্বাক্ষরিত হবে৷ এটি সম্ভাব্য আক্রমণ এবং টেম্পারিং সনাক্ত করতে সাহায্য করে।

স্থানীয়ভাবে .crx তৈরি করুন

এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠায় এক্সটেনশন ডিরেক্টরি .crx ফাইলে রূপান্তরিত হয়। ওমিনিবক্সে chrome://extensions/ এ নেভিগেট করুন, অথবা Chrome মেনুতে ক্লিক করুন, "আরো টুলস" এর উপর হোভার করুন তারপর "এক্সটেনশন" নির্বাচন করুন।

এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠায়, বিকাশকারী মোডের পাশের টগল সুইচটিতে ক্লিক করে বিকাশকারী মোড সক্ষম করুন৷ তারপর প্যাক এক্সটেনশন বোতামটি নির্বাচন করুন।

বিকাশকারী মোড চেক করা হয়েছে তারপর প্যাক এক্সটেনশনে ক্লিক করুন

এক্সটেনশন রুট ডিরেক্টরি ক্ষেত্রে এক্সটেনশনের ফোল্ডারের পাথ নির্দিষ্ট করুন তারপর প্যাক এক্সটেনশন বোতামে ক্লিক করুন। প্রথম-বারের প্যাকেজের জন্য ব্যক্তিগত কী ক্ষেত্রটিকে উপেক্ষা করুন।

এক্সটেনশন পাথ নির্দিষ্ট করুন তারপর প্যাক এক্সটেনশন ক্লিক করুন

Chrome দুটি ফাইল তৈরি করবে, একটি .crx ফাইল এবং একটি .pem ফাইল, যেটিতে এক্সটেনশনের ব্যক্তিগত কী রয়েছে৷

প্যাকেজ করা এক্সটেনশন ফাইল

ব্যক্তিগত চাবি হারাবেন না! .pem ফাইলটি একটি গোপন এবং নিরাপদ স্থানে রাখুন; এক্সটেনশন আপডেট করার জন্য এটি প্রয়োজন হবে।

একটি .crx প্যাকেজ আপডেট করুন

manifest.json এ সংস্করণ সংখ্যা বাড়িয়ে একটি এক্সটেনশনের .crx ফাইল আপডেট করুন।

{
  ...
  "version": "1.5",
  ...
  }
}
{
  ...
  "version": "1.6",
  ...
  }
}

এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠায় ফিরে যান এবং প্যাক এক্সটেনশন বোতামে ক্লিক করুন। এক্সটেনশন ডিরেক্টরির পথ এবং ব্যক্তিগত কী-এর অবস্থান নির্দিষ্ট করুন।

এক্সটেনশন ফাইল আপডেট করা হচ্ছে

পৃষ্ঠাটি আপডেট করা প্যাকেজ এক্সটেনশনের জন্য পথ প্রদান করবে।

এক্সটেনশন ফাইল আপডেট করা হচ্ছে

কমান্ড লাইনের মাধ্যমে প্যাকেজ

chrome.exe চালু করে কমান্ড লাইনে প্যাকেজ এক্সটেনশন। --pack-extension extension পতাকা এবং এক্সটেনশনের ব্যক্তিগত কী ফাইলের অবস্থান নির্দিষ্ট করতে --pack-extension-key পতাকা ব্যবহার করুন।

chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem

হোস্টিং

.crx ফাইলগুলি হোস্ট করে এমন একটি সার্ভারকে অবশ্যই উপযুক্ত HTTP শিরোনাম ব্যবহার করতে হবে যাতে ব্যবহারকারীরা একটি লিঙ্কে ক্লিক করে এক্সটেনশন ইনস্টল করতে পারেন৷

Google Chrome একটি ফাইলকে ইনস্টলযোগ্য বলে বিবেচনা করে যদি নিচের যেকোনো একটি সত্য হয়:

  • ফাইলটিতে কন্টেন্ট টাইপ application/x-chrome-extension রয়েছে
  • ফাইলের প্রত্যয় হল .crx এবং নিচের দুটিই সত্য:
    • ফাইলটি HTTP হেডার X-Content-Type-Options: nosniff সাথে পরিবেশিত হয় না
    • ফাইলটি নিম্নলিখিত বিষয়বস্তুর প্রকারগুলির মধ্যে একটি দিয়ে পরিবেশিত হয় :
    • খালি স্ট্রিং
    • "টেক্সট/প্লেইন"
    • "অ্যাপ্লিকেশন/অক্টেট-স্ট্রীম"
    • "অজানা/অজানা"
    • "আবেদন/অজানা"
    • "*/*"

একটি ইনস্টলযোগ্য ফাইল সনাক্ত করতে ব্যর্থ হওয়ার সবচেয়ে সাধারণ কারণ হল সার্ভারটি হেডার পাঠায় X-Content-Type-Options: nosniff । দ্বিতীয় সবচেয়ে সাধারণ কারণ হল যে সার্ভার একটি অজানা বিষয়বস্তুর ধরন পাঠায়—যা আগের তালিকায় নেই। একটি HTTP হেডার সমস্যা সমাধান করতে, হয় সার্ভারের কনফিগারেশন পরিবর্তন করুন অথবা অন্য সার্ভারে .crx ফাইল হোস্ট করার চেষ্টা করুন।

আপডেট করা হচ্ছে

প্রতি কয়েক ঘন্টা, ব্রাউজার একটি আপডেট URL এর জন্য ইনস্টল করা এক্সটেনশনগুলি পরীক্ষা করে৷ প্রতিটির জন্য, এটি একটি আপডেট ম্যানিফেস্ট এক্সএমএল ফাইলের সন্ধানে সেই URL-এ একটি অনুরোধ করে৷

  • একটি আপডেট চেক দ্বারা প্রত্যাবর্তিত বিষয়বস্তু একটি এক্সটেনশনের সর্বশেষ সংস্করণ তালিকাভুক্ত একটি আপডেট ম্যানিফেস্ট XML নথি৷

যদি আপডেট ম্যানিফেস্টে এমন একটি সংস্করণ উল্লেখ করা হয় যা ইনস্টল করা হয়েছে তার চেয়ে সাম্প্রতিকতম, ব্রাউজারটি নতুন সংস্করণ ডাউনলোড এবং ইনস্টল করে। ম্যানুয়াল আপডেটের মতো, নতুন .crx ফাইলটি বর্তমান ইনস্টল করা সংস্করণের মতো একই ব্যক্তিগত কী দিয়ে স্বাক্ষরিত হতে হবে।

দ্রষ্টব্য: ব্যবহারকারীর গোপনীয়তা বজায় রাখার জন্য, Google Chrome স্বয়ংক্রিয় আপডেট ম্যানিফেস্ট অনুরোধ সহ কোনও কুকি শিরোনাম পাঠায় না এবং সেই অনুরোধগুলির প্রতিক্রিয়াগুলিতে কোনও সেট-কুকি শিরোনাম উপেক্ষা করে৷

URL আপডেট করুন

Chrome ওয়েবস্টোরের বাইরে সার্ভারে হোস্ট করা এক্সটেনশনগুলিকে অবশ্যই তাদের manifest.json ফাইলে update_url ক্ষেত্র অন্তর্ভুক্ত করতে হবে৷

{
  "name": "My extension",
  ...
  "update_url": "https://myhost.com/mytestextension/updates.xml",
  ...
}

ম্যানিফেস্ট আপডেট করুন

সার্ভার দ্বারা প্রত্যাবর্তিত আপডেট ম্যানিফেস্ট একটি XML নথি হওয়া উচিত৷

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
  </app>
</gupdate>

এই XML ফর্ম্যাটটি ওমাহা , Google-এর আপডেট পরিকাঠামো দ্বারা ব্যবহৃত যেটি থেকে ধার করা হয়েছে৷ এক্সটেনশন সিস্টেম আপডেট ম্যানিফেস্টের <app> এবং <updatecheck> উপাদানগুলির জন্য নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে:

appid প্যাকেজিং -এ বর্ণিত পাবলিক কী-এর হ্যাশের উপর ভিত্তি করে এক্সটেনশন আইডি তৈরি করা হয়। এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠায় একটি এক্সটেনশনের আইডি প্রদর্শিত হয়
কোডবেস .crx ফাইলের একটি HTTPS URL।
সংস্করণ codebase দ্বারা নির্দিষ্ট করা .crx ফাইল ডাউনলোড করা উচিত কিনা তা নির্ধারণ করতে ক্লায়েন্ট দ্বারা ব্যবহৃত হয়। এটি .crx ফাইলের manifest.json ফাইলের "সংস্করণ"-এর মানের সাথে মেলে।

আপডেট ম্যানিফেস্ট XML ফাইলে একাধিক <app> উপাদান অন্তর্ভুক্ত করে একাধিক এক্সটেনশন সম্পর্কে তথ্য থাকতে পারে।

পরীক্ষামূলক

ডিফল্ট আপডেট চেক ফ্রিকোয়েন্সি কয়েক ঘন্টা, কিন্তু এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠার আপডেট এক্সটেনশন এখন বোতাম ব্যবহার করে একটি আপডেট জোর করে করা যেতে পারে।

এখনই এক্সটেনশন আপডেট করুন

এটি সমস্ত ইনস্টল করা এক্সটেনশনের জন্য পরীক্ষা শুরু করবে।

উন্নত ব্যবহার: অনুরোধ পরামিতি

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

একাধিক এক্সটেনশন হোস্ট করা বিকাশকারীরা অনুরোধের পরামিতি পরীক্ষা করতে পারে, যা আপডেট অনুরোধে এক্সটেনশন আইডি এবং সংস্করণ নির্দেশ করে। এই পরামিতিগুলি সহ এক্সটেনশানগুলিকে স্ট্যাটিক XML ফাইলের পরিবর্তে গতিশীল সার্ভার-সাইড কোড চলমান একই URL থেকে আপডেট করার অনুমতি দেয়৷

অনুরোধের পরামিতিগুলির বিন্যাস হল:

?x=EXTENSION_DATA

যেখানে EXTENSION_DATA বিন্যাসের একটি URL-এনকোডেড স্ট্রিং:

id=EXTENSION\_ID&v=EXTENSION\_VERSION

উদাহরণস্বরূপ, দুটি এক্সটেনশন একই আপডেট URL নির্দেশ করে ( https://test.com/extension_updates.php ):

  • এক্সটেনশন 1
    • আইডি: "আআআআআআআআআআআআআআআআআআআআআআআআ"
    • সংস্করণ: "1.1"
  • এক্সটেনশন 2
    • আইডি: "বিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবিবি।
    • সংস্করণ: "0.4"

প্রতিটি পৃথক এক্সটেনশন আপডেট করার অনুরোধ হবে,

https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1

এবং

https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

একাধিক এক্সটেনশন প্রতিটি অনন্য আপডেট URL এর জন্য একক অনুরোধে তালিকাভুক্ত করা যেতে পারে। উপরের উদাহরণের জন্য, যদি একজন ব্যবহারকারীর উভয় এক্সটেনশন ইনস্টল করা থাকে, তাহলে দুটি অনুরোধ একটি একক অনুরোধে একত্রিত হয়:

https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

যদি একই আপডেট ইউআরএল ব্যবহার করে ইনস্টল করা এক্সটেনশনের সংখ্যা যথেষ্ট বড় হয় যে একটি GET অনুরোধ URL খুব দীর্ঘ (2000টি অক্ষর বা তার বেশি), আপডেট চেক প্রয়োজনে অতিরিক্ত GET অনুরোধগুলি ইস্যু করে।

উন্নত ব্যবহার: সর্বনিম্ন ব্রাউজার সংস্করণ

এক্সটেনশন সিস্টেমে আরও API যোগ করা হলে, একটি এক্সটেনশনের একটি আপডেট সংস্করণ যা শুধুমাত্র ব্রাউজারের নতুন সংস্করণের সাথে কাজ করবে তা প্রকাশ করা হতে পারে। গুগল ক্রোম নিজেই স্বয়ংক্রিয়ভাবে আপডেট হওয়া সত্ত্বেও, ব্যবহারকারীর সংখ্যার অধিকাংশই যে কোনো প্রদত্ত নতুন রিলিজে আপডেট হওয়ার কয়েক দিন সময় নিতে পারে। একটি প্রদত্ত আপডেট শুধুমাত্র Google Chrome সংস্করণে প্রযোজ্য হবে তা নিশ্চিত করতে একটি নির্দিষ্ট সংস্করণে বা তার চেয়ে উচ্চতর সংস্করণে "prodversionmin" অ্যাট্রিবিউট যোগ করুন আপডেট প্রতিক্রিয়া উপাদান.

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0'/>
  </app>
</gupdate>

এটি নিশ্চিত করবে যে ব্যবহারকারীরা শুধুমাত্র Google Chrome 3.0.193.0 বা তার বেশি সংস্করণ চালালেই 2 সংস্করণে স্বয়ংক্রিয়ভাবে আপডেট হবে৷