פורסם: 18/05/2010 - 09:29
נושא ההודעה:
|
עוד קצת הערות:
אם מאפשרים לך, אתה יכול להשתמש בשרת של המקור\איגוד האינטרנט הישראלי כדי לשים שם חבילות, פשוט כרגע למשל, האתר שאתה משתמש בו קרס, וחבל. בנוסף, אולי אפשר לאפשר בחירה של מראה - באמצעות קובץ שישב למשל ב /etc/farmer/mirror.conf או משהו דומה.
בנוסף, חסרות פקודות בסיסיות כמו file, או whatis, וחבל...
אסף.
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 09:52
נושא ההודעה:
|
meijin : | אולי אפשר לאפשר בחירה של מראה - באמצעות קובץ שישב למשל ב /etc/farmer/mirror.conf או משהו דומה. |
כבר חשבתי על מנגנון כזה ... חשבתי שקודם כל כדאי ש-Farmer יעבוד טוב עם מקור אחד קבוע מראש, ואז נתחיל להשתעשע עם כמה מראות. אני אנסה לבנות משהו דומה.
meijin : |
בנוסף, חסרות פקודות בסיסיות כמו file, או whatis, וחבל...
|
אני מסכים איתך. הבעיה היא ש-file רוצה גם את zlib. שני אלה ביחד יגדילו את ה-ISO ואת צריכת הזיכרון וזמן העלייה של כל העסק. אני רוצה שהכל יהיה כמה שיותר קומפקטי ומינימליסטי.
הרעיון דומה לאידיאולוגיה של Tiny Core, המשתמש "בונה" את מערכת ההפעלה והיא באה מראש רק עם מה שנחוץ כדי שהיא תעלה ותאפשר להתקין חבילות.
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 11:21
נושא ההודעה:
|
טריק שכמה הפצות מינימליסטיות משתמשות בו הוא אפשרות להתקין חבילות בינאריות נוספות שנמצאות על המדיה (לדוגמה: DoK). חיסרון אחד הוא שאין אפשרות פשוטה לאתר תלויות.
כמוכן: אם אתה מתקין תוכנה ממקור מרוחק, צריך לחשוב על משהו מהסוג של חתימה על חבילה. שאם לא כן, זה פותח פתח להתקפה של החלפת תוכן החבילה ע"י מישהו בדרך (man in the middle).
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 12:25
נושא ההודעה:
|
כמה רעיונות שאני משתעתשע בהן בזמן האחרון:
- במקום להשיתמש ב־glibc וחבריו, להשתמש ב־uclibc + bysybox. ראיתי אותם בפעולה ואני חושב שהדברי םהאלו מספיק חזקים להחזיק שרת פשוט. בגלל חותמת זיכרון נמוכה ייתכן ולמערכת שלך יהיו ביצועים גבוהים יותר כי ה־icache שלך יהיה נקי יותר מאשר במערכות gnu.
- להשתמש ב־clang במקום gcc. פה מדובר בהימור מאוד רציני, כיוון שהדבר הזה בקושי self hosting במשך כמה חודשים אצלי (לקח לזה איזה חודש וקצת מרגע שהכריזו על זה ועד שזה עבד בפועל אצלי). קריאה נוספת (+וויקיפדיה, שבור את הראש ותמצא לבד): http://clang.llvm.org/.
- להשתמש בספריית libc++ החדש מבית llvm כדי לקמפל את clang, ואם יש לך מספיק אומץ, תעלה למעלה עד שתגיע ל־Firefox עם ה־toolchain הזה. זהו מהלך התאבדותי שנידון לכישלון, כיוון שהמערכת הזאת רק הוכרזה לפני שבוע. לא הגיוני להשתמש בזה. לקריאה נוספת: http://libcxx.llvm.org/
אני ממליץ לך בחום להישאר עם מנהל חבילות קיים. אני ממליץ לך על rpm כי הבנייה שלו ושל החבילות די טריויאלית. מצד שני, יש כלום מצויינים לבנייה של מאגרי deb אצל דביאן. הם מסורבלים בצורה שאתה לא תאמין, אבל לטווח המאוד רחוק אין מי שינצח אותם. עוד אפשרות היא pacman של arch שהוא הפתיע אותי לטובה במהירות שלו, כמו הן הבנתי שמנגנון הבנייה שלהם די פשוט גם.
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 12:52
נושא ההודעה:
|
בדקתי את האפשרות של uclibc. הבעיה איתו זה שהרבה דברים לא מתקמפלים איתו בגלל שיש בו הרבה חורים בהשוואה ל-glibc. נכון שדברים כמו Busybox ו-udev יעבדו, אבל אלה דברים טריוויאליים. דברים כמו Python - אני בספק אם הם יעבדו.
לגבי מנהל חבילות, כבר אמרתי בעבר, אני לא רוצה מנהל חבילות קיים. לבנות את מנהל החבילות זה חלק מהכיף. הנה כמה דוגמאות ליכולות שלו נכון לעכשיו:
לא נותן לאף משתמש חוץ מ-root להריץ אותו -
מבקש אישור מהמשתמש כשהוא רוצה להתקין משהו ונותן בחירה בין מאגרים (נכון לעכשיו יש רק אחד) -
מוריד דברים עם progress bar נחמד וזמן משוער -
מתקין תלויות רקורסיבית -
(transmission רוצה את curl שרוצה עוד כמה דברים)
אני חושב שאין אף מנהל חבילות שעונה על הדרישות שלי. המטרה שלי היא לבנות אחד שכן.
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 12:58
נושא ההודעה:
|
תוכל לפרט קצת יותר מה מכיל קובץ bucket שכזה? טיפה על מנגנון בניית החבילות?
אגב, אני ממליץ להתחיל לתעד כבר מעכשיו בוויקי מסודר, כי אח"כ, כשהפרויקט יגדל ויתעצם (ונקווה שזה יקרה) זה רק ילך ויהיה יותר קשה.
אגב, הבאג של הזמן לא נכון עדיין קיים, וכעט ישנו באג חדש - באישור, הוא מצפה לקבל רק Y גדולה, כאשר אם כותבים y או פשוט לוחצים אנטר (בדר"כ, מניסיוני הדל, אם לוחצים אנטר הוא בוחר את ברירת המחדל - מסומן כ Y במקרה הזה) הוא מבטל את ההתקנה.
bzip היא חבילה שבורה - אחת התלויות שלה לא נמצאות (נסה להתקין את elinks).
אסף.
נערך לאחרונה על-ידי meijin בתאריך 18/05/2010 - 13:05, סך-הכל נערך פעם אחת
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 13:04
נושא ההודעה:
|
אני דווקא התלהבתי מאוד מ־urpmi בזמנו. למשל כשיש לך שתי חבילות שמספקות את אותו dependency, זה נותן לך דרך שפוויה לבחור ביניהם, (מספר בודד) זאת בניגוד ל־apt שמכריח אותך לכתוב את שם החבילה המלא. לגבי שאר הדברים - תתפלא, אבל כל מה שאתה מתאר נתמך.
מצד שני, אתה מעלה טיעון מנצח "זה כל הכיף".
לגבי פייתון - בעבודה הקודמת קימפלו את php ואת perl עם uclibc על BlackFin שמשתמש ב־toolchain שבנוי מ־uclibc (מה שצפריר קישר אליו מקודם). זאת הייתה פלטפורמה בעייתית, שלא תומכת אפילו ב־fork (כי אין לה mmu). לאחר שינוי s/fork/vfork/g שתי השפות האלו היתקמפלו ועבדו טוב במסגרת הבעיות של החומרה. אני לא צופה בעיות עם פייתון בימינו.
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 14:18
נושא ההודעה:
|
aptitude מתייחס לבעיה בצורה קצת שונה: הוא מציג לך את הפתרון הטוב ביותר ושואל אם אתה רוצה. אם לא, הוא מציג לך את הפתרון השני, ושואל אם אתה רוצה, וכו'.
הבעיה הזו קיימת אם מאגר החבילות שלך כולל "חלופות" - מקרים שבהם תלות מסויימת יכולה להיות מסופקת ע"י שתי חבילות שונות. ברגע שאתה צריך לטפל במקרה הזה, בעיית מציאת החבילה הופכת להיות (במקרה הגרוע) לבעיה מסובכת מאוד. חפש, לדוגמה, package management sudokuם (מסתבר שפותר התלויות של aptitude יודע לפתור סודוקו, אבל לא ממש אופטימלי לפתרון הבעיה).
עוד נקודה: העובדה שאי אפשר להריץ את farmer כמשתמש שאינו root נראת לי דווקא באג. כל מערכת ניהול חבילות שאני מכיר אפשר להריץ כמשתמש רגיל. לדוגמה:
* לשאול שאלות על מצב המערכת
* ליצור חבילות
המניעה של עבודה כ־root נעשית ע"י הרשאות. ליתר דיוק, גם rpm, גם apt וגם dpkg (אני לא מכיר מערכות אחרות מספיק טוב) מתחילים בכך שהם "נועלים מנעול" ע"י כתיבה לקובץ מסויים. מי שאינו root פשוט לא יכול לכתוב לקובץ הזה והפעולה נכשלת
טיפ קטן: כדי לצלם "צילום מסך" כטקסט מהקונסול:
cat /dev/vcs >screenshot
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 16:34
נושא ההודעה:
|
meijin : | תוכל לפרט קצת יותר מה מכיל קובץ bucket שכזה? טיפה על מנגנון בניית החבילות?
|
נכון לעכשיו הוא מכיל את כל הקבצים של החבילה, ושני קבצי טקסט אופציונליים. אחד בשם deps מכיל רשימת תלויות, לדוגמה:
קובץ שני בשם postinstall מכיל רשימה של פקודות להריץ אחרי ההתקנה. הוא מורץ ע"י
ash.
הנה דוגמה מהחבילה של Bash:
קוד: | echo "Setting Bash as the default shell"
/bin/rm /bin/sh
/bin/ln -s bash /bin/sh
|
נכון לעכשיו אני עובד על "הדור הבא" של מנהל החבילות, שעובד קצת שונה. הוא מקבל קובץ עם שורות בפורמט מסויים:
קוד: | generic name|version|dependency,dependency (...)|size|md5 |
בעזרת כמה פונקציות הוא יודע לשלוף כל סקציה. הרעיון הוא לאפשר הורדה של התלויות לפני החבילה עצמה ולאמת את ההורדה. בהמשך זה גם יוכל לסייע לעדכונים (בעזרת השוואה של הגרסה או ה-MD5).
meijin : |
אגב, הבאג של הזמן לא נכון עדיין קיים, וכעט ישנו באג חדש - באישור, הוא מצפה לקבל רק Y גדולה, כאשר אם כותבים y או פשוט לוחצים אנטר (בדר"כ, מניסיוני הדל, אם לוחצים אנטר הוא בוחר את ברירת המחדל - מסומן כ Y במקרה הזה) הוא מבטל את ההתקנה.
|
כבר תיקנתי את זה.
meijin : |
bzip היא חבילה שבורה - אחת התלויות שלה לא נמצאות (נסה להתקין את elinks).
|
אני אבדוק את זה.
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 17:22
נושא ההודעה:
|
הפורמט שבו משתמשים ב־deb לרוב הדברים נקרא "פורמט RFC 2822" (כלומר: של כותרות דואר). באופן כללי:
קוד: |
Package: foobar
Var1: Value of Var1
Var2: Value of Var2
Multi-Line: A multii-line
value: a line that begins with a space means it is added to
the previous one
Var3: Value of Var3
# '#' begines a comment
# An empty line breaks a section. Here we start the section of the next package:
Package: baz
...
|
הפורמט הזה מאוד נוח לפרוש.
|
|
חזרה לתוכן הדיון |
פורסם: 18/05/2010 - 18:31
נושא ההודעה:
|
צפריר : | הפורמט הזה מאוד נוח לפרוש. |
המממ ... נחמד מאוד. משום מה ישר קפצתי לתיאור של חבילות לפי שורות (כמו ב-Puppy Linux) ... אני אנסה לבנות משהו כזה.
|
|
חזרה לתוכן הדיון |
פורסם: 30/05/2010 - 00:14
נושא ההודעה:
|
ניסיתי להפעיל על גבי VirtualBox והמערכת ברוב מוחלט של הפעמים נתקעת אחרי השורה:
Checking 'hlt' instruction... OK.
לא הצלחתי להבין מתי כן ומתי לא.
_________________ בתודה מראש 11111
|
|
חזרה לתוכן הדיון |
|