لینوکس و شبکه

لینوکس و شبکه
طبقه بندی موضوعی
آخرین مطالب
  • ۹۸/۱۲/۱۴
    bond
  • ۹۸/۱۰/۲۰
    GIT
  • ۹۸/۱۰/۱۴
    DISK

۹ مطلب با موضوع «PackageManager» ثبت شده است

۱۶
تیر

Options:

update
گرفتن (دوباره بدست آوردن) لیست بسته‌های جدید
upgrade:
آپگرید کردن
install
نصب یک بسته
remove:
حذف یک بسته
purge:
حذف بسته به همراه تمامی تنظیمات آن
autoremove:
Remove automatically all unused packages that were automatically installed to satisfy dependencies for other packages and are now no longer needed.
dist-upgrade:
Distribution upgrade
build-dep:
Configure build-dependencies for source packages. install all dependencies for 'packagename'
clean:
Erase downloaded archive files. clean clears out the local repository of retrieved package files. It removes everything but the lock file from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/.
autoclean:
پاک کردن فایل‌های آرشیو شده از دانلود‌های قبلی
check:
Verify that there are no broken dependencies
source:
Download source archives. Source packages are tracked separately from binary packages via deb-src lines in the sources.list.
[--compile]: package will be compiled to a binary .deb using dpkg-buildpackage for the architecture as defined by the [--host-architecture] option.
[--download-only]:source package will not be unpacked.
download:
دانلود فایل باینری در مسیر فعلی
changelog:
Download and display the changelog for the given package
سیاهه یا تاریخچهٔ تغییراتی که در پروژه صورت گرفته است
indextargets:
listing of information about all data files (index targets) apt-get update would download
 

 


Options:

