.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "MAKEHISTORY 8" .TH MAKEHISTORY 8 2024-05-19 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" makehistory \- مقداردهی اولیه یا بازسازی پایگاه‌داده تاریخچه INN .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBmakehistory\fR [\fB\-abFIOSx\fR] [\fB\-f\fR \fIfilename\fR] [\fB\-l\fR \fIcount\fR] [\fB\-L\fR \fIload-average\fR] [\fB\-s\fR \fIsize\fR] [\fB\-T\fR \fItmpdir\fR] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\fBmakehistory\fR فایل متنی history(5) را که شامل فهرستی از شناسه‌های پیام (message-IDs) مقالات دیده‌شده توسط کارساز است، بازسازی می‌کند. همچنین می‌تواند برای بازسازی پایگاه‌داده مرور کلی (overview) استفاده شود. توجه داشته باشید که هرچند نمایه‌های \&\fIdbz\fR برای فایل \&\fIhistory\fR نیز توسط \&\fBmakehistory\fR بازسازی می‌شوند، اجرای makedbz(8) پس از makehistory(8) به منظور بهبود کارایی نمایه‌ها مفید خواهد بود (زیرا \&\fBmakehistory\fR در اولین اجرا اندازه جدول هش را نمی‌داند، مگر اینکه اندازه با فلگ \&\fB\-s\fR تعیین شده باشد). .PP محل پیش‌فرض فایل متنی \&\fIhistory\fR در \&\fIpathdb\fR/history است؛ برای مشخص کردن یک مسیر جایگزین، از فلگ \&\fB\-f\fR استفاده کنید. .PP به‌طور پیش‌فرض، \&\fBmakehistory\fR کل اسپول را با استفاده از مدیر ذخیره‌سازی پویش کرده و برای هر مقاله یک سطر تاریخچه می‌نویسد. برای تولید اطلاعات مرور کلی (overview) نیز از فلگ \&\fB\-O\fR استفاده کنید. .PP اگر مقاله‌ای ناسالم یا ناقص در اسپول اخبار پیدا شود، به‌گونه‌ای که مانع از ادغام آن در داده‌های تاریخچه یا مرور کلی گردد، یک سطر گزارش (log) در خروجی ثبت شده و از آن مقاله صرف‌نظر خواهد شد. .SH "بازسازی مرور کلی (OVERVIEW REBUILD)" .IX Header "OVERVIEW REBUILD" \&\fIهشدار\fR: اگر در تلاش برای بازسازی پایگاه‌داده مرور کلی هستید، برای دستیابی به بهترین نتیجه، حتماً پیش از شروع \&\fBinnd\fR(8) را متوقف کرده و پایگاه‌داده موجود را حذف یا صفر کنید. بازسازی مرور کلی نباید در زمان اجرای کارساز انجام شود. در صورت عدم حذف مرور کلی موجود، ممکن است با مشکلاتی نظیر ورودی‌های نامرتب مرور کلی، بافرهای بیش از حد بزرگ مرور کلی و موارد مشابه مواجه شوید. .PP اگر مقدار \&\fIovmethod\fR در \&\fIinn.conf\fR برابر با \&\f(CW\*(C`ovdb\*(C'\fR باشد، باید در حین بازسازی مرور کلی، فرایندهای ovdb در حال اجرا باشند. ovdb هنگام نوشتن ورودی‌های مرور کلی به آن‌ها نیاز دارد. می‌توانید با اجرای \&\fBovdb_init\fR آن‌ها را جدا از بقیه کارساز به‌صورت دستی راه‌اندازی کنید؛ برای جزئیات بیشتر به ovdb_init(8) مراجعه کنید. .PP به همین ترتیب، اگر \&\fIovmethod\fR در \&\fIinn.conf\fR برابر با \&\f(CW\*(C`ovsqlite\*(C'\fR باشد، باید فرایند \&\fBovsqlite-server\fR در حین بازسازی مرور کلی در حال اجرا باشد. برای جزئیات بیشتر و نحوه راه‌اندازی دستی آن، به ovsqlite\-server(8) مراجعه کنید. .PP بازسازی داده‌های مرور کلی مراحلی سرراست به شرح زیر دارد: .IP 1. 4 بررسی اینکه فایل پیکربندی روش جدید ذخیره‌سازی مرور کلی در \&\fIpathetc\fR موجود بوده و با نیازهای شما سازگار باشد (\fIbuffindexed.conf\fR، \fIovdb.conf\fR یا \fIovsqlite.conf\fR). توجه داشته باشید که روش ذخیره‌سازی مرور کلی tradindexed فایل پیکربندی اختصاصی ندارد. .IP 2. 4 اطمینان از متوقف بودن INN (اجرای \&\f(CW\*(C`rc.news stop\*(C'\fR توسط کاربر news، یا هر دستوری که استفاده می‌کنید). .IP 3. 4 تنظیم روش جدید ذخیره‌سازی مرور کلی در پارامتر \&\fIovmethod\fR در \&\fIinn.conf\fR. .IP 4. 4 اطمینان از اینکه دایرکتوری مشخص‌شده توسط پارامتر \&\fIpathoverview\fR در \&\fIinn.conf\fR وجود داشته و خالی باشد (یا در صورت استفاده از روش ذخیره‌سازی buffindexed، شامل بافرهای تازه ایجادشده buffindexed باشد). در غیر این صورت، نام دایرکتوری فعلی را تغییر دهید (تا از داده‌های مرور کلی موجود نسخه پشتیبان تهیه شود) و دایرکتوری \&\fIpathoverview\fR را توسط کاربر news مجدداً ایجاد کنید. .IP 5. 4 شروع \&\fBovdb_init\fR یا \&\fBovsqlite-server\fR توسط کاربر news در صورتی که روش جدید ذخیره‌سازی مرور کلی به‌ترتیب ovdb یا ovsqlite باشد. .IP 6. 4 اجرای \&\f(CW\*(C`makehistory \-O \-x \-F\*(C'\fR و انتظار برای پایان اجرای دستور. (ممکن است چند پیام گزارش درباره مقالاتی مشاهده کنید که داده‌های مرور کلی آن‌ها را نمی‌توان در روش جدید ذخیره‌سازی وارد کرد. تا زمانی که تعداد آن‌ها زیاد نباشد کاملاً طبیعی است؛ به‌ویژه به این دلیل که برخلاف \&\fBinnd\fR، در طول داده‌های مرور کلی تولیدشده توسط \&\fBmakehistory\fR محدودیت داخلی وجود دارد. متأسفانه این مقالات نادر در مرور کلی جدید حضور نخواهند داشت.) .IP 7. 4 متوقف کردن برنامه‌های کمکی ovdb یا ovsqlite اگر آن‌ها را در مراحل قبل راه‌اندازی کرده‌اید (اجرای \&\f(CW\*(C`rc.news stop\*(C'\fR توسط کاربر news آن‌ها را متوقف می‌کند؛ به پیام‌های مربوط به در حال اجرا نبودن کارساز اخبار اهمیتی ندهید). .IP 8. 4 راه‌اندازی INN و بررسی گزارش‌ها (logs) برای اطمینان از سلامت همه‌چیز. معمولاً متوجه خواهید شد که شماره‌گذاری فایل \&\fIactive\fR تجدید می‌شود (اجرای \&\fBrc.news\fR پس از بازسازی مرور کلی این کار را انجام می‌دهد؛ در غیر این صورت، دستور \&\f(CW\*(C`ctlinnd renumber \*(Aq\*(Aq\*(C'\fR را به‌صورت دستی اجرا کنید). .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP \fB\-a\fR 4 .IX Item "-a" الحاق به فایل \&\fIhistory\fR به‌جای ایجاد یک فایل جدید. اگر به فایل اصلی \&\fIhistory\fR الحاق می‌کنید، مطمئن شوید که innd(8) محدود (throttled) شده یا در حال اجرا نیست؛ در غیر این صورت ممکن است پایگاه‌داده تاریخچه خراب شود. .IP \fB\-b\fR 4 .IX Item "-b" حذف هرگونه پیام موجود در اسپول که فاقد فیلد سرایند معتبر Message-ID است. .IP \fB\-F\fR 4 .IX Item "-F" ایجاد یک فرایند مجزا (fork) برای تخلیه داده‌های مرور کلی روی دیسک، به‌جای انجام مستقیم آن. مزیت این کار این است که به \&\fBmakehistory\fR امکان می‌دهد در حین نوشتن اولین دسته از داده‌ها در پایگاه‌داده مرور کلی، به جمع‌آوری داده‌های بیشتر از اسپول ادامه دهد. عیب آن این است که تا دو برابر فضای دیسک موقت برای داده‌های مرور کلی تولیدشده استفاده خواهد شد. این گزینه تنها در ترکیب با گزینه \&\fB\-O\fR معنا دارد. در روش buffindexed، برنامه \&\fBoverchan\fR برای نوشتن مرور کلی فراخوانی می‌شود. .IP "\fB\-f\fR \fIfilename\fR" 4 .IX Item "-f filename" به‌جای نوشتن مستقیم در \&\fIpathdb\fR/history، خروجی در فایل \&\fIfilename\fR که آن هم در \&\fIpathdb\fR قرار دارد نوشته می‌شود. .IP \fB\-I\fR 4 .IX Item "-I" عدم ذخیره داده‌های مرور کلی برای مقالاتی با شماره کمتر از کمترین شماره مقاله موجود در فایل \&\fIactive\fR. این گزینه در شرایطی کاربرد دارد که بنا به هر دلیلی مقالات قدیمی روی دیسک وجود دارند که نباید در دسترس خوانندگان قرار گیرند یا به پایگاه‌داده مرور کلی اضافه شوند. .IP "\fB\-l\fR \fIcount\fR" 4 .IX Item "-l count" این گزینه مشخص می‌کند که قبل از نوشتن اطلاعات انباشته‌شده مرور کلی در پایگاه‌داده، چه تعداد مقاله پردازش شود. مقدار پیش‌فرض \&\f(CW\*(C`10000\*(C'\fR است. از آنجا که کارایی نوشتن مرور کلی با داده‌های مرتب‌شده بیشتر است، هر «دسته» مرتب می‌شود. افزایش اندازه دسته با این گزینه ممکن است کارایی نوشتن را بیشتر بهبود بخشد، اما زمان مرتب‌سازی طولانی‌تر خواهد شد. همچنین برای ذخیره دسته‌های مرور کلی به فضای موقت نیاز خواهد بود. طبق یک تخمین تقریبی، حدود ۳۰۰ * \fIcount\fR بایت فضای موقت مورد نیاز است (بدون احتساب فایل‌های موقت ایجادشده توسط sort(1)). برای نحوه تعیین محل ذخیره‌سازی موقت، به توضیحات گزینه \&\fB\-T\fR مراجعه کنید. این گزینه در روش buffindexed هیچ تأثیری ندارد، زیرا buffindexed نیازی به مرور کلی مرتب‌شده ندارد و هیچ دسته‌بندی انجام نمی‌شود. .IP "\fB\-L\fR \fIload-average\fR" 4 .IX Item "-L load-average" متوقف کردن موقت فعالیت‌ها در صورتی که میانگین بار سیستم (load average) از سطح مشخص‌شده \&\fIload-average\fR فراتر رود. این ویژگی به \&\fBmakehistory\fR امکان می‌دهد روی سیستمی که برای مقاصد دیگر استفاده می‌شود بدون انحصار منابع سیستم و کند کردن غیرقابل قبول زمان پاسخ‌دهی برنامه‌های دیگر اجرا گردد. استفاده از nice(1) کمک چندانی نمی‌کند زیرا منشأ مشکل استفاده از ورودی/خروجی دیسک (I/O) است و ionice(1) نیز همیشه در دسترس یا کارآمد نیست. .IP \fB\-O\fR 4 .IX Item "-O" ایجاد پایگاه‌داده مرور کلی هم‌زمان با فایل \&\fIhistory\fR. اطلاعات مرور کلی تنها در صورتی نیاز است که کارساز از خوانندگان (readers) پشتیبانی کند؛ برای کارسازهایی که تنها برای ترانزیت استفاده می‌شوند نیازی به آن نیست (به \&\fIenableoverview\fR در inn.conf(5) مراجعه کنید). اگر از روش ذخیره‌سازی مرور کلی buffindexed استفاده می‌کنید، قبل از اجرای \&\fBmakehistory\fR با گزینه \&\fB\-O\fR، تمام بافرهای مرور کلی خود را پاک کنید. .IP \fB\-S\fR 4 .IX Item "-S" به‌جای ذخیره داده‌های مرور کلی در پایگاه‌داده مرور کلی، آن را در قالبی مناسب به خروجی استاندارد می‌نویسد تا در صورت تمایل بعداً به \&\fBoverchan\fR تغذیه شود. هنگام استفاده از این گزینه، گزینه‌های \&\fB\-F\fR، \&\fB\-I\fR، \&\fB\-l\fR و \&\fB\-T\fR نادیده گرفته می‌شوند. این گزینه تنها در ترکیب با گزینه \&\fB\-O\fR معنا دارد. .IP "\fB\-s\fR \fIsize\fR" 4 .IX Item "-s size" تنظیم اندازه پایگاه‌داده تاریخچه برای حدوداً \&\fIsize\fR جفت کلید-مقدار (یعنی خطوط موجود در \&\fIhistory\fR). مشخص کردن دقیق اندازه، بهینه‌سازی مفیدی است که پایگاه‌داده کارآمدتری ایجاد می‌کند. (اندازه باید برآورد تعداد نهایی مقالات باشد، که معمولاً برابر با تعداد خطوط فایل قدیمی \&\fIhistory\fR است.) .Sp به‌طور پیش‌فرض، \&\fBmakehistory\fR پایگاه‌داده‌ای بهینه‌شده برای مدیریت حدود ۶,۰۰۰,۰۰۰ مقاله (یا ۵۰۰,۰۰۰ در صورت استفاده از فرمت هش نشانه‌دار کُندتر) ایجاد می‌کند. این اندازه مانع از ذخیره تعداد بیشتری مقاله در فایل \&\fIhistory\fR کارساز اخبار نمی‌شود؛ تنها پس از فراتر رفتن از این اندازه بهینه، عملکرد آن کندتر خواهد شد تا زمانی که اجرای بعدی \&\fBnews.daily\fR اندازه آن را به‌طور مناسب تغییر دهد. .IP "\fB\-T\fR \fItmpdir\fR" 4 .IX Item "-T tmpdir" در صورت تعیین \&\fB\-O\fR، دستور \&\fBmakehistory\fR به مکانی برای نوشتن داده‌های موقت مرور کلی نیاز دارد. به‌طور پیش‌فرض، از \&\fIpathtmp\fR که در \&\fIinn.conf\fR تنظیم شده استفاده می‌کند، اما در صورت مشخص کردن این گزینه، از \&\fItmpdir\fR ارائه‌شده به‌جای آن استفاده می‌شود. این مسیر همچنین برای فایل‌های موقت ایجادشده توسط sort(1) استفاده می‌شود (که در فرآیند نوشتن اطلاعات مرور کلی فراخوانی می‌شود زیرا نوشتن اطلاعات مرتب‌شده سریع‌تر است). به‌طور پیش‌فرض، دستور \&\fBsort\fR معمولاً از دایرکتوری موقت سیستم شما استفاده می‌کند؛ برای اطمینان به صفحه راهنمای sort(1) سیستم خود مراجعه کنید. .IP \fB\-x\fR 4 .IX Item "-x" در صورت تعیین این گزینه، \&\fBmakehistory\fR ورودی‌های فایل \&\fIhistory\fR را در خروجی نمی‌نویسد. این ویژگی بیشتر برای ساخت مرور کلی بدون تولید فایل جدید \&\fIhistory\fR کاربرد دارد. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLES" در اینجا یک مثال معمول از بازسازی کل پایگاه‌داده تاریخچه و مرور کلی همراه با حذف مقالات خراب از اسپول اخبار آمده است. این دستور از مکان‌های پیش‌فرض فایل‌های موقت استفاده می‌کند و باید در زمانی که \&\fBinnd\fR در حال اجرا نیست (یا محدود شده است) انجام شود. .PP .Vb 1 \& makehistory \-b \-f history.n \-O \-l 30000 \-I .Ve .PP این دستور مرور کلی را بازسازی می‌کند (در صورت استفاده از buffindexed، قبل از اجرای این دستور بافرهای مرور کلی موجود را پاک کنید) و فایل جدید \&\fIhistory\fR را به‌صورت \&\f(CW\*(C`history.n\*(C'\fR در \&\fIpathdb\fR باقی می‌گذارد. برای حفظ تمام ورودی‌های تاریخچه از فایل قدیمی \&\fIhistory\fR که مربوط به مقالات ردشده یا منقضی‌شده هستند، دستورات زیر را پس از دستور بالا اجرا کنید: .PP .Vb 2 \& cd \& awk \*(AqNF == 2 { print }\*(Aq < history >> history.n .Ve .PP (در صورتی که مسیر پیش‌فرض نیست، آن را با \&\fIpathdb\fR خود جایگزین کنید). سپس فایل جدید \&\fIhistory\fR را برای بررسی مشکلات احتمالی مرور کرده و دستور زیر را اجرا نمایید: .PP .Vb 1 \& makedbz \-s \`wc \-l < history.n\` \-f history.n .Ve .PP سپس تمام فایل‌های منطبق بر \&\f(CW\*(C`history.n.*\*(C'\fR را به \&\f(CW\*(C`history.*\*(C'\fR تغییر نام دهید تا جایگزین پایگاه‌داده تاریخچه و نمایه‌های فعلی شوند. پس از آن، لغو محدودیت (unthrottle) \&\fBinnd\fR بلامانع است. .PP برای یک مثال ساده‌تر: .PP .Vb 1 \& makehistory \-b \-f history.n \-I \-O .Ve .PP این دستور اسپول را پویش کرده، مقالات معیوب را حذف می‌کند و برای مقالاتی که در تاریخچه وجود ندارند ورودی‌های تاریخچه و مرور کلی تولید می‌نماید. .PP برای تنظیم اندازه اولیه فایل \&\fIhistory\fR برای ۱۰۰,۰۰۰,۰۰۰ مقاله و تولید هم‌زمان داده‌های مرور کلی، می‌توانید مستقیماً از دستور زیر استفاده کنید: .PP .Vb 1 \& makehistory \-O \-s 100000000 .Ve .PP در این حالت دیگر نیازی به اجرای \&\fBmakedbz\fR نخواهید داشت، زیرا فایل \&\fIhistory\fR از قبل تولید شده و برای تعداد مقالات مورد انتظار بهینه‌سازی شده است. .PP تنها برای بازسازی مرور کلی: .PP .Vb 1 \& makehistory \-O \-x \-F .Ve .SH "فایل‌ها (FILES)" .IX Header "FILES" .IP \fIpathdb\fR/history 4 .IX Item "pathdb/history" فایل خروجی پیش‌فرض برای \&\fBmakehistory\fR. .IP \fIpathtmp\fR 4 .IX Item "pathtmp" محل نوشته شدن فایل‌های موقت، مگر اینکه گزینه \&\fB\-T\fR تعیین شده باشد. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" در ابتدا توسط Rich $alz برای InterNetNews نوشته شده و از آن زمان توسط افراد مختلفی به‌روزرسانی شده است. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" active(5), ctlinnd(8), history(5), inn.conf(5), innd(8), libinn_dbz(3), makedbz(8), ovdb_init(8), overchan(8), ovsqlite\-server(8).