RHEL7軟件包管理


本文介紹RHEL7的軟件包管理

RHEL7下主要有RPM和YUM這兩種包管理:

  • YUM使用簡單但需要聯網,YUM會去網上的YUM包源去獲取所需要的軟件包並獲取該包依賴的其他包
  • RPM的需要的操作精度比較細,需要我們做的事情比較多,需要自己安裝依賴

RPM

安裝流程

下面會以虛擬機進行RMP包管理

命令:rpm
作用:安裝、卸載、升級和管理軟件
語法:rpm [選項]
准備實驗環境:掛載光驅到/mnt目錄

[root@administrator ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@administrator ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root  49746196 3297648  46448548   7% /
devtmpfs                1001236       0   1001236   0% /dev
tmpfs                   1016776     156   1016620   1% /dev/shm
tmpfs                   1016776    9156   1007620   1% /run
tmpfs                   1016776       0   1016776   0% /sys/fs/cgroup
/dev/sda1                508588  143104    365484  29% /boot
tmpfs                    203356       4    203352   1% /run/user/42
tmpfs                    203356       8    203348   1% /run/user/1000
/dev/sr0                3947824 3947824         0 100% /mnt

安裝軟件

安裝zsh-5.0.2-14.el7.x86_64.rpm

文件名稱說明

選項 說明
-i 安裝軟件包
--nodeps 不驗證軟件包依賴
-v 輸出詳細信息
-h 軟件包安裝的時候列出哈希標記
[root@administrator ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-14.el7.x86_64.rpm
warning: /mnt/Packages/zsh-5.0.2-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-14.el7                 ################################# [100%]

查看安裝好的zsh(shell):

[root@administrator ~]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/zsh

rpm支持網絡安裝:

[root@administrator ~]# rpm -ivh http://mirrors.kernel.org/centos/7/cloud/x86_64/openstack-kilo/centos-release-openstack-kilo-1-2.el7.noarch.rpm

查詢軟件

使用rpm查詢軟件時下列選項要和-q選項組合使用

通過rpm命令查詢一個rpm包是否安裝了,也是要通過rpm 數據庫來完成的
所以我們要經常用下面的兩個命令來初始化rpm 數據庫

[root@administrator ~]# rpm --initdb 
[root@administrator ~]# rpm --rebuilddb 

注:這兩個參數是極為有用,有時rpm 系統出了問題,不能安裝和查詢,大多是這里出了問題

選項 說明
-a 查詢所有已安裝的軟件包
-p 查詢軟件包(通常用來看下還未安裝的軟件包)
-l 顯示軟件包中的文件列表
-f 查詢文件所屬軟件包
-d 查詢軟件包的文檔所在位置
-c 顯示被標注為配置文件的文件列表

通常可以配合管道 | more 來使用,使得結果更易讀

[root@administrator ~]# rpm -qa zsh
zsh-5.0.2-14.el7.x86_64
[root@administrator ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-14.el7.x86_64.rpm
warning: /mnt/Packages/zsh-5.0.2-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                          ################################# [100%]
	package zsh-5.0.2-14.el7.x86_64 is already installed
[root@administrator ~]# which zsh
/usr/bin/zsh
[root@administrator ~]# rpm -qf /usr/bin/zsh 
zsh-5.0.2-14.el7.x86_64
[root@administrator ~]# rpm -qf `which zsh`
zsh-5.0.2-14.el7.x86_64

如果使用rpm安裝因為依賴沒有安裝而出錯,可以使用下面的命令查詢依賴,然后安裝需要的依賴再執行該包的安裝

[root@administrator ~]# rpm -qpR /mnt/Packages/zsh-5.0.2-14.el7.x86_64.rpm 

升級軟件

選項 說明
-U 升級軟件
加上--oldpackage則是降級軟件
[root@administrator ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm 
warning: /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                          ################################# [100%]
	package lrzsz-0.12.20-36.el7.x86_64 is already installed

卸載軟件

選項 說明
-e 卸載軟件
[root@administrator ~]# rpm -evh zsh
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:zsh-5.0.2-14.el7                 ################################# [100%]

如果有依賴關系,您也可以用--nodeps 忽略依賴的檢查來刪除
但盡可能不要這么做,最好用軟件包管理器systerm-config-packages來刪除或者添加軟件
使用chsh -l查看發現zsh已經被卸載掉

[root@administrator ~]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

從軟件包抽取文件

當在linux中,修復系統時明確知道是丟了哪個文件,但是在此時強制安裝丟失文件相應的rpm包時又會出現很多依賴關系提示。
我們只需要這個丟掉的文件而已,可以找到丟失文件的相關rpm包,然后用cpio及rpm2cpio組合,把文件提取出來,然后再復制到丟失文件的相應位置

命令:rpm2cpio
作用:將rpm包中的文件抽取成cpio文件
語法:rpm2cpio rpm包文件名

命令:cpio
作用:cpio命令是通過 重定向 的方式將文件進行打包備份,還原恢復的工具。它可以解壓以“.cpio”或者“.tar”結尾的文件
語法:cpio [選項] 文件名或者設備名 路徑

選項 說明
-o 將文件拷貝打包成文件或者將文件輸出到設備上
-i 將打包文件解壓或者將設備上的備份還原到系統
-t 查看cpio打包的文件內容或者輸出到設備上的文件內容
-v 顯示打包過程中的文件名稱
-d 在cpio還原文件的過程中,自動的建立相應的目錄
-c 一種較新的存儲方式
-B 讓默認的Blocks可以增大到5120 bytes,默認Blocks為512 bytes
這樣做的好處是可以加快存取速度

將/etc下的所有普通文件都備份到宿主目錄下的etc.cpio文件中

[root@administrator ~]# find /etc/ -type f | cpio -ocvB > etc.cpio 

源代碼安裝

.src.rpm結尾的文件,這些文件是由軟件的源代碼包裝而成的
**用戶要安裝這類RPM軟件包,必須使用命令: **
rpm --recompile vim-4.6-4.src.rpm #這個命令會把源代碼解包並編譯、安裝它,如果用戶使用命令
rpm --rebuild vim-4.6-4.src.rpm  #在安裝完成后,還會把編譯生成的可執行文件重新包裝成i386.rpm 的RPM軟件包

YUM

基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系
並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝
基於C/S架構

配置文件

添加本地yum源

[root@administrator ~]# ls /etc/yum.repos.d/
local.repo
[root@administrator ~]# rm -rf /etc/yum.repos.d/*
[root@administrator ~]# vim /etc/yum.repos.d/rhel7.repo
[root@administrator ~]# cat /etc/yum.repos.d/rhel7.repo
[rhel7-yum] 
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0

清空緩存和生成列表

清空緩存

[root@administrator ~]# yum clean all
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Cleaning repos: rhel7-yum
Cleaning up everything

生成列表

[root@administrator ~]# yum list

主要操作

以下操作在centos雲主機上完成

  • 安裝
[root@VM_200_13_centos ~]# yum install -y httpd
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-40.el7 will be installed
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-40.el7.x86_64
--> Running transaction check
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================
 Package                     Arch                       Version                             Repository                     Size
================================================================================================================================
Installing:
 httpd                       x86_64                     2.4.6-40.el7                        rhel7-yum                     1.2 M
Installing for dependencies:
 mailcap                     noarch                     2.1.41-2.el7                        rhel7-yum                      31 k

Transaction Summary
================================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 1.2 M
Installed size: 3.8 M
Downloading packages:
--------------------------------------------------------------------------------------------------------------------------------
Total                                                                                            40 MB/s | 1.2 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : mailcap-2.1.41-2.el7.noarch                                                                                  1/2 
  Installing : httpd-2.4.6-40.el7.x86_64                                                                                    2/2 
rhel7-yum/productid                                                                                      | 1.6 kB  00:00:00     
  Verifying  : mailcap-2.1.41-2.el7.noarch                                                                                  1/2 
  Verifying  : httpd-2.4.6-40.el7.x86_64                                                                                    2/2 

Installed:
  httpd.x86_64 0:2.4.6-40.el7                                                                                                   

Dependency Installed:
  mailcap.noarch 0:2.1.41-2.el7                                                                                                 

Complete!
  • 檢測升級
[root@VM_200_13_centos ~]# yum check-update
  • 升級
[root@VM_200_13_centos ~]# yum update gcc
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No packages marked for update
  • 軟件包查詢
[root@VM_200_13_centos ~]# yum list gcc   
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
gcc.x86_64   
  • 軟件包信息
[root@VM_200_13_centos ~]# yum info gcc
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
Name        : gcc
Arch        : x86_64
Version     : 4.8.5
Release     : 4.el7
Size        : 37 M
Repo        : installed
From repo   : os
Summary     : Various compilers (C, C++, Objective-C, Java, ...)
URL         : http://gcc.gnu.org
License     : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Description : The gcc package contains the GNU Compiler Collection version 4.8.
            : You'll need this package in order to compile C code.

  • 卸載
[root@VM_200_13_centos ~]# yum -y remove httpd
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-40.el7.centos.4 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================
 Package                  Arch                      Version                                   Repository                   Size
================================================================================================================================
Removing:
 httpd                    x86_64                    2.4.6-40.el7.centos.4                     @updates                    9.4 M

Transaction Summary
================================================================================================================================
Remove  1 Package

Installed size: 9.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : httpd-2.4.6-40.el7.centos.4.x86_64                                                                           1/1 
  Verifying  : httpd-2.4.6-40.el7.centos.4.x86_64                                                                           1/1 

Removed:
  httpd.x86_64 0:2.4.6-40.el7.centos.4                                                                                          

Complete!
  • 組安裝
[root@VM_200_13_centos ~]# yum groupinstall -y "Security Tools"
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package scap-security-guide.noarch 0:0.1.25-3.el7.centos.0.1 will be installed
--> Processing Dependency: openscap-scanner >= 1.2.5 for package: scap-security-guide-0.1.25-3.el7.centos.0.1.noarch
--> Processing Dependency: xml-common for package: scap-security-guide-0.1.25-3.el7.centos.0.1.noarch
--> Running transaction check
---> Package openscap-scanner.x86_64 0:1.2.9-5.el7_2 will be installed
--> Processing Dependency: openscap(x86-64) = 1.2.9-5.el7_2 for package: openscap-scanner-1.2.9-5.el7_2.x86_64
--> Processing Dependency: libxslt.so.1()(64bit) for package: openscap-scanner-1.2.9-5.el7_2.x86_64
--> Processing Dependency: libopenscap.so.8()(64bit) for package: openscap-scanner-1.2.9-5.el7_2.x86_64
--> Processing Dependency: libexslt.so.0()(64bit) for package: openscap-scanner-1.2.9-5.el7_2.x86_64
---> Package xml-common.noarch 0:0.6.3-39.el7 will be installed
--> Running transaction check
---> Package libxslt.x86_64 0:1.1.28-5.el7 will be installed
---> Package openscap.x86_64 0:1.2.9-5.el7_2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================
 Package                            Arch                  Version                                  Repository              Size
================================================================================================================================
Installing for group install "Security Tools":
 scap-security-guide                noarch                0.1.25-3.el7.centos.0.1                  os                     672 k
Installing for dependencies:
 libxslt                            x86_64                1.1.28-5.el7                             os                     242 k
 openscap                           x86_64                1.2.9-5.el7_2                            updates                3.5 M
 openscap-scanner                   x86_64                1.2.9-5.el7_2                            updates                 49 k
 xml-common                         noarch                0.6.3-39.el7                             os                      26 k

Transaction Summary
================================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 4.4 M
Installed size: 67 M
Downloading packages:
(1/5): libxslt-1.1.28-5.el7.x86_64.rpm                                                                   | 242 kB  00:00:00     
(2/5): openscap-scanner-1.2.9-5.el7_2.x86_64.rpm                                                         |  49 kB  00:00:00     
(3/5): xml-common-0.6.3-39.el7.noarch.rpm                                                                |  26 kB  00:00:00     
(4/5): scap-security-guide-0.1.25-3.el7.centos.0.1.noarch.rpm                                            | 672 kB  00:00:00     
(5/5): openscap-1.2.9-5.el7_2.x86_64.rpm                                                                 | 3.5 MB  00:00:00     
--------------------------------------------------------------------------------------------------------------------------------
Total                                                                                           5.7 MB/s | 4.4 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libxslt-1.1.28-5.el7.x86_64                                                                                  1/5 
  Installing : openscap-1.2.9-5.el7_2.x86_64                                                                                2/5 
  Installing : openscap-scanner-1.2.9-5.el7_2.x86_64                                                                        3/5 
  Installing : xml-common-0.6.3-39.el7.noarch                                                                               4/5 
  Installing : scap-security-guide-0.1.25-3.el7.centos.0.1.noarch                                                           5/5 
  Verifying  : libxslt-1.1.28-5.el7.x86_64                                                                                  1/5 
  Verifying  : openscap-1.2.9-5.el7_2.x86_64                                                                                2/5 
  Verifying  : openscap-scanner-1.2.9-5.el7_2.x86_64                                                                        3/5 
  Verifying  : xml-common-0.6.3-39.el7.noarch                                                                               4/5 
  Verifying  : scap-security-guide-0.1.25-3.el7.centos.0.1.noarch                                                           5/5 

Installed:
  scap-security-guide.noarch 0:0.1.25-3.el7.centos.0.1                                                                          

Dependency Installed:
  libxslt.x86_64 0:1.1.28-5.el7           openscap.x86_64 0:1.2.9-5.el7_2        openscap-scanner.x86_64 0:1.2.9-5.el7_2       
  xml-common.noarch 0:0.6.3-39.el7       

Complete!

源碼編譯安裝軟件包

介紹如何使用源代碼的形式安裝軟件包
主要是以下幾個步驟

解壓源碼包

tar -xzvf 源代碼包
[解析]
x為解包、z為解壓(僅適合gzip,j bz2則先解包再bunzip解壓)、v顯示過程、f指定被解壓包名

配置

進入解壓后的目錄,用 ./configure [--prefix=/usr/local/filname] 來配置
這個過程主要是收集系統信息、設置安裝目錄等(卸載的時候只需將這個目錄刪除則可)

編譯

make -j 4
使用4線程進行編譯

安裝

make install

編譯安裝nginx

用編譯的方式安裝nginx

下載最新版源碼

下載nginx最新版源碼

[root@VM_200_13_centos ~]# wget http://nginx.org/download/nginx-1.11.3.tar.gz
--2016-08-15 01:07:57--  http://nginx.org/download/nginx-1.11.3.tar.gz
Resolving nginx.org (nginx.org)... 95.211.80.227, 206.251.255.63, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|95.211.80.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 938045 (916K) [application/octet-stream]
Saving to: 'nginx-1.11.3.tar.gz'

100%[======================================================================================>] 938,045      660KB/s   in 1.4s   

2016-08-15 01:07:59 (660 KB/s) - 'nginx-1.11.3.tar.gz' saved [938045/938045]

添加運行用戶

為nginx添加運行用戶

[root@VM_200_13_centos ~]# useradd -s /sbin/nologin -M nginx

-M 不創建宿主目錄
-s 指定登陸的shell環境 /sbin/nologin 禁止登陸

安裝依賴包

使用下面的兩條命令安裝nginx依賴包,否則編譯安裝時會出錯

[root@VM_200_13_centos ~]# yum -y install pcre-devel
[root@VM_200_13_centos ~]# yum -y install zlib-devel

解壓

[root@VM_200_13_centos ~]# tar -zxf nginx-1.11.3.tar.gz -C /usr/src/

配置

[root@VM_200_13_centos ~]# cd /usr/src/nginx-1.11.3/
[root@VM_200_13_centos nginx-1.11.3]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx

輸出信息省略
參數解釋
--prefix指定安裝的位置
--user指定運行的用戶
--group指定運行的組

編譯

使用4線程編譯

[root@VM_200_13_centos nginx-1.11.3]# make -j 4

echo $? 輸出的結果為0就表示編譯成功

[root@VM_200_13_centos nginx-1.11.3]# echo $?
0

安裝

使用make install進行安裝

[root@VM_200_13_centos nginx-1.11.3]# make install

輸出信息省略

優化啟動腳本

[root@VM_200_13_centos nginx-1.11.3]# cp /usr/local/nginx/sbin/nginx  /usr/sbin/

啟動並驗證

[root@VM_200_13_centos nginx-1.11.3]# nginx    
[root@VM_200_13_centos nginx-1.11.3]# netstat -anlpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22156/nginx: master 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM