namcap(1) User Commands namcap(1)

namcap - ابزار تحلیل و بررسی بسته‌ها

namcap [options] <package|PKGBUILD> [package|PKGBUILD] ...

دستور namcap ابزاری برای تحلیل بسته است که اشکالات و ایرادات موجود در بسته‌های Arch Linux یا فایل‌های PKGBUILD آن‌ها را جستجو می‌کند. این ابزار می‌تواند قوانین را روی فهرست فایل‌ها، خود فایل‌ها یا تک‌تک فایل‌های PKGBUILD اعمال کند.

قوانین فهرستی از پیام‌ها را بازمی‌گردانند. هر پیام می‌تواند یکی از سه نوع باشد: خطا (error)، هشدار (warning) یا اطلاعاتی (information) (می‌توانید آن‌ها را به عنوان یادداشت یا توضیح در نظر بگیرید). خطاها (مشخص‌شده با 'E:') مواردی هستند که namcap کاملاً مطمئن است نادرست بوده و باید اصلاح شوند. هشدارها (مشخص‌شده با 'W:') مواردی هستند که namcap معتقد است باید تغییر کنند، اما اگر می‌دانید چه کاری انجام می‌دهید می‌توانید آن‌ها را به همان صورت رها کنید. پیام‌های اطلاعاتی (مشخص‌شده با 'I:') تنها زمانی نمایش داده می‌شوند که از آرگومان info استفاده کنید. پیام‌های اطلاعاتی نکاتی را ارائه می‌دهند که ممکن است مفید باشند اما نشان‌دهنده چیزی که نیاز به تغییر داشته باشد نیستند.

عدم اجرای قوانین موجود در RULELIST روی بسته
نمایش پیام‌های اطلاعاتی
بازگرداندن فهرستی از قوانین معتبر و توضیحات آن‌ها
نمایش برچسب‌های (tags) به‌سادگی قابل‌تجزیه namcap به جای توضیحات معمولیِ خوانا برای انسان؛ به عنوان مثال استفاده از non-fhs-man-page به جای “Non-FHS man page (%s) found. Use /usr/share/man instead”. فهرست کاملی از برچسب‌های namcap به همراه توضیحات خوانای آن‌ها در مسیر /usr/share/namcap/tags موجود است.
تنها اعمال قوانین RULELIST روی بسته
مقدار RULELIST فهرستی از نام‌های قوانین است که با ویرگول انگلیسی (comma) جدا شده‌اند.
چاپ نسخه و خروج

بررسی می‌کند که متغیرهای آرایه واقعاً آرایه باشند و نه رشته
بررسی می‌کند که ورودی‌های پشتیبان (backup) با / شروع نشوند
ارجاعات به i686 و i586 را جستجو کرده و اعلام می‌کند به جای آن‌ها از $CARCH استفاده شود
فایل PKGBUILD را بررسی می‌کند تا مطمئن شود نام بسته شامل حروف بزرگ نیست
بسته را بررسی می‌کند تا مطمئن شود نام بسته شامل حروف بزرگ نیست
اطمینان حاصل می‌کند که PKGBUILD شامل چِک‌سام‌های (checksums) معتبر است
این ماژول ldd را روی تمامی فایل‌های اجرایی اجرا می‌کند، وابستگی‌های سطح پیوند (link-level) را دریافت کرده، کوچک‌ترین زیرمجموعه از وابستگی‌ها را که وابستگی‌های سطح پیوند را پوشش می‌دهند می‌یابد و آن فهرست را با آرایه depends بسته مقایسه می‌کند. این ماژول در سه حالت پیام بازمی‌گرداند: وابستگی شناسایی شده اما گنجانده نشده است، وابستگی گنجانده شده اما از قبل برآورده شده است، و وابستگی گنجانده شده اما نیازی به آن نیست. این پیشنهادها صرفاً راهنما هستند و تمامی سازندگان بسته باید این موضوع را در نظر داشته باشند (یعنی شما باهوش‌تر از namcap هستید)

برخی مواردی که namcap در آن‌ها با مشکل مواجه می‌شود dlopen() و پیوندهای مبهم هستند. کتابخانه‌هایی که از طریق dlopen() بارگذاری می‌شوند نشان داده نمی‌شوند زیرا در زمان اجرا بارگذاری می‌گردند: در مورد برنامه‌ای که پلاگین‌ها را بارگذاری می‌کند. پیوندهای مبهم مواردی هستند که تنها بخش کوچکی از بسته برای اجرا به چیزی نیاز دارد؛ معمولاً به آن بخش کوچک دسترسی پیدا نمی‌شود مگر آنکه آن مؤلفه نصب شده باشد (مثلاً یک پلاگین جاوا برای mozilla که در بسته java گنجانده شده است).

