מחפש פקודה בלינוקס להורדת קובץ .deb

yosi44441

New member
מחפש פקודה בלינוקס להורדת קובץ .deb

הרי בהרצה של הפקודה
apt-get install XX הלינוקס אמור להוריד ולהריץ קובץ .deb שהוא ההתקנה של הפאקאג' XX
איזו פקודה רק מורידה את הקובץ הזה? שאוכל לעשות איתו מה שאני רוצה? בלי להתקין

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

תודה
 

BravoMan

Active member
פשוט מאוד:

apt-get download XX
&nbsp
והקובץ ירד לספריה שבה הרצת את הפקודה.
&nbsp
לגבי "אתר שמאפשר להריץ פקודות", זה כבר תלוי מה אתה רוצה לעשות.
&nbsp
יש כמה אתרים שנותנים לך סביבה מדומה ללימוד פקודות, אבל לא נראה לי שזה מה שאתה מחפש.
&nbsp
אם אתה רוצה לבחון כל מיני דברים ופוחד שהם יהרסו לך את המערכת המותקנת (למשל, מוריד תוכנות שאתה לא בטוח בהן), תרים מכונה ווירטואלית.
כל עוד יש לך מחשב סביר מהשנים האחרונות, זה קל, פשוט, וחינמי.
 

yosi44441

New member
לגבי apt-get download

איך אני יכול לדעת באילו אתרים הוא מחפש את ה XX ?
ואיך אפשר לדעת בפועל מאיזה אתר זה ירד בסוף?(אני מאמין שיש לו רשימה של אתרים)
תודה
 

BravoMan

Active member
אתה יכול להשתמש בפקודה:

