Homebrew שם את קובץ OpenVPN הבינארי ב-sbin, לא ב-PATH שלך
הנוסחה מתקינה את שירות OpenVPN תחת sbin, ש-PATH ברירת המחדל של macOS אינו כולל. אמת את הקידומת ואז תקן את הפתרון בקובץ אחד.
ההתקנה מסתיימת, brew אומר ש-openvpn נמצא שם, והמעטפת עונה command not found. הקובץ הבינארי קיים, הוא פשוט יושב בתיקייה שלא סופרו למעטפת עליה מעולם. Homebrew מקשר קבצים בינאריים בסגנון שירות אל תיקיית sbin של הקידומת, ו-PATH ברירת המחדל של macOS כולל בדרך כלל את תיקיית bin ולא את תיקיית sbin. שום דבר לא שבור, ושום התקנה מחדש לא תשנה זאת.
ארבע בדיקות מאשרות את המנגנון לפני שתערוך קובץ מעטפת כלשהו.
מה הנוסחה באמת מתקינה
הנוסחה של openvpn בונה שירות לשורת פקודה, ולכן הקובץ ההרצה שלה נוחת תחת sbin ולא תחת bin. לאחר מכן Homebrew מקשר את הקובץ הבינארי הזה אל תיקיית sbin של הקידומת, ולכן "$(brew --prefix)/sbin/openvpn" --version עובד בעוד קריאה ערומה לא. תיקיית Cellar הממוספרת בגרסה מחזיקה גם עותק, והכנסת הנתיב הזה לקובץ אתחול היא הדרך שבה מכונה נשארת מוצמדת לבנייה ישנה לאחר שדרוג.
הקישור הסימבולי של הקידומת הוא הנתיב היציב. נתיב Cellar הוא פרט מימוש עם מספר גרסה בתוכו.
שאל את Homebrew, לא את מערכת הקבצים
התחל במנהל החבילות, כי הוא יודע איזו התקנה מחזיקה בנוסחה: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. אם האחרון מדפיס נתיב, הנוסחה קיימת והשאלה היא רק של פתרון. אם הוא לא מדפיס דבר, המעטפת מחפשת במקום הלא נכון חבילה שמעולם לא הותקנה, וזו בעיה אחרת עם תיקון אחר.
שתי התקנות של Homebrew באותה מכונה הוא המקום שבו זה הכי חשוב: ה-brew שעונה אינו בהכרח ה-brew שהתקין.
למה המעטפת לא רואה את sbin
מעטפת התחברות בונה את PATH מברירות המחדל של המערכת ומכל מה שקובצי האתחול שלך מוסיפים. Homebrew bin מתווסף בדרך כלל ו-Homebrew sbin בדרך כלל לא, ולכן כל פקודה עובדת חוץ מהשירותים. command -v openvpn שמחזיר כלום בעוד הנתיב עם הקידומת מחזיר גרסה הוא כל האבחון בשתי פקודות. אמת שהתיקייה באמת מחזיקה את הקישור עם ls -l "$(brew --prefix)/sbin/openvpn".
קישור חסר הוא תקלה אחרת מערך PATH חסר, ורק אחד מהשניים מתוקן על ידי עריכת קובץ מעטפת.
תקן את הנתיב פעם אחת, במקום אחד
לבדיקה מהירה במעטפת הנוכחית, eval "$(brew shellenv)" מגדיר את משתני ההתקנה ומציב את שתי התיקיות בראש. לסידור קבוע, הכנס את שורת shellenv לקובץ האתחול היחיד שהמעטפת שלך קוראת עבור מצב ההתחברות שבו אתה משתמש, במקום לפזר ייצואים בין קבצי bash ו-zsh.
לאחר מכן פתח מסוף חדש וחזור על שאילתת הגרסה, כי מעטפת שנשמרה במטמון ממשיכה לדווח על ה-PATH הישן.
הפרד את הגילוי מהשירות
למצוא קובץ בינארי אינו אותו דבר כמו להריץ שירות VPN. הפעלה אוטומטית של openvpn מוסיפה דרישות פרופיל, אישורים, הרשאות ומחזור חיים שהגילוי של חבילות מעולם לא נגע בהם. Tunnelblick גם אורז מנוע משלו, ולכן ייתכן שלגרסה שהדפסת זה עתה אין שום קשר לגרסה שהאפליקציה משתמשת בה.
רשום איזה קובץ הרצה הפיק את פלט הגרסה. השורה האחת הזו חוסכת שעה בפעם הבאה ששתי גרסאות לא יסכימו.