Skip to content

מאגר ידע: תהליך עדכון עצמי

כיצד triggerfish update עובד, מה יכול להשתבש וכיצד לשחזר.

כיצד זה עובד

פקודת העדכון מורידה ומתקינה את הגרסה האחרונה מ-GitHub:

  1. בדיקת גרסה. מביאה את תג הגרסה האחרון מ-API של GitHub. אם אתם כבר על הגרסה האחרונה, יוצאת מוקדם:

    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. אימות checksum. מחשבת SHA256 של הבינארי שהורד ומשווה אותו לערך ב-SHA256SUMS.txt. אם ה-checksums אינם תואמים, העדכון מבוטל.

  5. עצירת daemon. עוצרת את ה-daemon הרץ לפני החלפת הבינארי.

  6. החלפת בינארי. ספציפי לפלטפורמה:

    • Linux/macOS: משנה שם בינארי ישן, מעבירה חדש למקום
    • macOS צעד נוסף: מנקה תכונות הסגר עם xattr -cr
    • Windows: משנה שם בינארי ישן ל-.old (Windows אינו מאפשר דריסת קובץ הרצה רץ), ואז מעתיקה את הבינארי החדש לנתיב המקורי
  7. אתחול daemon מחדש. מפעילה את ה-daemon עם הבינארי החדש.

  8. יומן שינויים. מביאה ומציגה הערות גרסה לגרסה החדשה.

הסלמת Sudo

אם הבינארי מותקן בספרייה הדורשת גישת root (למשל /usr/local/bin), המעדכן מבקש את הסיסמה שלכם להסלמה עם sudo.

העברות בין מערכות קבצים

אם ספריית ההורדה וספריית ההתקנה נמצאות על מערכות קבצים שונות (נפוץ עם /tmp על מחיצה נפרדת), שינוי השם האטומי יכשל. המעדכן חוזר להעתקה-ואז-הסרה, שבטוחה אך לזמן קצר יש שני בינאריים על הדיסק.

מה יכול להשתבש

"Checksum verification exception"

הבינארי שהורד אינו תואם ל-hash הצפוי. זה בדרך כלל אומר:

  • ההורדה הושחתה (בעיית רשת)
  • נכסי הגרסה ישנים או הועלו חלקית

תיקון: המתינו מספר דקות ונסו שוב. אם זה נמשך, הורידו את הבינארי ידנית מדף הגרסאות.

"Asset not found in SHA256SUMS.txt"

הגרסה פורסמה ללא checksum לפלטפורמה שלכם. זו בעיית צינור גרסאות.

תיקון: דווחו על GitHub issue.

"Binary replacement failed"

המעדכן לא הצליח להחליף את הבינארי הישן בחדש. סיבות נפוצות:

  • הרשאות קובץ (הבינארי בבעלות root אבל אתם רצים כמשתמש רגיל)
  • הקובץ נעול (Windows: תהליך אחר פתח את הבינארי)
  • מערכת קבצים לקריאה בלבד

תיקון:

  1. עצרו את ה-daemon ידנית: triggerfish stop
  2. הרגו תהליכים ישנים
  3. נסו את העדכון שוב עם הרשאות מתאימות

"Checksum file download failed"

לא ניתן להוריד SHA256SUMS.txt מגרסת GitHub. בדקו את חיבור הרשת ונסו שוב.

ניקוי קובץ .old ב-Windows

לאחר עדכון Windows, הבינארי הישן משנה שם ל-triggerfish.exe.old. קובץ זה מנוקה אוטומטית בהפעלה הבאה. אם הוא לא מנוקה (למשל הבינארי החדש קורס בהפעלה), ניתן למחוק אותו ידנית.

השוואת גרסאות

המעדכן משתמש בהשוואת versioning סמנטי:

  • מסיר קידומת v מובילה (גם v0.4.2 וגם 0.4.2 מתקבלים)
  • משווה major, minor ו-patch מספרית
  • גרסאות pre-release מטופלות (למשל v0.4.2-rc.1)

עדכון ידני

אם המעדכן האוטומטי לא עובד:

  1. הורידו את הבינארי לפלטפורמה שלכם מ-GitHub Releases
  2. עצרו את ה-daemon: 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. הפעילו את ה-daemon: triggerfish start

עדכון Docker

פריסות Docker אינן משתמשות במעדכן הבינארי. עדכנו את תמונת הקונטיינר:

bash
# באמצעות סקריפט העטיפה
triggerfish update

# ידנית
docker compose pull
docker compose up -d

סקריפט העטיפה מושך את התמונה האחרונה ומאתחל את הקונטיינר אם אחד רץ.

יומן שינויים

לאחר עדכון, הערות גרסה מוצגות אוטומטית. ניתן גם לצפות בהן ידנית:

bash
triggerfish changelog              # גרסה נוכחית
triggerfish changelog --latest 5   # 5 גרסאות אחרונות

אם הבאת יומן שינויים נכשלת לאחר עדכון, היא מתועדת אך אינה משפיעה על העדכון עצמו.