2015年9月10日【パッケージ管理:rpm,yum】-JY 1506402-19+liuhui 880818

11604 ワード

『Linuxシステム管理』
(1)ディスクとファイルシステムの管理;
(2)RAID, LVM; btrfs; 
(3)パッケージ管理:rpm,yum(dnf)
(4)Linuxのネットワーク管理; 
(5)プロセスとジョブ管理:htop,glances,tsar;
(6)sedとawk;
(7)Linuxシステムの起動プロセス;
(8)カーネルの基礎知識、カーネルのカスタムコンパイル;
(9)システム設置:kickstart,pxe
一、宿題(練習)内容:
1、rpmとyumを総括してパッケージの管理機能を実現する.
要求:作業は図文を茂らせなければならない.
二、完成時間:
2015年9月15日まで.
三、手順を完成する:
『パッケージ管理:rpm,yum』
目次:
1.パッケージの構成部分
2.パッケージマネージャ
3.rpmソフトウェア管理
1)rpmパッケージ説明
2)rpmパッケージの入手方法
3)rpmコマンド:パッケージ管理を実現
(1)取付
(2)アップグレード
(3)アンインストール
(4)クエリー
(5)検査
4.YUMソフトウェア管理
1)YUMプログラムのプロファイル
2)yumコマンド:
(1)取付
(2)アンインストール
(3)アップグレード
(4)クエリー
3)独自のローカルyum倉庫の作成
 
1.パッケージの構成部分
バイナリ:/bin,/sbin,/usr/bin,/usr/sbin
ライブラリファイル:/lib 64,/usr/lib 64
プロファイル:/etc
ヘルプファイル:manual,info,INSTALL,
 
2.パッケージマネージャ
Debianのパッケージ管理ツールコマンド:dpkg,apt-get
CentOS/Redhat共通パッケージ管理ツールコマンド:rpm,yum
3.rpmパック
1)rpmパッケージ説明
RPMはすべてRedhat Package Managerと呼ばれ、最も早くRed Hat社が制定・実施し、その後GNUオープンソースオペレーティングシステムに受け入れられ、多くのLinuxシステム(RHEL)の既定のソフトウェア標準となった.RPMと競合するのは、Debianオペレーティングシステム(UBUNTU)ベースのDEBパッケージ管理ツールであるDPKGで、すべてDebian Packageと呼ばれ、機能面ではRPMと似ている.両者の具体的な比較は本稿の範囲内ではない.
2)rpmパッケージの入手方法
(1)リリース版提供パッケージ
(2)Fedora-EPEL
(3)プロジェクトの公式サイト
(4)検索エンジン
   http://rpmfind.net
   http://rpm.pbone.net
   http://pkgs.org
        
3)rpmコマンド:パッケージ管理を実現
RPMパッケージでよく使用されるコマンド仕様は次のとおりです.
lrzsz-0.12.20-36.el7.x86_64.rpm 
説明:
lrzsz:ソフトウェア名
0.12.20-36:ソフトウェアバージョン番号
El 7:RHEL 7の発見バージョンについて、
x86_64:64ビットで動作するシステムを示します.
(1)取付
rpm -ivh PACKAGE_FILE
-i rpmパッケージの取り付け
-v:詳細を表示
-h:テキスト進捗バーを表示する
--nodeps:依存関係のインストールを無視
--relacepkgs:パッケージの再ロード
例:インストール
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cd /mnt/Packages/
[root@localhost Packages]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:lrzsz-0.12.20-36.el7             ################################# [100%]