[--no-install-recommends]
در هنگام نصب، بسته‌های توصیه‌شده بعنوان وابستگی لحاظ نشوند
[--install-suggests]
درهنگام نصب بسته‌های پیشنهاد شونده(توسط برنامه) بعنوان وابستگی لحاظ نشوند
[-d, --download-only]
فقط فایل‌ها دانلود شوند(unpacked یا نصب نشوند)
[-f, --fix-broken]
تلاش برای اصلاح گسیختگی‌های موجود در  وابستگی‌ها
با این گزینه به برنامه apt اجازه داده می‌شود تا درصورت نیاز هر بسته‌ای را حذف نماید
[-m, --ignore-missing, --fix-missing]
نادیده گرفتن بسته‌‌های‌ خرابی(مثلا دانلود نمیشوند یا اینکه دانلود شده اند ولی خراب هستند)
اگر بسته‌ها نمی‌توانند دانلود شوند یا بعد از دانلود امکان چک و بررسی یکپارچکی وجود نداردآن بسته‌ها را عقب نگه‌دار و نتیجه را هندل کن
اگر این سوییچ را با -f استفاده نمایید ممکن است در  مواردی به ارور برخورد نمایید
اگر نام یک بسته در خط فرمان برای نصب آورده شده باشد درصورت عدم دانلود این بسته بدون هیچ گونه اخطاری از نصب این بسته صرف نظر میشود
[--no-download]
فقط از بسته‌های deb موجود(کنونی) در سیستم‌عامل که پیش‌تر دانلود شده استفاده شود
[-q, --quiet]
این کامند برای تهیه لاگ بسیار مفید است زیرا نشانگرهای پیشرفت و موارد توضیحاتی را حذف می‌کند
با مقداردهی به -q=# میتوانیم  سطح عدم تولید توضیحات را مشخص نماییم
[-s, --simulate, --just-print, --dry-run, --recon, --no-act]
هیچ کاری صورت نگیرد
شبیه‌سازی و نمایش در خروجی از تغییراتی که با اجرای دستور صورت خواهد گرفت
[-y, --yes, --assume-yes]
بطور اتوماتیک به هر  prompt پاسخ yes خواهد داد
run non-interactively
در موارد نامطلوب دستور apt-get متوقف خواهد شد(نظیر: تغییر در نگهداری بسته یا نصب یک بسته غیرمجاز  یا حذف یک بسته خیلی مهم)
[--assume-no]
بصورت پیش‌فرض به  همه promp ها پاسخ no می‌دهد
[--no-show-upgraded]
عدم نمایش لیست تمام بسته‌هایی که آپگرید شده‌اند
[-V, --verbose-versions]
نمایش نسخه تمام نسخه‌ها از بسته‌هایی که آپگرید شده‌اند
[-a, --host-architecture]
بصورت پیش‌فرض تنظیم نیست
در زمان استفاده از دستور apt-get source --compile معماری بسته‌های build شونده کنترل و  cross-builddependencies تامین شوند
[-b, --compile, --build]
Compile source packages after downloading them.
[--ignore-hold]
Ignore package holds;
بسته را نگهداری ننماید-به عبارتی پس از نصب آن را در سیستم نگه‌ندارد
[--with-new-pkgs]
این سوییچ وقتی با دستور upgrade همراه شود دراین صورت مجاز به نصب بسته‌های جدید خواهد بود.
این دستور زمان نیازمندی به یک dependency مفید خواهد بود تا آن نیز بتواند نصب نماید
نکته:دستور upgrade هیچگاه بسته‌ای را حذف نمی‌کند و فقط بسته جدید را نصب می‌کند
[--no-upgrade]
Do not upgrade packages;
همراه با دستور  install : اگر بسته هم‌اکنون نصب شده باشد آنگاه از  upgrade آن دستور جلوگیری بعمل خواهد آمد
[--only-upgrade]
همراه با دستور  install : اگر بسته هم‌اکنون در سیستم‌عامل موجود نباشد، نصب صورت نگیرد
تنها زمانی بسته را آپگرید خواهد کرد که درحال حاضر بسته در سیستم‌عامل وجود داشته و ورژن جدید از آن در دسترس باشد
[--allow-downgrades]
این دستور خطرناک است و ممکن است به سیستم عامل آسیب برساند
تنها در موارد خاص کاربرد دارد و در صورت دانلود ممکن است پیغامی ظاهر نشود
[--allow-remove-essential]
این دستور خطرناک است و ممکن است به سیستم عامل آسیب برساند
بله(Force yes) به حذف دستوراتی که بعنوان پایه در سیستم عامل کاربرد دارند
[--force-yes]
بله(Force yes) به تمامی پیغام‌ها
این دستور منقرض شده است و با دستورات
  --allow-downgrades, --allow-remove-essential, --allow-change-held-packages 
جایگزین شده است
[--print-uris]
بجای اینکه فایل‌ها نصب شوند آدرس URL آن پرینت می‌شود
هر URL دارای path و destination file name و سایز و کد MD5 است
sudo apt-get install aptitude --print-uris
[sudo] password for behrooz: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  aptitude-common libclass-accessor-perl libcwidget3v5 libio-string-perl libparse-debianchangelog-perl libsub-name-perl
Suggested packages:
  aptitude-doc-en | aptitude-doc apt-xapian-index debtags libcwidget-dev libhtml-template-perl libxml-simple-perl
The following NEW packages will be installed:
  aptitude aptitude-common libclass-accessor-perl libcwidget3v5 libio-string-perl libparse-debianchangelog-perl libsub-name-perl
