לדלג לתוכן

פתרון חבילת שירות

מפת הקבצים תפריד את executable תחת נתיב קוד, תצורה תחת /etc, מצב עמיד תחת /var/lib וקבצים זמניים תחת /run. עדכון חבילה יכול להחליף binary ו־unit, אבל תצורה ששונתה על ידי מפעיל דורשת מדיניות merge או שמירת קובץ חלופי לפי מנהל החבילות. היומן אינו קובץ שמותקן מחדש מן החבילה.

לפני התקנה נריץ בדיקת syntax של ה־unit עם systemd-analyze verify בגרסת היעד, ואז נפעיל תרחישי קבלה אמיתיים. הצלחת verify אינה מוכיחה שהנתיבים, המשתמש או ה־syscalls הדרושים זמינים. בדיקת שלילה תוודא שהשירות אינו יכול לכתוב ב־/etc ושכן ניתן לבצע commit בתיקיית המצב שלו.

דוגמת fallback תקינה יכולה להחליף מנגנון המתנה בעל אותה סמנטיקה לאחר בדיקות timeout וביטול. דוגמה שאינה תקינה היא הסרת מגבלות resolution של openat2 רק כדי שהפעולה תצליח. במקרה כזה עדיף לדווח UnsupportedPlatform או לבחור מימוש חלופי שמוכיח את אותן מגבלות.

נחשב את גבול ה־drain מתוך מספר בקשות פעילות, deadline לכל פעולה וזמן commit, ונבדוק אותו בתרחיש כשל. אם kernel או התקן יכולים להשאיר פעולה בלתי ניתנת להפסקה מעבר לגבול, נסביר שמנהל השירות עשוי להפסיק את התהליך וש־recovery הוא חלק מן החוזה. זמן ההמתנה אינו יכול להבטיח השלמה של חומרה שאינה מתקדמת.