(2)アップグレード
rpm-[Uvh|Fvh_ PACKAGE_FILE
-Uvh:古いパッケージがある場合はアップグレードし、ない場合はインストールします.
-Fvh:古いパッケージがある場合はアップグレードし、ない場合はインストールしません.
--oldpackage:降格;
--force:強制的にインストールします.
(3)アンインストール
rpm-e RACKAGE_NAME
例:
[root@localhost Packages]# rpm -e lrzsz
[root@localhost Packages]# rpm -qa lrzsz

(4)クエリー
rpm-q PACKAGE_NAME
クエリー・オプション:
-qa:本機がインストールしたすべてのパッケージをクエリーします.
-qf/PATH/TO/SO/SMEFILE:ここのファイルがどのパッケージのインストールによって生成されたかを問い合わせる.
-qc:クエリー指定パッケージインストールによって生成されたプロファイル
-qd:指定したパッケージのインストールによって生成されたドキュメントをクエリー
-qi:クエリーは事実上のパッケージに関する情報を指す.
-ql:クエリーパッケージインストール生成されたすべてのファイルのリスト;
-q--scripts:クエリーパッケージに関するスクリプト;
preinstall:インストール前のスクリプト
postinstall:インストール後のスクリプト
preuninstall:アンインストール前のスクリプト
postiuninstall:アンインストール後のスクリプト
-p:未インストールのプログラム外ファイルに対するクエリー
RPM共通クエリーコマンド:
rpm-qaインストールされているすべてのrpmソフトウェアをリストします
rpm-qf filenameクエリー指定ファイルがどのrpmパッケージに属するかを指定
rpm-qi packagenameパッケージの情報をクエリー
rpm-ql packagenameクエリー指定パッケージに含まれるファイル
rpm -qip software.rpm rpmクエリーrpmファイルの情報
rpm -qilp software.rpmクエリーrpmファイルに含まれるファイル
例:
[root@LiuHui Packages]# rpm -qa lrzsz
lrzsz-0.12.20-36.el7.x86_64
[root@LiuHui ~]# rpm -qa
tuned-2.4.1-1.el7.noarch
centos-release-7-1.1503.el7.centos.2.8.x86_64
aic94xx-firmware-30-6.el7.noarch
filesystem-3.2-18.el7.x86_64
openssh-server-6.6.1p1-11.el7.x86_64
ncurses-base-5.9-13.20130511.el7.noarch
openssh-clients-6.6.1p1-11.el7.x86_64
linux-firmware-20140911-0.1.git365e80c.el7.noarch
selinux-policy-targeted-3.13.1-23.el7.noarch
[root@LiuHui Packages]# rpm -qip lrzsz-0.12.20-36.el7.x86_64.rpm 
Name        : lrzsz
Version     : 0.12.20
Release     : 36.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Communications
Size        : 184846
License     : GPLv2+
Signature   : RSA/SHA256, Thu 03 Jul 2014 11:35:32 PM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : lrzsz-0.12.20-36.el7.src.rpm
Build Date  : Mon 09 Jun 2014 07:29:11 PM EDT
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.ohse.de/uwe/software/lrzsz.html
Summary     : The lrz and lsz modem communications programs
Description :
Lrzsz (consisting of lrz and lsz) is a cosmetically modified
zmodem/ymodem/xmodem package built from the public-domain version of
the rzsz package. Lrzsz was created to provide a working GNU
copylefted Zmodem solution for Linux systems.
[root@LiuHui ~]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz

(5)検査
rpm -K software.rpm#rpmファイルの検証
rpm-V softname#インストールされているソフトウェアの検証
検証は通常、非対称の暗号化アルゴリズムを使用するので、鍵が必要です.一般的なRPMパッケージには鍵が入っていますが、参加しなければrpm--import RPM-GPG-KEY-centOS-6コマンドで手動で参加すればいいです.
例:
[root@LiuHui Packages]# rpm -K lrzsz-0.12.20-36.el7.x86_64.rpm 
lrzsz-0.12.20-36.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@LiuHui Packages]# rpm -V audit
[root@LiuHui Packages]#

