مدیریت بسته های نرم افزاری در لینوکس
در این مقاله می آموزیم که چگونه از ابزار YUM توسعه یافته توسط Red Hat برای نصب ، بروزرسانی ، حذف ، جستجو، و مدیریت نرم افزار استفاده کنیم . یام (Yellowdog Updater Modified) که به اختصار به آن YUM گفته میشود یک خط فرمان متن باز و ابزاری برای مدیریت بسته گرافیکی مبتنی بر RPM (red hat package manager) در سیستم عامل لینوکس است و به کاربران و مدیران سیستم اجازه می دهد که به راحتی بسته نرم افزاری در سیستم را نصب، بروز رسانی، حذف و یا جستجو کنند. این ابزار متن باز توسعه یافته توسط Seth Vidal دارای مجوز GPL (General Public License) می باشد.
مدیریت بسته های نرم افزاری در لینوکس
۱٫ نصب بسته نرم افزاری با استفاده از YUM
برای نصب یک بسته گیت git فقط دستور زیر را اجرا کنید تا به طور خودکار تمام پکیج های وابسته به git پیدا و نصب شود.
[root@devops ~]# yum install git Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.grandcloud.cn * extras: mirrors.grandcloud.cn * updates: mirrors.grandcloud.cn Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package git.x86_64 0:1.7.1-3.el6_4.1 will be installed --> Processing Dependency: perl-Git = 1.7.1-3.el6_4.1 for package: git-1.7.1-3.el6_4.1.x86_64 --> Processing Dependency: rsync for package: git-1.7.1-3.el6_4.1.x86_64 --> Processing Dependency: perl(Git) for package: git-1.7.1-3.el6_4.1.x86_64 --> Processing Dependency: perl(Error) for package: git-1.7.1-3.el6_4.1.x86_64 --> Running transaction check ---> Package perl-Error.noarch 1:0.17015-4.el6 will be installed ---> Package perl-Git.noarch 0:1.7.1-3.el6_4.1 will be installed ---> Package rsync.x86_64 0:3.0.6-9.el6_4.1 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================== Package Arch Version Repository Size ========================================================================================================== Installing: git x86_64 1.7.1-3.el6_4.1 base 4.6 M Installing for dependencies: perl-Error noarch 1:0.17015-4.el6 base 29 k perl-Git noarch 1.7.1-3.el6_4.1 base 28 k rsync x86_64 3.0.6-9.el6_4.1 base 334 k Transaction Summary ========================================================================================================== Install 4 Package(s) Total download size: 5.0 M Installed size: 15 M Is this ok [y/N]: y Downloading Packages: (1/4): git-1.7.1-3.el6_4.1.x86_64.rpm | 4.6 MB 00:03 (2/4): perl-Error-0.17015-4.el6.noarch.rpm | 29 kB 00:00 (3/4): perl-Git-1.7.1-3.el6_4.1.noarch.rpm | 28 kB 00:00 (4/4): rsync-3.0.6-9.el6_4.1.x86_64.rpm | 334 kB 00:00 ---------------------------------------------------------------------------------------------------------- Total 1.1 MB/s | 5.0 MB 00:04 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : 1:perl-Error-0.17015-4.el6.noarch 1/4 Installing : rsync-3.0.6-9.el6_4.1.x86_64 2/4 Installing : perl-Git-1.7.1-3.el6_4.1.noarch 3/4 Installing : git-1.7.1-3.el6_4.1.x86_64 4/4 Verifying : rsync-3.0.6-9.el6_4.1.x86_64 1/4 Verifying : git-1.7.1-3.el6_4.1.x86_64 2/4 Verifying : perl-Git-1.7.1-3.el6_4.1.noarch 3/4 Verifying : 1:perl-Error-0.17015-4.el6.noarch 4/4 Installed: git.x86_64 0:1.7.1-3.el6_4.1 Dependency Installed: perl-Error.noarch 1:0.17015-4.el6 perl-Git.noarch 0:1.7.1-3.el6_4.1 rsync.x86_64 0:3.0.6-9.el6_4.1 Complete! [root@devops ~]#
دستور فوق به تایید نیازخواهد داشت، پس از آن بسته نرم افزار بر روی سیستم شما نصب میشود. اگر برای نصب نرم افزار به طور خودکار هیچ تائیدیه ای از شما خواسته نشد ، همانطور که در مثال زیر نشان داده شده است می توانید از گزینه y- استفاده کنید.
[root@devops ~]# yum -y install gcc
2. حذف بسته های نرم افزاری با استفاده از YUM
اگر می خواهید بسته را با تمام وابستگیهای آن به طور کامل حذف کنید ، فقط باید دستور زیر را اجرا کنید:
[root@devops ~]# yum remove git Loaded plugins: fastestmirror Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package git.x86_64 0:1.7.1-3.el6_4.1 will be erased --> Processing Dependency: git = 1.7.1-3.el6_4.1 for package: perl-Git-1.7.1-3.el6_4.1.noarch --> Running transaction check ---> Package perl-Git.noarch 0:1.7.1-3.el6_4.1 will be erased --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================== Package Arch Version Repository Size ========================================================================================================== Removing: git x86_64 1.7.1-3.el6_4.1 @base 15 M Removing for dependencies: perl-Git noarch 1.7.1-3.el6_4.1 @base 35 k Transaction Summary ========================================================================================================== Remove 2 Package(s) Installed size: 15 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : perl-Git-1.7.1-3.el6_4.1.noarch 1/2 Erasing : git-1.7.1-3.el6_4.1.x86_64 2/2 Verifying : git-1.7.1-3.el6_4.1.x86_64 1/2 Verifying : perl-Git-1.7.1-3.el6_4.1.noarch 2/2 Removed: git.x86_64 0:1.7.1-3.el6_4.1 Dependency Removed: perl-Git.noarch 0:1.7.1-3.el6_4.1 Complete! [root@devops ~]#
3. به روز رسانی بسته های نرم افزاری با استفاده از YUM
فرض کنید که میخواهید بسته نرم افزار GCC خود را به آخرین نسخه پایدار بروزرسانی کنید . برای اینکار فقط باید فرمان زیر را اجرا کنید، تا به طور خودکار تمام پکیج های وابسته را بروزرسانی و نصب کند.
[root@devops ~]# yum update gcc Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.grandcloud.cn * extras: mirrors.grandcloud.cn * updates: mirrors.grandcloud.cn Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package gcc.x86_64 0:4.4.7-3.el6 will be updated --> Processing Dependency: gcc = 4.4.7-3.el6 for package: gcc-c++-4.4.7-3.el6.x86_64 ---> Package gcc.x86_64 0:4.4.7-4.el6 will be an update --> Processing Dependency: libgomp = 4.4.7-4.el6 for package: gcc-4.4.7-4.el6.x86_64 --> Processing Dependency: cpp = 4.4.7-4.el6 for package: gcc-4.4.7-4.el6.x86_64 --> Processing Dependency: libgcc >= 4.4.7-4.el6 for package: gcc-4.4.7-4.el6.x86_64 --> Running transaction check ---> Package cpp.x86_64 0:4.4.7-3.el6 will be updated ---> Package cpp.x86_64 0:4.4.7-4.el6 will be an update ---> Package gcc-c++.x86_64 0:4.4.7-3.el6 will be updated ---> Package gcc-c++.x86_64 0:4.4.7-4.el6 will be an update --> Processing Dependency: libstdc++-devel = 4.4.7-4.el6 for package: gcc-c++-4.4.7-4.el6.x86_64 --> Processing Dependency: libstdc++ = 4.4.7-4.el6 for package: gcc-c++-4.4.7-4.el6.x86_64 ---> Package libgcc.x86_64 0:4.4.7-3.el6 will be updated ---> Package libgcc.x86_64 0:4.4.7-4.el6 will be an update ---> Package libgomp.x86_64 0:4.4.7-3.el6 will be updated ---> Package libgomp.x86_64 0:4.4.7-4.el6 will be an update --> Running transaction check ---> Package libstdc++.x86_64 0:4.4.7-3.el6 will be updated ---> Package libstdc++.x86_64 0:4.4.7-4.el6 will be an update ---> Package libstdc++-devel.x86_64 0:4.4.7-3.el6 will be updated ---> Package libstdc++-devel.x86_64 0:4.4.7-4.el6 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================== Package Arch Version Repository Size ========================================================================================================== Updating: gcc x86_64 4.4.7-4.el6 base 10 M Updating for dependencies: cpp x86_64 4.4.7-4.el6 base 3.7 M gcc-c++ x86_64 4.4.7-4.el6 base 4.7 M libgcc x86_64 4.4.7-4.el6 base 101 k libgomp x86_64 4.4.7-4.el6 base 118 k libstdc++ x86_64 4.4.7-4.el6 base 293 k libstdc++-devel x86_64 4.4.7-4.el6 base 1.6 M Transaction Summary ========================================================================================================== Upgrade 7 Package(s) Total download size: 21 M Is this ok [y/N]:
4.لیست کردن بسته نرم افزاری نصب شده با استفاده از YUM
با استفاده از تابع list، می توانید یک نرم افزار خاص را با نام آن بسته جستجو کنید. به عنوان مثال، برای پیدا کردن بسته gcc از دستور زیر استفاده کنید :
[root@devops ~]# yum list gcc Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.grandcloud.cn * extras: mirrors.grandcloud.cn * updates: mirrors.grandcloud.cn base | 3.7 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 2.1 MB 00:06 Installed Packages gcc.x86_64 4.4.7-3.el6 @base Available Packages gcc.x86_64 4.4.7-4.el6 base [root@devops ~]#
5. بررسی تاریخ استفاده از YUM برای مشاهده تاریخ استفاده از دستور یام تا قبل از اجرای دستور زیر :
[root@devops ~]# yum history Loaded plugins: fastestmirror ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 8 | root <root> | 2014-03-04 22:24 | Erase | 2 7 | root <root> | 2014-03-04 22:22 | Install | 4 6 | root <root> | 2014-02-27 18:16 | Install | 2 5 | root <root> | 2014-01-07 10:53 | Install | 1 4 | root <root> | 2013-07-31 17:58 | I, U | 52 3 | root <root> | 2013-07-31 17:58 | Install | 1 2 | root <root> | 2013-07-31 17:53 | Install | 1 1 | System <unset> | 2012-12-17 09:06 | Install | 218 history list [root@devops ~]#
6. پاک کردن کش YUM
YUM به طور پیش فرض، تمام داده های کتابخانه نرم افزار libiray sotware را در /var/cache/yum/ ذخیره میکند، اگر می خواهید تمام فایل ذخیره شده را پاک کنید ، باید به صورت دوره ای دستور زیر را اجرا کنید:
[root@devops ~]# yum clean all Loaded plugins: fastestmirror Cleaning repos: base extras updates Cleaning up Everything Cleaning up list of fastest mirrors [root@devops ~]#
7.آپدیت سیستم لینوکس با استفاده از دستور yum update
اگر می خواهید سیستم خود را با تمام بسته های باینری و امنیتی بروز نگهدارید، دستور زیر را اجرا کنید.
[root@devops ~]# yum update Loaded plugins: fastestmirror Determining fastest mirrors * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.com base | 3.7 kB 00:00 base/primary_db | 4.4 MB 00:04 extras | 3.4 kB 00:00 extras/primary_db | 19 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 2.1 MB 00:01 Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package authconfig.x86_64 0:6.1.12-10.el6 will be updated ---> Package authconfig.x86_64 0:6.1.12-13.el6 will be an update ---> Package bash.x86_64 0:4.1.2-9.el6_2 will be updated ---> Package bash.x86_64 0:4.1.2-15.el6_4 will be an update ---> Package bfa-firmware.noarch 0:3.0.0.0-1.el6 will be updated ... Total download size: 134 M Is this ok [y/N]: n
8. جستجو پکیج با استفاده از دستور YUM
در صورتی که شما نام دقیق پکیج را به یاد داشته باشید، می توانید با استفاده از تابع search همه پکیج های موجود که با نام مورد نظر شما مطابقت دارند را پیدا کنید . به عنوان مثال، برای جستجو یک بسته نرم افزار کلمه ” GCC” را در تابع search قرار دهید:
[root@devops ~]# yum search gcc Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.com ========================================================= N/S Matched: gcc ========================================================= gcc-c++.x86_64 : C++ support for GCC gcc-gnat.x86_64 : Ada 95 support for GCC gcc-java.x86_64 : Java support for GCC gcc-objc.x86_64 : Objective-C support for GCC gcc-objc++.x86_64 : Objective-C++ support for GCC libgcc.x86_64 : GCC version 4.4 shared support library mingw32-gcc.x86_64 : MinGW Windows cross-compiler (GCC) for C compat-gcc-34.x86_64 : Compatibility GNU Compiler Collection compat-gcc-34-c++.x86_64 : C++ support for compatibility compiler compat-gcc-34-g77.x86_64 : Fortran 77 support for compatibility compiler gcc.x86_64 : Various compilers (C, C++, Objective-C, Java, ...) gcc-gfortran.x86_64 : Fortran support libgcj.x86_64 : Java runtime library for gcc libgcj-devel.x86_64 : Libraries for Java development using GCC libgcj-src.x86_64 : Java library sources from GCC4 preview libgomp.x86_64 : GCC OpenMP v3.0 shared support library libmudflap.x86_64 : GCC mudflap shared support library libmudflap-devel.x86_64 : GCC mudflap support mingw32-gcc-c++.x86_64 : MinGW Windows cross-compiler for C++ mingw32-gcc-gfortran.x86_64 : MinGW Windows cross-compiler for FORTRAN mingw32-gcc-objc.x86_64 : MinGW Windows cross-compiler support for Objective C mingw32-gcc-objc++.x86_64 : MinGW Windows cross-compiler support for Objective C++ Name and summary matches only, use "search all" for everything. [root@devops ~]#
9. دریافت اطلاعات بسته نرم افزاری با استفاده از دستور YUM
برای دریافت برخی اطلاعات در مورد بسته، فقط فرمان زیر را اجرا کنید:
[root@devops ~]# yum info gcc Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.com Installed Packages Name : gcc Arch : x86_64 Version : 4.4.7 Release : 3.el6 Size : 19 M Repo : installed From repo : base Summary : Various compilers (C, C++, Objective-C, Java, ...) URL : http://gcc.gnu.org License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions Description : The gcc package contains the GNU Compiler Collection version 4.4. : You'll need this package in order to compile C code. Available Packages Name : gcc Arch : x86_64 Version : 4.4.7 Release : 4.el6 Size : 10 M Repo : base Summary : Various compilers (C, C++, Objective-C, Java, ...) URL : http://gcc.gnu.org License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions Description : The gcc package contains the GNU Compiler Collection version 4.4. : You'll need this package in order to compile C code.
10 – فهرست کردن تمام بسته های موجود در دیتابیس یام با استفاده از دستور YUM list
اگر میخواهید تمام پکیج های موجود در دیتابیس YUM را لیست کنید دستور زیر را اجرا کنید :
[root@devops ~]# yum list | more Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.com Installed Packages MAKEDEV.x86_64 3.24-6.el6 @anaconda-CentOS-201207061011.x86_64/6.3 acl.x86_64 2.2.49-6.el6 @anaconda-CentOS-201207061011.x86_64/6.3 aic94xx-firmware.noarch 30-2.el6 @anaconda-CentOS-201207061011.x86_64/6.3 atmel-firmware.noarch 1.3-7.el6 @anaconda-CentOS-201207061011.x86_64/6.3 attr.x86_64 2.4.44-7.el6 @anaconda-CentOS-201207061011.x86_64/6.3 audit.x86_64 2.2-2.el6 @anaconda-CentOS-201207061011.x86_64/6.3 audit-libs.x86_64 2.2-2.el6 @anaconda-CentOS-201207061011.x86_64/6.3 authconfig.x86_64 6.1.12-10.el6 @anaconda-CentOS-201207061011.x86_64/6.3 autoconf.noarch 2.63-5.1.el6 @base automake.noarch 1.11.1-4.el6 @base b43-openfwwf.noarch 5.2-4.el6 @anaconda-CentOS-201207061011.x86_64/6.3 basesystem.noarch 10.0-4.el6 @anaconda-CentOS-201207061011.x86_64/6.3 bash.x86_64 4.1.2-9.el6_2 @anaconda-CentOS-201207061011.x86_64/6.3 bfa-firmware.noarch 3.0.0.0-1.el6 @an 11. List all installed packages using YUM command List all installed packages to, just execute the following command, it will show all of the installed packages. [root@devops ~]# yum list installed | more Loaded plugins: fastestmirror Installed Packages MAKEDEV.x86_64 3.24-6.el6 @anaconda-CentOS-201207061011.x86_64/6.3 acl.x86_64 2.2.49-6.el6 @anaconda-CentOS-201207061011.x86_64/6.3 aic94xx-firmware.noarch 30-2.el6 @anaconda-CentOS-201207061011.x86_64/6.3 atmel-firmware.noarch 1.3-7.el6 @anaconda-CentOS-201207061011.x86_64/6.3 attr.x86_64 2.4.44-7.el6 @anaconda-CentOS-201207061011.x86_64/6.3 audit.x86_64 2.2-2.el6 @anaconda-CentOS-201207061011.x86_64/6.3 audit-libs.x86_64 2.2-2.el6 @anaconda-CentOS-201207061011.x86_64/6.3 authconfig.x86_64 6.1.12-10.el6 @anaconda-CentOS-201207061011.x86_64/6.3 ...