কীভাবে এপিটি সংগ্রহস্থল স্থাপন করবেন?


52

আমি একটি সার্ভারে একটি এপিটি সংগ্রহস্থল স্থাপন করতে চাই যা বেশ কয়েকটি প্যাকেজ সরবরাহ করবে।

এক সেট আপ করতে একটি উপায় আছে কি ছাড়া সার্ভারে কোন সফটওয়্যার ইনস্টল করার?

ফাইলগুলি কীভাবে সংগঠিত করতে হবে?


সম্পাদনা: আমি অবশ্যই কিছু ভুল করছি ... কেউ আমাকে সাহায্য করতে পারেন? আমার কাছে http://quickmediasolutions.com/apt/dists এ সংগ্রহস্থল রয়েছে

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

এখানে আমার যুক্ত করা হয়েছে /etc/apt/sources.list:

deb http://quickmediasolutions.com/apt stable main

আপনি যে অ্যাপ্লিকেশনগুলি ডাউনলোড করেছেন সেগুলি কি ধরণের লাইসেন্স সম্পাদনা করতে এবং যুক্ত করতে পারেন? এটি কি ব্যক্তিগত ব্যবহারের জন্য বা আপনি এগুলি বিতরণ করার পরিকল্পনা করছেন ইত্যাদি?
জর্জি কাস্ত্রো

@ জর্জি: আপনার মানে কী? কি অ্যাপ্লিকেশন?
নাথান ওসমান

1
আমি নির্ধারণ করার চেষ্টা করছিলাম যে প্যাকেজটি ওএসএস ছিল আপনি কেবল লঞ্চপ্যাড ব্যবহার করতে পারেন।
জর্জি কাস্ত্রো

@ জর্জি: না, এটি ওএসএস নয়। (আসলে, আমি এটি লিখেছি এটি কেবলমাত্র অ্যাপ্লিকেশন যা এটি নয়))
নাথান ওসমান

উত্তর:


26

তুচ্ছ রিপোজিটরি সেটআপ করা খুব সহজেই ডিপি কেজি-স্ক্যানপ্যাকেজ ব্যবহার করে। এই পৃষ্ঠাটি কিভাবে তুচ্ছ রেপো সেট আপ করার জন্য বর্ণনা দেওয়া আছে এবং এই এক এটি কিভাবে ব্যবহার করতে (উদাহরণস্বরূপ 4 নীচে স্ক্রোল করুন) ব্যাখ্যা করে।


এটি কাজ করতে কিছুটা সমস্যা হচ্ছে। প্রশ্নে আমার আপডেট দেখুন।
নাথান ওসমান

1
দেখে মনে হচ্ছে আপনি একটি "স্বয়ংক্রিয়" রেপো সেট আপ করার চেষ্টা করছেন। একটি (বা কেবল বেশ কয়েকটি) প্যাকেজ (গুলি) এর জন্য, আপনি একটি তুচ্ছ রেপো ব্যবহার করে অনেক ভাল হয়ে যাবেন। আপনার প্যাকেজস . gz স্থানান্তর করার চেষ্টা করুন এবং দ্রুততর চিকিত্সা সমাধানগুলি / আপ্ট / বাইনারি পর্যন্ত সমস্ত উপায়ে ডিবি করুন । তাহলে আপনার উত্স হবে deb http://quickmediasolutions.com/apt binary/
মাইকেল ক্রেনশো

2
পিন করার সময় তুচ্ছ রেপোস উপস্থিত সমস্যাগুলি উপস্থিত করে, তবে হ্যাঁ, কেবলমাত্র কয়েকটি প্যাকেজের জন্য রেপো সেটআপ করার জন্য এগুলি দ্রুততম / সহজতম উপায়। এটি কেবল 2 - 3 প্যাকেজের জন্য একটি পুল রেপো সেট আপ করা নির্বোধ মনে হবে।
টিম পোস্ট

জর্জ, আপনি কি এই কাজটি করতে সক্ষম হন?
মাইকেল ক্রেনশা

