In questo articolo, impareremo come installare, aggiornare, rimuovere, trovare pacchetti, gestire pacchetti e repository su sistemi Linux utilizzando YUM (Yellowdog Updater Modified) strumento sviluppato da RedHat. I comandi di esempio mostrati in questo articolo sono praticamente testati sul nostro server CentOS 6.3, è possibile utilizzare questo materiale per scopi di studio, certificazioni o semplicemente per esplorare modi per installare nuovi pacchetti e mantenere il sistema aggiornato. Il requisito di base di questo articolo è che devi avere una conoscenza di base dei comandi e un sistema operativo Linux funzionante, dove puoi esplorare e mettere in pratica tutti i comandi elencati di seguito.
Cos’è YUM?
YUM (Yellowdog Updater Modified) è uno strumento open source di gestione dei pacchetti a riga di comando e grafico per sistemi Linux basati su RPM (RedHat Package Manager). Permette agli utenti e agli amministratori di sistema di installare, aggiornare, rimuovere o cercare facilmente i pacchetti software su un sistema. È stato sviluppato e rilasciato da Seth Vidal sotto GPL (General Public License) come open source, significa che chiunque può scaricare e accedere al codice per correggere i bug e sviluppare pacchetti personalizzati. YUM utilizza numerosi repository di terze parti per installare automaticamente i pacchetti risolvendo i problemi delle loro dipendenze.
1. Installare un pacchetto con YUM
Per installare un pacchetto chiamato Firefox 14, basta eseguire il seguente comando che troverà e installerà automaticamente tutte le dipendenze richieste per Firefox.
# 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!
Il comando di cui sopra chiederà conferma prima di installare qualsiasi pacchetto sul vostro sistema. Se vuoi installare automaticamente i pacchetti senza chiedere alcuna conferma, usa l’opzione -y come mostrato nell’esempio seguente.
# yum -y install firefox
2. Rimozione di un pacchetto con YUM
Per rimuovere completamente un pacchetto con tutte le sue dipendenze, basta eseguire il seguente comando come mostrato di seguito.
# 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!
Allo stesso modo il comando precedente chiederà conferma prima di rimuovere un pacchetto. Per disabilitare la richiesta di conferma basta aggiungere l’opzione -y come mostrato qui sotto.
# yum -y remove firefox
3. Aggiornare un pacchetto usando YUM
Diciamo che avete una versione obsoleta del pacchetto MySQL e volete aggiornarla all’ultima versione stabile. Basta eseguire il seguente comando che risolverà automaticamente tutti i problemi di dipendenza e li installerà.
# 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. Elencare un pacchetto usando YUM
Utilizzare la funzione elenco per cercare il pacchetto specifico con il nome. Per esempio per cercare un pacchetto chiamato openssh, utilizzare il comando.
# 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
Per rendere la ricerca più accurata, definire il nome del pacchetto con la sua versione, nel caso in cui si sappia. Per esempio per cercare una specifica versione openssh-4.3p2 del pacchetto, usate il comando.
# yum list openssh-4.3p2
5. Cercare un pacchetto usando YUM
Se non ricordi il nome esatto del pacchetto, usa la funzione di ricerca per cercare tutti i pacchetti disponibili che corrispondano al nome del pacchetto specificato. Per esempio, per cercare tutti i pacchetti che corrispondono alla parola .
# 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. Ottenere informazioni su un pacchetto usando YUM
Si supponga di voler conoscere le informazioni di un pacchetto prima di installarlo. Per ottenere informazioni su un pacchetto è sufficiente eseguire il seguente comando.
# 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. Elencare tutti i pacchetti disponibili usando YUM
Per elencare tutti i pacchetti disponibili nel database di Yum, utilizzare il seguente comando.
# yum list | less
8. Elencare tutti i pacchetti installati usando YUM
Per elencare tutti i pacchetti installati su un sistema, basta lanciare il comando sottostante, che mostrerà tutti i pacchetti installati.
# yum list installed | less
9. Yum fornisce la funzione
Yum fornisce la funzione è usata per trovare a quale pacchetto appartiene uno specifico file. Per esempio, se si desidera conoscere il nome del pacchetto che ha il file /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. Controllare gli aggiornamenti disponibili usando Yum
Per trovare quanti dei pacchetti installati sul vostro sistema hanno aggiornamenti disponibili, usate il seguente comando.
# yum check-update
11. Aggiornare il sistema usando Yum
Per mantenere il sistema aggiornato con tutti gli aggiornamenti della sicurezza e dei pacchetti binari, eseguire il seguente comando. Installerà tutte le ultime patch e gli aggiornamenti di sicurezza sul sistema.
# yum update
12. Elencare tutti i pacchetti di gruppo disponibili
In Linux, un certo numero di pacchetti sono raggruppati in un particolare gruppo. Invece di installare i singoli pacchetti con yum, è possibile installare un particolare gruppo che installerà tutti i pacchetti correlati che appartengono al gruppo. Per esempio, per elencare tutti i gruppi disponibili, basta lanciare il seguente comando.
# 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. Installare un gruppo di pacchetti
Per installare un particolare gruppo di pacchetti, usiamo l’opzione groupinstall. Per esempio, per installare “MySQL Database”, basta eseguire il seguente comando.
# 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. Aggiornare un gruppo di pacchetti
Per aggiornare qualsiasi pacchetto di gruppo esistente installato, basta eseguire il seguente comando come mostrato di seguito.
# 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. Rimuovere un gruppo di pacchetti
Per eliminare o rimuovere qualsiasi gruppo installato esistente dal sistema, basta usare il seguente comando.
# 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. Elencare i repository Yum abilitati
Per elencare tutti i repository Yum abilitati nel tuo sistema, usa la seguente opzione.
# 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. Elencare tutti i repository Yum abilitati e disabilitati
Il seguente comando mostrerà tutti i repository yum abilitati e disabilitati sul sistema.
# 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. Installare un pacchetto da un repository specifico
Per installare un particolare pacchetto da un repository specifico abilitato o disabilitato, è necessario utilizzare l’opzione -enablerepo nel comando yum. Per esempio per installare il pacchetto PhpMyAdmin 3.5.2, basta eseguire il comando.
# 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. Guscio Yum interattivo
L’utilità Yum fornisce un guscio personalizzato dove è possibile eseguire più comandi.
# 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. Pulire la cache di Yum
Per default yum mantiene tutti i dati dei pacchetti abilitati al repository in /var/cache/yum/ con ogni sotto-directory, per pulire tutti i file della cache dal repository abilitato, è necessario eseguire regolarmente il seguente comando per pulire tutta la cache e assicurarsi che non ci sia nulla di spazio inutile. Non vogliamo dare l’output del seguente comando, perché ci piace mantenere i dati della cache così come sono.
# yum clean all
20. Visualizzare la cronologia di Yum
Per visualizzare tutte le transazioni passate del comando yum, basta usare il seguente comando.
# 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