エラーが発生していない場合は、ソフトウェアが完全で、変更されていないことを示します.
4.YUMソフトウェア管理
YUMを使う特徴:
(1)依存性問題の自動解決
(2)RPMをグループ化し、グループに基づいてインストールすることができる
(3)倉庫の概念を導入し,複数の倉庫をサポートする
(4)構成が簡単
倉庫はローカルでもインターネット上でも、http、ftp、nfsなどの形式で集中的で統一的なネットワーク倉庫を使用することができます.
1)yumプログラムのプロファイル
(1)/etc/yum.conf
グローバル構成の定義:すべてのライブラリに適用される構成
(2)/etc/yum.repos.d/*.repo
を定義します.repoの最後のファイルは、機能が近い倉庫または関連する倉庫のセットによく使用されます.
(3)倉庫指向の定義
例:
[root@LiuHui yum.repos.d]# cat CentOS-bendi.repo 
[bendi]    #    
name=This is beidi cdrom's rpm soft repo    #    
baseurl=file:///mnt/    #    ,   http,ftp,nfs       ,         
enabled=1    #1        ,    1
gpgcheck=1   #        ,

2)yumコマンド:
(1)インストールインストール
(2)removeのアンインストール
(3)updateのアップグレード
(4)クエリー
yum searchキーワード
yum list(all|installed|recent|updates)#すべての、インストールされた、最近の、更新されたソフトウェアをリストします.
yum info packagename#ソフトウェア情報を表示
-y#自動インストール、確認不要
例:
[root@LiuHui ~]# yum install lrzsz
Loaded plugins: fastestmirror
base                                   | 3.6 kB     00:00     
epel/x86_64/metalink                   | 4.9 kB     00:00     
epel                                   | 4.3 kB     00:01     
extras                                 | 3.4 kB     00:00     
updates                                | 3.4 kB     00:00     
(1/2): epel/x86_64/primary_db            | 3.5 MB   00:40     
epel/x86_64/updateinfo         FAILED                                          
http://mirrors.isu.net.sa/pub/fedora/fedora-epel/7/x86_64/repodata/6822870af83ae6bcdbfeded540fb33c3c5f8a5dcd3c16d283f3d7dc4ad351b32-updateinfo.xml.bz2: [Errno 12] Timeout on http://mirrors.isu.net.sa/pub/fedora/fedora-epel/7/x86_64/repodata/6822870af83ae6bcdbfeded540fb33c3c5f8a5dcd3c16d283f3d7dc4ad351b32-updateinfo.xml.bz2: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')
Trying other mirror.
(2/2): epel/x86_64/updateinfo            | 355 kB   00:04     
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: ftp.cuhk.edu.hk
 * extras: mirrors.aliyun.com
 * updates: mirrors.sina.cn
Resolving Dependencies
--> Running transaction check
---> Package lrzsz.x86_64 0:0.12.20-36.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================
 Package    Arch        Version               Repository
                                                      Size
==============================================================
Installing:
 lrzsz      x86_64      0.12.20-36.el7        base       78 k
Transaction Summary
==============================================================
Install  1 Package
Total download size: 78 k
Installed size: 181 k
Is this ok [y/d/N]: y
Downloading packages:
lrzsz-0.12.20-36.el7.x86_64.rpm          |  78 kB   00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : lrzsz-0.12.20-36.el7.x86_64                1/1 
  Verifying  : lrzsz-0.12.20-36.el7.x86_64                1/1 
Installed:
  lrzsz.x86_64 0:0.12.20-36.el7                               
Complete!
[root@LiuHui ~]# yum remove lrzsz
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package lrzsz.x86_64 0:0.12.20-36.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================
 Package    Arch        Version              Repository  Size
==============================================================
Removing:
 lrzsz      x86_64      0.12.20-36.el7       @base      181 k
Transaction Summary
==============================================================
Remove  1 Package
Installed size: 181 k
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : lrzsz-0.12.20-36.el7.x86_64                1/1 
  Verifying  : lrzsz-0.12.20-36.el7.x86_64                1/1 
Removed:
  lrzsz.x86_64 0:0.12.20-36.el7                               
Complete!
[root@LiuHui ~]# 
[root@LiuHui ~]# yum clean all  #  yum  
Loaded plugins: fastestmirror
Cleaning repos: base bendi epel extras updates
Cleaning up everything
Cleaning up list of fastest mirrors
[root@LiuHui ~]# yum list    #    
Loaded plugins: fastestmirror
base                                   | 3.6 kB     00:00     
bendi                                  | 3.6 kB     00:00     
epel/x86_64/metalink                   | 5.3 kB     00:00     
epel                                   | 4.3 kB     00:00     
extras                                 | 3.4 kB     00:00     
updates                                | 3.4 kB     00:00

3)独自のローカルyum倉庫の作成
(1)ローカルyum倉庫の作成
[root@LiuHui ~]#mount /dev/cdrom /mnt
[root@LiuHui yum.repos.d]# mkdir /bendi.yum
[root@LiuHui yum.repos.d]# cd /bendi.yum/
[root@LiuHui bendi.yum]# cp -rv /mnt/Packages/* .

(2)repoファイルの作成
[root@LiuHui yum.repos.d]# cat bendi.repo 
[bendi]
name=This is bendi's yum repo
baseurl=file:///bendi.yum/

(3)createrepoのインストール
[root@LiuHui Packages]# rpm -ivh createrepo-0.9.9-23.el7.noarch.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:createrepo-0.9.9-23.el7          ################################# [100%]

(4)インデックスの作成
[root@LiuHui bendi.yum]# createrepo -v .

注意:ネットワークyumソースをバックアップフォルダの下に移動する必要があります.キャッシュを空にして、倉庫の下のパッケージをリストします.
[root@LiuHui yum.repos.d]# mkdir back
[root@LiuHui yum.repos.d]# mv CentOS-* epel* back/
[root@LiuHui yum.repos.d]# ls
back  bendi.repo
[root@LiuHui repodata]# yum clean all  
Loaded plugins: fastestmirror
Cleaning repos: bendi
Cleaning up everything
[root@LiuHui repodata]# yum list
Loaded plugins: fastestmirror
bendi                                  | 2.9 kB     00:00     
bendi/primary_db                         | 2.7 MB   00:00     
Determining fastest mirrors
Installed Packages