এটি হল গেস্টএফস-হ্যাকিং কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
guestfs-হ্যাকিং - libguestfs-এ প্রসারিত এবং অবদান
বর্ণনাঃ
এই ম্যানুয়াল পৃষ্ঠাটি হ্যাকারদের জন্য যারা libguestfs নিজেই প্রসারিত করতে চান।
এক নজরে OF দ্য উৎস কোড
Libguestfs উত্সটি github সংগ্রহস্থলে অবস্থিত
https://github.com/libguestfs/libguestfs
libguestfs (RPC, বাইন্ডিং, ডকুমেন্টেশন) এ প্রচুর পরিমাণে বয়লারপ্লেট কোড
উত্পন্ন এর মানে হল অনেক সোর্স ফাইল ক থেকে অনুপস্থিত বলে মনে হবে
সোজা গিট চেকআউট। আপনাকে জেনারেটর চালাতে হবে (."/autogen.sh && make -C
জেনারেটর") সেই ফাইলগুলি তৈরি করার জন্য।
Libguestfs একটি autotools-ভিত্তিক বিল্ড সিস্টেম ব্যবহার করে, যেখানে প্রধান ফাইলগুলি রয়েছে configure.ac
এবং Makefile.am. দ্য উত্পাদক সাবডিরেক্টরীতে জেনারেটর, প্লাস ফাইল বর্ণনা করা থাকে
API দ্য src সাবডিরেক্টরিতে লাইব্রেরির উৎস রয়েছে। দ্য যন্ত্রপাতি এবং অপদেবতা
সাবডিরেক্টরিগুলিতে সেই কোডের উত্স থাকে যা অ্যাপ্লায়েন্স তৈরি করে এবং কোডটি
যেটি যথাক্রমে অ্যাপ্লায়েন্সে চলে। অন্যান্য ডিরেক্টরি বিভাগে কভার করা হয়
নীচে "সোর্স কোড সাবডাইরেক্টরিস"।
সমস্ত API এন্ট্রি পয়েন্টগুলি কিছু জেনারেটেড কোডের মাধ্যমে যায় তা ছাড়াও, লাইব্রেরি হল
সোজা (আসলে, এমনকি জেনারেট করা কোডটি পঠনযোগ্য হওয়ার জন্য ডিজাইন করা হয়েছে এবং হওয়া উচিত
সাধারণ কোড হিসাবে পড়া হবে)। কিছু অ্যাকশন সম্পূর্ণভাবে লাইব্রেরিতে চালিত হয় এবং সি হিসাবে লেখা হয়
অধীনে ফাইলে ফাংশন src. অন্যদের ডেমনে ফরোয়ার্ড করা হয় যেখানে (কিছু পরে
জেনারেটেড আরপিসি মার্শালিং) তারা ফাইলের অধীনে সি ফাংশন হিসাবে উপস্থিত হয় অপদেবতা.
উৎস থেকে তৈরি করতে, প্রথমে "README" ফাইলটি পড়ুন।
স্থানীয়* নথি পত্র
শীর্ষস্থানীয় উৎস ডিরেক্টরির ফাইল যা উপসর্গ দিয়ে শুরু হয় স্থানীয়* গিট দ্বারা উপেক্ষা করা হয়।
এই ফাইলগুলিতে স্থানীয় কনফিগারেশন বা স্ক্রিপ্ট থাকতে পারে যা আপনাকে libguestfs তৈরি করতে হবে।
নিয়মানুযায়ী, আমি একটি ফাইল নামক আছে স্থানীয় কনফিগার যা চারপাশে একটি সাধারণ মোড়ক
autogen.sh স্থানীয় কনফিগার কাস্টমাইজেশন রয়েছে যা আমার প্রয়োজন:
. localenv
./autogen.sh \
--with-default-backend=libvirt \
--সক্ষম-জিসিসি-সতর্কতা \
--enable-gtk-doc \
-সি \
"$@"
তাই আমি libguestfs তৈরি করতে এটি ব্যবহার করতে পারি:
./localconfigure && make
শীর্ষ বিল্ড ডিরেক্টরিতে একটি ফাইল থাকলে বলা হয় localenv, তারপর এটি দ্বারা উৎস করা হবে
"বানান"। এই ফাইলটিতে প্রয়োজনীয় স্থানীয় পরিবেশের ভেরিয়েবল থাকতে পারে, যেমন। এড়িয়ে যাওয়ার জন্য
পরীক্ষা:
# একটি বিকল্প পাইথন বাইনারি ব্যবহার করুন।
PYTHON=python3 রপ্তানি করুন
# এই পরীক্ষাটি এড়িয়ে যান, এটি ভেঙে গেছে।
রপ্তানি SKIP_TEST_BTRFS_FSCK=1
মনে রাখবেন যে localenv শীর্ষ মেকফাইল দ্বারা অন্তর্ভুক্ত করা হয়েছে (তাই এটি একটি মেকফাইল খণ্ড)। কিন্তু যদি
এটা আপনার দ্বারা উত্স করা হয় স্থানীয় কনফিগার script তারপর এটি একটি শেল স্ক্রিপ্ট হিসাবে ব্যবহৃত হয়।
যোগ করার পদ্ধতি A নতুন এপিআই কর্ম
কারণ libguestfs-এ প্রচুর পরিমাণে বয়লারপ্লেট কোড তৈরি হয়, এটি এটিকে সহজ করে তোলে
libguestfs API প্রসারিত করতে।
একটি নতুন API অ্যাকশন যোগ করতে দুটি পরিবর্তন আছে:
1. আপনাকে কলের একটি বিবরণ যোগ করতে হবে (নাম, পরামিতি, রিটার্ন টাইপ, পরীক্ষা,
ডকুমেন্টেশন) থেকে generator/actions.ml.
এপিআই অ্যাকশনের দুটি ধরণের আছে, কলটি তে যায় কিনা তার উপর নির্ভর করে
অ্যাপ্লায়েন্সে ডেমন, বা সম্পূর্ণরূপে লাইব্রেরি দ্বারা পরিসেবা করা হয় (এ "আর্কিটেকচার" দেখুন
অতিথি-অভ্যন্তরীণ(3))। "guestfs_sync" ইন অতিথি(3) পূর্বের একটি উদাহরণ,
যেহেতু সিঙ্কটি অ্যাপ্লায়েন্সে করা হয়। "guestfs_set_trace" ইন অতিথি(3) একটি
পরেরটির উদাহরণ, যেহেতু একটি ট্রেস পতাকা হ্যান্ডেল এবং সমস্ত ট্রেসিংয়ে বজায় রাখা হয়
লাইব্রেরির দিকে করা হয়।
বেশিরভাগ নতুন অ্যাকশন প্রথম ধরনের, এবং "ডেমন_ফাংশন" তালিকায় যোগ করা হয়।
প্রতিটি ফাংশনের একটি অনন্য পদ্ধতি নম্বর রয়েছে যা RPC প্রোটোকলে ব্যবহৃত হয় যা বরাদ্দ করা হয়
সেই কর্মের জন্য যখন আমরা libguestfs প্রকাশ করি এবং পুনরায় ব্যবহার করা যাবে না। সর্বশেষ নিন
পদ্ধতি সংখ্যা এবং এটি বৃদ্ধি.
দ্বিতীয় ধরনের লাইব্রেরি-শুধুমাত্র কর্মের জন্য, "non_daemon_functions" তালিকায় যোগ করুন।
যেহেতু এই ফাংশনগুলি লাইব্রেরি দ্বারা পরিসেবা করা হয় এবং RPC এর উপর ভ্রমণ করে না
ডেমনের মেকানিজম, এই ফাংশনগুলির একটি পদ্ধতি নম্বরের প্রয়োজন নেই, এবং তাই
পদ্ধতি নম্বর "-1" এ সেট করা হয়েছে।
2. কর্মটি বাস্তবায়ন করুন (C-তে):
ডেমন কর্মের জন্য, "do_" ফাংশন বাস্তবায়ন করুন "ডেমন/" ডিরেক্টরিতে।
লাইব্রেরি কর্মের জন্য, "guestfs_impl_" ফাংশন বাস্তবায়ন করুন ""src/" এ
ডিরেক্টরি.
উভয় ক্ষেত্রে, কি করতে হবে তার উদাহরণ হিসাবে অন্য ফাংশন ব্যবহার করুন।
এই পরিবর্তনগুলি করার পরে, কম্পাইল করতে "make" ব্যবহার করুন।
মনে রাখবেন যে আপনাকে আরপিসি, ভাষা বাইন্ডিং, ম্যানুয়াল পৃষ্ঠা বা অন্য কিছু প্রয়োগ করতে হবে না
অন্য এটি সবই OCaml বর্ণনা থেকে স্বয়ংক্রিয়ভাবে তৈরি হয়।
যোগ করার পদ্ধতি পরীক্ষা-নিরীক্ষা জন্য AN এপিআই কর্ম
আপনি প্রতি API কলে শূন্য বা যতগুলি পরীক্ষা চান তা সরবরাহ করতে পারেন। পরীক্ষাগুলোও হতে পারে
API বর্ণনার অংশ হিসাবে যোগ করা হয়েছে (generator/actions.ml), অথবা কিছু বিরল ক্ষেত্রে আপনি
একটি স্ক্রিপ্ট "টেস্ট/*/" এ ড্রপ করতে চাইতে পারে। মনে রাখবেন যে "পরীক্ষা/*/" এ একটি স্ক্রিপ্ট যোগ করা হয়
ধীর, তাই সম্ভব হলে প্রথম পদ্ধতি ব্যবহার করুন।
আপনি একটি API পরীক্ষা যোগ করার সময় নিম্নলিখিত পরীক্ষা পরিবেশ ব্যবহার করা হয় actions.ml.
পরীক্ষার পরিবেশে 4টি ব্লক ডিভাইস রয়েছে:
/ Dev / sda 500MB
পরীক্ষার জন্য সাধারণ ব্লক ডিভাইস।
/ Dev / sdb 500MB
আপনার / dev / sdb1 ফাইল সিস্টেম লেখার ক্রিয়াকলাপ পরীক্ষা করার জন্য ব্যবহৃত একটি ext2 ফাইল সিস্টেম।
আপনার / dev / SDC 10MB
কয়েকটি পরীক্ষায় ব্যবহৃত হয় যেখানে দুটি ব্লক ডিভাইসের প্রয়োজন হয়।
আপনার / dev / SDD
স্থির বিষয়বস্তু সহ ISO (দেখুন images/test.iso).
একটি যুক্তিসঙ্গত সময়ের মধ্যে পরীক্ষা চালানোর জন্য, libguestfs যন্ত্রপাতি এবং
ব্লক ডিভাইসগুলি পরীক্ষার মধ্যে পুনরায় ব্যবহার করা হয়। তাই "guestfs_kill_subprocess" পরীক্ষা করার চেষ্টা করবেন না
অতিথি(3) :-এক্স
প্রতিটি পরীক্ষা একটি প্রাথমিক দৃশ্যের সাথে শুরু হয়, "Init*" অভিব্যক্তিগুলির একটি ব্যবহার করে নির্বাচিত হয়,
বর্ণিত generator/types.ml. এগুলি একটিতে উপরে উল্লিখিত ডিস্কগুলিকে আরম্ভ করে
নথিভুক্ত হিসাবে বিশেষ উপায় type.ml. আপনি সম্পর্কে কিছু অনুমান করা উচিত নয়
অন্যান্য ডিস্কের পূর্ববর্তী বিষয়বস্তু যা আরম্ভ করা হয়নি।
আপনি যেকোনো পৃথক পরীক্ষায় একটি পূর্বশর্ত ধারা যোগ করতে পারেন। এটি একটি রান-টাইম চেক,
যা, যদি এটি ব্যর্থ হয়, পরীক্ষাটি এড়িয়ে যাওয়ার কারণ হয়। একটি কমান্ড পরীক্ষা করা হলে দরকারী যা
libguestfs বিল্ডের সমস্ত বৈচিত্রের উপর কাজ নাও করতে পারে। একটি পরীক্ষা যার পূর্বশর্ত রয়েছে
"সর্বদা" মানে নিঃশর্তভাবে চালানো।
উপরন্তু, প্যাকেজাররা আগে পরিবেশের ভেরিয়েবল সেট করে পৃথক পরীক্ষাগুলি এড়িয়ে যেতে পারে
চলমান "চেক করুন"।
SKIP_TEST_ _ =1
যেমন: "SKIP_TEST_COMMAND_3=1" "guestfs_command" এর পরীক্ষা #3 এড়িয়ে যায় অতিথি(3).
বা:
SKIP_TEST_ =1
যেমন: "SKIP_TEST_ZEROFREE=1" সমস্ত "guestfs_zerofree" এড়িয়ে যায় অতিথি(3) পরীক্ষা।
প্যাকেজরা উদাহরণ স্বরূপ সেট করে শুধুমাত্র নির্দিষ্ট পরীক্ষা চালাতে পারে:
TEST_ONLY="vfs_type zerofree"
দেখ tests/c-api/tests.c এই এনভায়রনমেন্ট ভেরিয়েবল কিভাবে কাজ করে তার আরো বিস্তারিত জানার জন্য।
ডিবাগিং নতুন এপিআই ক্রিয়াগুলি
সেগুলি জমা দেওয়ার আগে নতুন কর্মের কাজ পরীক্ষা করুন।
আপনি নতুন কমান্ড চেষ্টা করার জন্য গেস্টফিশ ব্যবহার করতে পারেন।
ডেমন ডিবাগ করা একটি সমস্যা কারণ এটি একটি ন্যূনতম পরিবেশে চলে। যাহোক
আপনি ডেমন থেকে stderr-এ বার্তা fprintf করতে পারেন, এবং আপনি ব্যবহার করলে সেগুলি দেখাবে
"গেস্টফিশ -ভি"।
যোগ করার পদ্ধতি A নতুন ভাষা বাঁধাই
সমস্ত ভাষা বাইন্ডিং অবশ্যই জেনারেটর দ্বারা তৈরি করা উচিত (দেখুন উত্পাদক সাবডিরেক্টরি)।
এখনও এই জন্য কোন ডকুমেন্টেশন আছে. আমরা আপনাকে একটি বিদ্যমান বাঁধাই দেখার পরামর্শ দিই, যেমন।
generator/ocaml.ml or generator/perl.ml.
যোগ করার পদ্ধতি পরীক্ষা-নিরীক্ষা জন্য ভাষা বাইন্ডিং
ভাষা বাইন্ডিং পরীক্ষার সাথে আসা উচিত. আগে ল্যাঙ্গুয়েজ বাইন্ডিং এর পরীক্ষা ছিল
বরং অ্যাড-হক, তবে আমরা প্রতিটি ভাষার পরীক্ষার সেটকে আনুষ্ঠানিক করার চেষ্টা করছি
বাঁধাই ব্যবহার করা উচিত।
বর্তমানে শুধুমাত্র OCaml এবং পার্ল বাইন্ডিং প্রকৃতপক্ষে পরীক্ষার সম্পূর্ণ সেট বাস্তবায়ন করে, এবং
OCaml বাইন্ডিংগুলি ক্যানোনিকাল, তাই আপনার OCaml পরীক্ষাগুলি যা করে তা অনুকরণ করা উচিত৷
এটি পরীক্ষার দ্বারা ব্যবহৃত নম্বরিং স্কিম:
- 000+ মৌলিক পরীক্ষা:
010 লাইব্রেরি লোড করুন
020 তৈরি করুন
030 তৈরি-পতাকা
040 একাধিক হ্যান্ডেল তৈরি করুন
050 পরীক্ষা সেটিং এবং কনফিগার বৈশিষ্ট্য পাওয়া
060 সুস্পষ্ট বন্ধ
065 অন্তর্নিহিত বন্ধ (GC'd ভাষায়)
070 optargs
- 100 লঞ্চ করুন, পার্টিশন এবং এলভি এবং ফাইল সিস্টেম তৈরি করুন
- 400+ ইভেন্ট:
410 ক্লোজ ইভেন্ট
420 লগ বার্তা
430 অগ্রগতি বার্তা
- 800+ রিগ্রেশন পরীক্ষা (ভাষার জন্য নির্দিষ্ট)
- ভাষার জন্য 900+ অন্য কোনো কাস্টম পরীক্ষা
পরীক্ষা চালানোর সময় সময় বাঁচাতে, শুধুমাত্র 100, 430, 800+, 900+ হ্যান্ডেল চালু করা উচিত।
ফরম্যাটিং কোড
আমাদের সি সোর্স কোড সাধারণত কিছু মৌলিক কোড-ফরম্যাটিং নিয়ম মেনে চলে। দ্য
বিদ্যমান কোড বেস এই ফ্রন্টে সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ নয়, তবে আমরা এটি পছন্দ করি
অবদান কোড একইভাবে ফরম্যাট করা হবে. সংক্ষেপে, ইন্ডেন্টেশনের জন্য স্পেস-নট-ট্যাব ব্যবহার করুন,
প্রতিটি ইন্ডেন্টেশন স্তরের জন্য 2টি স্পেস ব্যবহার করুন এবং তা ছাড়া, K&R শৈলী অনুসরণ করুন।
আপনি যদি Emacs ব্যবহার করেন, তাহলে আপনার স্টার্ট-আপ ফাইলগুলির একটিতে নিম্নলিখিত যোগ করুন (যেমন, ~/.emacs),
আপনি সঠিকভাবে ইন্ডেন্টেশন পেয়েছেন তা নিশ্চিত করতে সাহায্য করতে:
;;; libguestf-এ, সর্বত্র স্পেস সহ ইন্ডেন্ট করুন (ট্যাব নয়)।
;;; ব্যতিক্রম: মেকফাইল এবং চেঞ্জলগ মোড।
(অ্যাড-হুক 'ফাইন্ড-ফাইল-হুক
'(lambda () (যদি (এবং বাফার-ফাইল-নাম
(স্ট্রিং-ম্যাচ "/libguestfs\\>"
(বাফার-ফাইল-নাম))
(না (স্ট্রিং-সমান মোড-নাম "লগ পরিবর্তন করুন"))
(না (স্ট্রিং-সমান মোড-নাম "মেকফাইল")))
(setq ইন্ডেন্ট-ট্যাব-মোড শূন্য))))
;;; libguestf-এ C উৎস সম্পাদনা করার সময়, এই স্টাইলটি ব্যবহার করুন।
(defun libguestfs-c-mode ()
"libguestfs-এর সাথে ব্যবহারের জন্য সামঞ্জস্যপূর্ণ ডিফল্ট সহ সি মোড।"
(ইন্টারেক্টিভ)
(c-সেট-স্টাইল "K&R")
(setq সি-ইন্ডেন্ট-লেভেল 2)
(setq c-বেসিক-অফসেট 2))
(অ্যাড-হুক 'সি-মোড-হুক
'(lambda () (if (string-match "/libguestfs\\>")
(বাফার-ফাইল-নাম))
(libguestfs-c-মোড))))
পরীক্ষামূলক তোমার পরিবর্তন
কম্পাইল করার সময় সতর্কতা সক্ষম করুন (এবং এটি খুঁজে পাওয়া যেকোনো সমস্যা সমাধান করুন):
./configure --enable-gcc-warnings
দরকারী লক্ষ্যগুলি হল:
"চেক করুন"
নিয়মিত টেস্ট স্যুট চালায়।
এটি নিয়মিত অটোমেক "TESTS" লক্ষ্য ব্যবহার করে বাস্তবায়িত হয়। অটোমেক দেখুন
বিস্তারিত তথ্যের জন্য ডকুমেন্টেশন।
"চেক-ভালগ্রিন্ড তৈরি করুন"
ভ্যালগ্রিন্ডের অধীনে টেস্ট স্যুটের একটি উপসেট চালায়।
কোন Makefile.am যে গাছে একটি "চেক-ভালগ্রিন্ড:" টার্গেট আছে তা এটি দ্বারা চালিত হবে
নিয়ম.
"চেক-ভালগ্রিন্ড-স্থানীয়-অতিথি তৈরি করুন"
স্থানীয়ভাবে ইনস্টল করা libvirt গেস্ট ব্যবহার করে valgrind-এর অধীনে টেস্ট স্যুটের একটি উপসেট চালায়
(শুধুমাত্র পাঠযোগ্য).
"চেক-ডাইরেক্ট করুন"
ডিফল্ট অ্যাপ্লায়েন্স ব্যাক-এন্ড ব্যবহার করে সমস্ত পরীক্ষা চালায়। এটি শুধুমাত্র তখনই প্রভাব ফেলবে যদি একটি অ-
"./configure --with-default-backend=..." ব্যবহার করে ডিফল্ট ব্যাকএন্ড নির্বাচন করা হয়েছিল
"চেক-ভালগ্রিন্ড-ডাইরেক্ট করুন"
ডিফল্ট অ্যাপ্লায়েন্স ব্যাক-এন্ড ব্যবহার করে ভ্যালগ্রিন্ডের অধীনে টেস্ট স্যুটের একটি উপসেট চালান।
"চেক-ইউএমএল তৈরি করুন"
ইউজার-মোড লিনাক্স ব্যাকএন্ড ব্যবহার করে সমস্ত পরীক্ষা চালায়।
যেহেতু ইউজার-মোড লিনাক্স কার্নেলের জন্য কোন আদর্শ অবস্থান নেই, আপনি আছে নির্ধারণ করা
কার্নেল চিত্রের দিকে নির্দেশ করতে "LIBGUESTFS_HV", যেমন:
চেক-uml LIBGUESTFS_HV= তৈরি করুন~/d/linux-um/vmlinux
"চেক-ভালগ্রিন্ড-উএমএল তৈরি করুন"
ভ্যালগ্রিন্ডের অধীনে ইউজার-মোড লিনাক্স ব্যাকএন্ড ব্যবহার করে সমস্ত পরীক্ষা চালায়।
উপরের মত, কার্নেলের দিকে নির্দেশ করতে আপনাকে "LIBGUESTFS_HV" সেট করতে হবে।
"আপস্ট্রিম-কিউমুর সাথে চেক করুন"
একটি স্থানীয় qemu বাইনারি ব্যবহার করে সমস্ত পরীক্ষা চালায়। এটি QEMUDIR-এ কিউমু বাইনারি খোঁজে
(এ ডিফল্ট $HOME/d/qemu), কিন্তু আপনি কমান্ডের অন্য ডিরেক্টরিতে এটি সেট করতে পারেন
লাইন, যেমন:
আপস্ট্রিম-কিউমুর সাথে চেক করুন QEMUDIR=/usr/src/qemu
"আপস্ট্রিম-লিবভার্টের সাথে চেক করুন"
একটি স্থানীয় libvirt ব্যবহার করে সমস্ত পরীক্ষা চালায়। এটি শুধুমাত্র libvirt ব্যাকএন্ড হলেই প্রভাব ফেলবে
"./configure --with-default-backend=libvirt" ব্যবহার করে নির্বাচন করা হয়েছিল
এটি LIBVIRTDIR এ libvirt সন্ধান করে (এতে ডিফল্ট $HOME/d/libvirt), কিন্তু আপনি এটি সেট করতে পারেন
কমান্ড লাইনের অন্য ডিরেক্টরিতে, যেমন:
আপস্ট্রিম-লিবভার্টের সাথে চেক করুন LIBVIRTDIR=/usr/src/libvirt
"ধীরে চেক করুন"
কিছু ধীর/দীর্ঘ-চলমান পরীক্ষা চালায় যা ডিফল্টরূপে চালানো হয় না।
কোন Makefile.am যে গাছে "চেক-স্লো:" টার্গেট আছে সেটি এই নিয়ম দ্বারা চালিত হবে।
"সব চেক করুন"
সমস্ত "চেক করুন*" নিয়ম চালানোর সমতুল্য।
"চেক-রিলিজ করুন"
"চেক করুন*" নিয়মগুলির একটি উপসেট চালায় যা একটি টারবল হওয়ার আগে পাস করতে হবে৷
মুক্তি বর্তমানে এটি হল:
· চেক
· চেক-ভালগ্রিন্ড
· সরাসরি চেক
· চেক-ভালগ্রিন্ড-ডাইরেক্ট
· চেক-স্লো
"ইনস্টল চেক করুন"
libguestfs এর ইনস্টল করা অনুলিপিতে "চেক করুন" চালান।
ইনস্টল করা libguestfs-এর সংস্করণ এবং libguestfs-এর সংস্করণ পরীক্ষা করা হচ্ছে
উৎস গাছ একই হতে হবে.
না:
./autogen.sh
পরিষ্কার করুন ||:
করা
ইনস্টল চেক করুন
ডেমন CUSTOM এ প্রিন্টএফ ফরম্যাটার
ডেমন কোডে আমরা কাস্টম প্রিন্টএফ ফরম্যাটার %Q এবং %R তৈরি করেছি, যা ব্যবহার করা হয়
শেল উদ্ধৃতি না.
%Q সরল শেল উদ্ধৃত স্ট্রিং। যেকোন স্পেস বা অন্যান্য শেল অক্ষর আপনার জন্য পালিয়ে গেছে।
%R এর মত %Q ছাড়া স্ট্রিংটিকে একটি পাথ হিসাবে বিবেচনা করা হয় যা sysroot দ্বারা উপসর্গযুক্ত।
উদাহরণ স্বরূপ:
asprintf (&cmd, "cat %R", পথ);
তৈরি করবে "cat/sysroot/some\ path\ with\ spaces"
বিঃদ্রঃ: Do না আপনি যখন "কমান্ড{,r,v,rv}()" এ প্যারামিটারগুলি পাস করছেন তখন এগুলি ব্যবহার করুন
ফাংশন এই পরামিতিগুলি উদ্ধৃত করার প্রয়োজন নেই কারণ সেগুলি এর মাধ্যমে পাস করা হয়নি৷
শেল (পরিবর্তে, সরাসরি exec)। আপনি সম্ভবত "sysroot_path()" ফাংশন ব্যবহার করতে চান
যাহোক.
জমা দেওয়া তোমার নতুন এপিআই ক্রিয়াগুলি
মেইলিং তালিকায় প্যাচ জমা দিন: http://www.redhat.com/mailman/listinfo/libguestfs এবং
সিসি থেকে [ইমেল সুরক্ষিত].
আন্তর্জাতিকীকরণ (I18N) সাপোর্ট
আমরা লাইব্রেরিতে i18n (যেকোন ভাবেই হোক) সমর্থন করি।
তবে ডেমন থেকে অনেক বার্তা আসে এবং আমরা এই মুহূর্তে সেগুলি অনুবাদ করি না।
একটি কারণ হল যে অ্যাপ্লায়েন্সে সাধারণত এটি থেকে সমস্ত লোকেল ফাইল মুছে ফেলা হয়, কারণ
তারা অনেক জায়গা নেয়। তাই আমরা তাদের কিছু পড়তে হবে, সেইসাথে আমাদের অনুলিপি
পিও ফাইল অ্যাপ্লায়েন্সে।
ডিবাগিং বার্তাগুলি কখনই অনুবাদ করা হয় না, যেহেতু সেগুলি প্রোগ্রামারদের উদ্দেশ্যে।
উৎস কোড সাবডিরেক্টরিজ
শ্রেণীবদ্ধ করা
virt-অ্যালাইনমেন্ট-স্ক্যান(1) কমান্ড এবং ডকুমেন্টেশন।
যন্ত্রপাতি
libguestfs অ্যাপ্লায়েন্স, বিল্ড স্ক্রিপ্ট এবং তাই.
সজোরে আঘাত
ব্যাশ ট্যাব-সম্পূর্ণ স্ক্রিপ্ট।
বিল্ড-অক্স
অটোটুল দ্বারা ব্যবহৃত বিভিন্ন বিল্ড স্ক্রিপ্ট।
নির্মাতা
virt-নির্মাতা(1) কমান্ড এবং ডকুমেন্টেশন।
বিড়াল সার্জারির virt-বিড়াল(২০১১), virt-ফাইলসিস্টেম(২০১১), virt-লগ(1) এবং virt-ls(1) আদেশ এবং
ডকুমেন্টেশন।
contrib
বাইরের অবদান, পরীক্ষামূলক অংশ।
কাস্টমাইজ
virt-কাস্টমাইজ করা(1) কমান্ড এবং ডকুমেন্টেশন।
অপদেবতা
ডেমন যেটি libguestfs অ্যাপ্লায়েন্সের ভিতরে চলে এবং ক্রিয়া সম্পাদন করে।
df virt-df(1) কমান্ড এবং ডকুমেন্টেশন।
আবার virt-dib(1) কমান্ড এবং ডকুমেন্টেশন।
পরিবর্তন
virt- পার্থক্য(1) কমান্ড এবং ডকুমেন্টেশন।
ডক বিবিধ ম্যানুয়াল পৃষ্ঠা।
সম্পাদন করা
virt-সম্পাদনা(1) কমান্ড এবং ডকুমেন্টেশন।
উদাহরণ
C API উদাহরণ কোড।
মাছ
অতিথি মাছ(1), কমান্ড-লাইন শেল, এবং উপরে নির্মিত বিভিন্ন শেল স্ক্রিপ্ট যেমন
virt-কপি-ইন(২০১১), virt-কপি-আউট(২০১১), virt-tar-in(২০১১), virt-tar-out(1).
বিন্যাস
virt- বিন্যাস(1) কমান্ড এবং ডকুমেন্টেশন।
দ্রব করা
গেস্টমাউন্ট(1), FUSE (ইউজারস্পেস ফাইল সিস্টেম) libguestfs-এর উপরে নির্মিত।
উত্পাদক
অত্যন্ত গুরুত্বপূর্ণ জেনারেটর, স্বয়ংক্রিয়ভাবে প্রচুর পরিমাণে উৎপন্ন করতে ব্যবহৃত হয়
আরপিসি এবং বাইন্ডিংয়ের মতো জিনিসগুলির জন্য বয়লারপ্লেট সি কোড।
get-kernel
virt-get-kernel(1) কমান্ড এবং ডকুমেন্টেশন।
gnulib
Gnulib একটি পোর্টেবিলিটি লাইব্রেরি হিসাবে ব্যবহৃত হয়। gnulib এর একটি অনুলিপি এখানে অন্তর্ভুক্ত করা হয়েছে।
পরিদর্শক
virt-পরিদর্শক(1), ভার্চুয়াল মেশিন ইমেজ ইন্সপেক্টর।
লোগো
ওয়েবসাইটে ব্যবহৃত লোগো। মাছটিকে আর্থার বলে।
m4 অটোকনফ দ্বারা ব্যবহৃত M4 ম্যাক্রো।
make-fs
virt-make-fs(1) কমান্ড এবং ডকুমেন্টেশন।
mllib
বিভিন্ন লাইব্রেরি এবং সাধারণ কোড দ্বারা ব্যবহৃত virt-রিসাইজ(1) এবং অন্যান্য সরঞ্জাম যা
OCaml এ লেখা।
p2v virt-p2v(1) virt-p2v ISO বা ডিস্ক তৈরির জন্য কমান্ড, ডকুমেন্টেশন এবং স্ক্রিপ্ট
চিত্র।
po সাধারণ গেটটেক্সট স্ট্রিংগুলির অনুবাদ।
পো-ডক্স
ম্যানপেজ এবং POD ফাইলের অনুবাদের জন্য অবকাঠামো এবং PO ফাইল তৈরি করে।
অবশেষে এই সঙ্গে মিলিত হবে po ডিরেক্টরি, কিন্তু যে বরং
জটিল
উদ্ধার
virt- উদ্ধার(1) কমান্ড এবং ডকুমেন্টেশন।
মাপ পরিবর্তন
virt-রিসাইজ(1) কমান্ড এবং ডকুমেন্টেশন।
sparsify
virt-sparsify(1) কমান্ড এবং ডকুমেন্টেশন।
src সি লাইব্রেরির সোর্স কোড।
sysprep
virt-sysprep(1) কমান্ড এবং ডকুমেন্টেশন।
পরীক্ষা
পরীক্ষা।
টেস্ট-ডেটা
পরীক্ষা দ্বারা ব্যবহৃত ফাইল এবং অন্যান্য পরীক্ষার ডেটা।
পরীক্ষার টুল
তাদের qemu/kernel সমন্বয় কাজ করবে কিনা তা পরীক্ষা করার জন্য শেষ ব্যবহারকারীদের জন্য টেস্ট টুল
libguestfs.
tmp, পরীক্ষা চালানোর সময় অস্থায়ী ফাইলের জন্য ব্যবহৃত হয় (এর পরিবর্তে / tmp -র পরিবর্তে ইত্যাদি)। কারণ
যাতে আপনি একটি সেট ছাড়া libguestfs-এর একাধিক সমান্তরাল পরীক্ষা চালাতে পারেন
অন্যের দ্বারা তৈরি যন্ত্রটি ওভাররাইট করার পরীক্ষা।
সরঞ্জাম
পার্লে লেখা কমান্ড লাইন টুল (virt-win-reg(1) এবং অন্যান্য অনেক)।
v2v virt-v2v(1) কমান্ড এবং ডকুমেন্টেশন।
ওয়েবসাইট
সার্জারির http://libguestfs.org ওয়েবসাইট ফাইল।
csharp
erlang
গোবজেক্ট
golang
হাসকেল
জাভা
Lua
ocaml
পিএইচপি
Perl
পাইথন
চুনি
ভাষার বাঁধাই।
মেকিং A স্থিতিশীল মুক্তি
যখন আমরা একটি স্থিতিশীল প্রকাশ করি, তখন এখানে নথিভুক্ত বেশ কয়েকটি ধাপ রয়েছে। দেখুন "LIBGUESTFS
সংস্করণ নম্বর" ইন অতিথি(3) স্থিতিশীল শাখা নীতি সম্পর্কে সাধারণ তথ্যের জন্য।
অন্তত ফেডোরা, ডেবিয়ান এবং উবুন্টুতে "মেক && মেক চেক" কাজ করে চেক করুন।
· চেক করুন "./configure --without-libvirt" কাজ করে।
· চূড়ান্ত করা guestfs-release-notes.pod
· ধাক্কা এবং Zanata থেকে টান.
চালান:
zanata push
সর্বশেষ POT ফাইলগুলিকে Zanata এ পুশ করতে। তারপর চালান:
./zanata-pull.sh
যা সর্বশেষ অনূদিত টানতে একটি মোড়ক *.পো ফাইল।
· সর্বশেষ আপস্ট্রিম সংস্করণে gnulib আপডেট করার কথা বিবেচনা করুন।
এর অধীনে নতুন স্থিতিশীল এবং উন্নয়ন ডিরেক্টরি তৈরি করুন http://libguestfs.org/download.
· সম্পাদনা করুন website/index.html.in.
· সংস্করণ সেট করুন (এ configure.ac) নতুনের কাছে স্থিতিশীল সংস্করণ, যেমন। 1.XX.0, এবং কমিট
এটা:
./localconfigure
distclean করা -k
./localconfigure
তৈরি করুন && জেলা তৈরি করুন
রক্ষণাবেক্ষণকারী-কমিট করুন
রক্ষণাবেক্ষণকারী-ট্যাগ তৈরি করুন
গিটে স্থিতিশীল শাখা তৈরি করুন:
git শাখা স্থিতিশীল-1.XX
git push origin stable-1.XX
· স্থিতিশীল শাখার সম্পূর্ণ প্রকাশ করুন।
· সংস্করণটিকে পরবর্তী বিকাশ সংস্করণে সেট করুন এবং এটি প্রতিশ্রুতিবদ্ধ করুন। ঐচ্ছিকভাবে একটি সম্পূর্ণ করতে
উন্নয়ন শাখার মুক্তি।
onworks.net পরিষেবা ব্যবহার করে গেস্টএফএস-হ্যাকিং অনলাইন ব্যবহার করুন