חבילות VPN ללא חיבור: שאלו את היעד מה הוא צריך
תנו למכונה המנותקת לתאר את מערך התלויות שלה בעצמה. שני סבבים, בקשה ואז ייבוא, ולאחריהם עסקת APT שעדיין עליכם להריץ.
אתם זקוקים ללקוח ה-VPN כדי להגיע לרשת שבדרך כלל תספק את החבילות שלו, וזהו מעגל קטן ומסודר. הורדה של קובץ OpenVPN DEB בודד במכונה אחרת נגמרת בדרך כלל בתלות חסרה שנייה, אחר כך שלישית, ואחר כך ערב שלם של מרדף אחרי גרסאות ספריות. החלופה היא לתת למכונה המנותקת להצהיר, במונחים שלה, מה נדרש למנהל החבילות שלה. כל מה שלהלן נובע מהיפוך הזה בשאלה מי שואל.
במערכות ממשפחת Debian השיחה הזו מתנהלת דרך apt-offline, זרימת עבודה של בקשה והחזרה. סביבת ההרצה שלה עצמה חייבת להיות קיימת קודם ביעד, מותקנת ממדיה מאושרת או מתהליך אתחול אחר שמנוהל בידי מנהל, מפני שאף כלי אינו יכול לאתחל את עצמו משום דבר.
התחילו ממצב החבילות של היעד, לא מזה של העוזר
תעדו את גרסת ההפצה של היעד, את ארכיטקטורת מרחב המשתמש ואת מקורות החבילות המוגדרים לפני כל דבר אחר. שלוש העובדות האלה קובעות איזו הטמעת VPN ואיזה שילוב עם שולחן העבודה מתאימים, והן העובדות שעוזר מחובר אינו יכול לספק.
העוזר מוריד קבצים; הוא אינו הופך לקו הבסיס של התלויות. למחשב נייד חדש יותר שכבר מותקן בו OpenVPN יש מצב חבילות שונה לחלוטין מזה של היעד, ולכן ההצלחה שלו אינה מוכיחה דבר לגבי מה שהיעד יכול לקבל.
החליטו גם מה אתם באמת רוצים. מנוע ה-VPN, תוסף שירות של NetworkManager ועורך גרפי הם חבילות נפרדות, והבחירה הנכונה תלויה בהפצה ובאופן שבו המשתמש ינהל את החיבור. שרת בלי מסך זקוק למנוע ולקובץ תצורה; שולחן עבודה זקוק לתוסף שמאפשר להגדרות הרשת שלו להחזיק במנהרה. בקשה של המערך הלא נכון מניבה התקנה שמצליחה וחיבור שאיש אינו יכול להתחיל.
שני סבבים, בסדר הזה
המדריך מפריד בין שלוש פעולות: יצירת בקשה במערכת המנותקת, הורדה בעוזר מחובר וייבוא חזרה ביעד. רעננו את מטא-הנתונים של המאגר ביעד לפני בקשת חבילות, מפני שבקשת החבילות נבנית מאותם מטא-נתונים ומדדים מיושנים מפיקים בקשות שהעוזר אינו יכול לספק.
ביעד, פקודת מנהל בצורה apt-offline set vpn-meta.sig --update כותבת את בקשת הרענון. העבירו את הקובץ למכונה המחוברת והורידו חבילה עם apt-offline get vpn-meta.sig --bundle vpn-meta.zip. החזירו את החבילה וייבאו אותה ביעד עם apt-offline install vpn-meta.zip, שוב כמנהל.
כעת הפיקו את בקשת החבילות מהמטא-נתונים המרועננים, למשל apt-offline set vpn-deps.sig --install-packages openvpn, וחזרו על המסע עם שם חבילה חדש. שמרו כל בקשה בזוג עם החבילה שהיא הפיקה; חבילה שנוצרה מול מטא-נתונים ישנים יותר אינה אותה בקשה, גם כששמות הקבצים נראים ניתנים להחלפה.
הוסיפו את חבילות השילוב רק כשהתכנון דורש אותן
אם שולחן העבודה אמור לנהל את המנהרה דרך הגדרות הרשת שלו, הבקשה זקוקה לתוסף המתאים בנוסף למנוע. כללו את שמות החבילות המדויקים שההפצה שלכם מספקת ולא רשימה שנזכרת מהפצה אחרת, והפיקו בקשה חדשה בכל פעם שהרשימה משתנה. גם נעיצת גרסאות ראויה למחשבה: חבילה שנבנתה להפצה חדשה יותר עשויה לספק את השם ובכל זאת להיכשל בזמן ריצה. כאן בדיוק מערך קבוע של ארבע חבילות נעשה לעול, מפני שהרשימה הנכונה היא תכונה של היעד ורק היעד יכול לחשב אותה.
גם כאן מערך קבוע של ארבע חבילות נעשה לעול. הרשימה הנכונה היא תכונה של היעד, והיעד הוא המכונה היחידה שמסוגלת לחשב אותה נכון.
ייבוא חבילה אינו התקנת ה-VPN
למרות השם, פעולת ההתקנה מפקידה נתוני APT בסביבת ניהול החבילות. היא אינה מבצעת את עסקת החבילות. השלימו ובדקו את התקנת ה-APT בפועל ביעד מתוך הנתונים שסופקו מקומית, וקראו את הפלט במקום להניח שהצלחת ה-ZIP פירושה שהתוכנה קיימת.
אם אותה עסקה עדיין מבקשת קבצים שאינם זמינים, שמרו את התלות החסרה המדויקת או את שגיאת המאגר והפיקו ממנה את הבקשה הבאה. אל תחליפו ב-DEB מהפצה אחרת, ואל תשביתו בדיקות סכום ביקורת או אימות מאגר כדי לכפות מעבר. המדריך מזהיר במפורש מפני דילוג על אימות הקבצים שהורדו, ובצדק: חבילה לא מאומתת היא תוצאה גרועה מהתקנה כושלת.
חבילות הן רק המחצית הראשונה
התקנת תוכנה נפרדת מהשגת נקודת הקצה המאושרת, הפרופיל, חומר האמון והאישורים, ולכל אחד מאלה יכול להיות מסירה מבוקרת משלו. מערך חבילות עובד בלי פרופיל תקף אינו מתחבר לשום דבר.
לאחר מכן שמרו על נתיב ההעברה הלא־מקוון חי לעדכונים עתידיים. התייחסות לחיבור המוצלח הראשון כאל סוף התחזוקה פירושה שהעדכון הביטחוני הבא ממתין עד שמישהו עם רכב יוכל לבקר, וכך רשת ללא חיבור נשארת בשקט שנים מאחור.