パッケージ管理のフロントエンド管理ツールyum


一、前言
RPMインストールソフトウェアには、パッケージとパッケージの依存関係が煩雑な問題があり、ソフトウェアプログラムを正常にインストールして使用するには、要求に応じてソフトウェア間の依存関係を一歩一歩解決しなければならない.では、プログラムがたくさん使えば、人を使う時間と精力を消耗します.では、この問題を解決する方法はありますか?
RPMでは、RPMソフトウェアがソフトウェア間のインストール情報を記録することを紹介し、ソフトウェア間の依存性も含まれています.では、インストール前にこのリストを分析すれば、インストール時に必要なソフトウェアをソフトウェア間の関係に基づいて一度にインストールすることができ、この問題を解決することができるのがYUMのメカニズムです.
二、yumの紹介
yum(Yellow dog Updater Modified)は、CentOSに属するRPMフロントエンドパッケージマネージャで、指定したサーバからRPMパッケージをダウンロードし、RPMパッケージ間の依存関係を自動的に分析して処理し、最後に順次依存するパッケージをインストールし、煩雑なインストールを必要としない.
三、yum repository:yum倉庫
yum倉庫の構成部分
3.1、データ
  • は、すべてのパッケージファイル
  • を含む.
    3.2、メタデータ
  • は、各パケットのパケット名、バージョン情報、各パケットに含むファイルリスト、パケットとパケットとの依存関係、パケットのパケット情報
  • を含むデータファイルを指す.
    小拡張:メタデータはどうやって来ましたか.
    createrepoツールを使用すると、私たちが指定した大量のRPMパッケージを格納するディレクトリを簡潔かつ迅速に読み取ることができ、その中のすべてのRPMパッケージ情報を読み取り、彼の依存関係を分析し、メタデータを生成することができます.したがってcreaterepoはyumメタデータを作成するツールと理解できる.ディスクにもこのメタデータがあります.パスはディスクにあります.root@wwwmnt]#cd repodata/には、sqliteファイル接尾辞注釈:centos 5はxml接尾辞、centos 6、7はsqliteデータベースで格納されます
    四、yumのプロファイル紹介
    yumのプロファイルは2つあります:メインプロファイル+倉庫プロファイル
    4.1、メインプロファイルパス/etc/yum.conf
    [main]    
    cachedir=/var/cache/yum/$basearch/$releasever     
    #  RPM      
    
    keepcache=0                                       
    #RPM               ,0     ,1    
    
    buglevel=2                                        
    #          0 - 10,    2    
    
    logfile=/var/log/yum.log                          
    #yum        
    
    exactarch=1                                       
    #             
    
    obsoletes=1                                       
    #            
    
    gpgcheck=1                                        
    #             
    
    plugins=1                                         
    #      yum     ,0       ,1    ,    ,    yum-fastestmirror               
    
    installonly_limit=5                               
    #          
    
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    
    distroverpkg=centos-release                       
    #       ,yum               ,   redhat-release,                 rpm 

    4.2、倉庫配置ファイルのパス/etc/yum.repos.d/*.repo
    倉庫ファイルは複数あり、1つまたは複数の関連倉庫の構成情報も1つのファイルとして保存することができ、したがって倉庫ファイル名はすべて.repoエンディング.
    [REPOID]             #    ,      
    name=                #some name for this repository     ,      
    baseurl=             #           ,       
                            #  :baseurl=file:///media/cdrom
                            #      ftp://172.168.1.1/path    #          ,     
    mirrorlist=          #          ,      ,       #   
    enabled= {0 | 1}     #         ,0     ,1    
    gpgcheck= {0 | 1}    #            ,0     ,1     
    gpgkey=              #            ,  :gpgkey=file:///media/cdrom/GPG-RPM-KEY-centos-6
    cost=  
    #     ,              ,          ?         ,   100,
               

    備考:各倉庫の使用方法をデフォルトにします.
            base :               (    )
    
            updates :     
    
            extra :     
    
            epel :epel   
    
                       ,         ,           

    小贴士:yumはftp、http、nfs、ローカルファイル共有サービスなど、複数のプロトコルをサポートします.
    したがって、倉庫プロファイルのbaseurlの1つには複数の書き方があります.以下は各書き方のフォーマットです.
    1)ftp
    フォーマット:ftp://server/path/to/repository2)http
    フォーマット:http://server/path/to/repository3)nfs
    フォーマット:nfs://server/nfs_path4)ローカルファイル共有サービス
    フォーマット:file:///path/to/repository五、yum取付手順
    六、yumコマンドの使用
    6.1、yumクエリー機能
        yum [option] [       ][  ]
    
            -y:  yum       ,-y      yes  
    
            -q:    
    
            search:           
    
            list:    yum          
    
            info:  ,   rpm -qai
    
            provides:              ,  rpm -df   
    
            repolist:       repo

    例:
    [root@localhost ~]# yum provides bash
    [root@localhost ~]# yum repolist

    例:
    [root@localhost yum.repos.d]#  yum install zlib-static

    6.2、インストール、アップグレード、ダウングレード、アンインストール機能
        yum [option] [       ][  ]
    
            install:          
    
            reinstall:            
    
            update:           
    
            check-update:        
    
            downgrade:           
    
            remove:    
    
            erase:    ,  
    
            --disablerepo=repoid          repo
    
            --enablerepo=repoid          repo
    
            --noplugins:      

    例:
    [root@localhost yum.repos.d]#  yum install zlib-static

    6.3、ソフトウェアグループに関する機能
        yum [   ] [   ]
    
            grouplist:           
    
            groupinfo:   group name,     group        
    
            groupinstall:       
    
            groupremove:        

    例:
    [root@localhost yum.repos.d]# yum grouplist
    #          ,         groupinstall    
    Installed Groups:            #        
       Additional Development
       Base
       Console internet tools
       Development tools
    Installed Language Groups:   #        
       Arabic Support [ar]
       Armenian Support [hy]
       Georgian Support [ka]
    Available Groups:            #        
       Backup Client    
       Backup Server
    Available Language Groups:   #         
       Afrikaans Support [af]
       Albanian Support [sq]

    6.4、キャッシュの整理
        yum clean { all | package | headers }
    
            all:        ,          
    
            package:             
    
            headers:            

    例:
    [root@localhost yum.repos.d]# yum clean all  #                     
    Loaded plugins: fastestmirror, security
    Cleaning repos: base extras updates
    Cleaning up Everything
    Cleaning up list of fastest mirrors

    6.5、yum履歴コマンド
    yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo]
    
        history:      
    
        redo:      
    
        undo:    

    例:
    yum history info 15     //  yum history  id 15     
    
    yum history undo 15     //  yum history  id 15     

    ログファイル:/var/log/yum.log6.6、yum内蔵変数$releaserver:システムのバージョンを表し、Yumにとってredhat-releaserバージョンを指し、リリース版のメインバージョン番号を指す.RedHat 6.5の場合、プライマリ・バージョン番号のみを6に置き換えます.$basearch:システム基本アーキテクチャ、i 686、i 586などの基本アーキテクチャであればi 386$arch:システムアーキテクチャ
    例えば私の今のシステムはCentOS 6です.5,システムアーキテクチャはx 86_64baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/は自動的に
    baseurl=http://mirrors.163.com/centos/6/os/x86_64

    六、yum倉庫の自作方法
    6.1、引用:
    システムが持参した倉庫はよく使われていますが、インターネットに接続すればインターネットのyum倉庫を簡単に手に入れることができます.しかし、企業内ネットワークでは、企業内でインターネットへのアクセスが許可されていない場合や、企業サーバが多い場合、インターネットからyum倉庫を取得する場合は、帯域幅がかかります.このような状況に基づいて、私たちは自分で企業内部にyum倉庫を作成する必要があります.
    6.2、自作倉庫で使用する命令の紹介
    createrepo(create repo):倉庫を作成し、自分で倉庫を建てるときにコマンドcreaterepoを使用すると、ソフトウェアの倉庫としてrepodataファイルを自動的に生成します.そのディレクトリの下には4つの必要なファイルがあります.filelists.xml.gz,other.xml.gz,primary.xml.gzとrepomd.xml、その中で最も重要なのはrepomdです.xmlファイル.一般的にrepodataディレクトリやファイルが見つからないエラーの原因は、通常3つあります.1つはパスの問題です.二つ目はrepodataディレクトリが生成されていないことです.三つ目は*.repoプロファイルの競合(これは特に注意が必要です).
    小贴士:createrepoコマンドはデフォルトでインストールされていないので、事前にインストールする必要があります.createrepoのインストールパッケージは「createrepo-0.9.9-17.el 6.noarch.rpm」で、RPMまたはyumを使用して先にこのパッケージをインストールできます.
    インストール方法:
    #yum -y install createrepo   rpm -ivh createrepo-0.9.9-17.el6.noarch.rpm (       )

    6.3、yum倉庫を自作するには2つの方法がある
  • 1)、オフディスクミラーに基づいてyumウェアハウスを作成する
  • 2)、サービスに従ってyum倉庫を自己構築して提供するサーバ(ftp、http、nfs)
  • 6.4、関門ミラーに基づいてyum倉庫を作成する
    6.4.1、ディスクを/mntディレクトリにマウントする
          mount /dev/cdrom /mnt

    6.4.2、yum倉庫ファイルの配置
    [root@www yum.repos.d]# vim /etc/yum.repos.d/local-media.repo  #  local-media.repo   ,     
    [Meida-repo]
    name=This is Local media repo
    baseurl=           #        
    enabled=1                     #       
    gpgcheck=0                    #        
    [root@www yum.repos.d]# yum clean all   #            
    [root@www yum.repos.d]# yum list        #           

    6.5、サービスによってyum倉庫を提供するサーバーを自作する(ここではhttpサービスを例とする)
    6.5.1、まずhttpサービスをインストールする
         yum -y install httpd   rpm -ivh httpd

    6.5.2.LinuxファイアウォールとSelinuxを閉じる
    #    Selinux         HTTP,          
    
    [root@www yum.repos.d]# service iptables stop    #       
    [root@localhost ~]# chkconfig iptables off       #         
    [root@www yum.repos.d]# getenforce               #  Selinux   Enforcing     Permissive     
    Enforcing
    [root@www yum.repos.d]# setenforce 0             #  Selinux  0     1    
    [root@www yum.repos.d]# getenforce               
    Permissive                                
    [root@localhost ~]# vim /etc/selinux/config     #  Selinux    ,  confg  ,   SELINUX            
            SELINUX=disabled

    6.5.3.httpdサービスと起動自動サービス
    [root@www yum.repos.d]# service httpd start   #  httpd  
    [root@www yum.repos.d]# chkconfig on          #  httpd        
    [root@localhost ~]# netstat -tunlp | grep http  #  http       
    tcp        0      0 :::80                       :::*                        LISTEN      1532/httpd

    6.5.4、httpdのドキュメントディレクトリを編集する
    #httpd          /var/www/html
    
    [root@localhost html]# mkdir /var/www/html/rpm-repo   #      
    
    [root@localhost rpm-repo]# cp -a /mnt/Packages/xcb* /var/www/html/rpm-repo/   #  RPM        

    6.5.5、createrepoを使用してyum倉庫を構成する
    [root@localhost rpm-repo]# createrepo /var/www/html/rpm-repo/

    6.5.6.http倉庫のファイルの検証と表示
    6.5.7、yum倉庫の構成と検証
    [root@localhost yum.repos.d]# vim /etc/yum.repos.d/local.repo  #  yum    ,       http yum  
    [http-repo]
    name=http yum repo
    baseurl=http://192.168.80.150/rpm-repo
    enabled=1
    gpgcheck=0
    [root@localhost ~]# yum list

    补充:yumはrpmだけをダウンロードしてインストールしない方法
    Yumdownloader
    もう1つのRPMパッケージをダウンロードする方法は、専用のパッケージダウンロードツールyumdownloaderを通じてです.このツールはyumパッケージ(yumパッケージ管理のためのヘルプツールキットを含む)のサブセットです.
    # yum install yum-utils

    RPMパッケージをダウンロードします.
    # yumdownloader  
    
    
    
    --destdir=/PATH/TO/DIRECTORY:      
    --resolve:        

    例:
    [root@bash ~]# yumdownloader tree
    Loaded plugins: fastestmirror, langpacks
    file:///root/test/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /root/test/repodata/repomd.xml"
    Trying other mirror.
    Loading mirror speeds from cached hostfile
    tree-1.6.0-10.el7.x86_64.rpm 
    
    [root@bash ~]# ls tree*
    tree-1.6.0-10.el7.x86_64.rpm 
    
    [root@bash ~]# yumdownloader subversion --destdir=/tmp --resolve

    ダウンロードしたパッケージは現在のディレクトリに保存されます.yumdownloaderはダウンロード中にパッケージインデックスファイルを更新するのでroot権限が必要です.