@ ম্যাক: আচ্ছা .... এখনও চেষ্টা করার মতো সময় আমার হাতে নেই :) আমি কেবল একটি পিপিএতে সবকিছু আপলোড করে শেষ করেছি।
নাথান ওসমান

40

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

কিছু স্বাক্ষর কী তৈরি করুন

প্রথমে আপনাকে gpgপ্যাকেজ এবং আপনার সংগ্রহস্থলের জন্য একটি স্বাক্ষর কী তৈরি করতে হবে । এটিকে একটি (4) আরএসএ সাইনিং কী, কোনও পাসওয়ার্ড নেই এবং $KEYNAMEজিজ্ঞাসা করার সময় এটি একটি অনন্য দিন। (আরও উদাহরণগুলি dpkg1કી নাম হিসাবে " " ধরে নিবে))

 gpg --gen-key
 gpg -a --export-secret-key dpkg1 > secret.gpg
 gpg -a --export dpkg1            > public.gpg

আমি বললাম কোনও পাসওয়ার্ড নেই, কারণ আপনার ওয়েবসার্ভারে বারবার টাইপ করার জন্য কোনও বিল্টিন বানর নেই। এবং স্বাক্ষরিত প্যাকেজগুলি এবং সংগ্রহস্থলগুলি কেবলমাত্র সে সম্পর্কে আপডেট-পরিচালকদের অভিযোগগুলি পূরণ করার জন্য। কেবলমাত্র /apt/আপনার ওয়েবসার্ভারে নতুন সংগ্রহস্থল ডিরেক্টরিতে দুটি কী আপলোড করুন, তবে আরম্ভের পরেsecret.gpg কীটি মুছুন ।

সিজিআই স্ক্রিপ্ট আপডেট করুন

এটি এর জন্য সহজ আপডেট শেল / সিজিআই স্ক্রিপ্ট:

#!/bin/sh
echo Status: 200 Okay
echo Content-Type: text/plain
echo
echo Rebuilding APT repository:

{
  #-- settings
  export GNUPGHOME=/var/www/usr12345/files
  export KEYNAME=dpkg1
  #-- one-time setup
  if [ ! -e "$GNUPGHOME/secring.gpg" ] ; then
     gpg --import -v -v ./secret.gpg
     gpg --import -v -v ./public.gpg
     gpg --list-keys
  fi

  #-- symlink .deb files from adjacent sub-directories
  find .. -name '*.deb' -exec ln -s '{}' . \;

  #-- build Packages file
  apt-ftparchive packages . > Packages
  bzip2 -kf Packages

  #-- signed Release file
  apt-ftparchive release . > Release
  gpg --yes -abs -u $KEYNAME -o Release.gpg Release

} 2>&1

তিনটি gpgলাইন একবারে চালানো দরকার, কিছু ডিরেক্টরিতে $GNUPGHOME(ডকুমেন্টের মূলের উপরে) জিপিজি সেটআপ শুরু করতে । secret.gpgসাফল্যের পরে মুছুন ।

এই ছোট শেল স্ক্রিপ্ট এক অনন্য বৈশিষ্ট্য এটি কোনো কবুল করেন *.deb(প্রয়োজনগুলো .htaccess ফাইল যেগুলি আপনি ড্রপ, কিন্তু যাও recursively অনুসন্ধান করে অন্যদের জন্য (এক স্তর উপরে থেকে শুরু), এবং তাদের মধ্যে symlinks। Options FollowSymLinksঅবশেষে।)

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

কারণ এটি "তুচ্ছ" অ্যাপ্ট রিপোজিটরির জন্য এটিতে নিম্নলিখিত apt-sources.listপ্রবেশের প্রয়োজন:

deb http://example.org/deb/  ./    # Simple signed repo

এটি একক-আর্কিটেকচার ভান্ডারগুলির জন্য উপযুক্ত এবং যদি আপনি কয়েকশ প্যাকেজ আশা করেন না।

প্যাকেজ স্বাক্ষর