0 upgraded, 7 newly installed, 0 to remove and 38 not upgraded.
Need to get 3,494 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
'http://deb.debian.org/debian/pool/main/a/aptitude/aptitude-common_0.8.7-1_all.deb' aptitude-common_0.8.7-1_all.deb 1592678 MD5Sum:944f23494615284543660e9ee02c6c6d
'http://deb.debian.org/debian/pool/main/c/cwidget/libcwidget3v5_0.5.17-4+b1_amd64.deb' libcwidget3v5_0.5.17-4+b1_amd64.deb 312582 MD5Sum:153078784a4cac12829bfb967cd9b8c4
'http://deb.debian.org/debian/pool/main/a/aptitude/aptitude_0.8.7-1_amd64.deb' aptitude_0.8.7-1_amd64.deb 1477860 MD5Sum:3bd5df11a809e76d0e925e705b0f9f06
'http://deb.debian.org/debian/pool/main/libs/libsub-name-perl/libsub-name-perl_0.21-1_amd64.deb' libsub-name-perl_0.21-1_amd64.deb 13122 MD5Sum:d2ae0127b9770f1511f9d8d6e65c415a
'http://deb.debian.org/debian/pool/main/libc/libclass-accessor-perl/libclass-accessor-perl_0.34-1_all.deb' libclass-accessor-perl_0.34-1_all.deb 25950 MD5Sum:e8d44fcd57dcb4a39e53f7956b30dd22
'http://deb.debian.org/debian/pool/main/libi/libio-string-perl/libio-string-perl_1.08-3_all.deb' libio-string-perl_1.08-3_all.deb 12298 MD5Sum:8d09424a4c3ba34a8ff890af95391947
'http://deb.debian.org/debian/pool/main/libp/libparse-debianchangelog-perl/libparse-debianchangelog-perl_1.2.0-12_all.deb' libparse-debianchangelog-perl_1.2.0-12_all.deb 59376 MD5Sum:52a19d38904388812afef8d78611e26e
 
[--purge]
اگر بجای remove استفاده شود در این صورت همه چیز را پاک خواهد کرد
[--reinstall]
نصب مجدد بسته‌های که هم‌اکنون نصب شده است(در ورژن بالاتر)
[--list-cleanup]
بطور پیش‌فرض این سوییچ در دستور تعبیه شده است
درصورت روشن بودن دستور apt  بطور اتوماتیک محتوی /var/lib/apt/lists  مدیریت را مدیریت کرده و اطمینان حاصل می‌گردد که فایل‌های منسوخ پاک شده باشد
تنها دلیلی که این ویژگی را می‌توان خاموش کرد این استکه این فایل بطور مداوم تغییر می‌نماید
نکته: از سوییچ  --no-list-cleanup برای خاموش کردن آن استفاده می‌شود
[--no-remove]
اگر هر بسته‌ای بخواهد حذف شود دستور apt-get همان موقع بدون اینکه pronpt بدهد قطع می‌شود
[--auto-remove, --autoremove]
Remove automatically all unused packages that were automatically installed to satisfy dependencies for other packages and are now no longer needed as dependencies changed
[--only-source]
تنها در دستورات buil-dep و  source معنی پیدا می‌کند.
نشان میدهد که نام سورس داده شده به فایل‌های باینری مپ نشده باشد و دستورات تنها  نام بسته‌های سورس را بعنوان آرگومان قبول نمایند
[--allow-unauthenticated]
Ignore if packages can't be authenticated and don't prompt about it.
This can be useful while working with local repositories, but is a huge security risk if data authenticity isn't ensured in another way by the user itself.
The usage of the Trusted option for sources.list(5) entries should usually be preferred over this global override.
[--no-allow-insecure-repositories]
در دستور update ، از گرفتن دیتا‌ی verified نشده جلوگیری بعمل می‌آورد
دستور apt update در صورت مواجهه با  ریپوزیتوری‌هایی با امضای رمز شده غیر معتبر ، fail می‌شود
[--show-progress]
نمایش نوار میزان پیشرفت کار در حین نصب با پاک یا آپگرید
[--with-source filename]
Adds the given file as a source for metadata. Can be repeated to add multiple files. See --with-source description in apt-cache(8) for further details.
[-c, --config-file]
Specify a configuration file to use.
The program will read the default configuration file and then this configuration file.
If configuration settings need to be set before the default configuration files are parsed specify a file with the APT_CONFIG environment variable. See apt.conf(5) for syntax information.
 

 

FILES

