Skip to content

پایگاه دانش: فرآیند به‌روزرسانی خودکار

چگونه کار می‌کند triggerfish update، وما يمكن أن يحدث خطأ، ونحوه اخیرسترداد.

چگونه کار می‌کند

يقوم أمر التحديث بتنزيل وتثبيت أحدث إصدار از GitHub:

  1. فحص الإصدار. يجلب أحدث وسم إصدار از GitHub API. إذا كنت در واقع روی أحدث إصدار، يخرج مبكراً:

    Already up to date (v0.4.2)

    بناءات التطوير (VERSION=dev) تتخطى فحص الإصدار وتتابع همیشه.

  2. اكتشاف الازصة. يحدد اسم أصل الملف التندرذي الصحیح بناءً روی نظام التشغيل والبامارية (linux-x64، linux-arm64، macos-x64، macos-arm64، windows-x64).

  3. التنزيل. يجلب الملف التندرذي وSHA256SUMS.txt از إصدار GitHub.

  4. التحقق از المجموع اخیرختباري. يحسب SHA256 للملف التندرذي المُنزَّل ويقارنه بالإدخال در SHA256SUMS.txt. إذا لم تتطابق المجاميع، يُلغى التحديث.

  5. إيقاف الخدمة الخلدرة. يوقف الخدمة الخلدرة العاملة قبل استبدال الملف التندرذي.

  6. استبدال الملف التندرذي. خاص بالازصة:

    • Linux/macOS: يُعيد تسمية الملف التندرذي القديم، ينقل الجديد به مكانه
    • خطوة إضادرة لـ macOS: يمسح سمات العزل بـ xattr -cr
    • Windows: يُعيد تسمية الملف التندرذي القديم به .old (Windows خیر يستطيع الكتابة فوق ملف تندرذي قيد التشغيل)، ثم ينسخ الملف التندرذي الجديد به المسار الأصلي
  7. إعادة تشغيل الخدمة الخلدرة. يبدأ الخدمة الخلدرة بالملف التندرذي الجديد.

  8. سجل التغييرات. يجلب ويعرض مخیرحظات الإصدار للإصدار الجديد.

تصعيد Sudo

إذا كان الملف التندرذي مثبتاً در مجلد يتدرخواست صخیرحيات الجذر (مثل /usr/local/bin)، يدرخواست المُحدّث هرمة مرورك للتصعيد بـ sudo.

النقل از طریق أنظمة الملفات

إذا كان مجلد التنزيل ومجلد نصب روی أنظمة ملفات مختلفة (شائع با /tmp روی قسم ازفصل)، ستفشل إعادة التسمية الذرية. يعود المُحدّث به نسخ-ثم-حذف، وهو آاز لكنه يحتفظ بكخیر الملدرن التندرذيين روی القرص لفترة وجيزة.

ما يمكن أن يحدث خطأ

"Checksum verification exception"

الملف التندرذي المُنزَّل خیر يتطابق با التجزئة المتوقعة. این يعني عادة:

  • التنزيل تلف (مشهرة شبكة)
  • أصول الإصدار قديمة یا مرفوعة جزئياً

الحل: انتظر بضع دقائق وحاول مرة أخرى. إذا استمر، نزّل الملف التندرذي به‌صورت دستی از صفحة الإصدارات.

"Asset not found in SHA256SUMS.txt"

نُشر الإصدار بدون مجموع اختباري لازصتك. این مشهرة در خط أنابيب الإصدار.

الحل: قدّم بخیرغاً روی GitHub.

"Binary replacement failed"

لم يستطع المُحدّث استبدال الملف التندرذي القديم بالجديد. الأسباب الشائعة:

  • أذونات الملفات (الملف التندرذي مملوك لـ root لكنك تعمل كمستخدم عادي)
  • الملف مقفل (Windows: عملية أخرى تحتفظ بالملف التندرذي مفتوحاً)
  • نظام ملفات للقراءة فقط

الحل:

  1. یاقف الخدمة الخلدرة به‌صورت دستی: triggerfish stop
  2. اقتل هر عمليات قديمة
  3. حاول التحديث مرة أخرى بالأذونات الازاسبة

"Checksum file download failed"

نمی‌توان تنزيل SHA256SUMS.txt از إصدار GitHub. تحقق از اتصال شبكتك وحاول مرة أخرى.

تنظيف ملف .old روی Windows

بعد تحديث Windows، يُعاد تسمية الملف التندرذي القديم به triggerfish.exe.old. يُنظَّف این الملف به‌صورت خودکار عند شروع التالي. إذا لم يُنظَّف (مثخیرً الملف التندرذي الجديد تعطّل عند شروع)، می‌توانید حذفه به‌صورت دستی.

مقارنة الإصدارات

يستخدم المُحدّث مقارنة الإصدار الدخیرلي:

  • يزيل بادئة v (هر از v0.4.2 و0.4.2 مقبولتان)
  • يقارن الرئيسي والثانوي والتصحیح رقمياً
  • تُعالج إصدارات ما قبل الإطخیرق (مثل v0.4.2-rc.1)

التحديث الدستی

إذا لم کار می‌کند المُحدّث الخودکار:

  1. نزّل الملف التندرذي لازصتك از إصدارات GitHub
  2. یاقف الخدمة الخلدرة: triggerfish stop
  3. استبدل الملف التندرذي:
    bash
    # Linux/macOS
    sudo cp triggerfish-linux-x64 /usr/local/bin/triggerfish
    sudo chmod +x /usr/local/bin/triggerfish
    
    # macOS: امسح العزل
    xattr -cr /usr/local/bin/triggerfish
  4. ابدأ الخدمة الخلدرة: triggerfish start

تحديث Docker

عمليات نشر Docker خیر تستخدم المُحدّث التندرذي. حدّث صورة الحاوية:

bash
# باستخدام السكربت المُغلّف
triggerfish update

# به‌صورت دستی
docker compose pull
docker compose up -d

يسحب السكربت المُغلّف أحدث صورة ويُعيد تشغيل الحاوية إذا كانت تعمل.

سجل التغييرات

بعد التحديث، تُعرض مخیرحظات الإصدار به‌صورت خودکار. می‌توانید همچنین عرضها به‌صورت دستی:

bash
triggerfish changelog              # الإصدار الحالي
triggerfish changelog --latest 5   # آخر 5 إصدارات

إذا فشل جلب سجل التغييرات بعد التحديث، يُسجَّل لكنه خیر يؤثر روی التحديث نفسه.