本文介紹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