/etc/apt/sources.list:
Locations to fetch packages from. Configuration Item: Dir::Etc::SourceList.
/etc/apt/sources.list.d/:
File fragments for locations to fetch packages from. Configuration Item: Dir::Etc::SourceParts.
/etc/apt/apt.conf:
APT configuration file. Configuration Item: Dir::Etc::Main.
/etc/apt/apt.conf.d/:
APT configuration file fragments. Configuration Item: Dir::Etc::Parts.
/etc/apt/preferences:
Version preferences file. This is where you would specify "pinning", i.e. a preference to get certain packages from a separate source or from a different version of a distribution. Configuration Item:[Dir::Etc::Preferences].
/etc/apt/preferences.d/:
File fragments for the version preferences. Configuration Item: Dir::Etc::PreferencesParts.
/var/cache/apt/archives/:
Storage area for retrieved package files. Configuration Item: Dir::Cache::Archives.
/var/cache/apt/archives/partial/:
Storage area for package files in transit. Configuration Item: Dir::Cache::Archives (partial will be implicitly appended)
/var/lib/apt/lists/:
Storage area for state information for each package resource specified in sources.list(5) Configuration Item: Dir::State::Lists.
/var/lib/apt/lists/partial/:
Storage area for state information in transit. Configuration Item: Dir::State::Lists (partial will be implicitly appended)
 
 
 
 
  • برای نمایش آدرس URL یک بسته ای که در هنوز در سرور نصب نیست
apt-get -y install --print-uris <PackageName> | cut -f 2 -d \' | grep \.deb

 

 

 

  • behrooz mohamadi nsasab
۱۶
تیر

apt command:

list:

[--installed], [--upgradeable], [--all-versions]

list packages based on package names.list is somewhat similar to dpkg-query --list in that it can display a list of packages satisfying certain criteria. 

search:

search in package descriptions

show:

show package details and information about the given package(s) including its dependencies, installation and download size, sources the package is available from, the description of the packages content and such more install, remove, purge: Performs the requested action on one or more packages specified via regex(7), glob(7) or exact match. The requested action can be overridden for specific packages by append a plus (+) to the package name to install this package or a minus (-) to remove it.

autoremove:

Remove automatically all unused packages that were automatically installed to satisfy dependencies for other packages and are now no longer needed as dependencies changed

update:

update list of available packages

upgrade:

upgrade the system by installing/upgrading packages

full-upgrade:

upgrade the system by removing/installing/upgrading packages

edit-sources:

edit the source information file (edit your sources.list)




Options
[-y]: Assume that the answer to simple yes/no questions is 'yes' 
[-v]: Display extra information. (may be supplied multiple times)
  • behrooz mohamadi nsasab
۲۶
خرداد

option:

-i This installs a new package(rpm -i package)

-F This will upgrade packages, but only if an earlier version currently exists(rpm -F package)

-U This upgrades or installs the package currently installed to a newer version(rpm -U package)

-e erase (uninstall) package(rpm -e package)

-q query packages(rpm -q package)

-V verify installed packages(rpm -V package)

-K verify package signature(rpm -K package)

--rebuilddb rebuild the database indices from the installed package headers(rpm --rebuilddb)

--initdb create a new database if one doesn’t already exist(rpm --initdb)

--import import PUBKEY(rpm --import /usr/share/rhn/RPM-GPG-KEY)


options with i, U:

-v show package name(rpm -iv package)

-h display progress(rpm -ivh package)

-vv Print lots of ugly debugging information(rpm -ivv package)

--nodeps Don’t do a dependency check before installing or upgrading a package(rpm -ivh --nodeps package)

--test Don’t really uninstall anything, just go through the motions(rpm -ivh --test package)


options with q:

-a Query all installed packages(rpm -qa)

-i Display package information, including name, version, and description. This uses the --queryformat if one was specified(rpm -qi) package

-l List files in package(rpm -ql package)

-c List only configuration files (implies -l)(rpm -qc package)

-d List only documentation files (implies -l)(rpm -qd package)

