שאלה כיצד לבדוק אם ספריה מותקנת?


ב- Linux, כיצד ניתן לבדוק אם ספריה מותקנת או לא? (משורת הפקודה כמובן).

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


139
2017-08-16 16:02




באיזה חלוקה אתה משתמש? - radius


תשובות:


כדי לעשות זאת באופן עצמאי * distro אתה יכול להשתמש ldconfig עם grep, כך:

ldconfig -p | grep libjpeg

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

החלף libjpeg על ידי כל ספריה שאתה רוצה, ויש לך דרך כללית, עצמאית distro * בדיקת זמינות הספרייה.

אם מסיבה כלשהי הנתיב ל- ldconfig אינו מוגדר, תוכל לנסות להפעיל אותו באמצעות נתיבו המלא, בדרך כלל /sbin/ldconfig.

** 99% מהפעמים *


175
2018-06-06 22:19



זה צריך להתקבל כתשובה. גדול!
לא ניתן להשתמש בו לבדיקת גרסת dev (כותרות) של ספריה, נכון? - andig
אתה יכול לציין 99% פעמים? bash: ldconfig: command not found על דביאן x64 ג'סי עם xfce! זהו שחרור הדביאן המומלץ באתר Debian ... - Tomáš Zato
@ TomášZato: ldconfig לא זמין (command not found מופיע) אם אתה מנסה להפעיל את זה בלי להיות superuser. - Gauthier
/sbin/ldconfig -p עובד בשבילי ללא צורך להיות שורש. - Pedro Gimeno


אתה יכול לבדוק עם מנהל החבילה של ההפצה שלך (aptitude, yum, ...) אבל כפי שאתה לא לתת את ההפצה אני לא יכול לתת לך את הפקודה הנכונה.

דרך אחרת יכולה להיות לרוץ gcc -ljpeg, אם אתה מקבל 'ld: הספרייה לא נמצא עבור -ljpeg' זה אומר ש- GCC לא מצא את הספרייה (אבל זה לא אומר שזה לא מותקן), אם אתה מקבל משהו כמו 'סמלים לא מוגדר: "_main", הפניה מ: ... "זה אומר libjpeg נמצא.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* הם דרך אחרת למצוא אם lib מותקן במערכת

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


32
2017-08-16 16:16



איך למצוא אותו באמצעות כישרון? - BBK


אני משתמש איפה השירות.
לדוגמא:

l1feh4ck3r @ xxx: ~ $ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la

16
2017-08-17 01:00





עבור הפצה מבוססת deb אתה יכול לעשות

dpkg -s packagename

או אם אתה יודע את שם הקובץ בלבד, השתמש

locate filename

שם הקובץ הוא בדרך כלל libsomething.so [.version].


8
2017-08-16 16:28



שם הקובץ יכול להיות גם משהו כמו "libsomething.a" עבור גרסה סטטי. - radius
אני מצאתי dpkg -s מוגבל, כי הוא רוצה את שם החבילה בפועל, אשר עשוי להיות שונה בעדינות או באופן משמעותי מן הספרייה עצמה. אני משתמש dpkg -s|grep LIBRARY - Drew Stephens
@dinomite apt-file הוא החבר שלך :) - radius


אני משתמש בזה:

gcc -lpng

כאשר lib מותקן, הוא מניב:

undefined reference to 'main'

כאשר הוא lib לא מותקן:

cannot find -lpng

8
2018-03-31 14:50





במערכות Redhat, ניתן להשתמש ב- pkg-config כדי לוודא אם ספריה מותקנת או לא. רבים סל"ד בינאריים למעשה לעשות את הבדיקות אותו לפני שתמשיך עם ההתקנה, כך שאנחנו יכולים להסתמך על האמינות שלה.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check

3
2018-02-07 09:35





זה נעשה על ידי כלי תצורה על לינוקס כל הזמן.

תסתכל על זה הדרכה על autoconf ו KDevelop.

טריקים אחרים ישתמשו בפקודות כמו ldconfig ו dpkg.


1
2017-08-16 16:11





תוכל גם לנסות להשתמש ב- dpkg כדי לבדוק אם הוא מותקן.

dpkg --list | grep [some_key_words_of_your_lib]

חוץ מזה, על CentOS, אתה יכול לנסות את זה.

rpm -qa [lib_name]


0
2017-10-25 08:09



הערה: יעבוד רק עבור distian מבוסס דביאן - ALex_hha
@ALex_hha כן, תודה, יש להדגיש זאת. ב- CentOS או במערכות מבוססות כובע אדום, השתמש pkg-config במקום זאת. - Scott Yang