होमब्रू (Homebrew) प्याकेज प्रबन्धक (Package Manager) को सिर्जनाकर्ताले बियर बनाउने प्रक्रियासँग सम्बन्धित शब्दहरूसँग खेलेका छन्। होमब्रूले यसको प्याकेज प्रबन्धकमा ब्रुइङ (बियर बनाउने) प्रक्रियासँग सम्बन्धित शब्दावलीहरू प्रयोग गर्दछ। डेबियन (Debian) को संसारमा जसलाई रिपोजिटरी (Repository) भनिन्छ, यहाँ त्यसलाई ‘ट्याप’ (Tap) भनिन्छ। जबकि, प्याकेजका लागि प्रयोग गरिने शब्दलाई ‘फर्मुला’ (Formula) भनिन्छ।

होमब्रू फर्मुला (Homebrew Formula) डेबियन प्याकेज (Debian Package) भन्दा फरक हुन्छ किनभने यसमा वास्तविक सफ्टवेयर हुँदैन तर सफ्टवेयर कसरी निर्माण (Build) गर्ने भन्ने बारे निर्देशनहरू हुन्छन्। होमब्रू फर्मुला केवल रूबी (Ruby) फाइलहरू हुन् जसमा स्रोत कोड (Source code) कसरी कम्पाइल (Compile) गर्ने र ती फाइलहरूलाई प्रणालीमा कसरी राख्ने भन्ने निर्देशन हुन्छ। तसर्थ, होमब्रू प्याकेज सिर्जना गर्नु भनेको एउटा रूबी क्लास (Ruby Class) लेख्नु हो जसमा सफ्टवेयरको स्रोत कोड प्रणालीमा कसरी स्थापना (Install) गर्ने भन्ने निर्देशन हुन्छ।

यसबाहेक, होमब्रू रिपोजिटरी/ट्याप (Homebrew Repository/Tap) केवल ती रूबी फर्मुलाहरू (Ruby Formulas) भएको गिटहब रिपोजिटरी (GitHub Repo) हो। यदि हामीले गिटहबमा homebrew-<repo_name> नामको रिपोजिटरी सिर्जना गर्‍यौं भने, हामी निम्न कमाण्ड प्रयोग गरेर त्यस रिपोजिटरीमा ट्याप (Tap) गर्न सक्छौँ।

brew tap <github_username>/<repo_name>

यस ट्यूटोरियल (Tutorial) ले तपाईंलाई तपाईंको पहिलो होमब्रू प्याकेज सिर्जना गर्ने र त्यसलाई तपाईंको ट्याप (Tap) मा होस्ट (Host) गर्ने प्रक्रियामा मार्गदर्शन गर्नेछ।

१. एउटा नमुना प्याकेज सिर्जना गर्नुहोस् (Create a sample package) Link to heading

यदि तपाईंले निम्न कमाण्ड टाइप गर्नुभयो भने ब्रू प्याकेज प्रबन्धकले तपाईंलाई ब्रू फर्मुलाको एउटा टेम्प्लेट (Template) उत्पन्न गरिदिन्छ।

brew create <url_to_release_code>

यूआरएल (URL) स्रोतको टारबल (Tar ball) वा गिटहब रिपोजिटरी पनि हुन सक्छ। यसले तलको उदाहरणमा देखाइए जस्तै एउटा साधारण रूबी फर्मुला (Ruby Formula) उत्पन्न गर्नेछ।

class Foo < Formula
  desc ""
  homepage ""
  url "https://example.com/foo-0.1.tar.gz"
  sha256 "85cc828a96735bdafcf29eb6291ca91bac846579bcef7308536e0c875d6c81d7"
  license ""

  # depends_on "cmake" => :build

  def install
    # ENV.deparallelize
    system "./configure", "--disable-debug",
                          "--disable-dependency-tracking",
                          "--disable-silent-rules",
                          "--prefix=#{prefix}"
    # system "cmake", ".", *std_cmake_args
    system "make", "install"
  end

  test do
    system "false"
  end
end

तपाईंले केवल माथिको फर्मुला परिमार्जन गर्नुपर्नेछ जुन /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/foo.rb मा अवस्थित हुनेछ। कुनै साधारण प्याकेजका लागि जसमा कुनै कोड कम्पाइल गर्नुपर्दैन तर केवल केही स्क्रिप्टहरू स्थापना गर्नुपर्छ, तपाईंले bin.install "<executable_file>" वा man1.install "<manpage>" थपेर तिनीहरूलाई उपयुक्त स्थानमा राख्न सक्नुहुन्छ ताकि तिनीहरू पाथ (Path) मा आउन् र म्यान पेजहरू क्रमशः man <binary_file_name> को प्रयोग गरी खोल्न सकियोस्।

२. तपाईंको ट्याप होस्ट गर्ने (Hosting your tap) Link to heading

मैले पहिले नै उल्लेख गरेझैँ, ट्याप (Tap) भनेको फर्मुलाहरू (Formulas) भएको रिपोजिटरी (Repository) मात्र हो। हामीसँग एउटा ट्यापमा बहुविध फर्मुलाहरू हुन सक्छन् र यो रिपोजिटरीको Formula डाइरेक्टरीमा अवस्थित हुनुपर्दछ। जब हामी रिपोजिटरीमा ट्याप गर्छौँ, यसले केवल फर्मुलालाई स्थानीय प्रणाली (Local system) मा क्लोन (Clone) गर्दछ।

३. निजी फर्मुलाहरू (Private Formulas) Link to heading

यदि तपाईं सार्वजनिक फर्मुला होस्ट गर्न चाहनुहुन्न तर आफ्नो कार्यालयमा निजी प्याकेजहरू साझा गर्न चाहनुहुन्छ भने, तपाईंले निजी रिपोजिटरी (Private Repo) प्रयोग गर्न सक्नुहुन्छ जसलाई गिटहबमा होस्ट गर्नुपर्छ भन्ने पनि छैन। यसका लागि तपाईंले brew tap कमाण्डमा थप प्यारामिटर अर्थात् गिट यूआरएल (Git URL) पास गर्नुपर्नेछ ताकि यसले वास्तविक रिपोजिटरी फेला पार्न सकोस्। यदि रिपोजिटरीका लागि आवश्यक छ भने यसले प्रमाणिकरण (Credentials) माग्नेछ।