-f Query package owning FILE(rpm -qf /bin/bash)

-R List packages on which this package depends(rpm -qR package)

-s Display the states of files in the package (implies -l)(rpm -qs package)

--last Orders the package listing by install time such that the latest packages are at the top(rpm -q --last package)

--changelog Display change information for the package(rpm -q --changelog package)



نمایش درصد پیشرفت کار

rpm -i APP.rpm --percent

 برای ساخته شدن بانک اطلاعاتی RPM استفاده میشود و اینکه از این دیتابیس برای نگهداری اطلاعات مربوط به بسته های نرم افزاری نصب شده در سیستم عامل استفاده می‌شود

rpm --rebuilddb

جلوگیری از نصب برخی مستندات از قبیل man pages

rpm -i APP.rpm --excludedocs

نصب مستندات و موارد توضیحی(بصورت پیشفرض در دستور قرار دارد)

rpm -i APP.rpm --included

جایگزین شدن فایل‌های نرم‌افزار جدید برروی نرم افزار قدیمی(نسخه‌های قدیمی از همان نرم‌افزار)

rpm -i APP.rpm --replacefiles

جایگزین شدن بسته‌‌های نرم‌افزار جدید برروی نرم افزار قدیمی(نسخه‌های قدیمی از همان نرم‌افزار)

rpm -i APP.rpm --replacepkgs

