ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin

quick_linkעשרת החטאים של RPM

published at 20/07/2005 - 07:25 · ‏פורסם דוביקס · ‏tags קוד פתוח · שלח לחברידידותי למדפסת
קוד פתוח קלאודיו מאטסואוקה (Claudio Matsuoka), מפתח קונקטיבה בעבר (ומנדריבה בהווה), מסביר מהן הבעיות המבניות של RPM ומציע דרך לפתור אותן.

קונקטיבה, כזכור, הייתה המפתחת של apt4rpm המאפשר להשתמש ב- apt-get בהפצות מבוססות RPM. קלאודיו מעיד, שכאשר הם פיתחו את התוכנה, הם שמו לב לאיטיות של RPM. את האשמה הוא מטיל ב Berkley Database Backend המשמש את RPM, כמו גם בתלויות האוטומטיות המוספות ע"י מנגנון ה-RPM.

בין עשרת הבעיות עם RPM שהוא מונה: השימוש ב-Berkeley database backend (שביצועיו איטיים יחסית ל-dpkg המשתמש בקבצי טקסט, ולהם יתרונות נוספים - הם לא נהרסים לעתים קרובות, לא דורשים בניה מחדש, וניתנים לקריאה ע"י בני אנוש), התקנת חבילות חדשות לפני הסרת הגרסאות הישנות, וקוד התחברות לרשת, המגדיל את הקוד הבינארי וממילא הינו מיותר מאחר והוא לרוב ממומש גם במעטפות מעל RPM

גם dpkg אינו חף מבעיות - למשל אין יצירת חבילות קוד מקור (כמו ב-src rpm), לא קיים יישום פשוט של טלאים מרובים, יצירת החבילה וה-metadata אינו פשוט כמו ב-RPM) - ולכן קלאודיו אינו רואה במעבר ל-dpkg את הפתרון הנכון.

לדעתו, הכיוון צריך להיות שילוב בין ה-backend של dpkg לבין ה-frontend של rpm - הוא אף ממליץ ליישם את הממשק באופן שיציע תאימות לאחור עם חבילות קיימות.

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

קישורים:

בלוג - שם זמני, Top ten problems in RPM,
ווטסאפ, שמועה מעודכנת: מנדריבה וטורבו-לינוקס אאוט, קסנדרוס ולינספייר אין
 

קישורים רלוונטיים

· עוד על קוד פתוח
· חדשות מאת דוביקס


הסיפור הנקרא ביותר בנושא קוד פתוח:
לראשונה: סקר קוד פתוח מקיף

עשרת החטאים של RPM | כניסה / יצירת מנוי חדש | 13 תגובות
סף חסימה
  
ההערות הינן מטעם כותביהן. אין צוות האתר לוקח אחריות על תוכנן
ה"חסרונות" לא קיימים בחלקם (ניקוד: 1)
ע"י שחר (whatisupatshemeshdotbiz)
ב 20/07/2005 - 09:25
(מידע על משתמש | שלח הודעה) http://www.lingnu.com
"אין יצירת חבילות קוד מקור" - זה כמו לטעון כנגד לינוקס שאין שם מערכת אנטי וירוס. בגלל שמשתמש לא מחוייב להתקין את קוד המקור ב-directory הספציפי של ההפצה, אלא איפה שנוח לו לבנות את החבילה, כל משתמש יכול לבנות חבילות על מערכת דביאן, גם אם הוא לא root. במילים אחרות, זה לא חסרון, זה יתרון. גם בלי "חבילות מקור", ייצירת חבילה שזהה לבניה המקורית היא עניין של פקודה אחת.

"יצירת החבילה וה-netadata אינו פשוט" - זה פשוט לא נכון. אם משתמשים ב-dpkg-deb כדי ליצור את החבילות, הרי שיצירת החבילה וה-metadata פשוטים אפילו יותר. הבעיה היא שהחבילות שנוצרות כך הן באיכות ירודה יותר. בגלל זה כולם משתמשים בכלים הסטנדרטיים של דביאן, שמכריחים את יוצר החבילה להשקיע מחשבה באיך היא תותקן.

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

שחר

[ השב לזאת ]

לא הבנתי בענין הטלאים המרובים.(ניקוד: 0)
ע"י פינגווין אנונימי ב 20/07/2005 - 12:19

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

לא הבנתי מה ניסית להגיד. מהם שני השלבים? האם שני שלבים אינה המטרה? מפתחים עשויים להתענין בהבדלים בין המקור "של ההפצה" לבין המקור "האמיתי" לעומת זאת הרוב לא יתענין בכך. קשה לקלוע לרצון של כולם.

[ השב לזאת ]

Re: לא הבנתי בענין הטלאים המרובים.(ניקוד: 0)
ע"י פינגווין אנונימי ב 20/07/2005 - 20:09
למה בדיוק אתה מתכוון?

