W tym artykule, nauczymy się jak instalować, aktualizować, usuwać, znajdować pakiety, zarządzać pakietami i repozytoriami w systemach Linux używając narzędzia YUM (Yellowdog Updater Modified) opracowanego przez RedHat. Przykładowe komendy pokazane w tym artykule są praktycznie przetestowane na naszym serwerze CentOS 6.3, możesz wykorzystać te materiały do nauki, certyfikacji lub po prostu do zbadania sposobów instalowania nowych pakietów i utrzymywania systemu w stanie aktualnym. Podstawowym wymaganiem tego artykułu jest to, że musisz mieć podstawowe zrozumienie komend i działający system operacyjny Linux, gdzie możesz zbadać i przećwiczyć wszystkie komendy wymienione poniżej.
Co to jest YUM?
YUM (Yellowdog Updater Modified) to narzędzie open source do zarządzania pakietami z wiersza poleceń, jak również narzędzie graficzne dla systemów Linux opartych na RPM (RedHat Package Manager). Pozwala użytkownikom i administratorowi systemu na łatwą instalację, aktualizację, usuwanie lub wyszukiwanie pakietów oprogramowania w systemie. Został on opracowany i wydany przez Setha Vidala na licencji GPL (General Public License) jako open source, co oznacza, że każdy może pobrać i uzyskać dostęp do kodu, aby naprawić błędy i opracować własne pakiety. YUM używa wielu repozytoriów stron trzecich do automatycznej instalacji pakietów przez rozwiązywanie problemów z ich zależnościami.
1. Zainstaluj pakiet z YUM
Aby zainstalować pakiet o nazwie Firefox 14, wystarczy uruchomić poniższe polecenie, które automatycznie znajdzie i zainstaluje wszystkie wymagane zależności dla Firefoksa.
# yum install firefoxLoaded plugins: fastestmirrorDependencies Resolved================================================================================================ Package Arch Version Repository Size ================================================================================================Updating:firefox i686 10.0.6-1.el6.centos updates 20 MUpdating for dependencies: xulrunner i686 10.0.6-1.el6.centos updates 12 MTransaction Summary================================================================================================Install 0 Package(s)Upgrade 2 Package(s)Total download size: 32 MIs this ok : yDownloading Packages:(1/2): firefox-10.0.6-1.el6.centos.i686.rpm | 20 MB 01:10(2/2): xulrunner-10.0.6-1.el6.centos.i686.rpm | 12 MB 00:52------------------------------------------------------------------------------------------------Total 63 kB/s | 32 MB 02:04Updated: firefox.i686 0:10.0.6-1.el6.centosDependency Updated: xulrunner.i686 0:10.0.6-1.el6.centosComplete!
Powyższe polecenie poprosi o potwierdzenie przed zainstalowaniem jakiegokolwiek pakietu w systemie. Jeśli chcesz zainstalować pakiety automatycznie bez pytania o potwierdzenie, użyj opcji -y, jak pokazano w poniższym przykładzie.
# yum -y install firefox
2. Usuwanie pakietów za pomocą YUM
Aby usunąć pakiet całkowicie z jego wszystkimi zależnościami, po prostu wykonaj następujące polecenie, jak pokazano poniżej.
# yum remove firefoxLoaded plugins: fastestmirrorSetting up Remove ProcessResolving Dependencies--> Running transaction check---> Package firefox.i686 0:10.0.6-1.el6.centos set to be erased--> Finished Dependency ResolutionDependencies Resolved==================================================================================================== Package Arch Version Repository Size ====================================================================================================Removing: firefox i686 10.0.6-1.el6.centos @updates 23 MTransaction Summary====================================================================================================Remove 1 Package(s)Reinstall 0 Package(s)Downgrade 0 Package(s)Is this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction Erasing : firefox-10.0.6-1.el6.centos.i686 1/1Removed: firefox.i686 0:10.0.6-1.el6.centosComplete!
W ten sam sposób powyższe polecenie zapyta o potwierdzenie przed usunięciem pakietu. Aby wyłączyć monit o potwierdzenie wystarczy dodać opcję -y jak pokazano poniżej.
# yum -y remove firefox
3. Aktualizacja pakietu za pomocą YUM
Powiedzmy, że masz nieaktualną wersję pakietu MySQL i chcesz ją zaktualizować do najnowszej stabilnej wersji. Wystarczy uruchomić następujące polecenie, które automatycznie rozwiąże wszystkie problemy z zależnościami i zainstaluje je.
# yum update mysqlLoaded plugins: fastestmirrorDependencies Resolved============================================================================================================ Package Arch Version Repository Size============================================================================================================Updating: vsftpd i386 2.0.5-24.el5_8.1 updates 144 kTransaction Summary============================================================================================================Install 0 Package(s)Upgrade 1 Package(s)Total size: 144 kIs this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Updating : vsftpd 1/2 Cleanup : vsftpd 2/2Updated: vsftpd.i386 0:2.0.5-24.el5_8.1Complete!
4. Lista pakietów przy użyciu YUM
Użyj funkcji listy, aby wyszukać konkretny pakiet z nazwą. Na przykład, aby wyszukać pakiet o nazwie openssh, użyj polecenia.
# yum list opensshLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirror.neu.edu.cn * epel: mirror.neu.edu.cn * extras: mirror.neu.edu.cn * rpmforge: mirror.nl.leaseweb.net * updates: mirror.nus.edu.sgInstalled Packagesopenssh.i386 4.3p2-72.el5_6.3 installedAvailable Packages 4.3p2-82.el5 base
Aby wyszukiwanie było dokładniejsze, zdefiniuj nazwę pakietu z jego wersją, na wypadek gdybyś ją znał. Na przykład, aby wyszukać konkretną wersję pakietu openssh-4.3p2, użyj polecenia.
# yum list openssh-4.3p2
5. Wyszukiwanie pakietów za pomocą YUM
Jeśli nie pamiętasz dokładnej nazwy pakietu, użyj funkcji wyszukiwania, aby przeszukać wszystkie dostępne pakiety pasujące do nazwy pakietu, którą podałeś. Na przykład, aby wyszukać wszystkie pakiety, które pasują do słowa .
# yum search vsftpdLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirror.neu.edu.cn * epel: mirror.neu.edu.cn * extras: mirror.neu.edu.cn * rpmforge: mirror.nl.leaseweb.net * updates: ftp.iitm.ac.in============================== Matched: vsftpd ========================ccze.i386 : A robust log colorizerpure-ftpd-selinux.i386 : SELinux support for Pure-FTPDvsftpd.i386 : vsftpd - Very Secure Ftp Daemon
6. Uzyskaj informacje o pakiecie używając YUM
Powiedzmy, że chciałbyś znać informacje o pakiecie przed jego zainstalowaniem. Aby uzyskać informacje o pakiecie wystarczy wydać poniższe polecenie.
# yum info firefoxLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirror.neu.edu.cn * epel: mirror.neu.edu.cn * extras: mirror.neu.edu.cn * rpmforge: mirror.nl.leaseweb.net * updates: ftp.iitm.ac.inAvailable PackagesName : firefoxArch : i386Version : 10.0.6Release : 1.el5.centosSize : 20 MRepo : updatesSummary : Mozilla Firefox Web browserURL : http://www.mozilla.org/projects/firefox/License : MPLv1.1 or GPLv2+ or LGPLv2+Description: Mozilla Firefox is an open-source web browser, designed for standards : compliance, performance and portability.
7. Wylistuj wszystkie dostępne pakiety używając YUM
Aby wylistować wszystkie dostępne pakiety w bazie danych Yum, użyj poniższego polecenia.
# yum list | less
8. Lista wszystkich zainstalowanych pakietów przy użyciu YUM
Aby wyświetlić listę wszystkich zainstalowanych pakietów w systemie, wystarczy wydać poniższe polecenie, wyświetli ono wszystkie zainstalowane pakiety.
# yum list installed | less
9. Funkcja Yum Provides
Funkcja Yum provides jest używana do znalezienia pakietu, do którego należy konkretny plik. Na przykład, jeśli chciałbyś znać nazwę pakietu, który posiada plik /etc/httpd/conf/httpd.conf.
# yum provides /etc/httpd/conf/httpd.confLoaded plugins: fastestmirrorhttpd-2.2.3-63.el5.centos.i386 : Apache HTTP ServerRepo : baseMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP ServerRepo : updatesMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.3-65.el5.centos.i386 : Apache HTTP ServerRepo : updatesMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP ServerRepo : installedMatched from:Other : Provides-match: /etc/httpd/conf/httpd.conf
10. Sprawdź dostępne aktualizacje używając Yum
Aby sprawdzić ile z zainstalowanych pakietów w systemie ma dostępne aktualizacje, użyj następującego polecenia.
# yum check-update
11. Aktualizacja systemu za pomocą Yum
Aby system był na bieżąco ze wszystkimi aktualizacjami pakietów bezpieczeństwa i binarnych, wykonaj poniższe polecenie. Zainstaluje ono wszystkie najnowsze poprawki i aktualizacje bezpieczeństwa w twoim systemie.
# yum update
12. Lista wszystkich dostępnych Pakietów Grupowych
W Linuksie, wiele pakietów jest przypisanych do poszczególnych grup. Zamiast instalować poszczególne pakiety za pomocą yum, możesz zainstalować konkretną grupę, która zainstaluje wszystkie powiązane pakiety należące do tej grupy. Na przykład, aby wyświetlić listę wszystkich dostępnych grup, wystarczy wydać następujące polecenie.
# yum grouplistInstalled Groups: Administration Tools DNS Name Server Dialup Networking Support Editors Engineering and Scientific FTP Server Graphics Java Development Legacy Network ServerAvailable Groups: Authoring and Publishing Base Beagle Cluster Storage Clustering Development Libraries Development Tools Eclipse Educational Software KDE (K Desktop Environment) KDE Software Development
13. Instalacja pakietów grupowych
Aby zainstalować konkretną grupę pakietów, używamy opcji groupinstall. Na przykład, aby zainstalować „Baza danych MySQL”, wystarczy wykonać poniższe polecenie.
# yum groupinstall 'MySQL Database'Dependencies Resolved=================================================================================================PackageArch Version Repository Size=================================================================================================Updating: unixODBC i386 2.2.11-10.el5 base 290 kInstalling for dependencies: unixODBC-libs i386 2.2.11-10.el5 base 551 kTransaction Summary=================================================================================================Install 1 Package(s)Upgrade 1 Package(s)Total size: 841 kIs this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Installing : unixODBC-libs1/3 Updating : unixODBC 2/3 Cleanup : unixODBC 3/3Dependency Installed: unixODBC-libs.i386 0:2.2.11-10.el5Updated: unixODBC.i386 0:2.2.11-10.el5Complete!
14. Aktualizacja pakietów grupowych
Aby zaktualizować istniejące pakiety grupowe, wystarczy wykonać poniższe polecenie, jak pokazano poniżej.
# yum groupupdate 'DNS Name Server'Dependencies Resolved================================================================================================================ PackageArch VersionRepository Size================================================================================================================Updating: bind i386 30:9.3.6-20.P1.el5_8.2 updates 981 k bind-chroot i386 30:9.3.6-20.P1.el5_8.2 updates 47 kUpdating for dependencies: bind-libs i386 30:9.3.6-20.P1.el5_8.2 updates 864 k bind-utils i386 30:9.3.6-20.P1.el5_8.2 updates 174 kTransaction Summary================================================================================================================Install 0 Package(s)Upgrade 4 Package(s)Total size: 2.0 MIs this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Updating : bind-libs 1/8 Updating : bind 2/8 Updating : bind-chroot 3/8 Updating : bind-utils 4/8 Cleanup : bind 5/8 Cleanup : bind-chroot 6/8 Cleanup : bind-utils 7/8 Cleanup : bind-libs 8/8Updated: bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2Dependency Updated: bind-libs.i386 30:9.3.6-20.P1.el5_8.2 bind-utils.i386 30:9.3.6-20.P1.el5_8.2Complete!
15. Remove a Group Packages
Aby usunąć lub usunąć dowolną istniejącą grupę z systemu, wystarczy użyć poniższego polecenia.
# yum groupremove 'DNS Name Server'Dependencies Resolved=========================================================================================================== Package Arch Version Repository Size===========================================================================================================Removing: bind i386 30:9.3.6-20.P1.el5_8.2 installed 2.1 M bind-chroot i386 30:9.3.6-20.P1.el5_8.2 installed 0.0Transaction Summary===========================================================================================================Remove 2 Package(s)Reinstall 0 Package(s)Downgrade 0 Package(s)Is this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Erasing : bind 1/2warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave Erasing : bind-chroot 2/2Removed: bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2Complete!
16. List Enabled Yum Repositories
Aby wyświetlić listę wszystkich włączonych repozytoriów Yum w systemie, użyj poniższej opcji.
# yum repolistrepo id repo name statusbase CentOS-5 - Base enabled: 2,725epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783extras CentOS-5 - Extras enabled: 282mod-pagespeed mod-pagespeed enabled: 1rpmforge RHEL 5 - RPMforge.net - dag enabled: 11,290updates CentOS-5 - Updates enabled: 743repolist: 20,824
16. List all Enabled and Disabled Yum Repositories
Następujące polecenie wyświetli wszystkie włączone i wyłączone repozytoria yum w systemie.
# yum repolist allrepo id repo name statusC5.0-base CentOS-5.0 - Base disabledC5.0-centosplus CentOS-5.0 - Plus disabledC5.0-extras CentOS-5.0 - Extras disabledbase CentOS-5 - Base enabled: 2,725epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783extras CentOS-5 - Extras enabled: 282repolist: 20,824
17. Instalacja pakietu z określonego repozytorium
Aby zainstalować konkretny pakiet z określonego włączonego lub wyłączonego repozytorium, musisz użyć opcji -enablerepo w poleceniu yum. Na przykład, aby zainstalować pakiet PhpMyAdmin 3.5.2, po prostu wykonaj polecenie.
# yum --enablerepo=epel install phpmyadminDependencies Resolved============================================================================================= Package Arch Version Repository Size=============================================================================================Installing: phpMyAdmin noarch 3.5.1-1.el6 epel 4.2 MTransaction Summary=============================================================================================Install 1 Package(s)Total download size: 4.2 MInstalled size: 17 MIs this ok : yDownloading Packages:phpMyAdmin-3.5.1-1.el6.noarch.rpm | 4.2 MB 00:25Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction Installing : phpMyAdmin-3.5.1-1.el6.noarch 1/1 Verifying : phpMyAdmin-3.5.1-1.el6.noarch 1/1Installed: phpMyAdmin.noarch 0:3.5.1-1.el6Complete!
18. Interaktywna powłoka Yum
Narzędzie Yum zapewnia niestandardową powłokę, w której można wykonywać wiele poleceń.
# yum shellLoaded plugins: fastestmirrorSetting up Yum Shell> update httpdLoading mirror speeds from cached hostfile * base: mirrors.sin3.sg.voxel.net * epel: ftp.riken.jp * extras: mirrors.sin3.sg.voxel.net * updates: mirrors.sin3.sg.voxel.netSetting up Update Process>
19. Czyszczenie pamięci podręcznej Yum
Domyślnie yum przechowuje wszystkie dane pakietów włączonych do repozytorium w /var/cache/yum/ z każdym podkatalogiem, aby wyczyścić wszystkie zbuforowane pliki z włączonego repozytorium, musisz regularnie uruchamiać następujące polecenie, aby wyczyścić całą pamięć podręczną i upewnić się, że nie ma nic niepotrzebnego miejsca. Nie chcemy podawać danych wyjściowych poniższego polecenia, ponieważ chcemy zachować zbuforowane dane takimi, jakie są.
# yum clean all
20. Wyświetl historię yum
Aby wyświetlić wszystkie przeszłe transakcje polecenia yum, wystarczy użyć następującego polecenia.
# yum historyLoaded plugins: fastestmirrorID | Login user | Date and time | Action(s) | Altered------------------------------------------------------------------------------- 10 | root | 2012-08-11 15:19 | Install | 3 9 | root | 2012-08-11 15:11 | Install | 1 8 | root | 2012-08-11 15:10 | Erase | 1 EE 7 | root | 2012-08-10 17:44 | Install | 1 6 | root | 2012-08-10 12:19 | Install | 2 5 | root | 2012-08-10 12:14 | Install | 3 4 | root | 2012-08-10 12:12 | I, U | 13 E< 3 | root | 2012-08-09 13:01 | Install | 1 > 2 | root | 2012-08-08 20:13 | I, U | 292 EE 1 | System | 2012-08-08 17:15 | Install | 560history list