זהו מסוג הנצחונות הקטנים, שדרשו יותר מאמץ מהמתבקש. הפרסום כאן נועד כדי לחסוך את המאמץ הנ"ל בשנית (לפחות עבורי - כי בוודאי אשכח את מה שעשיתי...)
האמור לעיל מתייחס להפצת RedHat 7.3 - אך אני מאמין שרובו יתאים לכל הפצה.
רקע:
כבר הרבה זמן אני מחפש תירוץ טוב להתחיל לכתוב script-ים ב- Python. ולפני זמן לא רב מצאתי את התירוץ המושלם (כזה שענה על צורך אמיתי בעבודתי).
בהזדמנות זאת חיפשתי גם IDE מתאים. גם כאן מצאתי את תירוץ נהדר ללמוד כלי חזק נוסף - GNU-Emacs. בד"כ העורכים שאני מעדיף כוללים את: fte, mcedit, kate, vim (בערך לפי סדר זה) עם Emacs לעלום לא הצלחתי להמודד.
למי שלא יודע, Emacs הוא ה- IDE האולטימטיבי, הודות למושג הנקרא בלשון ה-emcas-ית major-modes. בשפה פשוטה: אפשר לבחור את מצב העבודה המתאים עבור כל שפת תיכנות שתעלו על דעתכם. יתרון זה מצדיק, לדעתי (ולדעת גודלים ממני), את המאמץ הכרוך בלימוד המימשק ה"אוקולטי" של Emcas.
ל- RedHat 7.3 מצורף Emcas 21.2 ולו מצורף הקובץ python-mode 4.6. (ניתן להשיג בנפרד את python-mode
כאן. כמו כן RedHat 7.3 מגיע עם Python 1.5.2, ועם Python 2.2.
הבעיה:
אם כבר עובדים להתחיל לכתוב ב- python, הרי שעדיף לעבוד עם הגירסה החדשה ביותר, אך שוד-ושבר! python-mode מתייחס לגירסה הישנה. מה עושים?
הפיתרון הרע:
הדבר הראשון שעשיתי היה למחוק את /usr/bin/python (שהוא בעצם hard-link ל- /usr/bin/python1.5) וליצור תחתיו link ל- /usr/bin/python2.2.
הצרה עם גישה זו היא שבכך שברתי מספר תוכניות מערכתיות שציפו להשתמש בגירסה הישנה של python (למשל printconf-gui). ברור שנדרשה גישה אחרת.
הפיתרון:
השאילתה -
rpm -ql emacs | grep python
העלתה את התוצאה -
/usr/share/emacs/site-lisp/python-mode.elc
שהוא קובץ בינארי.
אם כך, הרי שצריך להתקין את קובץ המקור שלו מתוך תקליטורי RedHat:
rpm -ivh emacs-el-21.2-2.i386.rpm
ואז לערוך את קובץ המקור:
emcas /usr/share/emacs/site-lisp/python-mode.el
ולשנות את השורה:
(defcustom py-python-command "python"
בשורה:
(defcustom py-python-command "python2.2"
לשמור ולהדר את הקובץ:
M-x byte-compile-file RET
זהו. - בפעם הבאה שאכנס ל- emcas הוא ישתמש בגרסאת Python החדשה.
ובבניין הארץ ננוחם.
-- חן.