נראה שאנו, משתמשי לינוקס, חיים כל הזמן בציפייה: ציפייה לשחרור פיירפוקס 3, ציפייה לשחרור אופן אופיס 3 (כשקודם חיכינו לגרסאות 2 שלהם) ובאופן כללי ציפייה להפצה הבאה שאולי תהיה ההפצה שתעביר את משתמשי חלונות אלינו…
נושא ההפצות הוא נושא סבוך: בלינוקס מותקנות חבילות התוכנה בהיררכיה של עץ. הבעיה עם מבנה זה, זה שקשה לעתים לשדרג רק חבילה חשובה אחת (בגלל בעיית תלויות) ולכן רוב המשתמשים תלויים במפתחים ובמנהלי ההפצה. יש הפצות שמשחררים גרסה חדשה אחת לחצי שנה (אובונטו, סוזה, מנדריבה ועוד…), אך הבעיה עם הפצות אלו זה שהם מאוד לא יציבות (שחרור מהיר גורם, מן הסתם, גם ל- QA ירוד). מי שרוצה קצת יותר שפיות פונה להפצות היציבות (Debian Etch, Cent OS ועוד…), אך גם אתן יש בעיה שכן הן כוללות חבילות מאוד ישנות, וכדי להתקין חבילות חדשות צריך לפנות למאגרים הלא רשמיים (ששוב יכולים לסכן את ההפצה). יש הפצות "מתגלגלות לעד" (דוגמת Arch) אך הן לא תמיד מתאימות למשתמש הפשוט, ויש גם הפצות LTS (תמיכה לטווח ארוך) שלדעתי לא טובות יותר מדביאן Etch.
אז מה אני עשיתי בשנים האחרונות? עבדתי עם שתי הפצות עיקריות: בבית עם אובונטו (שמשוחררת אחת לחצי שנה) ושכוללת את החידושים האחרונים בעולם הלינוקס (כשאני לוקח בחשבון שמידי פעם יהיו לי בעיות…), ובמחשב הנייד ובעבודה (שם אני צריך יציבות מקסימלית) עם Debian Etch. הבעיה עם Etch שהיא הייתה מאוד, אבל מאוד ישנה והיו לי איתה בעיות רציניות בזיהוי חומרה. בנוסף גם עץ החבילות המאוד ישן שלה די עצבן אותי. אז מה עשיתי? לפני כשנה עברתי ל- Debian Lenny. מדובר בגרסת ה- Testing של Debian וחבילות נכנסות אליה רק לאחר תקופת הרצה ובדיקה בעץ הלא יציב (Sid). החיים עם Lenny הם חיים די טובים. Lenny "מתגלגלת" ומידי יום יש עדכונים שוטפים. ל- Lenny צריך להתנהג בזהירות כשצריך לזכור שגם היא יודעת "להרביץ". Lenny בסך הכל מכילה עץ די חדש וכשתוכרז בעוד כחודשיים כהפצה היציבה הבאה של דביאן ניתן יהיה לעבוד איתה לאורך תקופה ארוכה בצורה יפה.
אז עכשיו, כפי שאתם מבינים מהכותרת, אני מצפה בכליון עיניים ל- Stable Lenny בתקווה שאולי היא תהיה הפצת העל המיוחלת (למרות שלדעתי לעולם לא תהיה "חיה" כזאת, עד שלא ימציאו עץ חבילות "אחר": גמיש, אינטגרטיבי, כשחלקו אולי בינארי, שיאפשר התקנה פשוטה ומהירה של חבילות חדשות גם בהפצות היציבות).
בשבוע האחרון סבלתי מתופעות שונות ומשונות שנבעו מעדכון מערכת שוטף. מדובר במחשב נייד שמריץ את Debian Lenny מעל לשנה. בתקופה הזאת לא סבלתי מבעיות מיוחדות (למרות שמדובר בענף ה- Testing של דביאן). אז מה קרה? ביצעתי עדכון מערכת וכאמור לכל נושא המולטימדיה "נדפק":
אז מה קרה? היתה התנגשות בשמות חבילות בין המאגר הרשמי של דביאן לבין המאגר הלא רשמי (Debian-Multimedia) שמספק תמיכה למקודדים השונים (שבשל מגבלות ברישיון השימוש לא יכולים להיכלל במאגר הרשמי).
כדאי לקרא את ההסבר של מתחזק אתר Debian-Multimedia:
18/06/2008 :
Broken ffmpeg libraries :
Since Debian use the same soname packages name than my packages, official packages (vlc, totem, etc…) linked against libavc* doesn't work with my libavc* packages.
If you want to use vlc and friends you need to downgrade libavc* packages to the official packages.
Beware : downgrading to these packages will remove all debian-multimedia packages who depends on libavc*
To downgrade do the following :
dpkg -l | grep 3:2008
for each package echoed do :
apt-get install –reinstall <package>=0.svn20080206-8
0.svn20080206-8 is the unstable version and 0.cvs20070307-6 for testing (check with apt-cache for the current version).
If somebody know a better solution tell me.
בסופו של דבר, לאחר מספר "משחקים" בהתקנות/הסרות/שדרוג ושנמוך של חבילות שונות הצלחתי להתגבר על הבעיה. vlc חזר לנגן וידאו, מזרים מציג סרטוני וידאו וגם החבילות שהכנתי לדביאן: Gecko Mediaplayer ו- Gnome-Mplayer עובדות בצורה יפה.
עוד פעם למדתי על בשרי כמה מסוכנת ההסתמכות על מקורות לא רשמיים של ההפצה. לאחר שתיקנתי את הבעיה הסרתי את המקור: Debian-Multimedia מרשימת המקורות בקובץ sources.lst. כשארצה אפתח זמנית את הגישה למקור הזה, אבל בברירת מחדל אני משאיר אותו סגור. זאת גם המלצתי אליכם.
רק מה… יש בעיה קטנה: לא תמיד ה- plugin עובד (זרימת קול עובדת, אך אתרים עם וידאו מעלים הודעת שגיאה). כרגע אין לי זמן לחקור את הבעיה ואשמח אם מישהו אחר (משתמש דביאן) יעזור לי להתמודד איתה (כנראה שהבעיה נובעת מהגדרות ברירת מחדל לא מתאימות ב- mplayer).
רן יניב הרטשטיין הודיע שאתר נענע עומדים להחליף עיצוב, ושבעיצוב החדש תהיה תמיכה מלאה בפיירפוקס. טוב, לא ממש מלאה, כי בנושא הוידאו הם עומדים להסתמך על Silverlight.
אז מה זה Silverlight? מדובר במוצר של Microsoft שאמור להתחרות בפלאש. במקום לנסות להסביר מה המוצר עושה אצטט מהאתר של מיקרוסופט:
"Microsoft Silverlight is a cross-browser, cross-platform, and cross-device plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web"
נשמע מבטיח… Cross-Browser, Cross-Platform, Cross device Plugin
מהציטוט ניתן להניח שתהיה תמיכה גם בלינוקס, לא? הקלקתי על הדוגמא הראשונה באתר של Silverlight ומה קיבלתי?
הבנתם? אין תמיכה במערכת ההפעלה שלי… (בעצם אולי גם בחומרה, כי למיקרוסופט קשה להחליט מה לא בסדר אצלי…).
החלטתי לחקור את הנושא לעומק, וגיליתי שדווקא הכוונות של מיקרוסופט אינם זדוניות כמו שאני חושב. הם פנו ל- Novel במטרה ליצור Plugin ללינוקס. ה- plugin לא נקרא Silverlight אלא Moonlight (למה שינו את השם?). הורדתי והתקנתי את הגרסה היציבה של התוסף (1.0), וניגשתי שוב לדף הבית של Silverline. הצלחתי לראות משהו? לא! רק מסך שחור…
אסיים עם תקווה: יש כבר גרסת אלפא ל- 2.0 (הם קופצים די יפה בין הגרסאות). נשאר לקוות שבגרסה 16.0 התוסף יעבור טוב. חבל שדווקא נענע, שכותבים כל כך הרבה על לינוקס, בוחרים בפתרונות שלא נתמכים על ידה. מילא כשמדובר באתר ישן, אבל להתעקש לבנות אתר חדש עקום? מקווה שכל הפוסט הזה הוא טעות אחת גדולה, ואשמח לתקן אותו בקרוב (אם אגלה שטעיתי).
שדרגתי אתמול את Firefox. קצת לפני השדרוג וגם לאחריו שמתי לב לתופעה מוזרה: הדפדפן מתרסק בכל כניסה לדף המכיל embeded video. ניסיתי לפתור את הבעיה בדרכים שונות:
הפעלה מהטרמינל, זיהוי השגיאה שגרמה להתרסקות (חריגת זכרון) ונסיון מציאת פתרון ב- web.
שום דבר לא עזר! מה שכן שמתי לב זה שבפורומים השונים ממליצים על תוסף חדש: gecko-mediaplayer. הסרתי שוב את xine-plugin והתקנתי את gecko-mediaplayer ובא לציון גואל! הדפדפן לא מתרסק ובנוסף אני מבחין בזיהוי וידאו משופר מעבר ליכולת התוסף להגדיל את הוידאו על כל המסך (תכונה שלא היתה ב- xine).אז איך מתקינים את gecko-mediaplayer?
גלשתי הרגע לאתר one וגם אתר זה נתמך ע"י gecko-mediaplayer (האתר one הוא אתר סורר באופן מיוחד, ואף תוסף לא הצליח עד היום לפענח את שיטת העבודה הלא תקנית והמוזרה שלו). פשוט מעולה ומומלץ בחום!
בעצם יתכן ששוחרר לפני כשעה (אמור היה להשתחרר בשעה 20:00), אבל נראה שאתר מוזילה קרס בעקבות יום ההורדות הגדול. ניסיון להוריד את הגרסה החדשה מסתיים בהודעה הבאה:
בעקבות דיון ב- whatsup צפיתי הרגע בהרצאה של Guido Van Rossum שגרמה לי להיות מוטרד. בהרצאה Giudo נשמע די מיוסר מהארכיטקטורה של שפת Python והחליט שבגרסה שנקראת Python 3000 הוא יבצע את רוב התיקונים עליהם חלם אך לא מימש בגלל הרצון לשמור על תאימות לאחור. כדי שמי שלא מתכנת יבין את הנפש של Giudo אציין שתכנות היא עבודת אומנות של ממש. יש הרבה תכנתים שכותבים קוד ברמה ירודה ומעט שכותבים קוד "אומנותי" (ואני לא מדבר על באגים אלא על היופי והאלגנטיות שבכתיבה). אם תשאלו כל תכנת מקצועי הוא בטח יגיד לכם שהוא לא שלם עם התוכנות שהוא כתב והיום הוא בטח היה כותב אותם אחרת. אז למה לא עושים זאת? עצלות (כי בדר"כ מדובר בהרבה עבודה), פחד להכניס באגים חדשים למשהו "שעובד", שיקולים כלכליים ועוד…
אתן לכם דוגמא ממני: אני לא תכנת במקצועי. תכנות היה ויהיה תמיד תחביב מועדף שאפשר לי, גם בעבודה, לכתוב מספר תוכנות יפות. בתקופה האחרונה התחלתי ללמוד שתי שפות חדשות: Java ו- FPC. מי שעזר לי להכנס לשפת FPC הוא עידו קנר ובהזדמנות זאת אני רוצה להודות לו על התמיכה הרציפה שנתן לי בפורום FPC-IL#. למי שלא יודע אז השיטה הטובה ביותר ללמוד שפה חדשה היא לכתוב באמצעותה פרוייקטים שונים. כתבתי תוכנית בלזרוס שמבצעת חישוב ובדיקה של ספרת ביקורת בתעודת זהות ישראלית. הקוד היה תקין ולא היו באגים, אך עידו העיר לי על שני נושאים עיקריים: שכפול קוד וכתיבת קוד ארוך מידי… בסופו של דבר מימשתי בעזרתו את אותו הקוד בשליש שורות קוד. הקוד נראה עכשיו יפה ואלגנטי ואני מרוצה ממנו. אמשיך ואבחן את התוכנה "מזרים". גם ממנה אני לא ממש מרוצה: יש בה שכפול קוד ובאופן כללי ניתן היה לכתוב אותה בצורה אלגנתית וחכמה יותר. עכשיו אתם בטח יכולים להבין את Guido… בזמנו כמפתח יחיד (לפני יותר מ- 10 שנים), הוא קיבל החלטות שונות שחלקם היו עיגול פינות (בגלל מחסור בזמן). עכשיו, כעובד Google, הוא מעוניין לתקן את כל אותם טעויות ארכיטקטוניות שבשפה. הבעיה היא שהתמיכה לאחור "תישבר" ולא ניתן יהיה להמיר קוד בצורה בטוחה מפייתון 2 ל- Python 3000.
כאמור ההרצאה של Guido גרמה לי להיכנס לדיסונאנס קוגניטיבי:
פייתון הייתה תמיד שפת התסריטים המועדפת עלי. בעיני היא שפה יפה ואלגנטית אך אולי טעיתי והייתי צריך לבחור מההתחלה בפרל כשפת תסריטים?
אם לא אעבור ל- Python 3000 אתקע בשפה מתה, אך מעבר לפייתון 3000 מחייב שינוי הרגלים ולימוד השפה כמעט מחדש (מה עוד שיקח לקהילה זמן לפתח מודולים שונים שירחיבו את יכולות השפה).
אסיים בהפנייה למאמר של דורון אופק ("לאנשי קוד פתוח צריכים להיות תחתונים גדולות"): כשהקוד סגור אתה יכול להסתיר את הקוד הלא אסטתי שכתבת, אך בקוד פתוח אתה חשוף. זאת אולי גם הסיבה שבדר"כ איכות הקוד בקוד הפתוח טובה יותר מזו של הקוד הסגור.
בהשראת יורו 2008 רדיו ירושלים עורך תחרות: "איזה שידור של שער מרשים יותר?". בכדורגל השדרים "המשוגעים" ביותר הם מסעודיה ודרום אמריקה. בינתיים מוביל השדר הסעודי שמדבר ומדבר (ללא קשר למשחק) ופתאום נופל שער. אם תשמעו את הקטע הבא (מבלי לדעת שמדובר בכדורגל) לא תבינו ממה הוא נדהם: מבחורה יפה, מפיגוע או מאירוע מדהים אחר. קטע גדול
בחלונות יש חור שחור אחד גדול שנקרא "רגיסטרי". מדובר בבסיס נתונים גדול שכדי ללמוד אותו היטב צריך לקרוא ספר רציני בנושא (וקיים אחד כזה באורך של 800 עמודים). אם תריצו כלי חינמי (לא חופשי) בשם regmon תבינו יותר איך מערכת ההפעלה חלונות עובדת ולמה אנו אוהבים את לינוקס (כל מי שאני מדגים לו את regmon מקבל חלחלה מחלונות).
אך גם בלינוקס יש חורים שחורים. החור השחור המפורסם ביותר הוא dev/null/. כל מה שתעתיקו/תכתבו לקובץ זה יעלם כלא היה. זה נחמד ושימושי (כשגם במזרים אני עושה בו שימוש: את כל הודעות השגיאה אני מפנה לשם…). אך מה פשר dev/zero/ ?/dev/zero/ משמש כמחסן אינסופי ל- 0 לוגי. אם תריצו את הפקודה: dd if=/dev/zero of=/dev/hda8 תכתבו "0" לכל המחיצה שמעוגנת ל- /dev/hda8/ (ולא משנה מה גודלה). נחמד, רק שהייתי שמח יותר אם במקום לייצר "0" הוא היה מייצר "$"…
ומה בקשר ל- dev/random/? מדובר בקובץ שמחולל מספרים אקראיים. הקרנל של לינוקס עושה בו שימוש בנושא הצפנה ו- hashing (קריאה נוספת כאן). עד כאן פינתי בנושא חורים שחורים והקשר שלהם ללינוקס וחלונות.
בימים האחרונים לא הייתי בארץ, ולכן תשובות לשאלות שהעליתם יתעכבו במקצת. אז איפה הייתי? בבולגריה (טיול, במסגרת העבודה, ל: Burgas, Sunny Beach, Nessebar ו- Sezopol).