{"id":16027,"date":"2024-01-19T23:58:13","date_gmt":"2024-01-19T20:28:13","guid":{"rendered":"https:\/\/rasanegar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/"},"modified":"2024-01-19T23:58:13","modified_gmt":"2024-01-19T20:28:13","slug":"%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm","status":"publish","type":"post","link":"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/","title":{"rendered":"\u0631\u0648\u0634 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 FPM"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0633\u0631\u0641\u0635\u0644\u0647\u0627\u06cc \u0645\u0637\u0644\u0628<\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/#%d8%a2%d9%86%da%86%d9%87_%d8%a8%d8%b1%d8%a7%db%8c_%d8%aa%da%a9%d9%85%db%8c%d9%84_%d8%a7%db%8c%d9%86_%d8%a2%d9%85%d9%88%d8%b2%d8%b4_%d9%86%db%8c%d8%a7%d8%b2_%d8%af%d8%a7%d8%b1%db%8c%d8%af\" >\u0622\u0646\u0686\u0647 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/#%d9%88%d9%82%d8%aa%db%8c_%d9%85%d8%af%db%8c%d8%b1_%d8%a8%d8%b3%d8%aa%d9%87_%d8%b4%d9%85%d8%a7_%d8%a8%d9%87_%d8%a7%d9%86%d8%af%d8%a7%d8%b2%d9%87_%da%a9%d8%a7%d9%81%db%8c_%d8%b3%d8%a7%d8%af%d9%87_%d9%86%db%8c%d8%b3%d8%aa\" >\u0648\u0642\u062a\u06cc \u0645\u062f\u06cc\u0631 \u0628\u0633\u062a\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0633\u0627\u062f\u0647 \u0646\u06cc\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/#%da%86%da%af%d9%88%d9%86%d9%87_%db%8c%da%a9_%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87_%d9%85%d9%88%d8%ac%d9%88%d8%af_%d8%b1%d8%a7_%d8%a8%d9%87_%d8%b1%d9%88%d8%b4_%d9%82%d8%af%db%8c%d9%85%db%8c_%d8%a8%d8%b3%d8%aa%d9%87_%d8%a8%d9%86%d8%af%db%8c_%da%a9%d9%86%db%8c%d9%85\" >\u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634 \u0642\u062f\u06cc\u0645\u06cc \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/#%d8%b1%d9%88%d8%b4_%d9%86%d8%b5%d8%a8_fpm\" >\u0631\u0648\u0634 \u0646\u0635\u0628 FPM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/#%d8%b1%d9%88%d8%b4_%d8%a8%d8%b3%d8%aa%d9%87_%d8%a8%d9%86%d8%af%db%8c_jdumpertools_%d8%a8%d9%87_%d8%b9%d9%86%d9%88%d8%a7%d9%86_%db%8c%da%a9_rpm%d8%8c_%d8%a8%d8%af%d9%88%d9%86_%d9%81%d8%a7%db%8c%d9%84_%d9%85%d8%b4%d8%ae%d8%b5%d8%a7%d8%aa\" >\u0631\u0648\u0634 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc jdumpertools \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 RPM\u060c \u0628\u062f\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/#%d8%b1%d9%88%d8%b4_%d8%a8%d8%b3%d8%aa%d9%87_%d8%a8%d9%86%d8%af%db%8c_%d9%85%d8%ac%d8%af%d8%af_%d9%86%d8%b1%d9%85_%d8%a7%d9%81%d8%b2%d8%a7%d8%b1%d9%87%d8%a7%db%8c_%d9%85%d9%88%d8%ac%d9%88%d8%af\" >\u0631\u0648\u0634 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u062c\u062f\u062f \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/rasanegaar.com\/blog\/%d8%b1%d9%88%d8%b4-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-fpm\/#%d8%a8%d8%b9%d8%af_%da%86%d9%87_%d9%85%db%8c_%d8%b4%d9%88%d8%af%d8%9f\" >\u0628\u0639\u062f \u0686\u0647 \u0645\u06cc \u0634\u0648\u062f\u061f<\/a><\/li><\/ul><\/nav><\/div>\n<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">\u0632\u0645\u0627\u0646 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647: <\/span> <span class=\"rt-time\"> 7<\/span> <span class=\"rt-label rt-postfix\">\u062f\u0642\u06cc\u0642\u0647<\/span><\/span><p> <br \/>\n<\/p>\n<section class=\"post-content \" data-test-label=\"post-content\">\n<p>FPM \u06cc\u06a9 wrapper \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u062e\u06cc \u0627\u0632 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u062e\u0633\u062a\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<h2 id=\"what-you-need-to-complete-this-tutorial\"><span class=\"ez-toc-section\" id=\"%d8%a2%d9%86%da%86%d9%87_%d8%a8%d8%b1%d8%a7%db%8c_%d8%aa%da%a9%d9%85%db%8c%d9%84_%d8%a7%db%8c%d9%86_%d8%a2%d9%85%d9%88%d8%b2%d8%b4_%d9%86%db%8c%d8%a7%d8%b2_%d8%af%d8%a7%d8%b1%db%8c%d8%af\"><\/span>\u0622\u0646\u0686\u0647 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\u06cc\u06a9 \u062a\u0648\u0632\u06cc\u0639 \u0644\u06cc\u0646\u0648\u06a9\u0633 (\u0645\u0646 \u0627\u0632 \u0641\u062f\u0648\u0631\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645 \u0627\u0645\u0627 \u0628\u0627 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f)<\/li>\n<li>\u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0628\u0627\u0644\u0627 (\u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f)<\/li>\n<\/ul>\n<h2 id=\"when-your-package-manager-isn-t-simple-enough\"><span class=\"ez-toc-section\" id=\"%d9%88%d9%82%d8%aa%db%8c_%d9%85%d8%af%db%8c%d8%b1_%d8%a8%d8%b3%d8%aa%d9%87_%d8%b4%d9%85%d8%a7_%d8%a8%d9%87_%d8%a7%d9%86%d8%af%d8%a7%d8%b2%d9%87_%da%a9%d8%a7%d9%81%db%8c_%d8%b3%d8%a7%d8%af%d9%87_%d9%86%db%8c%d8%b3%d8%aa\"><\/span>\u0648\u0642\u062a\u06cc \u0645\u062f\u06cc\u0631 \u0628\u0633\u062a\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0633\u0627\u062f\u0647 \u0646\u06cc\u0633\u062a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u063a\u0644\u0628 \u0627\u0648\u0642\u0627\u062a\u060c \u0634\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0646\u062a\u0631\u0644 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631 \u0631\u0648\u0634 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.  \u0627\u0645\u0627 \u0686\u0646\u062f \u0645\u0648\u0631\u062f \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f:<\/p>\n<ol>\n<li>\u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0633\u0627\u062f\u0647 \u06cc\u0627 \u06a9\u0648\u0686\u06a9 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u062a\u0627\u0631 \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0622\u0646 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0631\u062a\u0642\u0627\u0621 \u0648 \u0628\u0627\u0632\u06af\u0634\u062a\u060c \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 RPM \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0644\u0630\u062a \u0628\u0628\u0631\u06cc\u062f.<\/li>\n<li>\u0634\u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u06cc\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0641\u0631\u0645\u062a (\u0645\u062b\u0644\u0627\u064b .tar.gz) \u0628\u0647 Debian &#8216;.deb&#8217; \u06cc\u0627 RPM \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0641\u0642\u0637 \u062f\u0631 \u0622\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f Source \u0641\u0631\u0645\u062a \u06cc\u0627 \u0628\u0627\u06cc\u0646\u0631\u06cc \u0647\u0627\u06cc \u0627\u0632 \u067e\u06cc\u0634 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647\u060c \u0645\u0627\u0646\u0646\u062f \u0647\u0646\u06af\u0627\u0645 \u0627\u0631\u062a\u0642\u0627\u0621 \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644.  \u0648 \u0634\u0645\u0627 \u0646\u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0627\u0628\u062f \u0631\u0627 \u0635\u0631\u0641 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u062c\u062f\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<h2 id=\"how-to-package-an-existing-application-the-old-way\"><span class=\"ez-toc-section\" id=\"%da%86%da%af%d9%88%d9%86%d9%87_%db%8c%da%a9_%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87_%d9%85%d9%88%d8%ac%d9%88%d8%af_%d8%b1%d8%a7_%d8%a8%d9%87_%d8%b1%d9%88%d8%b4_%d9%82%d8%af%db%8c%d9%85%db%8c_%d8%a8%d8%b3%d8%aa%d9%87_%d8%a8%d9%86%d8%af%db%8c_%da%a9%d9%86%db%8c%d9%85\"><\/span>\u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634 \u0642\u062f\u06cc\u0645\u06cc \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0627\u06cc\u0634\u06cc \u06a9\u0648\u0686\u06a9 \u0646\u0648\u0634\u062a\u0645 \u06a9\u0647 \u062d\u0642\u0627\u06cc\u0642 \u0633\u06cc\u0633\u062a\u0645 (\u0645\u0627\u0646\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u06cc\u0633\u06a9) \u0631\u0627 \u0628\u0627 \u0641\u0631\u0645\u062a JSON \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0647 \u0646\u0627\u0645 <code>jdumpertools<\/code>.  \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u0632\u0628\u0627\u0646 C \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a RPM \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f RPM \u0686\u0646\u062f \u0645\u0631\u062d\u0644\u0647 \u062f\u0633\u062a\u06cc \u0644\u0627\u0632\u0645 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\u062f\u0627\u0646\u0644\u0648\u062f \u062a\u0648\u0632\u06cc\u0639 \u0645\u0646\u0628\u0639 (\u06cc\u0627 \u0628\u0627\u06cc\u0646\u0631\u06cc): <em>\u06a9\u0644\u0648\u0646 git https:\/\/github.com\/josevnz\/jdumpertools.git<\/em><\/li>\n<li>\u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a RPM \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 (\u06cc\u0627 \u0641\u0642\u0637 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc) \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u0646\u0635\u0628 \u0645\u0631\u0627\u0642\u0628\u062a \u06a9\u0646\u062f.<\/li>\n<li>\u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a \u0631\u0627 \u067e\u0631 \u06a9\u0646\u06cc\u062f\u060c \u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0631\u0627 \u0628\u0631\u0637\u0631\u0641 \u06a9\u0646\u06cc\u062f<\/li>\n<\/ol>\n<p>\u067e\u0633 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u06af\u0648\u0646\u0647 <code>jdumbertools<\/code>\u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a RPM \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a \u0646\u06af\u0627\u0647\u06cc \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u062f:<\/p>\n<pre><code>Name:           jdumpertools\n# TODO: Figure out a better way to update version here and \u0631\u0648\u06cc Makefile\n%global major 0\nVersion:        v%{major}.2\nRelease:        1%{?dist}\nSummary:        Programs that can be used to dump Linux usage data in JSON format\n\nLicense:        ASL 2.0\nURL:            https:\/\/github.com\/josevnz\/jdumpertools\nSource0:        %{name}-%{version}.tar.gz\n\nBuildRequires:  bash,tar,gzip,rpmdevtools,rpmlint,make,gcc &gt;= 10.2.1\nRequires:       bash\n\n%global debug_package %{nil}\n\n%description\n\nJdumpertools is a collection of programs that can be used to dump\nlinux usage data in JSON format, so it can be ingested by other tools.\n\n* jdu: Similar to UNIX '\/bin\/du' command.\n* jutmp: UTMP database dumper\n\n%prep\n%setup -q -n jdumpertools\n\n%build\nmake all\n\n%install\n\n\/usr\/bin\/mkdir -p %{buildroot}\/%{_bindir}\n\/usr\/bin\/mkdir -p %{buildroot}\/%{_mandir}\/man8\n\/usr\/bin\/cp -v -p jdu jutmp %{buildroot}\/%{_bindir}\n\/usr\/bin\/cp -v -p jdu.1 jutmp.1 %{buildroot}\/%{_mandir}\/man8\/\n\/usr\/bin\/gzip %{buildroot}\/%{_mandir}\/man8\/*\n\/usr\/bin\/mkdir -p %{buildroot}\/%{_libdir}\n\/usr\/bin\/cp -v -p libjdumpertools.so.%{major} %{buildroot}\/%{_libdir}\n\/usr\/bin\/strip %{buildroot}\/%{_bindir}\/{jdu,jutmp}\n\/usr\/bin\/strip %{buildroot}\/%{_libdir}\/*\n\n%clean\nrm -rf %{buildroot}\n\n%files\n%{_bindir}\/jdu\n%{_bindir}\/jutmp\n%{_libdir}\/libjdumpertools.so.%{major}\n%{_libdir}\/libjdumpertools.so\n%license LICENSE\n%doc README.md\n%doc %{_mandir}\/man8\/jdu.1.gz\n%doc %{_mandir}\/man8\/jutmp.1.gz\n\n\n%changelog\n* Sun Oct  3 2021 Jose Vicente Nunez &lt;kodegeek.com@protonmail.com&gt; - v0.2-1\n- Applied fixes from rpmlint: man page, typos \u0631\u0648\u06cc spec file, striped binaries, etc.\n* Mon Jan  4 2021 Jose Vicente Nunez &lt;kodegeek.com@protonmail.com&gt; - v0.1-1\n- First version being packaged\n<\/code><\/pre>\n<p>\u0648 \u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ sudo dnf install -y rpmdevtools rpmlint\n...\n[josevnz@dmaf5 test]$ git clone https:\/\/github.com\/josevnz\/jdumpertools.git\nCloning into 'jdumpertools'...\nremote: Enumerating objects: 228, done.\nremote: Counting objects: 100% (228\/228), done.\nremote: Compressing objects: 100% (137\/137), done.\nremote: Total 228 (delta 132), reused 157 (delta 79), pack-reused 0\nReceiving objects: 100% (228\/228), 3.15 MiB | 9.67 MiB\/s, done.\nResolving deltas: 100% (132\/132), done.\n\n[josevnz@dmaf5 test]$ cd jdumpertools\/\n[josevnz@dmaf5 jdumpertools]$ rpmbuild -ba jdumpertools.spec\n...\n+ exit 0\nProvides: jdumpertools = v0.2-1.fc37 jdumpertools(x86-64) = v0.2-1.fc37 libjdumpertools.so()(64bit)\nRequires(rpmlib): rpmlib(CompressedFileNames) &lt;= 3.0.4-1 rpmlib(FileDigests) &lt;= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) &lt;= 4.0-1\nRequires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libjdumpertools.so()(64bit) rtld(GNU_HASH)\nChecking for unpackaged file(s): \/usr\/lib\/rpm\/check-files \/home\/josevnz\/rpmbuild\/BUILDROOT\/jdumpertools-v0.2-1.fc37.x86_64\nWrote: \/home\/josevnz\/rpmbuild\/SRPMS\/jdumpertools-v0.2-1.fc37.src.rpm\nWrote: \/home\/josevnz\/rpmbuild\/RPMS\/x86_64\/jdumpertools-v0.2-1.fc37.x86_64.rpm\nExecuting(%clean): \/bin\/sh -e \/var\/tmp\/rpm-tmp.42keBq\n+ umask 022\n+ cd \/home\/josevnz\/rpmbuild\/BUILD\n+ cd jdumpertools\n+ rm -rf \/home\/josevnz\/rpmbuild\/BUILDROOT\/jdumpertools-v0.2-1.fc37.x86_64\n+ RPM_EC=0\n++ jobs -p\n+ exit 0\nExecuting(rmbuild): \/bin\/sh -e \/var\/tmp\/rpm-tmp.aZjb6s\n+ umask 022\n+ cd \/home\/josevnz\/rpmbuild\/BUILD\n+ rm -rf jdumpertools jdumpertools.gemspec\n+ RPM_EC=0\n++ jobs -p\n+ exit 0\n...\n[josevnz@dmaf5 jdumpertools]$ ls -l $HOME\/rpmbuild\/RPMS\/x86_64\/jdumpertools-v0.2-1.fc37.x86_64.rpm\n-rw-r--r--. 1 josevnz josevnz 22118 Jun  2 14:03 \/home\/josevnz\/rpmbuild\/RPMS\/x86_64\/jdumpertools-v0.2-1.fc37.x86_64.rpm\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0633\u067e\u0633 RPM \u0631\u0627 \u0645\u0627\u0646\u0646\u062f \u0633\u0627\u06cc\u0631 RPM \u0646\u0635\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ sudo dnf install -y $HOME\/rpmbuild\/RPMS\/x86_64\/jdumpertools-v0.2-1.fc37.x86_64.rpm\nLast metadata expiration check: 1:36:46 ago \u0631\u0648\u06cc Fri 02 Jun 1402 12:30:31 PM EDT.\nDependencies resolved.\n=================================================================================================================================\n Package                         Architecture              Version                         Repository                       Size\n=================================================================================================================================\nInstalling:\n jdumpertools                    x86_64                    v0.2-1.fc37                     @commandline                     22 k\n\nTransaction Summary\n=================================================================================================================================\nInstall  1 Package\n\nTotal size: 22 k\nInstalled size: 57 k\nDownloading Packages:\nRunning transaction check\nTransaction check succeeded.\nRunning transaction test\nTransaction test succeeded.\nRunning transaction\n  Preparing        :                                                                                                         1\/1 \n  Installing       : jdumpertools-v0.2-1.fc37.x86_64                                                                         1\/1 \n  Running scriptlet: jdumpertools-v0.2-1.fc37.x86_64                                                                         1\/1 \n  Verifying        : jdumpertools-v0.2-1.fc37.x86_64                                                                         1\/1 \n\nInstalled:\n  jdumpertools-v0.2-1.fc37.x86_64                                                                                                \n\nComplete!\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0627\u06cc\u0646 \u0648\u062d\u0634\u062a\u0646\u0627\u06a9 \u0646\u06cc\u0633\u062a\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0627\u06af\u0631 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u062f \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f &#8211; \u0627\u0645\u0627 \u0622\u06cc\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634\u06cc \u0633\u0627\u062f\u0647 \u062a\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645\u061f<\/p>\n<h2 id=\"how-to-install-fpm\"><span class=\"ez-toc-section\" id=\"%d8%b1%d9%88%d8%b4_%d9%86%d8%b5%d8%a8_fpm\"><\/span>\u0631\u0648\u0634 \u0646\u0635\u0628 FPM<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0633\u0646\u062f \u0634\u0631\u0648\u0639 \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0645\u0631\u062c\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc FPM \u0628\u0647 \u0622\u0646 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u062f\u0631 \u0641\u062f\u0648\u0631\u0627:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ sudo dnf install -y gem\n[josevnz@dmaf5 jdumpertools]$ sudo dnf install -y rpm-build squashfs-tools\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0648 \u0633\u067e\u0633 \u062e\u0648\u062f FPM \u0631\u0627 \u0646\u0635\u0628 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ gem install --user-install fpm\nFetching insist-1.0.0.gem\nFetching clamp-1.0.1.gem\nFetching stud-0.0.23.gem\nFetching rexml-3.2.5.gem\nFetching mustache-0.99.8.gem\nFetching dotenv-2.8.1.gem\nFetching cabin-0.9.0.gem\nFetching pleaserun-0.0.32.gem\nFetching fpm-1.15.1.gem\nFetching backports-3.24.1.gem\n...\nDone installing documentation for stud, rexml, mustache, insist, dotenv, clamp, cabin, pleaserun, backports, arr-pm, fpm after 5 seconds\n11 gems installed\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<h2 id=\"how-to-package-jdumpertools-as-an-rpm-without-a-spec-file\"><span class=\"ez-toc-section\" id=\"%d8%b1%d9%88%d8%b4_%d8%a8%d8%b3%d8%aa%d9%87_%d8%a8%d9%86%d8%af%db%8c_jdumpertools_%d8%a8%d9%87_%d8%b9%d9%86%d9%88%d8%a7%d9%86_%db%8c%da%a9_rpm%d8%8c_%d8%a8%d8%af%d9%88%d9%86_%d9%81%d8%a7%db%8c%d9%84_%d9%85%d8%b4%d8%ae%d8%b5%d8%a7%d8%aa\"><\/span>\u0631\u0648\u0634 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc <code>jdumpertools<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 RPM\u060c \u0628\u062f\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062e\u0648\u0628\u060c \u0645\u0627 \u0628\u0647 \u0686\u0646\u062f \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.  \u0627\u06cc\u0646 \u062a\u0648\u0632\u06cc\u0639 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0627\u0644\u0641 \u0627\u0633\u062a <em>Makefile<\/em>\u060c \u0628\u0647 \u0622\u0633\u0627\u0646\u06cc \u0645\u0627\u0646\u0646\u062f \u067e\u0627\u06cc \u0645\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ make\ngcc -Wall -g -Og -Wextra -Werror -Werror=format-security -std=c11   -DJDUMPERTOOLS_VERSION=v0.2 -fPIC jdumpertools.h jdumpertools.c -I \/home\/josevnz\/test\/jdumpertools -shared -Wl,-soname,libjdumpertools.so -o libjdumpertools.so.0\ngcc jdumpertools.h jdu.c libjdumpertools.so.0 -Wall -g -Og -Wextra -Werror -Werror=format-security -std=c11   -DJDUMPERTOOLS_VERSION=v0.2 -L \/home\/josevnz\/test\/jdumpertools -l jdumpertools -o jdu\ngcc jdumpertools.h jutmp.c -Wall -g -Og -Wextra -Werror -Werror=format-security -std=c11   -DJDUMPERTOOLS_VERSION=v0.2 -L \/home\/josevnz\/test\/jdumpertools -l jdumpertools -o jutmp\n...\n[josevnz@dmaf5 jdumpertools]$ ls\nCODE_OF_CONDUCT.md  INSTALL.md  jdu.c           jdumpertools.spec  jutmp.c               Makefile        SECURITY.md\nCONTRIBUTING.md     jdu         jdumpertools.c  jutmp              libjdumpertools.so.0  mazinger-z.png\nDockerfile          jdu.1       jdumpertools.h  jutmp.1            LICENSE               README.md\n[josevnz@dmaf5 jdumpertools]$ fpm -t rpm -s dir --name jdumpertools --rpm-autoreq --rpm-os linux --rpm-summary 'Programs that can be used to dump Linux usage data in JSON format' --license 'ASL 2.0' --version v0.21 --depends bash --maintainer 'Jose Vicente Nunez &lt;kodegeek.com@protonmail.com&gt;' --url https:\/\/github.com\/josevnz\/jdumpertools jdu=\/usr\/bin\/jdu jutmp=\/usr\/bin\/jutmp jdu.1=\/usr\/share\/man\/man1\/jdu.1.gz jutmp.1=\/usr\/share\/man\/man8\/jutmp.1.gz\nCreated package {:path=&gt;\"jdumpertools-v0.21-1.x86_64.rpm\"}\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u06cc\u0686 \u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635\u0627\u062a\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u0648 \u0645\u0627 \u06cc\u06a9 RPM \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>\u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u0645 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0645 \u0686\u0647 \u0645\u06cc \u0634\u0648\u062f\u061f  \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0686\u0646\u062f \u062a\u063a\u06cc\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0645 \u0631\u0648\u06cc \u062e\u0637 \u0641\u0631\u0645\u0627\u0646:<\/p>\n<p>\u0628\u0633\u062a\u0647 \u062f\u0628\u06cc\u0627\u0646:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ fpm -t deb -s dir --name jdumpertools --rpm-autoreq --rpm-os linux --rpm-summary 'Programs that can be used to dump Linux usage data in JSON format' --license 'ASL 2.0' --version v0.21 --depends bash --maintainer 'Jose Vicente Nunez &lt;kodegeek.com@protonmail.com&gt;' --url https:\/\/github.com\/josevnz\/jdumpertools jdu=\/usr\/bin\/jdu jutmp=\/usr\/bin\/jutmp jdu.1=\/usr\/share\/man\/man1\/jdu.1.gz jutmp.1=\/usr\/share\/man\/man8\/jutmp.1.gz\nDebian 'Version' field needs to start with a digit. I was provided 'v0.21' which seems like it just has a 'v' prefix to an otherwise-valid Debian version, I'll remove the 'v' for you. {:level=&gt;:warn}\nCreated package {:path=&gt;\"jdumpertools_0.21_amd64.deb\"}\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062e\u0648\u062f \u0627\u0633\u062a\u062e\u0631\u0627\u062c\u06cc:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ fpm -t sh -s dir --name jdumpertools --rpm-autoreq --rpm-os linux --rpm-summary 'Programs that can be used to dump Linux usage data in JSON format' --license 'ASL 2.0' --version v0.21 --depends bash --maintainer 'Jose Vicente Nunez &lt;kodegeek.com@protonmail.com&gt;' --url https:\/\/github.com\/josevnz\/jdumpertools jdu=\/usr\/bin\/jdu jutmp=\/usr\/bin\/jutmp jdu.1=\/usr\/share\/man\/man1\/jdu.1.gz jutmp.1=\/usr\/share\/man\/man8\/jutmp.1.gz\nCreated package {:path=&gt;\"jdumpertools.sh\"}\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0641\u0627\u06cc\u0644 tar:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ fpm -t tar -s dir --name jdumpertools --rpm-autoreq --rpm-os linux --rpm-summary 'Programs that can be used to dump Linux usage data in JSON format' --license 'ASL 2.0' --version v0.21 --depends bash --maintainer 'Jose Vicente Nunez &lt;kodegeek.com@protonmail.com&gt;' --url https:\/\/github.com\/josevnz\/jdumpertools jdu=\/usr\/bin\/jdu jutmp=\/usr\/bin\/jutmp jdu.1=\/usr\/share\/man\/man1\/jdu.1.gz jutmp.1=\/usr\/share\/man\/man8\/jutmp.1.gz\nCreated package {:path=&gt;\"jdumpertools.tar\"}\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0633\u06cc\u0627\u0631 \u0631\u0627\u062d\u062a \u0627\u0633\u062a.  \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0645\u0648\u0631\u062f \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc FPM \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645.<\/p>\n<h2 id=\"how-to-repackage-existing-software\"><span class=\"ez-toc-section\" id=\"%d8%b1%d9%88%d8%b4_%d8%a8%d8%b3%d8%aa%d9%87_%d8%a8%d9%86%d8%af%db%8c_%d9%85%d8%ac%d8%af%d8%af_%d9%86%d8%b1%d9%85_%d8%a7%d9%81%d8%b2%d8%a7%d8%b1%d9%87%d8%a7%db%8c_%d9%85%d9%88%d8%ac%d9%88%d8%af\"><\/span>\u0631\u0648\u0634 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u062c\u062f\u062f \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06af\u0648\u06cc\u06cc\u062f \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 CPAN \u0631\u0627 \u06a9\u0647 RPM \u0646\u062f\u0627\u0631\u062f \u062a\u0648\u0632\u06cc\u0639 \u06a9\u0646\u06cc\u062f.  \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0632\u0645\u0627\u0646 \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a\u06cc \u0631\u0627 \u0635\u0631\u0641 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 FPM \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u06cc\u06a9 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0641\u062f\u0648\u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u0645:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ sudo dnf install -y perl-App-cpanminus\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0648 \u0633\u067e\u0633 \u0628\u06cc\u0627\u06cc\u06cc\u062f RPM \u062e\u0648\u062f \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ fpm -t rpm -s cpan Archive::Tar\nCreated package {:path=&gt;\"perl-Archive-Tar-3.02-1.noarch.rpm\"}\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u06a9\u0627\u0631 \u06a9\u0631\u062f\u061f<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ rpm -qil perl-Archive-Tar-3.02-1.noarch.rpm\nName        : perl-Archive-Tar\nVersion     : 3.02\nRelease     : 1\nArchitecture: noarch\nInstall Date: (not installed)\nGroup       : default\nSize        : 177677\nLicense     : perl_5\nSignature   : (none)\nSource RPM  : perl-Archive-Tar-3.02-1.src.rpm\nBuild Date  : Fri 02 Jun 1402 04:36:45 PM EDT\nBuild Host  : dmaf5\nRelocations : \/ \nPackager    : &lt;josevnz@dmaf5&gt;\nVendor      : Jos Boumans &lt;kane[at]cpan.org&gt;\nURL         : http:\/\/example.com\/no-uri-given\nSummary     : Manipulates TAR archives\nDescription :\nManipulates TAR archives\n\/usr\/local\/bin\/ptar\n\/usr\/local\/bin\/ptardiff\n\/usr\/local\/bin\/ptargrep\n\/usr\/local\/share\/man\/man1\/ptar.1\n\/usr\/local\/share\/man\/man1\/ptardiff.1\n\/usr\/local\/share\/man\/man1\/ptargrep.1\n\/usr\/local\/share\/man\/man3\/Archive::Tar.3pm\n\/usr\/local\/share\/man\/man3\/Archive::Tar::File.3pm\n\/usr\/local\/share\/perl5\/5.36\/Archive\/Tar.pm\n\/usr\/local\/share\/perl5\/5.36\/Archive\/Tar\/Constant.pm\n\/usr\/local\/share\/perl5\/5.36\/Archive\/Tar\/File.pm\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u0627\u0698\u0648\u0644 clickhouse-driver \u0631\u0627 \u0627\u0632 PyPi \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ fpm -t rpm -s python 'clickhouse-driver'\nCreated package {:path=&gt;\"python-clickhouse-driver-0.2.6-1.x86_64.rpm\"}\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0628\u06af\u0648\u06cc\u06cc\u062f \u06a9\u0647 \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 RPM \u0628\u0631\u0627\u06cc OpenJDK 17 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0645\u0634\u06a9\u0644\u06cc \u0646\u06cc\u0633\u062a\u060c \u0641\u0627\u06cc\u0644 tar \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0627 \u06a9\u0645\u06a9 \u06a9\u0645\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p><!--kg-card-begin: markdown--><\/p>\n<pre><code class=\"language-shell\">[josevnz@dmaf5 jdumpertools]$ curl --fail --location --remote-name https:\/\/github.com\/adoptium\/temurin17-binaries\/releases\/download\/jdk-17.0.7%2B7\/OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n100  182M  100  182M    0     0  10.9M      0  0:00:16  0:00:16 --:--:-- 11.1M\n[josevnz@dmaf5 jdumpertools]$ fpm -t rpm -s tar --url 'https:\/\/adoptium.net\/' --description 'Eclipse Temurin is the name of the OpenJDK distribution from Adoptium' --version '17.0.7+7' --prefix \/usr\/local\/openjdk OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz\n[josevnz@dmaf5 jdumpertools]$ rpm -qil OpenJDK17U-jdk_x64_linux_hotspot_17-17.0.7+7-1.x86_64.rpm\nName        : OpenJDK17U-jdk_x64_linux_hotspot_17\nVersion     : 17.0.7+7\nRelease     : 1\nArchitecture: x86_64\nInstall Date: (not installed)\nGroup       : default\nSize        : 329508762\nLicense     : unknown\nSignature   : (none)\nSource RPM  : OpenJDK17U-jdk_x64_linux_hotspot_17-17.0.7+7-1.src.rpm\nBuild Date  : Fri 02 Jun 1402 05:05:05 PM EDT\nBuild Host  : dmaf5\nRelocations : \/usr\/local\/openjdk \nPackager    : &lt;josevnz@dmaf5&gt;\nVendor      : none\nURL         : https:\/\/adoptium.net\/\nSummary     : Eclipse Temurin is the name of the OpenJDK distribution from Adoptium\nDescription :\nEclipse Temurin is the name of the OpenJDK distribution from Adoptium\n\/usr\/local\/openjdk\/jdk-17.0.7+7\/NOTICE\n\/usr\/local\/openjdk\/jdk-17.0.7+7\/bin\/jar\n\/usr\/local\/openjdk\/jdk-17.0.7+7\/bin\/jarsigner\n\/usr\/local\/openjdk\/jdk-17.0.7+7\/bin\/java\n...\n<\/code><\/pre>\n<p><!--kg-card-end: markdown--><\/p>\n<p>\u0645\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u0645\u060c \u0627\u0645\u0627 \u0641\u06a9\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0645 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u0627\u06cc\u062f\u0647 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0686\u0642\u062f\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 FPM \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/p>\n<h2 id=\"what-s-next\"><span class=\"ez-toc-section\" id=\"%d8%a8%d8%b9%d8%af_%da%86%d9%87_%d9%85%db%8c_%d8%b4%d9%88%d8%af%d8%9f\"><\/span>\u0628\u0639\u062f \u0686\u0647 \u0645\u06cc \u0634\u0648\u062f\u061f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0686\u0646\u062f \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0647\u0645 \u0631\u0627 \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0686\u06cc\u0632\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u062f\u0627\u0631\u062f:<\/p>\n<ul>\n<li>FPM \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0627\u0632 \u0641\u0631\u0645\u062a \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0641\u0631\u0645\u062a \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0634\u0645\u0627.<\/li>\n<li>FPM \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06af\u0631 \u0627\u063a\u0644\u0628 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0631\u0648\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0631\u0627\u06cc FPM \u0631\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 \u0637\u0648\u0644\u0627\u0646\u06cc \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/li>\n<li>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f FPM \u0631\u0627 \u0627\u0632 \u062f\u0627\u062e\u0644 a \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f container\u060c \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627.<\/li>\n<li>\u0627\u06af\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0648\u0634 \u0627\u062c\u0631\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u0647\u0627\u06cc jumpertools \u06a9\u0646\u062c\u06a9\u0627\u0648 \u0647\u0633\u062a\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 README.md \u0627\u0632 \u0645\u062e\u0632\u0646 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u062f.<\/li>\n<\/ul>\n<\/section>\n<p><br \/>\n<br \/>\u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647 \u062f\u0631 1403-01-19 23:58:09<br \/>\n<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;16027&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;\u0627\u0645\u062a\u06cc\u0627\u0632 \u0634\u0645\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628&quot;,&quot;legend&quot;:&quot;0\\\/5 (0 \u0631\u0627\u06cc)&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;\u0631\u0648\u0634 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 FPM&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ({count} \u0631\u0627\u06cc)&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-left: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            <span class=\"kksr-muted\">\u0627\u0645\u062a\u06cc\u0627\u0632 \u0634\u0645\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628<\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">\u0632\u0645\u0627\u0646 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0644\u0639\u0647: <\/span> <span class=\"rt-time\"> 7<\/span> <span class=\"rt-label rt-postfix\">\u062f\u0642\u06cc\u0642\u0647<\/span><\/span>FPM \u06cc\u06a9 wrapper \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u062e\u06cc \u0627\u0632 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u062e\u0633\u062a\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f. \u0622\u0646\u0686\u0647 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0646\u06cc\u0627\u0632 [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":16028,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[207,95],"tags":[4364,1291,1779,1855,1847,2123,2015,1956,467,1870,1868],"class_list":["post-16027","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-infra","category-linux","tag-fpm","tag--linux","tag-1779","tag-1855","tag-1847","tag-2123","tag-2015","tag-1956","tag-467"],"acf":[],"_links":{"self":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/posts\/16027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/comments?post=16027"}],"version-history":[{"count":0,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/posts\/16027\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/media\/16028"}],"wp:attachment":[{"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/media?parent=16027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/categories?post=16027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rasanegaar.com\/blog\/wp-json\/wp\/v2\/tags?post=16027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}