একবার আপনার জিপিজি কীগুলি সেট আপ করার পরে আপনার স্বতন্ত্র প্যাকেজগুলিতে স্বাক্ষর করাও নগণ্য:

dpkg-sig -k dpkg1 -s builder *.deb

(এটি ওয়ার্কস্টেশনে করা উচিত যেখানে প্যাকেজগুলি নির্মিত হয়, সংগ্রহস্থল ওয়েবসার্ভারে নয়))

স্বাক্ষরবিহীন সংগ্রহস্থল

আপনার যদি স্বাক্ষরিত প্যাকেজগুলির প্রয়োজন না হয় তবে আপনি আপডেট স্ক্রিপ্টটি স্ল্যাশ করে কেবল:

  dpkg-scanpackages . > Packages
  bzip2 -kf Packages

যা এখনও সাধারণ ব্যবহারকারীরা ব্যবহার করতে পারেন তবে এর জন্য একটি কাস্টম পতাকা প্রয়োজন apt.sources:

deb [trusted=yes] http://apt.example.org/deb/ ./

তবে দয়া করে প্রতিটি trusted=yesকিছুর জন্য পতাকাটি অভ্যাসগতভাবে ব্যবহার করবেন না , বা আপনি যদি প্যাকেজ উত্স সম্পর্কে নিশ্চিত নন তবে।

ব্যবহারের জন্য

শেষ ব্যবহারকারীদের জন্য, কেবলমাত্র একটি HEADER.htmlডিরেক্টরি সংগ্রহস্থল ডিরেক্টরিতে ফেলে দিন। অ্যাপাচস mod_auto_indexএই নোটটি পুনরায় সংশোধন করবে:

<h1>http://example.org/apt/</h1>
<dl>
<dt>Add this repository to /etc/apt/sources.list as:
 <dd><kbd>deb http://example.org/apt/ ./  # example repo</kbd>
<dt>Import verification key with:
 <dd><kbd>wget -q http://http://example.org/apt/public.gpg -O- | sudo apt-key add -</kbd>
</dl>

বিকল্প

আজকাল সংগ্রহস্থল পরিচালনা স্বয়ংক্রিয় করার জন্য কয়েকটি সরঞ্জাম রয়েছে। এবং এমনকি সংগ্রহস্থল অনলাইন হোস্ট এবং প্যাকেজ বিল্ড পরিষেবাদি ( রত্ন , প্যাকেজক্লাউড , বিন্ট্রে ইত্যাদি) রয়েছে

  • একটি বরং সুবিধাজনক বিকল্প প্রাইম হয় । এটি একটি রুবি স্ক্রিপ্ট, যা জটিল এপিটি এবং YUM রেপো তৈরি করে। (তবে আসুন আমরা আশা করি আরপিএম শেষ অবধি শীঘ্রই মারা যাবে ..) - এটি প্রতি ইনস্টল সেরা gem install prm

  • এবং এটিকে স্বয়ংক্রিয়ভাবে চালানোর জন্য আমি একটি ছোট স্ক্রিপ্টও লিখেছি: http://apt.incolve-once.org/apt-phparchive - দয়া করে এটি অতিরিক্ত মজবুত এবং পিএইচপি-তে লিখিত হয়নি (একবারের জন্য এটি কাকতালীয়), এটি মূলত ডিইবি, এবং আরপিএম-ওভার-এপিটি এবং ফার বান্ডিলগুলির জন্যই ছিল।

যেহেতু এটি মূল প্রশ্নের সাথে নিবিড়ভাবে সম্পর্কিত, তাই আরও সহজেই ডেবিয়ান প্যাকেজ তৈরির সরঞ্জাম রয়েছে are কিছুটা পুরানো: ইপিএম । আরও অনেক সমসাময়িক: এফপিএম । এবং আমার ব্যক্তিগত কাঁটাচামচ: এক্সপিএম (স্ক্রিপ্টিং ভাষার অ্যাপ্লিকেশনগুলির প্যাকেজিংয়ের জন্য আরও অলস পদ্ধতি approach)