דווקא מנגנון dpatch נותן פתרון סביר ונוח כמעט כמו בניית rpm מהבחינה הזו. וגם מוסיף אפשרויות שחסרות ב־rpm לתחזוקת הטלאים.

לעומת זאת חסרה לי האפשרות להוסיף מקור בינארי (לא טקסטואלי) נוסף.

צפריר

[ השב לזאת ]

Re: לא הבנתי בענין הטלאים המרובים. (ניקוד: 1)
ע"י שחר (whatisupatshemeshdotbiz)
ב 21/07/2005 - 14:14
(מידע על משתמש | שלח הודעה) http://www.lingnu.com
dpatch לא פותר את הבעיה הבסיסית, והיא שהמנגנון הרגיל (dpkg-source) לא פותח לך את קוד המקור כפי שדביאן רואה אותו. dpatch בסה"כ אומר שחלק מתהליך הבניה גם מכניס את השינויים. חשוב. נחמד, אבל לא טבעי כמו הדבר הרגיל.

לגבי מקור בינארי נוסף, התשובה הדביאנית הרגילה היא "תייצר חבילה בשבילו ותעשה build-depends". לא אוהב אותה בעצמי.


לדוגמא: יש תוכנה בשם "rsyncrypto". בחלק מנסיונות השיפור, אני רציתי להוסיף לה תמיכה ב-make test. הוא מבצע סדרה של הצפנות ושחזורים ומשווה לערכים ידועים. הבעיה היא שלא הגיוני לשים את סדרת הערכים הידועים בתוך מקור נפרד.

הבעיה היא שאם אני מייצר חבילה שנקראת "rsyncrypto-regtest", הכי הגיוני מבחינת התקנה זה לעשות שהחבילה תהיה תלויה ב-rsyncrypto. מצד שני, אנחנו צריכים ש-rsyncrypto יהיה build-dep ב-rsyncrypto-regtest. במילים אחרות, אנחנו מייצרים פה תלות מעגלית.

שחר

[ השב לזאת ]

Re: לא הבנתי בענין הטלאים המרובים.(ניקוד: 0)
ע"י פינגווין אנונימי ב 21/07/2005 - 23:13
גם בבניית rpm זה "לא אוטומטי" באותה המידה.

אתה יכול פשוט להריץ:

dpatch apply-all

ויש לך את המקור עם כל התיקונים.


אני בסה"כ מרוצה ממנו, חוץ מהעובדה שהוא עדיין לא משולב לפעמים מספיק טוב בכלי הבניה.

[ השב לזאת ]

Re: ה"חסרונות" לא קיימים בחלקם(ניקוד: 0)
ע"י פינגווין אנונימי ב 20/07/2005 - 13:19
"כל משתמש יכול לבנות חבילות על מערכת דביאן, גם אם הוא לא root. "

גם ב-RPM משתמש יכול לבנות חבילות. ממתי צריך שהוא יהיה ROOT?

[ השב לזאת ]

Re: ה"חסרונות" לא קיימים בחלקם (ניקוד: 1)
ע"י שחר (whatisupatshemeshdotbiz)
ב 21/07/2005 - 14:21
(מידע על משתמש | שלח הודעה) http://www.lingnu.com
איך בדיוק הוא אמור לעשות "rpm -i" לחבילת המקור אם הוא לא root?

בדביאן, הוא עושה apt-get source name

שחר

[ השב לזאת ]

Re: ה"חסרונות" לא קיימים בחלקם(ניקוד: 0)
ע"י פינגווין אנונימי ב 21/07/2005 - 23:17
rpm -i לחבילת מקור לא מעדכן את ה־rpm database של המערכת ולכן לא דורש הרשאות root. בתנאי שהגדרת את ה־rpmdir כמו שצריך ב־rpmmacros .

[ השב לזאת ]

Re: ה"חסרונות" לא קיימים בחלקם(ניקוד: 0)
ע"י פינגווין אנונימי ב 20/07/2005 - 14:33
> "אין יצירת חבילות קוד מקור"
איך בדיוק אתה מפיץ קוד מקור של תוכנה ביחד עם כל המידע הדרוש לבנית החבילה בדביאן? אם הבנתי אותך נכון, אתה צריך להפיץ שני קבצים: את הכדורזפת של התוכנה ואת החבילה הבינארית.
ב-RPM אתה יכול או להפיץ את קובץ ה-SPEC בתוך כדור הזפת של המקור (ו-RPM יכול לבנות את התוכנה ישר מתוך הכדורזפת עם הטג tb- ) או להפיץ חבילת RPM מיוחדת מסוג source RPM שמכילה עותק של כל הקבצים הדרושים לבניה, שניה לפני שהרצת את התהליך, כך שמשתמשים שלא יודעים איך לקמפל תוכנות מסוגלים לבנות תוכנה מקוד מקור בפקודה אחת. RPM גם מנהל תלויות של בניה כך שאם חסרות לך חבילות devel בשביל הבניה אז RPM יזהיר אותך מראש.
עד כמה שאני יודע, ל-RPM יש את מערכת הבניה מקוד מקור הכי מוצלחת מתוך מנגנוני ניהול החבילות (מלבד ports ו-emerge, אבל להם יש בעיות קשות אחרות של-RPM אין).

