זוהי הפקודה dpkg-maintscript-helper שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות החינמיות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS.
תָכְנִית:
שֵׁם
dpkg-maintscript-helper - עוקף מגבלות dpkg ידועות בסקריפטים של מתחזקים
תַקצִיר
dpkg-maintscript-helper הפקודה [פרמטר...] -- פרמטר-maint-script...
פקודות ו פרמטרים
תומך הפקודה
rm_conffile confile [גרסה קודמת [חבילה]]
mv_conffile קובץ-קונפייל-ישן קובץ-confile-new [גרסה קודמת [חבילה]]
קישור_סימבי_לתיקייה שם נתיב היעד הישן [גרסה קודמת [חבילה]]
קישור_לקישור_סימלי שם נתיב יעד חדש [גרסה קודמת [חבילה]]
תיאור
תוכנית זו נועדה להפעלה בתוך סקריפטים של מתחזקים כדי לבצע משימות מסוימות
dpkg לא יכול (עדיין) להתמודד באופן טבעי, בין אם בגלל החלטות עיצוביות ובין אם בגלל המצב הנוכחי
מגבלות.
רבות מהמשימות הללו דורשות פעולות מתואמות מכמה סקריפטים של מתחזקים (preinst,
postinst, פרם, postrm). כדי למנוע טעויות, יש פשוט להכניס את אותה קריאה לכולם
סקריפטים והתוכנית תתאים את התנהגותה באופן אוטומטי בהתאם לסביבה
משתנה DPKG_MAINTSCRIPT_NAME ועל הארגומנטים של סקריפטי המתחזק שעליך לעשות
קדימה אחרי מקף כפול.
משותף פרמטרים
גרסה קודמת
מגדיר את הגרסה העדכנית ביותר של החבילה שהשדרוג שלה אמור להפעיל את
פעולה. חשוב לחשב גרסה קודמת בצורה נכונה כך ש-
הפעולות מבוצעות כהלכה גם אם המשתמש בנה מחדש את החבילה באמצעות
גרסה מקומית. אם גרסה קודמת ריק או מושמט, אזי הפעולה תתבצע על
בכל שדרוג (הערה: בטוח יותר לתת את הגרסה ולנסות את הפעולה)
פעם אחת בלבד).
אם קובץ הקונפייל לא נשלח עבור מספר גרסאות, ואתה כעת
שינוי סקריפטי התחזוקה כדי לנקות את הקובץ המיושן, גרסה קודמת
צריך להתבסס על גרסת החבילה שאתה מכין כעת, לא על
הגרסה הראשונה של החבילה שחסרה לה את קובץ ה-conffile. זה חל על כל שאר ה-
פעולות באותו אופן.
לדוגמה, עבור קובץ קונפליקט שהוסר בגרסה 2.0-1 של חבילה, גרסה קודמת
צריך להיות מוגדר 2.0-1~פעולה זו תגרום להסרת קובץ הקונפליקט גם אם ה-
המשתמש בנה מחדש את הגרסה הקודמת 1.0-1 as 1.0-1 מקומי1או חבילה שעוברת
נתיב מקישור סימבולי (נשלח בגרסה 1.0-1) לספרייה (נשלחה בגרסה
2.0-1), אך רק ביצוע ההחלפה בפועל בסקריפטים של המתחזק בגרסה
3.0-1, צריך להגדיר גרסה קודמת ל 3.0-1~.
חבילה
שם החבילה. כאשר החבילה היא "Multi-Arch: זהה", פרמטר זה חייב להיות
לכלול את אישור הארכיטקטורה, אחרת זה צריך לֹא בדרך כלל כוללים את
אישור אדריכלות (מכיוון שהוא ימנע דירוגים צולבים, או מעבר מלהיות
אדריכלות ספציפית לאדריכלות את כל או להיפך). אם הפרמטר הוא
ריק או מושמט, ה- DPKG_MAINTSCRIPT_PACKAGE ו DPKG_MAINTSCRIPT_ARCH
משתני סביבה (כפי שנקבעו על ידי dpkg) ישמש ליצירת קשת מוסמכת
שם חבילה.
-- יש להעביר את כל הפרמטרים של סקריפטי המתחזק לתוכנית.
לאחר --.
CONFFILE קשור משימות
בעת שדרוג חבילה, dpkg לא יסיר אוטומטית קובץ קונפיגורציה (קובץ תצורה)
קובץ עבורו dpkg צריך לשמר את שינויי המשתמש) אם הוא אינו קיים בגרסה החדשה יותר
גרסה. ישנן שתי סיבות עיקריות לכך; הראשונה היא שהקובץ הקונפליקט יכול היה
הושמט בטעות והגרסה הבאה תוכל לשחזר אותו, משתמשים לא ירצו את שלהם
שינויים נזרקים. השני הוא לאפשר לחבילות להעביר קבצים מ-
קובץ conffile המתוחזק על ידי dpkg לקובץ המתוחזק על ידי סקריפטי מתחזק החבילה, בדרך כלל
בעזרת כלי כמו debconf או ucf.
משמעות הדבר היא שאם חבילה נועדה לשנות שם או להסיר קובץ קונפייל, היא חייבת...
לעשות זאת במפורש ו dpkg-maintscript-helper ניתן להשתמש בו כדי ליישם מחיקה חיננית
והעברת קבצי conffile בתוך סקריפטים של מתחזקים.
מסיר a confile
אם קובץ קונפיגורציה מוסר לחלוטין, יש להסירו מהדיסק, אלא אם כן המשתמש ביצע...
שינה אותו. אם ישנם שינויים מקומיים, יש לשמור אותם. אם החבילה
אם שדרוגים מבוטלים, קובץ ה-config המיושן לא אמור להיעלם.
כל זה מיושם על ידי הכנסת קטע ה-shell הבא בתוך preinst, postinst
ו postrm סקריפטים של מתחזקים:
dpkg-maintscript-helper rm_conffile \
confile גרסה קודמת חבילה -- "$@"
confile הוא שם הקובץ של קובץ הקונפייל שיש להסיר.
יישום נוכחי: ב- preinst, זה בודק אם קובץ הקונפייל שונה ומשנה את שמו
זה או ל confile.dpkg-remove (אם לא שונה) או ל confileגיבוי .dpkg (אם
שונה). ב postinst, שם הקובץ האחרון שונה ל confile.dpkg-bak ונשמר עבור
ההפניה מכיוון שהיא מכילה שינויים של המשתמש אך הראשונים יוסרו. אם החבילה
שדרוג בוטל, ה postrm מתקין מחדש את קובץ הקונפיגורציה המקורי. במהלך הניקוי, ה- postrm יצטרך
גם למחוק את .dpkg-bak הקובץ נשמר עד עכשיו.
שינוי שם a confile
אם קובץ קונפליקט מועבר ממיקום אחד לאחר, עליך לוודא שאתה עובר למקום אחר
כל שינוי שהמשתמש ביצע. זה אולי נראה כמו שינוי פשוט ב- preinst תסריט ב
ראשית, אולם הדבר יגרום למשתמש להתבקש על ידי dpkg לאשר את הקונפליקט
עריכות למרות שהם לא אחראים להן.
ניתן ליישם שינוי שם בצורה חיננית על ידי הוספת קטע המעטפת הבא ב-
preinst, postinst ו postrm סקריפטים של מתחזקים:
dpkg-maintscript-helper mv_conffile \
קובץ-קונפייל-ישן קובץ-confile-new גרסה קודמת חבילה -- "$@"
קובץ-קונפייל-ישן ו קובץ-confile-new הם השם הישן והחדש של קובץ הקונפייל שיש לשנות את שמו.
יישום נוכחי: ה- preinst בודק אם קובץ הקונפייל שונה, אם כן, זה
נשאר במקום אחרת שמו ישתנה ל קובץ-קונפייל-ישן.dpkg-removeבעת קביעת תצורה, ה-
postinst מסיר קובץ-קונפייל-ישן.dpkg-remove ומשנה שמות קובץ-קונפייל-ישן ל קובץ-confile-new if ישן-
confile עדיין זמין. בביטול שדרוג/ביטול התקנה, ה- postrm משנה שמות ישן-
confile.dpkg-remove חזרה קובץ-קונפייל-ישן אם נדרש.
SYMLINK ו DIRECTORY מתגים
בעת שדרוג חבילה, dpkg לא יעביר אוטומטית קישור סימבולי לספרייה או
להיפך. שדרוגים לאחור אינם נתמכים והנתיב יישאר כפי שהוא.
מעבר a סימלינק ל בספרייה
אם קישור סימבולי מועבר לספרייה אמיתית, עליך לוודא לפני פריקת הקובץ
הקישור הסימלי הוסר. זה אולי נראה כמו שינוי פשוט ב- preinst תסריט בהתחלה,
עם זאת, הדבר יגרום לבעיות מסוימות במקרה של התאמה אישית מקומית של המנהל
קישור סימבולי או בעת שדרוג לאחור של החבילה.
ניתן ליישם שינוי שם בצורה חיננית על ידי הוספת קטע המעטפת הבא ב-
preinst, postinst ו postrm סקריפטים של מתחזקים:
קישור_לתיקייה_הסימבולית_של_dpkg-maintscript-helper \
שם נתיב היעד הישן גרסה קודמת חבילה -- "$@"
שם נתיב הוא השם המוחלט של הקישור הסימלי הישן (הנתיב יהיה ספרייה בסוף
של ההתקנה) ו היעד הישן הוא שם היעד של הקישור הסימלי הקודם ב- שם נתיב.
זה יכול להיות מוחלט או יחסי לספרייה המכילה שם נתיב.
יישום נוכחי: ה- preinst בודק אם הקישור הסימלי קיים ומצביע על היעד הישן,
אם לא, אז הוא נשאר במקומו, אחרת הוא ישתנה ל- שם נתיבגיבוי .dpkg. עַל
תצורה, ה postinst מסיר שם נתיבגיבוי .dpkg if שם נתיבגיבוי .dpkg עדיין
קישור סימבולי. בפעולת ביטול שדרוג/ביטול התקנה, ה- postrm משנה שמות שם נתיבגיבוי .dpkg חזרה
שם נתיב אם נדרש.
מעבר a בספרייה ל סימלינק
אם ספרייה אמיתית מומרת לקישור סימבולי, עליך לוודא לפני פריקת הקובץ
הספרייה הוסרה. זה אולי נראה כמו שינוי פשוט ב- preinst תסריט בהתחלה,
עם זאת, הדבר יגרום לבעיות מסוימות במקרה שהספרייה מכילה קבצי confile,
שמות נתיבים שבבעלות חבילות אחרות, שמות נתיבים שנוצרו באופן מקומי, או בעת הורדת ה-
חֲבִילָה.
ניתן ליישם מיתוג חינני על ידי הכנסת קטע המעטפת הבא ב-
preinst, postinst ו postrm סקריפטים של מתחזקים:
dpkg-maintscript-helper dir_to_symlink \
שם נתיב יעד חדש גרסה קודמת חבילה -- "$@"
שם נתיב הוא השם המוחלט של הספרייה הישנה (הנתיב יהיה קישור סימבולי בסוף
של ההתקנה) ו יעד חדש הוא המטרה של הקישור הסימלי החדש ב שם נתיב. זה יכול
או להיות מוחלט או יחסי לספרייה המכילה שם נתיב.
יישום נוכחי: ה- preinst בודק אם הספרייה קיימת, אינה מכילה
conffiles, שמות נתיבים שבבעלות חבילות אחרות, או שמות נתיבים שנוצרו באופן מקומי, אם לא אז
הוא נשאר במקומו, אחרת שמו שונה ל שם נתיבגיבוי .dpkg, ובמהלך ריק
ספרייה בשם שם נתיב נוצר, מסומן בקובץ כך ש-dpkg יוכל לעקוב אחריו.
תצורה, ה postinst מסיים את המעבר אם שם נתיבגיבוי .dpkg הוא עדיין
מדריך ו שם נתיב הוא ספריית ההזמנות; הוא מסיר את סימן ספריית ההזמנות
קובץ, מעביר את הקבצים החדשים שנוצרו בתוך ספריית ההזמנות ליעד ה-symlink
יעד חדש/, מחליף את ספריית ההזמנות הריקה כעת שם נתיב עם קישור סימול ל חדש-
יעד, ומסיר שם נתיבגיבוי .dpkgבביטול שדרוג/ביטול התקנה, ה- postrm
משנה שמות שם נתיבגיבוי .dpkg חזרה שם נתיב אם נדרש.
שילוב IN זיווד
בעת שימוש בעזר אריזה, אנא בדוק אם יש לו תוכנה מקורית dpkg-maintscript-helper
אינטגרציה, שעשויה להקל על חייך. ראה לדוגמה dh_installdeb(1).
בהתחשב בכך dpkg-maintscript-helper משמש ב- preinst, משתמש בו ללא תנאי
דורש תלות מקדימה כדי להבטיח שהגרסה הנדרשת של dpkg פורק
לפני כן. הגרסה הנדרשת תלויה בפקודה שבה נעשה שימוש, לדוגמה rm_conffile ו mv_conffile
זה 1.15.7.2, עבור קישור_סימבי_לתיקייה ו קישור_לקישור_סימלי זה 1.17.14:
תלוי מראש: dpkg (>= 1.17.14)
אבל במקרים רבים הפעולה שמבצעת התוכנית אינה קריטית לחבילה, ו
במקום להשתמש בתלות מקדימה, נוכל לקרוא לתוכנית רק אם אנו יודעים ש-
הפקודה הנדרשת נתמכת על ידי הפקודה המותקנת כעת dpkg:
אם dpkg-maintscript-helper תומך הפקודה; לאחר מכן
dpkg-maintscript-helper הפקודה ...
fi
הפקודה תומך יחזיר 0 בהצלחה, 1 אחרת. ה- תומך צוואה בפקודה
בדוק אם משתני הסביבה כפי שהוגדרו על ידי dpkg ונדרשים על ידי הסקריפט קיימים,
ויראו זאת ככישלון במקרה שהסביבה אינה מספקת.
השתמש ב-dpkg-maintscript-helper באופן מקוון באמצעות שירותי onworks.net