نکته مهم : برای استفاده از دستورات این مطلب باید به اینترنت متصل باشید.
مطلب امروز ما در بارهی نصب نرم افزار در اوبونتو و همچنین aptitude (و apt-get) هست.خیلی از کاربرها از apt-get استفاده کردن ولی خودشون نمیدونن! اگه از Software Manager استفاده کردید یا از Synaptic استفاده کردید،در اصل از aptitude هم استفاده کردید.این نرم افزارها و مشابه هاش همه Front-end هایی برای apt-get هستن.یعنی هر کاری که با اونها انجام میدین به دستورات apt-get ترجمه میشه.سوال اینجاست که خب وقتی میشه گرافیکی این کارو انجام داد چرا با دستور انجام بدیم؟! اولا که این تاپیک آموزش ترمیناله! دوما وارد کردن دستور به کاربر گزینه های بیشتری میده پس کنترل بیشتری میده و اطلاعات بیشتری هم در مورد ساز و کار نرم افزار میده.در آخر هم مهم ترین نکته اینجاست که وقتی توی فروم ها کمک میخواید یه خط دستور بهتون میدن و میگن این رو بزنید،چون نوشتن یه خط دستور گویاتر از گفتن "برو اونجا،بعد اونجا،بعد اونجا" هست.از اون مهم تر توی بعضی سیستم ها شما واسط گرافیکی ندارید (مثل سرور).
توی اوبونتو همه چی به صورت "بسته" هست(همون Package).شما یه نرم افزار رو که نصب میکنید یک یا چند بسته به همراه وابستگی هاش (Dependency) رو نصب میکنید.با معنی وابستگی که آشنا هستید؟ یعنی برای نصب این بسته باید قبلش یک یا چند بستهی دیگه نصب شده باشه.بسته ها هم همونطور که ممکنه بدونید توی مخازن اوبونتو هست.مخازن (Repository) یه جاییه که هرکس نرم افزاری مینویسه و به تایید اوبونتو میرسه،بسته های مربوطه اونجا قرار میگیره.اون نرم افزاری هم که این بسته ها رو از مخازن میگیره بهش میگن "مدیر بسته" یا Package Managet.
برای نصب از طریق ترمینال هم نرم افزار aptitute استفاده میشه و هم apt-get.اینها با هم یه تفاوت های جزئی دارن.ما فعلا در مورد apt-get صحبت میکنیم.
اولین دستورمون در مورد آپدیت کردن کش هست.یعنی جدیدترین بسته ها رو از مخازن شناسایی میکنه :
یه سری نوشته میاد روی صفحه که نشون میده داره به تک تک مخازن وصل میشه و آپدیت میکنه.
دستور بعدی در مورد آپگرید کردنه.گوگل کروم ۱۷ نصب کرده بودید؟ الان گوگل کروم ۱۸ اومده،بعد از آپدیت کش،باید آپگرید کنید :
با این دستور همه بسته هایی که نسخهی جدیدشون اومده آپگرید میشن.
نکته اینجاست که آپگرید کردن بدون آپدیت کردن کش یه کار کاملا بی معنیه! آپدیت کردن کش بدون آپگرید کردن هم تاثیری روی کامپیوتر شما نداره (فقط سیستم میفهمه بسته های جدید اومده).پس عموما این دوتا دستور رو با هم باید استفاده کنیم.اما اینکه دستور اول رو تایپ کنی،منتظر شی تموم بشه،بعد دستور دوم رو تایپ کنی هم خسته کننده است هم بی منطقه.از روشی که گفتم (اضافه کردن یه &) به آخر دستور هم نمیشه استفاده کرد چون انحصار متقابل داریم (هردوتا دستور میخوان به کش دسترسی پیدا کنن که این کار مجاز نیست).
برای اینکار از && استفاده میکنیم.یادتونه توی برنامه نویسی برای شرط از && استفاده میکردیم؟اینجا هم همونه.میخوایم دستور اول "و" دستور دوم پشت سر هم اجرا بشن.
کد:
sudo apt-get update && sudo apt-get upgrade
این آپگریدی که اینجا نوشتیم یه آپگرید امن هست.یعنی اگه دوتا بسته با هم تناقض داشته باشن،یا مشکل دیگه ای باشه،سعی میکنه که سیستم در حالت سالم قبلی خودش بمونه.اما یه دستور دیگه هست که تمام تلاش خودشو میکنه که آپگرید انجام بشه،حتی اگه لازم بشه بسته های قبلی رو پاک کنه.این روش رو توصیه نمیکنم.
کد:
sudo apt-get dist-upgrade
این از آپگرید کردن بود.اما حالا ببینم چطور میشه نصب رو انجام داد.دستورش ساده است :
کد:
sudo apt-get install <package name>
دستور فکر میکنم واضحه،به جای <Package name> اسم بسته رو بزارید.مدیر بسته میره کش رو میگرده،بسته ای که اسمش رو نوشتید پیدا میکنه،لیست وابستگی هاشو بررسی میکنه (و اگه لازم باشه اونا رو نصب میکنه) بعدش هم خود بسته رو دانلود میکنه و نصب میکنه.به همین سادگی!
حالا اگه خواستیم بسته رو پاک کنیم چی؟ دستور این هم ساده است :
کد:
sudo apt-get remove <package name>
با زدن این دستور چی پاک میشه؟ خود بسته که پاک میشه،آیا وابستگی هاش هم پاک میشه؟ بسته هایی که وابسته به این هستن چی؟
جواب مورد اول خبر هست.با پاک کردن یه بسته،وابستگی هاش پاک نمیشه.
جواب مورد دوم بله هست.اگه پاک کردن یه بسته باعث خراب شدن یه نرم افزار و یه بستهی دیگه بشه،بسته دوم هم پاک میشه.
بازم رسیدیم به سوال همیشگی : اگه اسم بسته (یا نرم افزار) رو نمیدونستیم چی؟ اسم همه رو که حفظ نیستیم،هر روز هم بسته ها و نرم افزارهای جدید نوشته میشه... یه ابزاری برای این کار هم داریم :
کد:
apt-cache search <string>
این دستور به sudo نیازی نداره.اما دقت کنید که ممکنه انقدر جوابها زیاد باشه که نتونید قسمت اولش رو ببینید.برای این کار از این دستور استفاده میکنیم :
کد:
apt-cache search <string> | less
دستور رو بزنید و بهم بگید که چه فرقی کرد،باشه؟
حالا ما یه بسته رو نصب کردیم.میخوایم در موردش اطلاعات داشته باشیم،از دستور زیر استفاده میکنیم :
کد:
apt-cache show <package name>
این دستور تمام اطلاعات لازم و حتی غیر لازم یه بسته رو نشون میده : اسم،سایز،سازنده،ورژن،نسخه های قبلی،وابستگی ها،معماری (۶۴ یا ۳۲ بیتی) و ...
وقتی که از طریق ترمینال (یا هر روش دیگه ای) بسته رو نصب میکنیم،اون مدیر بسته،بسته رو به صورت یه فایل deb. دانلود میکنه و بعد هم نصب میکنه.بعد از نصب اون فایل deb. پاک نمیشه و توی var/cache/apt/archives/ میمونه.ممکنه به هر دلیلی بخواید این فایل ها رو پاک کنید(با پاک کردن اینا برنامه یا بسته پاک نمیشه،اینها مثل installer هستند فقط).راستش من تا حالا هیچوقت همچین کاری رو نکردم! اما ممکنه فضا نیاز داشته باشید یا دلیل دیگه ای داشته باشید.ولی یه روش دیگه برای اینکار هست :
این دستور تمام فایلهای deb. که دوباره قابل دریافت از اینترنت هستند رو پاک میکنه.اینطوری فایل های قدیمی که قبلا گرفتید هم از بین نمیره.
اما یه آپشن اینجا میخوام معرفی کنم که کار جالبی انجام میده.آپشن s- باعث میشه که apt عمل install رو شبیه سازی کنه.مثلا میخوایم بینیم اگه بخوایم mplayer رو نصب کنیم چجوری میشه :
کد:
amir@amir-laptop:~$ sudo apt-get install mplayer -s
[sudo] password for amir:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libbluray0 liblzo2-2 libmp3lame0 libopenal1 libsvga1 libvdpau1 libxvidcore4
Suggested packages:
libbluray-bdj nvidia-vdpau-driver nvidia-vdpau-driver-ia32 vdpau-driver mplayer-doc netselect fping
The following NEW packages will be installed:
libbluray0 liblzo2-2 libmp3lame0 libopenal1 libsvga1 libvdpau1 libxvidcore4 mplayer
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Inst libbluray0 (0.2~git20110213.20739ed-0ubuntu3~ppa1~lucid1 lucidbleed:10.04/lucid)
Inst liblzo2-2 (2.03-2 Ubuntu:10.04/lucid)
Inst libmp3lame0 (3.98.4-0ubuntu1~ppa1~lucid1 lucidbleed:10.04/lucid)
Inst libsvga1 (1:1.4.3-29 Ubuntu:10.04/lucid)
Inst libvdpau1 (0.4-5ubuntu1~ppa1~lucid1 lucidbleed:10.04/lucid)
Inst libxvidcore4 (2:1.2.2+debian-0ubuntu2 Ubuntu:10.04/lucid)
Inst libopenal1 (1:1.12.854-0ubuntu1~lucid1 Ubuntu:10.04/lucid-updates)
Inst mplayer (2:1.0~rc4.dfsg1-1ubuntu3~ppa1~lucid1 lucidbleed:10.04/lucid)
Conf libbluray0 (0.2~git20110213.20739ed-0ubuntu3~ppa1~lucid1 lucidbleed:10.04/lucid)
Conf liblzo2-2 (2.03-2 Ubuntu:10.04/lucid)
Conf libmp3lame0 (3.98.4-0ubuntu1~ppa1~lucid1 lucidbleed:10.04/lucid)
Conf libsvga1 (1:1.4.3-29 Ubuntu:10.04/lucid)
Conf libvdpau1 (0.4-5ubuntu1~ppa1~lucid1 lucidbleed:10.04/lucid)
Conf libxvidcore4 (2:1.2.2+debian-0ubuntu2 Ubuntu:10.04/lucid)
Conf libopenal1 (1:1.12.854-0ubuntu1~lucid1 Ubuntu:10.04/lucid-updates)
Conf mplayer (2:1.0~rc4.dfsg1-1ubuntu3~ppa1~lucid1 lucidbleed:10.04/lucid)
خودتون هم حتما تست کنید،خیلی جالبه.(نیازی به اینترنت نداره،صرفا شبیه سازیه)
یه چیز دیگه هم بگم و مطلب رو تموم کنم.یه موقع از اینترنت یه فایل deb. میگیری و میخوای از طریق ترمینال نصبش کنی (نصب از غیر ترمینال با دابل کلیک انجام میشه).از دستور زیر استفاده کنید :
دقت کنید که آپشن i برای install استفاده میشه،برای استفاده های دیگه و آپشن های دیگه رجوع کنید به man dpkg.