در مقابل سیستم مدیریت بستههای نرمافزاری RPM، سیستم APT متعلق به دبیان قرار دارد ( مدیر بسته دبیان ) که ویژگیهای بسیار جالبتری نسبت به RPM داشته و مشکلات کاربر را در تعامل با آن به حداقل رسانده است. برای مثال در این سیستم مشکل Dependencies یا وابستگیهای نرمافزاری عملا حل شدهاست. با توجه به گسترش استفاده از توزیعهای مبتنی بر دبیان مانند لیبرانت و اوبونتو در بین کاربران این راهنما میتواند بسیار مفید باشد.
دبیان چیست؟
دبیان یک توزیع گنو/لینوکس است. راجع به اینکه توزیع چیست با جزئیات بیشتر در “تاریخچه لینوکس” صحبت کرده ایم، اما هم اکنون به این نکته ساده اشاره میکنیم که یک سیستم عامل کامل به حساب میآید که شامل نرمافزارها و سیستمهایی برای نصب و مدیریت رایانه میشود که تمامی آنها مبتنی بر کرنل لینوکس و نرمافزار آزاد هستند (به خصوص موارد موجود در پروژه گنو).
زمانی که او در سال 1993، تحت رهبری بنیاد نرمافزار آزاد (FSF) دبیان را بوجود آورد، آین مرداک اهداف مشخصی داشت که آنها را در قالب Debian Manifesto بیان کرده است. سیستم عامل آزادی که او در فکرش بود بایستی دو ویژگی اصلی را شامل میشد. اول، کیفیت: دبیان باید با چنان دقت و مهارتی توسعه مییافت که ارزش کرنل لینوکس را داشته باشد. همچنین میبایست به عنوان یک توزیع غیر-تجاری فعالیت میکرد، به میزانی که با توزیعهای تجاری قابل رقابت باشد. این آرزوی دوگانه، به دید او، تنها با فرآیند توسعهای آزاد برای دبیان قابل دستیابی بود، درست مانند همان چیزی که برای لینوکس و پروژه گنو اتفاق افتاده بود. بدین ترتیب بود که میتوانست به بهبود پیوسته پروژه کمک کند.
ریشه نام دبیان: دنبال چیز اضافی نگردید: دبیان یک مخفف نیست. این اسم، در حقیقت پیوند دو نام کوچک است: نام Ian Murdock و دوست دخترش در آن زمان Debra. که می شود Debra + Ian = Debian
مدیر بسته دبیان
قبل از نصب، حذف یا ارتقا نرمافزار، شما باید چیزهایی یاد بگیرید:
- سیکل حیاتی یک بسته
- اطلاعات درون بستهها شامل: محتویات بستهها – نام بستهها – اولویتها
- وابستگیهای نرمافزاری
- وضعیتها
- پرچمهای بستهها
سیکل حیاتی یک بسته
مدیریت بستههای دبیان از اصطلاحات خاصی برای شرح اعمال انجام شده با بستهها استفاده میکند:
- دانلود شده (Downloaded): بستهها از روی CD یا اینترنت به روی دستگاه شما منتقل شدهاند.
- بازشده (Unpacked): فایلهای بسته باز شدهاند، ولی هنوز آماده استفاده نیستند.
- کامپایل شده (Compiled): یک کد اجرایی از بسته حاوی کدهای منبع ایجاد شده است.
- پیکربندی شده (Configured): بسته آماده برای استفاده روی سیستم است، ولی هنوز نصب نشده است.
- نصب شده (Installed): بسته آماده استفاده است.
- برداشته شده (Deinstalled): بسته بجز فایلهای پیکربندی آن، از روی کامپیوتر حذف شده است.
- حذف شده (Purged): کل بسته شامل فایلهای پیکربندی از روی کامپیوتر حذف شده است.
اطلاعات درون بستهها
بستههای نرمافزاری حاوی مقداری اطلاعات مختلف هستند. شما میتوانید یک برنامه را بدون مطالعه این اطلاعات نصب نمایید، ولی خواندن آن از ایجاد بسیاری از مشکلات جلوگیری خواهد کرد. برای مثال ممکن است یک بسته با بسته دیگری تداخل داشته باشد و یا حجم نصب شده یک بسته ممکن است از اندازه موجود روی دیسک سخت شما بیشتر باشد.
محتویات بستهها
بستههای دبیان ممکن است حاوی کد اجرایی یا کدهای منبع باشند. یک بسته حاوی کد اجرایی، دارای یک برنامه کامپایل شده است که میتوانید بلافاصله پس از نصب آنرا اجرا نمایید. بستههای حاوی کدهای منبع قبل از استفاده باید کامپایل شوند.
- یک بسته حاوی کدهای اجرایی حاوی اقلام زیر میباشد:
- برنامه نرمافزاری.
- فایل conffiles که حاوی لیست فایلهای پیکربندی بسته میباشند.
- فایلهای پیکربندی که برا ینصب و برداشتن بسته مورد نیاز میباشند.
- اسکریپتهای نصب که هنگام استفاده از ابزارهای بستههای نرمافزاری به طور خودکار اجرا میشوند. برخی از آنها ممکن است به ورودیهای کاربر نیاز داشته باشند. اسکریپتها معمولا در مسیر var/lib/dpkg/inf قرار دارند و به طور عام 4 عدد هستند:
- preinst: قبل از نصب بسته اجرا میشود.
- postinst: بعد از نصب بسته اجرا میشود.
- prerm: قبل از حذف بشته اجرا میشود.
- postrm: بعد از حذف بسته اجرا میشود.
- فایلهای man و info که حاوی کمک برنامه هستند.
- فایل کنترل که حاوی خلاصهای از کتابخانههای مورد نیاز بسته، نام و نسخه بسته، اولویت بسته، اندازه نصب شده آن، تهیه کننده آن و سایر اطلاعات اولیه میباشد.
نام بستههای نرمافزاری
برای نصب یا حذف یک بسته، شما تنها به نام آن نیاز دارید. در سایر موارد، ممکن است به نام کامل بسته نیاز داشته باشید. ساختار نامگذاری بستههای نرمافزاری دبیان بصورت program_version–revision_processor.deb میباشد. به عبارت دیگر:
- نام بسته که برخی اوقات یک نام مخفف است.
- شماره نسخه
- شماره اصلاحیه
- نوع پردازنده مانند i386 برای ماشینهای اینتل
- پسوند deb که نشانگر یک بسته دبیان است. البته توزیعهای مبتنی بر دبیان نیز از این پسوند ممکن است استفاده کنند.
مانند این نسخه برم افزار WinRAR:
rar–5.4.0–1.el7.x86_64.deb
اولویتهای بستهها
اولویت یک بسته نرمافزاری در فایل کنترل آن لیست شده است. اولویت نشانگر حد اهمیت بسته برای سیستمعامل است:
- Requires: بسته باید حتما بطور صحیح کار کند. به عبارت دیگر بسته یکی از اجرای پایهای سیستم عامل است.
- Important: سیستم بصورت حیاتی به بسته نیاز ندارد، ولی قابلیتهایی پایهای به سیستم اضافه میکند. بسیاری از بستههای رده Important، بعنوان بخشی از سیستمعامل نصب میشوند.
Standard: سیستم از وجود این بسته سود خواهد برد. - Optional: بیشتر سیستمها دارای این بسته هستند.
- Extra: یا سیستم به این بسته نیازی ندارد و یا با بستهای از اولویتهای بالاتر تداخل دارد. این بستهها باید با مطالعه و تحقیق دقیقتری نصب شوند.
وابستگیهای نرمافزاری
وابستگیهای یک بسته نرمافزاری در فایل کنترل آن لیست شدهاند. وابستگیهای نرمافزاری نشانگر چگونگی تعامل یک بسته با یستههای دیگر نرمافزاری و کتابخانههای برنامه نویسی هستند.
- Depends: بسته به یسته یا بستههای دیگری برای عملکرد صحیح نیاز دارد. ممکن است به نسخه خاصی از یک برنامه دیگر نیاز داشته باشد. این نوع وابستگی معمولا در مورد فایلهای کتابخانهای رواج دارد.
- Recommends: بسته با یک بسته دیگر بهتر کار خواهد کرد ولی به طور اساسی به آن نیازی ندارد.
- Suggests: در بیشتر موارد بسته با بسته دیگری بهتر کار خواهد کرد.
- Conflicts: بسته با یک بسته دیگر کار نخواهد کرد. دو بسته به همراه هم نباید نصب شوند زیرا یکی یا هردوی آنها از کار خواهند افتاد.
- Replaces: بسته هنگام نصب بسته یا بستههایی را جایگزین خواهد کرد. تحقیق کنید که در چنین مواردی مشکلی برای سیستمعامل یا سایر برنامهها رخ ندهد.
- Provides: بسته حاوی بسته دیگری است یا حداقل دارای همان کارکرد میباشد.
- Predepends: بسته به بسته دیگری برای اجرا نیاز دارد. باید بسته مورد نظر را قبل از نصب این بسته نصب کنید.
فایلهای مدیریت بستههای نرمافزاری
فایلهای مهم مدیریت بستههای نرمافزاری عبارتند از:
- فایل etc/apt/sources.list : منابع اینترنتی برای استفاده به همراه apt و gnome-apt-pkgset.
- فایلvar/state/apt/cdroms.list : لیست درایوهای CD قابل استفاده با apt.
- فایل etc/apt/apt.conf : فایل پیکربندی apt.
- فایل var/lib/dpkg/available : لیست بستههای موجود روی سیستم.
- فایل var/lib/dpkg/status : لیست وضعیت بستههای موجود روی سیستم.
وضعیت بستهها (Package Statuses)
هنگامی که از ابزارهای مدیریت بستهها استفاده میکنید، یک بسته نرمافزاری ممکن است دارای وضعیتهای زیر باشد:
- Config-Files: تنها فایلهای پیکربندی بسته روی سیستم وجود دارند.
- Half-configured: پیکربندی شروع شده ولی ناقص مانده است.
- Half-installed: نصب بسته شروع شده ولی ناقص مانده است.
- Installed: یسته بازشده، پیکربندی شده و نصب شدهاست.
- Not-installed: هیچ بخشی از بسته نصب نشده است.
- Unpacked: بسته باز شدهاست، ولی پیکربندی نشده است.
وضعیتهای انتخاب (Selection States)
با توجه به اینکه شما مایلید چه کاری با یک بسته انجام دهید، آن بسته میتواند وضعیتهای مختلفی داشته باشد. وضعیت بستهها را میتوانید با استفاده از دستور dpkg مشاهده نمایید:
- Install: بسته برای پیکربندی و نصب انتخاب شدهاست.
- Deinstall: تمام فایلهای بسته بجز فایلهای پیکربندی آن برای حذف شدن انتخاب شدهاست.
- Purge: تمام فایلهای یک بسته و حتی فایلهای پیکربندی آن برای حذف شدن انتخاب شدهاست.
- Hold: بر روی نسخه جاری بسته، نوشته نخواهد شد.
- Unknown: بسته هنوز باز نشده است.
پرچمهای بستهها (Package Flags)
بستهها ممکن است به دو صورت نشانه گذاری شده باشند. برای نمایش پرچم یک بسته میتوانید از دستور dpkg استفاده نمایید:
- Hold: هیچکاری با بسته انجام نخواهد شد مگر اینکه گزینه force-hold همراه با apt استفاده شود.
- Reinst-required: بسته شکسته شده و نیاز به نصب مجدد دارد. امکان حذف بستته تنها با گزینه force-reinstreq همراه با apt وجود دارد.
آموزش نصب برنامه با apt-get
فکر کنید می خواهیم برنامه bzr را نصب کنیم، در صورتی که در repository دستورات apt و apt-get وجود داشته باشد به صورت زیر قابل نصب است.
دستور sudo apt-get install bzr را می زنیم. البته چون ما قبل با یوزر روت (#) وارد شده بودیم لازم نبود از sudo استفاده کنیم.
همانطور که در عکس هم مشخص است از ما سوال می کند برای نصب bzr ما نیاز به نصب کتابخانه های زیر داریم:
The following packages were automatically installed and are no longer required:
linux-headers-5.0.0-19 linux-headers-5.0.0-19-generic
linux-image-5.0.0-19-generic linux-modules-5.0.0-19-generic
linux-modules-extra-5.0.0-19-generic
که در صورت زدن Y آن ها را نصب می کند ولی در ادامه پیام گفته شده که کتابخانه های زیر نیست بهتر است نصب شود، نکته ای که وجود دارن این کتابخانه ها نصب نمی شود فقط گفته بهتر است نصب شود.
Suggested packages:
bzr-doc bzrtools python-bzrlib.tests apache2 | lighttpd | httpd python-doc
python-tk python-blinker-doc python-bzrlib-dbg python-kerberos
python-paramiko python-pycurl python-configobj-doc python-cryptography-doc
python-cryptography-vectors python-dbus-dbg python-dbus-doc
python-enum34-doc python-gi-cairo python-crypto libkf5wallet-bin
python-keyrings.alt python-testresources python-setuptools
python-secretstorage-doc python2-doc python2.7-doc binfmt-support
اگه نیاز دارید که Suggested ها نیز نصب شود می توانید از دستور زیر استفاده کنید:
apt-get –install-suggests install bzr
نکته: برای مثال وقتی بدون Suggested نرم افزار bzr را نصب میکنیم حجمی حدود 35 مگ دانلود می کند ولی با نصب Suggested ها حجمی حدود 800 مگ
و با دستوز زیر نیز میتوانید یک نرم افزار را در لینوکس پاک کنید:
apt-get remove bzr
و با دستور زیر هم نرم افزار را پاک می کند و هم تمام کتابخانه هایی که همراه این نرم افزار نصب شده بودن و الان هیچ نرم افزار دیگری از آن استفاده نمی کند:
apt-get autoremove bzr
اگر به صورت خالی دستور apt-get autoremove را بزنیم سیستم تمام کتابخانه هایی که قبلا نصب شده و الان هیچ نرم افزاری از آن استفاده نمی کند را پاک می کند.
فهرست نصب apt و apt-get
دستور apt برای این که نرم افزار ها را پیدا و نصب کند یک فهرست دارد که آن را چک می کند، این فهرست در آدرس /etc/apt/sources.list و دارکتوری /etc/apt/sources.list.d قرار دارد که شما هم میتوانید این فهرست ها را به صورت دستی ویرایش کنید و سپس با دستور زیر تمام اون لیست شما دانلود و کش می شود.
apt update
apt-get update
دستور update فقط لیست Repository ها را چک میکنه و نسخه اخر را کش می کند ولی با دستور زیر آن لیستی که کش کرده را با نسخه نرم افزار ها و پکیج هایی که دارد چک می کند و اگر نسخه جدیدتری موجود بود آن را دانلود و نصب می کند.
apt upgrade
apt-get upgrade
نکته ای که وجود دارد اگر شما میخواهید یک نرم افزار خاص را بروز کنید می توانید با همان دستور apt-get install نسخه جدیدتر را نصب کنید.
برای بروزرسانی به نسخه جدید یک distribution برای مثال نسخه جدید اوبونتو از دستور زیر استفاده می کنیم.
apt-get dist-upgrade
جستجو در پکیج ها و نرم افزار های لینوکس
برای این که شما دنبال یک پکیج بگردید می توانید از دستور زیر استفاده کنید که ما دنبال tiny window بودیم.
apt-cache search ‘tiny window’
آموزش تنظیم دوباره (reconfiguring) یک نرم افزار
ممکن است شما بخواهید یک نرم افزار که از قبل نصب شده است را دوباره تنظیم کنید، برای این کار از دستور زیر استفاده میکنیم. ما تنظیمات دوباره tzdata را انجام می دهیم که کارش تنظیم ساعت لینوکس می باشد.
dpkg-reconfigure tzdata
آموزش نصب فایل deb
ما از برنامه bzr_2.7.0+bzr6622-15_all.deb برای آموزش استفاده کرده ایم، در صورت نیاز میتونید به کمک دستور زیر این فایل رو در لینوکس خود دانلود کنید:
wget
ما این فایل رو در فلدر Desktop خود قرار دادیم.
نکته: در این مثال با apt install bzr قابل نصب است ولی ما میخواهیم خودمان پکیج deb را نصب کنیم
برای نصب کافی است دستور زیر و اسم فایل دانلود شده را به صورت زیر بنویسیم تا نصب انجام شود:
dpkg -i bzr_2.7.0+bzr6622-15_all.deb
میخواهیم محتویات داخل این فایل را ببینیم، پس از دستور زیر استفاده می کنیم:
dpkg -c bzr_2.7.0+bzr6622-15_all.deb
خروجی چیزی شبیه به زیر می باشد:
و با دستور زیر نیز وضعیت بسته های نصب شده را به ما نمایش می دهد.
dpkg یک دستور خشن جهت حذف پکیج ها دارد که به آن purge می گوید که میتوان با P- و یا purge– از آن استفاده کرد، فرق purge با remove این که purge هیچ آثاری از پکیج را نگه نمی دارد و همه چیز آن را حذف می کند ولی در remove برخی از تنظیمات و تاریخچه نصب آن و برخی موارد دیگر نگهداشته می شود.
dpkg -P bzr
با دستور زیر نیز به ما نمایش می دهد که چه فایل ها و دارکتوری هایی برای پکیج مورد نظر ایجاد شده است.
dpkg -L jcal
$ dpkg -L jcal
/.
/usr
/usr/bin
/usr/bin/jcal
/usr/share
/usr/share/doc
/usr/share/doc/jcal
/usr/share/doc/jcal/README
/usr/share/doc/jcal/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/jcal.1.gz
/usr/share/doc/jcal/changelog.Debian.gz
و با دستور زیر عمل برعکس L- را انجام می دهد یعنی میگیم فلان فایل توسط چه پکیجی کپی شده است.
dpkg -S /var/lib/mplayer/prefs/mirrors
$ dpkg -S /var/lib/mplayer/prefs/mirrors
mplayer: /var/lib/mplayer/prefs/mirrors
همچنین دستورات which و whereis هم محل نصب پکیج مورد نظر را به ما می گوید:
which bzr
whereis bzr
در آخر هم شما میتوانید از Software Center های خوبی مثل Ubuntu Software Center استفاده کنید.
خیلی ممنون از آموزش خوبتون