Neste artigo, aprenderemos como instalar, actualizar, remover, encontrar pacotes, gerir pacotes e repositórios em sistemas Linux usando a ferramenta YUM (Yellowdog Updater Modificado) desenvolvida pela RedHat. Os comandos de exemplo mostrados neste artigo são praticamente testados no nosso servidor CentOS 6.3, pode utilizar este material para fins de estudo, certificações ou apenas para explorar formas de instalar novos pacotes e manter o seu sistema actualizado. O requisito básico deste artigo é que tenha um conhecimento básico dos comandos e um sistema operativo Linux funcional, onde possa explorar e praticar todos os comandos listados abaixo.
O que é YUM?
YUM (Yellowdog Updater Modified) é uma linha de comando de código aberto, bem como uma ferramenta de gestão de pacotes baseada em gráficos para sistemas Linux baseados em RPM (RedHat Package Manager). Permite aos utilizadores e ao administrador do sistema instalar, actualizar, remover ou procurar facilmente pacotes de software num sistema. Foi desenvolvido e lançado por Seth Vidal sob GPL (General Public License) como código aberto, significa que qualquer pessoa pode permitir o download e acesso ao código para corrigir bugs e desenvolver pacotes personalizados. YUM utiliza inúmeros repositórios de terceiros para instalar pacotes automaticamente, resolvendo as suas dependências.
1. Instale um pacote com YUM
Para instalar um pacote chamado Firefox 14, basta executar o comando abaixo que ele irá encontrar automaticamente e instalar todas as dependências necessárias para 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!
O comando acima irá pedir confirmação antes de instalar qualquer pacote no seu sistema. Se quiser instalar pacotes automaticamente sem pedir qualquer confirmação, use a opção -y como mostrado no exemplo abaixo.
# yum -y install firefox
2. Removendo um pacote com YUM
Para remover completamente um pacote com todas as suas dependências, basta executar o seguinte comando como mostrado abaixo.
# 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!
Da mesma forma que o comando acima irá pedir confirmação antes de remover um pacote. Para desactivar o comando de confirmação basta adicionar a opção -y como mostrado abaixo.
# yum -y remove firefox
3. Actualizar um pacote usando YUM
Vamos dizer que tem a versão desactualizada do pacote MySQL e pretende actualizá-lo para a última versão estável. Basta executar o seguinte comando que resolverá automaticamente todos os problemas de dependências e instalá-los.
# 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. Listar um pacote usando YUM
Utilizar a função listar para procurar o pacote específico com nome. Por exemplo, para pesquisar um pacote chamado openssh, use o 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
Para tornar a sua pesquisa mais precisa, defina o nome do pacote com a sua versão, caso saiba. Por exemplo, para pesquisar uma versão específica openssh-4.3p2 do pacote, use o comando.
# yum list openssh-4.3p2
5. Procure um pacote usando YUM
se não se lembrar do nome exacto do pacote, então use a função de procura para procurar todos os pacotes disponíveis para corresponder ao nome do pacote que especificou. Por exemplo, para procurar todos os pacotes que correspondam à palavra .
# 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. Obter informação de um pacote usando YUM
Diga que gostaria de saber a informação de um pacote antes de o instalar. Para obter informação de um pacote basta emitir o comando abaixo.
# 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. Listar todos os pacotes disponíveis usando YUM
Para listar todos os pacotes disponíveis na base de dados Yum, use o comando abaixo.
# yum list | less
8. Listar todos os pacotes instalados usando YUM
Para listar todos os pacotes instalados num sistema, basta emitir o comando abaixo, irá exibir todos os pacotes instalados.
# yum list installed | less
9. Yum fornece função
Yum fornece função é usado para encontrar a que pacote pertence um ficheiro específico. Por exemplo, se desejar saber o nome do pacote que tem o /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. Verifique as Actualizações Disponíveis usando Yum
Para descobrir quantos pacotes instalados no seu sistema têm actualizações disponíveis, para verificar usar o seguinte comando.
# yum check-update
11. Sistema de actualização usando Yum
Para manter o seu sistema actualizado com todas as actualizações de segurança e pacotes binários, execute o seguinte comando. Irá instalar todas as últimas correcções e actualizações de segurança no seu sistema.
# yum update
12. Liste todos os pacotes de grupo disponíveis
No Linux, o número de pacotes é agrupado a um grupo particular. Em vez de instalar pacotes individuais com yum, pode instalar um grupo particular que instalará todos os pacotes relacionados que pertencem ao grupo. Por exemplo, para listar todos os grupos disponíveis, basta emitir seguindo o 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. Instalar um grupo de pacotes
Para instalar um determinado grupo de pacotes, usamos a opção como groupinstall. Por exemplo, para instalar “MySQL Database”, basta executar o comando abaixo.
# 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. Actualizar um grupo de pacotes
Para actualizar qualquer grupo de pacotes instalados, basta executar o seguinte comando, como mostrado abaixo.
# 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
Para apagar ou remover qualquer grupo instalado existente do sistema, basta usar o comando abaixo.
# 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. Listar Repositórios Yum Activados
Para listar todos os repositórios Yum activados no seu sistema, use a seguinte opção.
# 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. Liste todos os repositórios Yum activados e desactivados
O seguinte comando irá exibir todos os repositórios Yum activados e desactivados no 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. Instalar um pacote a partir de um repositório específico
Para instalar um pacote específico a partir de um repositório específico activado ou desactivado, deve usar a opção -enablerepo no seu comando yum. Por exemplo, para instalar o pacote PhpMyAdmin 3.5.2, basta executar o 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. Yum Shell interactivo
Utilitário Yum fornece uma shell personalizada onde pode executar comandos múltiplos.
# 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. Clean Yum Cache
Por defeito yum mantém todos os dados do pacote do repositório activado em /var/cache/yum/ com cada subdirectório, para limpar todos os ficheiros em cache a partir do repositório activado, é necessário executar regularmente o seguinte comando para limpar toda a cache e certificar-se de que não está a ser utilizado espaço desnecessário. Não queremos dar a saída do comando abaixo, porque gostamos de manter os dados em cache como estão.
# yum clean all
20. Ver histórico de Yum
Para ver todas as transacções passadas do comando yum, basta usar o seguinte 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