REPRO-ENV(1) General Commands Manual REPRO-ENV(1)

repro-env - فایل‌های قفل وابستگی برای محیط‌های ساخت بازتولیدپذیر

repro-env update

repro-env build -- [COMMAND]

توصیف وضعیت مورد نظر را در repro-env.toml نگهداری می‌کند؛ برای نمونه، آخرین نسخه از یک تصویر رسمی کانتینر، با آخرین سطح وصله و آخرین نسخه از برخی بسته‌های اضافی. همچنین حالت حل‌شده را در repro-env.lock پیگیری می‌کند که نسخه‌ها و چکسام‌های مشخص بسته‌های لازم برای برپاسازی محیط توصیف‌شده را ثبت می‌نماید (در سطح وصله موجود در زمان نگارش).

هدف repro-env.toml این است که در صورت در دسترس قرار گرفتن وصله‌های جدید، حل مجدد مشخصات کاری بسیار ساده باشد. این فایل توسط repro-env update خوانده می‌شود.

هدف repro-env.lock مستندسازی این است که کدام نسخه‌های کامپایلر برای باینری انتشار مرتبط با یک انتشار مشخص به کار رفته‌اند. ثبت این اطلاعات برای ساخت‌های بازتولیدپذیر ضروری است و امکان بررسی قانونی و موشکافانه (forensic) محیط ساخت را در آینده فراهم می‌آورد. این فایل می‌تواند در مخزن کد منبع کامیت شود یا همراه با باینری کامپایل‌شده، به عنوان یک دست‌سازه (artifact) به انتشار ضمیمه گردد. این فایل توسط repro-env build خوانده می‌شود.

-v, --verbose

افزایش خروجی ثبت وقایع (می‌تواند چندین بار استفاده شود)

-C path, --context path

تغییر دایرکتوری جاری به این مسیر پیش از اجرای زیرفرمان

این دستور محیط توصیف‌شده در repro-env.toml را با آخرین بروزرسانی‌های موجود حل کرده و یک repro-env.lock می‌نویسد. استفاده از این دستور مشابه نحوه استفاده از cargo update است.

--no-pull

تلاشی برای دریافت (pull) برچسب کانتینر از رجیستری پیش از حل آن انجام ندهد

-k, --keep

کانتینر ساخت حذف نشود، منتظر ctrl-c بماند

این دستور یک repro-env.lock را بارگذاری کرده، محیط توصیف‌شده در آن را درون یک کانتینر برپا می‌کند و دایرکتوری جاری را در مسیر /build داخل کانتینر متصل (mount) می‌سازد. سپس COMMAND داده‌شده را درون این کانتینر اجرا می‌کند.

-f path, --file path

فایل قفل وابستگی جهت استفاده

-k, --keep

کانتینر ساخت حذف نشود، منتظر ctrl-c بماند

-e env, --env env

ارسال متغیرهای محیطی به درون کانتینر ساخت (به صورت FOO=bar یا فقط FOO برای جستجوی مقدار آن)

آرچ لینوکس مجموعه‌ای جامع از کامپایلرهای اخیر را در https://archive.archlinux.org میزبانی می‌کند. می‌توانید یک بخش [packages] با system = "archlinux" در repro-env.toml خود ایجاد کنید تا بسته‌های اضافی را با pacman نصب نمایید.

# repro-env.toml
[container]
image = "docker.io/library/archlinux"
[packages]
system = "archlinux"
dependencies = ["rust-musl", "lua"]

دبیان یک انتخاب پرکاربرد است و آرشیوی از تمامی بسته‌های خود را در https://snapshot.debian.org میزبانی می‌کند. می‌توانید یک بخش [packages] با system = "debian" در repro-env.toml خود ایجاد کنید تا بسته‌های اضافی را با apt-get نصب نمایید.

# repro-env.toml
[container]
image = "debian:bookworm"
[packages]
system = "debian"
dependencies = ["gcc", "libc6-dev"]

repro-env در گیت‌هاب در نشانی https://github.com/kpcyrd/repro-env توسعه داده می‌شود.

2026-08-17