نام دایرکتوری‌ها در فهرست فایل‌های بسته را برای دایرکتوری‌های استاندارد (مانند /etc، /usr/bin، /usr/lib) بررسی می‌کند. تمام فایل‌های موجود در دایرکتوری‌های غیراستاندارد گزارش می‌شوند
در صورتی که فایل‌های ELF (دودویی) خارج از مسیرهای استاندارد (/bin، /usr/bin و غیره) پیدا شوند، خطا می‌دهد
دایرکتوری‌هایی را در بسته که شامل هیچ فایلی نیستند جستجو می‌کند
بررسی می‌کند که متغیرهای اضافی با یک خط زیر (underscore) شروع شوند
نصب صحیح صفحات info را بررسی می‌کند
نصب صحیح صفحات راهنما (man pages) را بررسی می‌کند
بررسی می‌کند که مالکیت تمامی فایل‌ها متعلق به root:root باشد و نه کاربر یا گروه دیگری
فایل‌های mime تولیدشده برای GNOME را بررسی می‌کند
بررسی می‌کند که آیا حافظه موقت (cache) آیکون hicolor هنگامی که بسته فایل‌هایی را در /usr/share/icons/hicolor نصب می‌کند، به‌روزرسانی می‌شود یا خیر
بررسی می‌کند که بسته شامل فایل دایرکتوری info در مسیر (/usr/share/info/dir) نباشد
هر PKGBUILD که به فایل‌های موجود در $startdir ارجاع دهد نادرست است
در صورت وجود فایل‌های libtool (*.la) هشدار می‌دهد
بررسی می‌کند که متغیر licenses در یک PKGBUILD مقداردهی شده باشد
بررسی می‌کند که متغیر licenses در یک بسته مقداردهی شده باشد. برای بسته‌هایی با مجوز سفارشی (custom)، بررسی می‌کند که آیا فایل مجوز در مسیر /usr/share/licenses/$pkgname/ نصب شده است یا خیر
فایل perllocal.pod را جستجو می‌کند. فایل perllocal.pod فایلی زائد و مزاحم است که در زمان نصب اکثر ماژول‌های perl ایجاد و گنجانده می‌شود
مجوزهای اولیه فایل و دایرکتوری را بررسی می‌کند. در صورت تنظیم نبودن بیت‌های قابل‌خواندن همگانی (world readable)، تنظیم بودن بیت‌های قابل‌نوشتن همگانی (world writable)، یا تنظیم نبودن بیت اجرایی همگانی (world executable) برای دایرکتوری‌ها هشدار بازمی‌گرداند
در صورتی که متغیر RPATH یک فایل باینری روی چیزی غیر از /usr/lib تنظیم شده باشد، خطا می‌دهد
در صورتی که متغیر RUNPATH یک فایل باینری روی چیزی غیر از /usr/lib یا /usr/lib32 تنظیم شده باشد، خطا می‌دهد
بررسی می‌کند که هیچ دایرکتوری scrollkeeper وجود نداشته باشد
اگر یک PKGBUILD به جای آدرس عمومی downloads.sourceforge.net از یک آیینه (mirror) خاص در sourceforge دانلود کند، هشدار می‌دهد
پیوندهای نمادین (symbolic) و سختی (hard) را که به مسیر معتبری در بسته اشاره نمی‌کنند شناسایی می‌کند
برای نگه‌دارندگان بسته، این ماژول بررسی می‌کند که اضافه کردن کامنت‌های Maintainer و Contributor فراموش نشده باشد
بررسی می‌کند که متغیر url در PKGBUILD تنظیم شده باشد
بررسی می‌کند که متغیر url در فایل بسته تنظیم شده باشد

اعمال تمامی قوانین روی foo.pkg.tar.gz
اعمال قوانین depends و symlink روی foo.pkg.tar.gz
اعمال تمامی قوانین مبتنی بر PKGBUILD روی فایل PKGBUILD
فهرست کردن تمامی قوانین موجود

حق نشر © 2003-2023 مشارکت‌کنندگان Namcap، برای جزئیات به AUTHORS مراجعه کنید.

این یک نرم‌افزار آزاد است؛ برای شرایط رونوشت‌برداری به سورس‌کد مراجعه کنید. هیچ تضمینی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب برای یک هدف خاص.

August 24, 2025 namcap 3.6.0