> "יצירת החבילה וה-netadata אינו פשוט" - זה פשוט לא נכון ... הבעיה היא שהחבילות שנוצרות כך הן באיכות ירודה יותר..

אז בעצם אתה אומר שזה לא נכון, כי יש כלים אלטנרטיביים שמפשטים את העבודה, אבל בגלל שהם גרועים ביותר אף אחד לא משתמש בהם. אז זה כן נכון ?

[ השב לזאת ]

חבילת מקור ואיכות הכלים ל metadata.(ניקוד: 0)
ע"י פינגווין אנונימי ב 20/07/2005 - 15:20
1. בניגוד למה שאני הבנתי מהתגובה שמעלי (ולא ממה ששחר כתב), אין צורך להפיץ את החבילה הבינרית כחלק מהחבילה של קוד המקור. כדי להפיץ את החבילה של קוד המקור יש שנים או שלושה קבצים: dsc ,*.tar.gz.* ובדרך כלל נוסף גם הקובץ השלישי, .diff.gz.*.
2. בענין ה metadata, לדעתי הכלים טובים ואחרי נסיון גם בניה ידנית נותנת איכות טובה.

[ השב לזאת ]

Re: ה"חסרונות" לא קיימים בחלקם (ניקוד: 1)
ע"י mksoft (meir@mksoft.co.il)
ב 20/07/2005 - 18:37
(מידע על משתמש | שלח הודעה) http://mksoft.co.il/
אתה מצרף לעץ המקור את תיקיית debian. כדי לבנות את החבילה אפשר להריץ את הקובץ debian/rules (שהוא בעצם makefile) או בעזרת dpkg.

[ השב לזאת ]

Re: ה"חסרונות" לא קיימים בחלקם (ניקוד: 1)
ע"י שחר (whatisupatshemeshdotbiz)
ב 21/07/2005 - 14:31
(מידע על משתמש | שלח הודעה) http://www.lingnu.com
תלוי למה אתה קורא "מערכת הבניה".

אם אתה מתכוון לייצירת DEB באמצעות dpkg-deb, הרי שאתה פשוט מייצר את עץ הקבצים ו-directory עם הקבצים שמתארים את החבילה, וזהו. פשוט וקל. יש בעיות רגילות עם השיטה הזו. למשל, איך מייצרים שוב את אותו העץ, איך מוודאים שאין התנגשויות, ועוד בעיות שקשורות לבקרת איכות. בגלל זה, אף אחד לא משתמש בשיטה הזו.

מה שכן עושים, בונים makefile שמייצר את העץ אחרי שקימפל את קבצי המקור. במובן זה, בניית חבילה בדביאן (על ידי הרצת debian/rules או ע"י הרצת dpkg-buildpackage) פשוטה לפחות כמו, אם לא יותר, מאשר rpmbuild -ba.

אחד היתרונות, וזה גם מה שגורם לטענה שניהול ה-patches יותר קשה, זה שאותו תהליך שבונה את החבילה הבינארית בונה גם את הפצת קוד המקור. במילים אחרות, נבנה גם קובץ diff יחיד שהופך את קוד המקור upstream לקוד המקור שאתה צריך בשביל הקומפלציה.

הפן החיובי הוא שייצירת החבילה לא דורשת כל פעם ליצור קובץ diff בעצמך. אתה עורך את קוב המקור כרגיל, וקובץ ה-diff נוצר אוטומטית. בפן השלילי, כך לא ניתן לעקוב בקלות אחרי כמות גדולה של שינויים ממקורות שונים. כפי שציין צפריר, בשביל זה יש את dpatch.

בכל מקרה, התחליף ל"חבילת מקור" הוא שלושה קבצים בדביאן. קובץ המקור המקורי (כמו בג'נטו), קובץ קטנטן שנותן תמצית על החבילה, וקובץ עם patch שמוסיף את התמיכה בבנייה לדביאן אל תוך קובץ המקור המקורי. כל הכלים של דביאן יודעים לטפל בשלישיה הזו כיחידה אחת, כך שחוויית המשתמש לא נפגעת (ואולי אף להיפך).

שחר

[ השב לזאת ]

Re: עשרת החטאים של RPM (ניקוד: 0)
ע"י פינגווין אנונימי ב 20/07/2005 - 18:31
http://www.pkgsrc.org

[ השב לזאת ]