apt-cache policy XX כדי לראות איזה מהמאגרים שלך מספק את החבילה.
&nbsp
אם אתה רוצה לראות את כלל המאגרים המוגדרים במערכת (כל "אתר" אפשרי שבו הכלי יחפש חבילות), ואם אתה עובד ב-Ubuntu יש לך ממשק גרפי לזה, שנקרא Software and updates.
&nbsp
אם אתה עובד בהפצה אחרת ולא מוצא ממשק דומה (בד"כ הוא זמין דרך יישום שנקרא synaptic), או אתה רוצה להשתמש בשורת פקודה, רשימת המקורות נמצאת בקובץ /etc/apt/sources.list וקבצים נוספים שרשומים בו כ-include.
 

yosi44441

New member
שאלה אחרונה...הורדת תלויות

רק שאלה אחרונה
אני רוצה לדעת בפקודה באיזה חבילות הפאקאג' שלי תלוי
כי אני רוצה להוריד את הפאקג' עם apt-get download XXX
ואז להתקין עם apt install (source)
אבל אם הפאקג' שלי תלוי באחרים אני לא אצליח
לכן אני רוצה להוריד את כל התלויות שלו גם
&nbsp
יש פקודה לזה?
תודה רבה
 

BravoMan

Active member
זה לינוקס - יש פקודה להכל!


יש כמה דרכים לעשות את מה שאתה רוצה.

קודם כל, אתה יכול פשוט להסתכל באלו חבילות תלויה חבילה מסויימת:
apt-cache depends <package>
כדי ממש להוריד הכל בבוחטה, תצטרך 3 פקודות ברצף (חשוב לשמור על הסדר!):
קוד:
aptitude clean
aptitude --download-only install <package>
cp /var/cache/apt/archives/*.deb .
aptitude הוא כלי טיפה יותר מתוחכם מ-apt, אבל עובד על אותו בסיס.
הפקודה הראשונה בשלילשיה מנקה את ה-cache של החבילות שכבר הורדו (כדי שיהיה לך קל למצוא את החבילות שרציתה אחרי ההורדה), הפקודה הבאה מורידה את החבילות (שים לב לדגל download-only), והפקודה האחרונה מעתיקה את החבילות שהורדו מהמקום עליו הורדו (תמיד מקום קבוע) לספרייה הנוכחית שאתה עובד בה, כדי שתוכל לשחק איתן.

שים לב שאת 2 הפקודות הראשונות יש להריץ עם sudo או כמשתמש root.

כמובן, אתה לא חייב להעתיק את החבילות, ויכול ישר לפתוח את הספרייה /var/cache/apt/archives/ איך שנוח לך.

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

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

לכן, אנשים חכמים ברשת מצאו אפשרות נוספת, שמושכת את כל החבילות בכל מקרה:
apt-get download $(apt-rdepends <package>|grep -v "^ ")
זה שילוב של 3 פקודות: apt-rdepends מייצר רשימה מפורטת ביותר של תלויות, grep מסנן את הרשימה לדרגת עומק אחת, ו-apt-get download מוריד את מה שיצא אחרי הסינון.
 

yosi44441

New member
תודה, אבל תקלה קטנה

סליחה שאני מעתיד מהקוד לכאן בלי העורך טקסט היפה- פשוט הוא לא עובד לי
בהתחלה לא היה לי את apt-rdepends אז התקנתי את הפקאג' הזה
אגב, זה פקאג' מעולה!
הוא נותן באמת את כל התלויות ריקורסיבית
אם לדוגמא הפקאג' שלי תלוי ב X אבל X תלוי ב Y אז apt-rdepends יתן לי את X וגם את Y
אבל apt-cache depends יתן לי רק את X שזה כמובן לא טוב לי
&nbsp
עשיתי את הפקודה הארוכה שכתבת בסוף ההודעה שלך אבל קיבלתי את השגיאה הבאה
&nbsp
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Can't select candidate version from package *** as it has no candidate
זה על פאקג' מסויים מתוך עץ התלויות, מה אפשר לעשות?
&nbsp
המטרה שלי להוריד את כל הפקאג'ים שתלויים במי שאני רוצה כך שאוכל לעשות התקנה על המחשב שלי בלי שהוא יצטרך להוריד כלום מהאינטרנט
שאני יוכל לעשות apt install ולתת לו את הנתיב את הפקאג' שלי והוא ימצא כבר את כל התלויות במחשב שלי ולא באינטרנט
&nbsp
תודה
 

BravoMan

Active member
הוא לא מוצא תלוייה מסוימת.

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

yosi44441

New member
החוסר

libc-dev
זה מעניין כי כאשר אני מתקין את הפקאג' רגיל מהאינטרנט(הפקאג' הראשי שאת כל התלויות שלו אני רוצה להוריד) הוא כן מצליח להתקין,משמע הוא הצליח להתקין את כל התלויות שלו
אולי זה פקאג' כ"כ בסיסי שנמצא כבר בכל UBUNTU ולא צריך להוריד אותו?
&nbsp
 

BravoMan

Active member
libc היא אכן חבילה בסיסית שכל דבר כמעת במערכת תלוי

בה, ולכן אמורה להימצא כבר בכל התקנה (אחרת כלום לא יעבוד).
&nbsp
libc-dev אמורה להיות תוספת עם קבצים שנחוצים לפיתוח.
בכל מקרה, apt-cache show מראה לי שזו חבילה "ווירטואלית", כלומר חבילה כזו לא באמת קיימת, אלא היא רק "דגל" שמאפשר ל-apt לבחור ממגוון חבילות שונות שנותנות את אותה הפונקציונליות.
&nbsp
בשלב הזה הייתי ממליץ לך פשוט להתקין את החבילות שכבר ירדו לך.
בגלל ש-rdepends מראה תלויות רקורסיבית, הוא יראה לך תלויות כל הדרך לחבילות הבסיס של מערכת ההפעלה, שכבר מותקנות בכל מקרה, כי אי אפשר "לחיות" בלעדיהן.
&nbsp
אם בכל זאת תתקל בבעיה בזמן התקנה, חזור לדווח.
 

yosi44441

New member
לא ירד לי כלום

הפקודה הנ"ל לא הורידה לי כלום כי היא לא מצאה חבילה אחת.
3 שאלות (אני לקראת הסוף של המטרה)
1- כיוון שכבר התקנתי את הפקאג' שלי בצורה ישירה דרך האינטרנט apt-get install אני רוצה להסיר אותו (אבל כולל כל התלויות שהותקנו בגללו) ואז להריץ התקנה LOCAL ע"י apt install
וכאשר הוא ירצה תלויות שיחפש באותה תיקיה שבה נתתי לו את הקובץ deb הראשי של הפקאג', אפשרי?
2-להבנה כללית' נניח שאני רוצה להתקין תוכנה על הUBUNTU שלי, לדוגמא MONO , כי אני רוצה לפתח בDOT NET על הלינוקס
זה הגדרה שונה מ פקאג', כן?
כי כאשר אני עושה
sudo apt-get download mono הוא כותב שהוא לא מצליח לאתר את החבילה mono
3-כמה פקאג' תלוי בגירסאת ה UBUNTU שלי?
אני בודק ע"י apt-cache policy מאיפה יורד לי הפקאג' ואני לא רואה שהוא תלוי בגירסת הUBUNTU שלי(14)
האם זה ככה? אם אקח פקאג' שהורדתי דרך UBUNTU 14 ואתקין אותו על UBUNTU 17 זה יעבוד?
תודה רבה על הכל!
&nbsp
 

BravoMan

Active member
כמה תשובות:

לפני שאני עונה נקודתית למה ששאלת, אני רוצה להסביר לך משהו בסיסי:
מה הוא package:
&nbsp
package זה בסה"כ קובץ דחוס כמו ZIP או RAR (רק פורמט אחר, tar.gz ששינו לו סיומת ל-deb).
&nbsp
הוא מכיל תוכנה, והוראות לבצע לפני ואחרי התקנת התוכנה (בעצם פריסת קבצים שבתוכו לספריות שונות במחשב שלך).
&nbsp
אם אתה רגיל ל-Windows, את יכול לחשוב על deb כמו על קובץ msi.
&nbsp
לכן, שאלה מס' 2 שלך לא ממש הגיונית: package הוא חבילת התקנה של תוכנה.
בשביל שיהיה package מישהו חייב לארוז את התוכנה בצורה מוכנה להתקנה.
&nbsp
אם לא עשו זאת, יש דרכים אחרות להוריד ולהתקין את התוכנה, כמו שב-Windows אתה תמיד יכול סתם לזרוק קובץ EXE ולהריץ, אבל ב-Linux בגלל שיקולי אבטחה תצטרך לעשות עוד כמה צעדים.
&nbsp
עכשיו, לשאלות שלך:
&nbsp
1. אתה יכול לעשות apt-get uninstall על החבילה הראשית ואחרי זה apt-get autoremove.
הפקודה השנייה מסירה כל חבילה שאין יותר צורך בה - כלומר, חבילה שהותקנה רק בגלל שמישהו היה תלוי בה, והמישהו הזה כבר לא מותקן במערכת.
&nbsp
שים לב שהבאתי לך בהודעה קודמת עוד פקודה, כזו שמורידה רק packages חסרים.
תשתמש בה במקום בפקודה שעוברת על הכל, ואז לא תתקל בבעיות הורדה.
&nbsp
אגב, כל package שהתקנת עם apt-get install שמור ב-cache בספריה /var/apt/cache במחשב שלך, כך שאתה לא חייב להסיר ולהוריד שוב.
&nbsp
אם אתה יודע אלו חבילות אתה צריך, פשוט קח אותן משם.
&nbsp
2. mono מורכב מהרבה חבילות.
הוא קיים במאגרים, אבל לא בשם הפשוט mono.
&nbsp
היות ואתה רוצה לפתח, תתקין monodevelop (ע"י apt-get כרגיל, או דרך כל ממשק מועדף עליך).
&nbsp
החבילה הזו תתקין סביבת פיתוח, ואת כל התלויות שנחוצות לעבודה עם mono.
&nbsp
3. במה package תלוי, תלוי ב-package.
אני יודע שזה נשמע מצחיק, אבל זה באמת תלוי בתוכנה שמתקינים. יש תוכנות שלא אכפת להן, ויכולות לרוץ AS IS על כל גרסת מערכת, ויש תוכנות שדורשות גרסאות ספציפיות של ספריות (DLL בשפת Windows), ולכן לא ירוצו על גרסאות מערכת ישנות.
&nbsp
עקרונית, כל גרסת Ubuntu מכוונת למאגרים משלה, כדי שכל החבילות יהיו תואמות אחת לשנייה.
אם תסתכל בקובץ sources.list תראה שבכתובת כל מאגר מופיע שם הגרסה של Ubuntu.
&nbsp
זה כמובן למען הסדר הטוב.
ייתכן מאוד שתוכנה עבור Ubuntu 14 תעבוד על 17.
ובכל מקרה, אתה תמיד יכול להתחבר למאגרים של 17 מ-14, רק תזהר מה אתה מתקין משם כדי לא לעשות בלגן במערכת שלך.
&nbsp
בהצלחה!
 
למעלה