একটি ওয়েব সার্ভারে কেবল একটি সাধারণ তবে স্বাক্ষরিত সংগ্রহস্থল সেট আপ করুন। যেহেতু বেশিরভাগ অন্যান্য টিউটোরিয়ালগুলি কিছুটা তারিখযুক্ত বা জটিল 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)