1
আমি যখন রেপোটি ব্যবহার করতে চাই তখন আমি কীভাবে জিপিজি কী যুক্ত করব?
ব্রুস সান

1
সাধারণত এর মতো কিছুwget …/public.gpg -O- | apt-key add -
মারিও

আমি একাধিক আর্কিটেকচার সমর্থন করতে না চাইলে আমার কী পরিবর্তন করতে হবে?
তারাবিআমরনোলাবস

1
সম্পূর্ণরূপে নিশ্চিত নয়, তবে আমার মনে হয় dpkg-scanpackages -mযথেষ্ট হতে পারে। এটি একই রিলিজ ফাইলে এখনও সমস্ত আর্কিটেকচারের তালিকা তৈরি করবে। তবে যতক্ষণ না প্রতিটি .দেবের একটি স্বতন্ত্র নাম থাকে / বা পৃথক সাবডিয়ারগুলিতে (amd64 /, all /) সঞ্চিত থাকে এটির কাজ করা উচিত। অন্য যে কোনও জটিল সংগ্রহস্থল সরঞ্জামের জন্য যান।
মারিও

7

হ্যাঁ. তুমি এটি করতে পারো. আপনাকে কেবল ফাইলগুলি সঠিক উপায়ে সংগঠিত করতে হবে এবং সূচি ফাইলগুলি তৈরি করতে হবে। আপনি যদি নিজের ওয়েব সার্ভারের ডকুমেন্টের মূলের ভিতরে ডিরেক্টরি কাঠামো রেখে দেন তবে ওয়েব সার্ভারের মাধ্যমে প্যাকেজগুলি অ্যাক্সেস করা যেতে পারে।

ফাইলগুলি কীভাবে সংগঠিত করা প্রয়োজন এবং সূচক ফাইলগুলি কীভাবে তৈরি করা হবে সে সম্পর্কে এখানে একটি বিশদ বিবরণ।

আপনি যদি একটি প্যাকেজ ইনস্টল করতে ইচ্ছুক হন তবে আপনি ডিপ্রপো নামক একটি সরঞ্জামও ব্যবহার করতে পারেন । এটি প্রশাসনকে আরও সুবিধাজনক করে তুলবে।


@txwikinger: কারনেই আমি প্যাকেজগুলি ইনস্টল করতে পারবেন না কারণ সার্ভার CentOS চলমান হয় :)
নাথন ওসমান

ভাল। তোমার দরকার নেই আপনি একটি ভিন্ন কম্পিউটারে সবকিছু তৈরি করতে পারেন এবং কেবল পুরো গাছটি
সেন্টো

হ্যাঁ, আমি অবশ্যই ডিপ্রপোর ব্যবহারকে দ্বিতীয় করে দেব। এটি আপনার জীবনকে আরও সহজ করে তুলবে। অন্য কোনও কম্পিউটারে রেপো তৈরি করা একটি বৈশিষ্ট্যও হতে পারে, যদি এটি আপনাকে আপনার স্বাক্ষর কীটি আরও ভালরূপে সুরক্ষিত করার অনুমতি দেয়।
andol

@ অ্যান্ডল এবং @ টেক্সউইকিঞ্জার: আমি চেষ্টা করছি তবে সমস্যা হচ্ছে। আমার আপডেট করা প্রশ্ন দেখুন।
নাথান ওসমান

আপনার ডিস্ট ফাইলের জন্য আপনার এখনও প্রয়োজন হবে / / বাইনারি- << স্পিফিক আর্চ>।
andol


0

মারিওর উত্তর অনুসরণের পরে যে কেউ এই ত্রুটির মুখোমুখি হন:

Unable to find expected entry 'Packages' in Release file (Wrong sources.list entry or malformed file)

নিম্নলিখিতটি করুন:

dpkg-scanpackages debs /dev/null > Packages
gzip -k Packages
apt-ftparchive release . > Release
gpg --default-key $KEYID -abs -o Release.gpg Release

আমি আমার *.debফাইলগুলি debsফোল্ডারে রেখেছি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.