بعد از نصب نرم‌افزار تعداد 50 کاراکتر (#) روی صفحه نمایش ظاهر شود

rpm -i APP.rpm --hash

بررسی نکردن وابستگی‌ها در حین پاک نمودن یک بسته

rpm -e APP.rpm -nodeps




rpm -e  --test -vv  APP.rpm

دستور بصورت واقعی صورت نپذیرد و فقط مراحل اجرای دستور در صفحه نمایش نشان داده شود


rpm -ql kernel

 فایل‌های نصب شده در سیستم عامل از برنامه مورد نظر(بهتر است بجای l از سوییچ s استفاده شود که وضعیت را هم نمایش دهد)

 rpm -qs kernel

 فایل‌هایی که در سیستم عامل به نصب بسته مورد نظر ارتباط دارد (اگر فایل خراب شده باشد عبارت missing نمایش داده خواهد شد)-(این سوییچ کمی کامل‌تر از l [ال]می‌باشد)

 

 rpm -qd kernel

 لیست شدن فایل‌های توضیحاتی از بسته مورد نظر


 توضیحات کامل از بسته

 rpm -qi kernel

 rpm -qa kernel

 فهرستی از تمام بسته های نصب شده در سیستم عامل

 

  • behrooz mohamadi nsasab
۰۴
اسفند

  1. sudo mkdir -p  /media/repo1 /media/repo2  /media/repo3 /opt/DVD
  2. sudo chown -R USERNAME:USERNAME /opt
  3. sudo chmod -R 755 /opt
  4. Copy All DVDs in Directory: /opt/DVD
  5. sudo vim /etc/fstab:
    1. /opt/dvd/debian-9.5.0-i386-DVD-1.iso /media/repo1 iso9660 defaults 0 0
    2. /opt/dvd/debian-9.5.0-i386-DVD-2.iso /media/repo1 iso9660 defaults 0 0
    3. /opt/dvd/debian-9.5.0-i386-DVD-3.iso /media/repo1 iso9660 defaults 0 0
  6. sudo vim /etc/apt/sources.lists:
    1. deb [trusted=yes] file:///media/repo1 stretch main contrib
    2. deb [trusted=yes] file:///media/repo2 stretch main contrib
    3. deb [trusted=yes] file:///media/repo3 stretch main contrib
  • behrooz mohamadi nsasab
۱۱
بهمن

  1. برنامه  open-vm-tools در لینوکس جهت همگام سازی ماشین مجازی با برنامه vmware می‌باشد(مشابه vmwareTools)
  • behrooz mohamadi nsasab
۱۲
خرداد

افزودن دیسک local برای گرفتن بسته‌ها:

برنامه apt-cdrom را نصب کنید و مطابق ریر، مسیر mount point دیسک را اضافه نمایید(همچنین میتوانید keydrive یک USBرا اضافه نمایید).

apt-cdrom add directory
  • behrooz mohamadi nsasab
۱۲
خرداد

deb http://site.example.com/debian distribution component1 component2 component3
deb-src http://site.example.com/debian distribution component1 component2 component3


deb: دانلود بسته هایی از جنس باینری که کامپایل شده است.

deb-src: دانلود بسته هایی از جنس کد می‌باشد

url:  لینک دانلود کردن بسته‌ها(here)

Distribution: نام ورژن دبیان-(Buster دبیان10)(Stretch دبیان9)(Jessie دبیان8)(Stable مثلا داریم از دبیان9 استفاده میکنیم و میخواهیم وقتی دبیان10 آمد به آن سوییچ شود)

components

  • main: بسته های شامل حوزه  DFSG شرکت دبیان که مخفف Debian Free Software Guidelines است. یعنی بسته هایخارج از این حوزه رسما توسط شرکت دبیان تایید نمی‌شوند. برنامه های که در حوزه DFSG  قرار دارند باید 10 مورد را رعایت نمایند(DFSG) نظیر ایگان باشند  و source code هم همراه داشته باشد قابلیت مشتق شدن یا استفاده از آن وجود داشته باشد و ...
  • contrib: نرم افزار مطابق با ضوابط DFSG باشد اما چند وابستگی از آن نرم افزار ، DFSG را رعایت نکرده باشد ، در این صورت آن نرم افزار و وابستگی هایش در این گروه قرار می گیرند.(بسته هایی که شامل DFSG هستند ولی dependencies آنها در main قرار ندرد)
  • non-free: بسته‌هایی که کلا در حوزه DFSG قرار ندارند

در زیر یک نمونه از فایل source.list که از سیستم عامل دبیان ۹ است آورده شده است:

deb http://deb.debian.org/debian stretch main
deb-src http://deb.debian.org/debian stretch main

deb http://deb.debian.org/debian stretch-updates main
deb-src http://deb.debian.org/debian stretch-updates main

deb http://security.debian.org/debian-security/ stretch/updates main
deb-src http://security.debian.org/debian-security/ stretch/updates main

نکته: اگر بخواهید از بسته‌های contrib و non-free استفاده نمایید، می‌توانید پس از main یک فاصله گذاشته و به ترتیب عبارت  contrib  و  non-free را تایپ نمایید

نکته:  اگر بخواهید موارد بالا را به حالت گرافیکی تنظیم نمایید از دستور زیر استفاده نمایید:

sudo gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk


  • behrooz mohamadi nsasab
۱۸
آذر

نکته: با دستور yum repolist می توانید لیست مخازن را ببینید.

 

install:

Install a package or packages on your system(yum install package

update:

Update a package or packages on your system(yum update package

remove:

Remove the packages(yum remove package

groupinstall:

Install the packages in a group on your system(yum groupinstall "X Window System"

$ sudo yum groupinstall 'Development Tools'

 groupinfo:

Displays detailed information about a group.

$ yum group info "Development Tools"

grouplist:

Lists installed groups and groups that are available for installation.

yum  grouplist
OUTPUT:
Last metadata expiration check: 0:02:06 ago on Mon 21 Dec 2020 02:48:04 PM +0330.
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   KDE Plasma Workspaces
   Virtualization Host
   Custom Operating System
Installed Environment Groups:
   Minimal Install
Installed Groups:
   Development Tools
Available Groups:
   Container Management
   .NET Core Development
   RPM Development Tools
   Graphical Administration Tools
   Headless Management
   Legacy UNIX Compatibility
   Network Servers
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools
   Fedora Packager
   Xfce

 

groupupdate:

Update the packages in a group on your system(yum groupupdate "X Window System"

groupremove:

Remove the packages in a group from your system(yum groupremove "X Window System"

list:

List a package or groups of packages(yum list

⇒ display packages that is possible to install(yum list installed

⇒ display installed packages

check-update:

Check for available package updates(yum check-update

info:

Display details about a package or group of packages(yum info package

search

Search package details for the given string(yum search keyword

deplist:

List a package's dependencies(yum deplist package

group info:

show detail of group packages

option:

-y answer yes for all questions(yum -y install package

--enablerepo=repo enable one or more repositories(temporarily disabled) (wildcards allowed)(yum --enablerepo=repo install package

--disablerepo=repo disable one or more repositories(temporarily disabled) (wildcards allowed)(yum --disablerepo=<repoid> install package

--exclude=package exclude package(s) by name or glob(yum --exclude=package update

--noplugins disable Yum plugins(yum --noplugins update

 

1-Disable the repository permanently, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage:

[yum-config-manager --disable <repoid>]  or  [subscription-manager repos --disable=<repoid>]

 

2-Configure the failing repository to be skipped, if it is unavailable.

Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise:

yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

 
  • behrooz mohamadi nsasab
۲۵
شهریور

زمانی که برنامه ای به اجرا در آورده میشود (مثلا برنامه ی ls), این برنامه برای اجرا به یک سری کتابخانه نیازمند است و باید این کتابخانه ها در داخل ram قرار بگیرد.

ابزارهایی هستند که این کار را انجام می دهند. به عنوان مثال در هنگام اجرای دستور ls ابتدا چک می‌شود که دستور به چه کتابخانه هایی احتیاج دارد و از بین این کتابخانه ها کدامیک در حال حاضر در داخل ram نیست، پس آن را به داخل ram برده و در نتیجه دستور ls به درستی کار خواهد کرد.

این ابزار linker نام دارد.

در یک سیستم عامل تعداد زیادی کتابخانه وجود دارد و linker نمی تواند هر بار برای اجرای هر برنامه, تمامی مسیر های کتابخانه ها را به صورت آنلاین بگردد لذا از دیتابیسی استفاده می کند که در آن , آدرس دقیق هر کتابخانه نوشته شده است . پس زمانی که linker به کتابخانه ای احتیاج داشته باشد ابتدا در دیتابیس خود به دنبال نام آن گشته سپس مسیر آن را از داخل db می خواند و در آخر آن را در داخل ram قرار می‌دهد.
این دیتابیس را می توان در دو فایل زیر دید که اولی یک فایل متنی و دومی یک فایل باینری است

/etc/ld.so.conf
/dtc/ld.so.cache

بصورت پیش فرض در داخل این دیتابیس،بسیاری مسیر و کتابخانه وجود دارد و حتی ممکن است کتابخانه‌ای جدید بصورت دستی به این دیتابیس اضافه بشود. برای این منظور ابتدا مسیر کتابخانه های خود را در فایل متنی

ld.so.conf

اضافه می کنیم سپس با استفاده از دستوری دیگر به نام

ldconfig

ایندکس کتابخانه‌های جدید (موجود در مسیری که اضافه کردیم) را به دیتابیس اضافه می کنیم

/etc/ld.so.cache
ldconfig

توجه داشته باشید که برای اضافه کردن کتابخانه به فایل باینری ls.so.cache نیاز به یوزر root است


Static library
تمام توابع مورد نیاز همواره باید همراه برنامه باشد، حجم برنامه خیلی بزرگ خواهد شد


Dynamic Library
برنامه ها فقط در هنگام نیاز توابع کتابخانه را برای سیستم عامل فراخوانی میکنند و نیاز نیست همه آنها در هر لحظه فراخوانی بشود، اگر نیاز به یک تابع کتابخانه ای که در سیتم عامل نیست پیش آید، در این صورت از اینترنت آن را دانلود خواهد کرد.
توابع در مسیر زیر هستند

/lib
/usr/lib
/lib64

  • behrooz mohamadi nsasab