2018-08-11笔记

安装软件包的三种方法

  • rpm工具
  • yum工具
  • 源码包

rpm工具

rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。

rpm介绍

挂载光盘镜像:

在虚拟机界面右下角选择光盘图标,右键连接
连接完成后将它挂载到/munt下

[root@linux7-128 hgz]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        26G  3.5G   23G   14% /
devtmpfs        483M     0  483M    0% /dev
tmpfs           493M     0  493M    0% /dev/shm
tmpfs           493M  7.1M  486M    2% /run
tmpfs           493M     0  493M    0% /sys/fs/cgroup
/dev/sda1       197M   97M  100M   50% /boot
tmpfs            99M     0   99M    0% /run/user/0
[root@linux7-128 hgz]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@linux7-128 hgz]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        26G  3.5G   23G   14% /
devtmpfs        483M     0  483M    0% /dev
tmpfs           493M     0  493M    0% /dev/shm
tmpfs           493M  7.1M  486M    2% /run
tmpfs           493M     0  493M    0% /sys/fs/cgroup
/dev/sda1       197M   97M  100M   50% /boot
tmpfs            99M     0   99M    0% /run/user/0
/dev/sr0        4.3G  4.3G     0  100% /mnt

进入/mnt/目录下,所看到的这些文件就是系统光盘所使用的文件

[root@linux7-128 ~]# cd /mnt/
[root@linux7-128 mnt]# ls
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

查看Packages下的内容,这里面就是我们用到的rpm包

[root@linux7-128 mnt]# ls Packages/
省略......
xorg-x11-drv-v4l-0.2.0-47.el7.x86_64.rpm
xorg-x11-drv-vesa-2.3.2-25.1.el7.x86_64.rpm
xorg-x11-drv-vmmouse-13.1.0-1.el7.x86_64.rpm
xorg-x11-drv-vmware-13.2.1-1.el7.x86_64.rpm
xorg-x11-drv-void-1.4.1-2.el7.x86_64.rpm
xorg-x11-drv-wacom-0.34.2-2.el7.x86_64.rpm
xorg-x11-fonts-100dpi-7.5-9.el7.noarch.rpm
xorg-x11-fonts-75dpi-7.5-9.el7.noarch.rpm
xorg-x11-fonts-cyrillic-7.5-9.el7.noarch.rpm
xorg-x11-fonts-ethiopic-7.5-9.el7.noarch.rpm
xorg-x11-fonts-ISO8859-1-100dpi-7.5-9.el7.noarch.rpm
xorg-x11-fonts-ISO8859-14-100dpi-7.5-9.el7.noarch
省略......

名称特点:
示例:x3270-3.3.12ga12-4.el7.x86_64.rpm
x3270 字符串,包名
3.3.12ga12 版本号
4.el7 发布版本号,7代表是centos7
x86_64 平台 64位,centos7默认都是64位
rpm 后缀名

64位平台可以安装32位的包,跟Windows一样

rpm工具用法

  • 选项
-i 表示安装
-U 表示升级一个包
-v 表示可视化
-h 表示显示安装进度
-e 卸载一个包
-q 查询一个包是否已经安装
-qi 查询指定包信息
-ql 列出一个包安装的文件
-qf 查询文件绝对路径 //查看一个嗯我呢见是由哪个包安装的
rpm -qf `which cd` 查看这命令的路径包在哪  
另在,在安装RPM包时,常用的附带参数还包括如下几项。
--force 表示强制安装,即使覆盖属于其他包的文件也要安装。
--nodeps 表示当要安装的RPM包依赖于其他包时,即使其他包没有安装,也要安装这个包
  • 安装
    rpm -ivh rpm包文件
    注意一定要加路径,否则安装失败
[root@linux7-128 mnt]# rpm -ivh ./Packages/yum-3.4.3-154.el7.centos.noarch.rpm
准备中...                          ################################# [100%]
    软件包 yum-3.4.3-154.el7.centos.noarch 已经安装
  • 升级
    rpm -Uvh rpm包文件

  • 卸载
    rpm -e 包名
    要想卸载一个包,必须卸载这个包所被依赖的包

[root@linux7-128 mnt]# rpm -e yum
  • 查询安装的包
    rpm -qa

  • 查询指定包是否被安装
    rpm -q 包名

[root@linux7-128 mnt]# rpm -q yum
yum-3.4.3-154.el7.centos.noarch
  • 查询指定包信息
    rpm -qi 包名
[root@linux7-128 mnt]# rpm -qi yum
Name        : yum
Version     : 3.4.3
Release     : 154.el7.centos
Architecture: noarch
Install Date: 20180428日 星期六 043419秒
Group       : System Environment/Base
Size        : 5803844
License     : GPLv2+
Signature   : RSA/SHA256, 20170811日 星期五 042753秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : yum-3.4.3-154.el7.centos.src.rpm
Build Date  : 20170806日 星期日 031308秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://yum.baseurl.org/
Summary     : RPM package installer/updater/manager
Description :
Yum is a utility that can check for and automatically download and
install updated RPM packages. Dependencies are obtained and downloaded
automatically, prompting the user for permission as necessary.
  • 列出包安装的文件
    rpm -ql 包名
[root@linux7-128 mnt]# rpm -ql yum
/etc/logrotate.d/yum
/etc/yum
/etc/yum.conf
/etc/yum.repos.d
/etc/yum/fssnap.d
/etc/yum/pluginconf.d
/etc/yum/protected.d
省略.....
/usr/share/yum-cli/utils.py
/usr/share/yum-cli/utils.pyc
/usr/share/yum-cli/yumcommands.py
/usr/share/yum-cli/yumcommands.pyc
/usr/share/yum-cli/yummain.py
/usr/share/yum-cli/yummain.pyc
/usr/share/yum-plugins
/var/cache/yum
/var/lib/yum
/var/lib/yum/history
/var/lib/yum/plugins
/var/lib/yum/uuid
/var/lib/yum/yumdb
  • 查看一个文件是由哪个包安装的
    rpm -qf 文件绝对路径
[root@linux7-128 mnt]# rpm -qf /var/lib/yum/yumdb
yum-3.4.3-154.el7.centos.noarch

知识点:使用反引号which 命令查看,只能查只有一行显示路径的命令,例如cd,ls则不可以

[root@linux7-128 mnt]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls
[root@linux7-128 mnt]# which cd
/usr/bin/cd
[root@linux7-128 mnt]# rpm -qf `which cd`
bash-4.2.46-28.el7.x86_64
[root@linux7-128 mnt]# rpm -qf `which ls`
rpm: --color=auto': 未知的选项

反引号可以引用命令的结果

  • 查看一个命令,是由谁安装的
[root@localhost Packages]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-2.el7.x86_64

yum工具

是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

优势点:支持自动安装依赖包

用法

  • 列出可用yum包 yum list

yum list

[root@linux7-128 Packages]# yum list
省略...
udisks2-iscsi.x86_64                                              2.7.3-6.el7                                   base     
udisks2-lvm2.x86_64                                               2.7.3-6.el7                                   base     
unbound.x86_64                                                    1.6.6-1.el7                                   base     
unbound-devel.i686                                                1.6.6-1.el7                                   base     
unbound-devel.x86_64                                              1.6.6-1.el7                                   base     
unbound-libs.i686                                                 1.6.6-1.el7                                   base     
unbound-libs.x86_64                                               1.6.6-1.el7                                   base
省略...     

base代表仓库名字,查看仓库名在yum的配置文件
ls /etc/yum.repos.d/查看

[root@linux7-128 Packages]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo

使用cat /etc/yum.repos.d/CentOS-Base.repo

[root@linux7-128 Packages]# cat /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

上面看到[]里的base,就是仓库名
把包放到一个容器里,这个容器就是仓库,通过仓库下面的网络地址可以找到它,每个仓库下有很多包。
- 搜索一个包 yum search

yum search 要搜索的包名

[root@linux7-128 Packages]# yum search vim
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
=================================================== N/S matched: vim ====================================================
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers descriptions
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.x86_64 : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor

名称和简介匹配 only,使用“search all”试试。

这种搜索不太严谨,说明里含有的也会查找出来,而且不区分大小写。
- 精确查找 yum list |grep ”

[root@linux7-128 Packages]# yum list |grep 'vim'
vim-common.x86_64                           2:7.4.160-4.el7            @base    
vim-enhanced.x86_64                         2:7.4.160-4.el7            @base    
vim-filesystem.x86_64                       2:7.4.160-2.el7            @base    
vim-minimal.x86_64                          2:7.4.160-2.el7            @anaconda
protobuf-vim.x86_64                         2.5.0-8.el7                base     
vim-X11.x86_64                              2:7.4.160-4.el7            base     
vim-filesystem.x86_64                       2:7.4.160-4.el7            base     
vim-minimal.x86_64                          2:7.4.160-4.el7            base

grep:过滤指定字符串
| :管道符
- 安装包 yum install [-y]

加上-y,不会再询问是否安装
- 列出可用组 yum grouplist

[root@linux7-128 Packages]# yum grouplist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
已安装环境分组:
   GNOME 桌面
可用的环境分组:
   最小安装
   基础设施服务器
   计算节点
   文件及打印服务器
   基本网页服务器
   虚拟化主机
   带 GUI 的服务器
   KDE Plasma Workspaces
   开发及生成工作站
可用组:
   传统 UNIX 兼容性
   兼容性程序库
   图形管理工具
   安全性工具
   开发工具
   控制台互联网工具
   智能卡支持
   科学记数法支持
   系统管理
   系统管理工具
完成

安装系统时选择不同的组会安装不同的软件包,比如选择最小安装或者GNOME桌面
在系统安装完成后,也可以选择安装其他组,比如安装系统时选择的最小化安装,之后可以在安装GNOME桌面

知识点:
上面显示的是中文,我们安装组时需要英文名,可以将系统语言变为英文,使用LANG=en,在使用yum grouplist查看组

  • 安装组 yum groupinsatll [-y] ‘组名’
[root@linux7-128 Packages]# yum groupinstall 'KDE Plasma Workspaces'
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, langpacks
http://ftp.sjtu.edu.cn/centos/7.5.1804/os/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2001:da8:8000:6023::230: Network is unreachable"
Trying other mirror.
base                                                                                              | 3.6 kB  00:00:00     
extras                                                                                            | 3.4 kB  00:00:00     
updates                                                                                           | 3.4 kB  00:00:00     
(1/2): extras/7/x86_64/primary_db                                                                 | 146 kB  00:00:00     
(2/2): updates/7/x86_64/primary_db                                                                | 2.0 MB  00:00:02     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
省略.......
Transaction Summary
=========================================================================================================================
Install  50 Packages (+160 Dependent packages)
Upgrade              (  16 Dependent packages)

Total download size: 201 M
Is this ok [y/d/N]: 

为了减少时间,此处输入N不安装,今后可以根据自己需要输入y来进行安装

  • 卸载包 yum remove [-y]
[root@linux7-128 Packages]# yum remove ppp
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package ppp.x86_64 0:2.4.5-33.el7 will be erased
--> Processing Dependency: ppp for package: wvdial-1.61-9.el7.x86_64
--> Processing Dependency: ppp = 2.4.5 for package: 1:NetworkManager-ppp-1.8.0-11.el7_4.x86_64
--> Running transaction check
---> Package NetworkManager-ppp.x86_64 1:1.8.0-11.el7_4 will be erased
---> Package wvdial.x86_64 0:1.61-9.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================
 Package                           Arch                  Version                           Repository               Size
=========================================================================================================================
Removing:
 ppp                               x86_64                2.4.5-33.el7                      @base                   852 k
Removing for dependencies:
 NetworkManager-ppp                x86_64                1:1.8.0-11.el7_4                  @updates                 64 k
 wvdial                            x86_64                1.61-9.el7                        @base                   264 k

Transaction Summary
=========================================================================================================================
Remove  1 Package (+2 Dependent packages)

Installed size: 1.2 M
Is this ok [y/N]: 
  • 升级包 yum update [-y]

如果不加包名,会把系统所有包进行升级,甚至包括系统、内核。往往只有在刚安装完系统之后才会使用。

  • 根据命令搜索包 yum provides “/*/命令”
[root@linux7-128 Packages]# yum provides "/*/vim"
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base/7/x86_64/filelists_db                                                                        | 6.9 MB  00:00:09     
extras/7/x86_64/filelists_db                                                                      | 519 kB  00:00:00     
updates/7/x86_64/filelists_db                                                                     | 1.3 MB  00:00:01     
cmake-2.8.12.2-2.el7.x86_64 : Cross-platform make system
Repo        : base
Matched from:
Filename    : /usr/share/cmake/editors/vim



2:docker-unit-test-1.13.1-53.git774336d.el7.centos.x86_64 : Automates deployment of containerized applications - for
                                                          : running unit tests
Repo        : extras
Matched from:
Filename    : /var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/runc-e9c345b3f906d5dc5e8100b05ce37073a811c74a/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/containerd-296f1f80d6c6a83cc625163f863e53d3287328ee/vendor/src/github.com/docker/docker/contrib/syntax/vim



2:docker-unit-test-1.13.1-58.git87f2fab.el7.centos.x86_64 : Automates deployment of containerized applications - for
                                                          : running unit tests
Repo        : extras
Matched from:
Filename    : /var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/runc-e9c345b3f906d5dc5e8100b05ce37073a811c74a/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/containerd-296f1f80d6c6a83cc625163f863e53d3287328ee/vendor/src/github.com/docker/docker/contrib/syntax/vim



2:docker-unit-test-1.13.1-63.git94f4240.el7.centos.x86_64 : Automates deployment of containerized applications - for
                                                          : running unit tests
Repo        : extras
Matched from:
Filename    : /var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/runc-e9c345b3f906d5dc5e8100b05ce37073a811c74a/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
Filename    : /var/lib/docker-unit-test/containerd-296f1f80d6c6a83cc625163f863e53d3287328ee/vendor/src/github.com/docker/docker/contrib/syntax/vim



git-1.8.3.1-13.el7.x86_64 : Fast Version Control System
Repo        : base
Matched from:
Filename    : /usr/share/doc/git-1.8.3.1/contrib/vim



2:vim-common-7.4.160-4.el7.x86_64 : The common files needed by any version of the VIM editor
Repo        : base
Matched from:
Filename    : /usr/share/vim



2:vim-enhanced-7.4.160-4.el7.x86_64 : A version of the VIM editor which includes recent enhancements
Repo        : base
Matched from:
Filename    : /usr/bin/vim



2:vim-enhanced-7.4.160-4.el7.x86_64 : A version of the VIM editor which includes recent enhancements
Repo        : @base
Matched from:
Filename    : /usr/bin/vim

这个针对的是没有安装的命令

yum搭建本地仓库

  1. 首先要先将光盘或者镜像挂载到/mnt/目录下,使系统可以访问
    在没联网的情况下yum是使用不了的,这时候可以搭建一个本地仓库,方便安装包和它所依赖的包。

  2. 操作的时候可能会删除一下文件,所以提前备份下
    cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

  3. 删除/etc/yum.repos.d下所有的文件

[root@linux7-128 ~]# cd /etc/yum.repos.d
[root@linux7-128 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repo
CentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo
[root@linux7-128 yum.repos.d]# rm -rf ./*
  1. 创建 dvd.repo
    vi dvd.repo,在里面输入
[dvd]                           //仓库名字
name=install dvd               //自定义一个描述字符串,意义大不
baseurl=file:///mnt            //路径地址
enable=1                      //是否可用,1可用,0不可用
gpcheck=0                      //是否检测,0不检测,1检测
  1. 清除yum缓存
[root@linux7-128 yum.repos.d]# yum clean all
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, langpacks
Cleaning repos: dvd
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
  1. 查看 yum list|less
[root@linux7-128 yum.repos.d]# yum list|less
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
GConf2.x86_64                           3.2.6-8.el7                    @base    
GeoIP.x86_64                            1.5.0-11.el7                   @anaconda
ModemManager.x86_64                     1.6.0-2.el7                    @base    
ModemManager-glib.x86_64                1.6.0-2.el7                    @base    
NetworkManager.x86_64                   1:1.8.0-11.el7_4               @updates 
NetworkManager-adsl.x86_64              1:1.8.0-11.el7_4               @updates 
NetworkManager-bluetooth.x86_64         1:1.8.0-11.el7_4               @updates 
NetworkManager-glib.x86_64              1:1.8.0-11.el7_4               @updates 
NetworkManager-libnm.x86_64             1:1.8.0-11.el7_4               @updates 
NetworkManager-libreswan.x86_64         1.2.4-2.el7                    @base    
NetworkManager-libreswan-gnome.x86_64   1.2.4-2.el7                    @base    
NetworkManager-ppp.x86_64               1:1.8.0-11.el7_4               @updates 
省略.......
thai-scalable-fonts-common.noarch       0.5.0-7.el7                    @base    
...skipping...
antlr-tool.noarch                       2.7.7-30.el7                   dvd      
apache-commons-cli.noarch               1.2-13.el7                     dvd      
apache-commons-codec.noarch             1.8-7.el7                      dvd      
apache-commons-collections.noarch       3.2.1-22.el7_2                 dvd      
apache-commons-daemon.x86_64            1.0.13-6.el7                   dvd      
apache-commons-dbcp.noarch              1.4-17.el7                     dvd      
apache-commons-io.noarch                1:2.4-12.el7                   dvd      
apache-commons-lang.noarch              2.6-15.el7                     dvd 
省略...........   

右边带@的表示已经安装的,下边仓库名为dvd表示可安装的包
7. 使用yum安装

如果本地源和网络源同时存在,网络源生效。要想让本地源生效,需要将网络源改名或删除

yum更换国内源

有时候系统自带的yum源不太好使,因为有些是国外的源,没有国内的访问速度快。
1. 首先要先将光盘或者镜像挂载到/mnt/目录下,使系统可以访问
2. 将之前的dvd.repo删掉,恢复之前的备份

[root@linux7-128 yum.repos.d]# rm -r dvd.repo 
rm: remove regular file 'dvd.repo'? y
[root@linux7-128 yum.repos.d]# cp ../yum.repos.d.bak/* .
[root@linux7-128 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repo
CentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo
  1. 删掉CentOS-Base.repo
    [root@linux7-128 yum.repos.d]# rm -f CentOS-Base.repo
  2. 下载国内163的源
    curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@linux7-128 yum.repos.d]# curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1572  100  1572    0     0   4423      0 --:--:-- --:--:-- --:--:--  4440
[root@linux7-128 yum.repos.d]# ls
CentOS-CR.repo         CentOS-Media.repo    CentOS-Vault.repo      CentOS7-Base-163.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repo
  1. 正常使用yum安装包

yum下载rpm包

安装扩展源epel

[root@linux7-128 yum.repos.d]# yum install -y epel-release
在使用yum list 查看时,会看到增加很多
yum list |grep epel

仅下载不安装

yumdownloader 包名
下载到当前路径
yum install -y 包名 --downloadonly
这种用法需要确认下载的rpm包是不是已经被安装过了

[root@linux7-128 yum.repos.d]# yum install -y zsh --downloadonly
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: mirrors.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package zsh.x86_64 0:5.0.2-28.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================
 Package                  Arch                        Version                            Repository                 Size
=========================================================================================================================
Installing:
 zsh                      x86_64                      5.0.2-28.el7                       base                      2.4 M

Transaction Summary
=========================================================================================================================
Install  1 Package

Total download size: 2.4 M
Installed size: 5.6 M
Background downloading packages, then exiting:
zsh-5.0.2-28.el7.x86_64.rpm                                                                       | 2.4 MB  00:00:02     
exiting because "Download Only" specified
[root@linux7-128 yum.repos.d]# rpm -q zsh
package zsh is not installed

下载的包的存放位置

ls /var/cache/yum/x86_64/7/仓库名/Packages
刚才下载的zsh包仓库名为base

[root@linux7-128 yum.repos.d]# ls /var/cache/yum/x86_64/7/base/packages/
zsh-5.0.2-28.el7.x86_64.rpm

下载包到指定路径

yum install -y 包名 --downloadonly --downloaddir=路径

[root@linux7-128 yum.repos.d]# yum install -y zsh --downloadonly --downloaddir=/tmp/
下载完成后可以在/tmp/在找到zsh这个包

重新安装已安装过的包

yum reinstall -y 包名 --downloadonly --downloaddir=路径

根据命令查看包

yum provides "/*/yumdownloader"

[root@linux7-128 httpd-2.4.33]# yum provides "/*/yumdownloader"
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: ftp.riken.jp
epel/x86_64/filelists_db                                                                          |  10 MB  00:00:10     
yum-utils-1.1.31-45.el7.noarch : Utilities based around the yum package manager
源    :base
匹配来源:
文件名    :/usr/bin/yumdownloader



yum-utils-1.1.31-42.el7.noarch : Utilities based around the yum package manager
源    :@base
匹配来源:
文件名    :/usr/bin/yumdownloader

源码包

源代码包里面包括了程序原始的程序代码,需要在你的计算机上进行编译以后才可以产生可以运行程 序,所以从源代码安装的时间会比较长。
**优点:可以根据需求去配置
缺点: 安装和卸载比较麻烦**

源码包安装

  1. 源码包存放路径 /usr/local/src/
  2. 下载源码包wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
[root@linux7-128 src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
--2018-05-29 17:17:04--  http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.8.193|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:9076901 (8.7M) [application/octet-stream]
正在保存至: “httpd-2.4.33.tar.gz”

100%[===============================================================================>] 9,076,901   2.11MB/s 用时 4.2s   

2018-05-29 17:17:09 (2.07 MB/s) - 已保存 “httpd-2.4.33.tar.gz” [9076901/9076901])

[root@linux7-128 src]# ls
httpd-2.4.33.tar.gz
  1. 解压 tar -zxvf httpd-2.4.33.tar.gz后进入httpd-2.4.33查看
[root@linux7-128 src]# ls
httpd-2.4.33  httpd-2.4.33.tar.gz
[root@linux7-128 src]# cd httpd-2.4.33/
[root@linux7-128 httpd-2.4.33]# ls
ABOUT_APACHE     BuildAll.dsp    configure.in  include         LICENSE        README            test
acinclude.m4     BuildBin.dsp    docs          INSTALL         Makefile.in    README.cmake      VERSIONING
Apache-apr2.dsw  buildconf       emacs-style   InstallBin.dsp  Makefile.win   README.platforms
Apache.dsw       CHANGES         httpd.dep     LAYOUT          modules        ROADMAP
apache_probes.d  CMakeLists.txt  httpd.dsp     libhttpd.dep    NOTICE         server
ap.d             config.layout   httpd.mak     libhttpd.dsp    NWGNUmakefile  srclib
build            configure       httpd.spec    libhttpd.mak    os             support

所有的源码包都会有些说明文档
README 说明书

[root@linux7-128 httpd-2.4.33]# more README

                          Apache HTTP Server

  What is it?
  -----------

  The Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant
  web server.  Originally designed as a replacement for the NCSA HTTP
  Server, it has grown to be the most popular web server on the
  Internet.  As a project of the Apache Software Foundation, the
  developers aim to collaboratively develop and maintain a robust,
  commercial-grade, standards-based server with freely available
  source code.

  The Latest Version
  ------------------

  Details of the latest version can be found on the Apache HTTP
  server project page under http://httpd.apache.org/.

--More--(14%)

INSATLL 安装文档

[root@linux7-128 httpd-2.4.33]# more INSTALL 

  APACHE INSTALLATION OVERVIEW

  Quick Start - Unix
  ------------------

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.4/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start

     NOTES: * Replace PREFIX with the filesystem path under which 
              Apache should be installed.  A typical installation
              might use "/usr/local/apache2" for PREFIX (without the
              quotes).

            * Consider if you want to use a previously installed APR and
--More--(15%)
  1. 开始安装

指定安装路径 ./configure –prefix=/usr/local/apache2

[root@linux7-128 httpd-2.4.33]# ./configure --prefix=/usr/local/apache2
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure: 
configure: Configuring Apache Portable Runtime library...
configure: 
checking for APR... no
configure: error: APR not found.  Please read the documentation.

可以看到有错误,这有个知识点
echo $?

[root@linux7-128 httpd-2.4.33]# echo $?
1

如果非0,在代表上一条命令错误,今后可以检查命令是否正确

查看配置哪里错误可以看configure: error:XXXXXXX ,根据提示安装对应缺少的包。
下载相关的包

wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz    
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz    
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip    

解决apr not found

[root@lme test]# tar -zxf apr-1.4.5.tar.gz    
[root@lme test]# cd  apr-1.4.5    
[root@lme apr-1.4.5]# ./configure --prefix=/usr/local/apr    
[root@lme apr-1.4.5]# make && make install    

解决APR-util not found

[root@lme test]# tar -zxf apr-util-1.3.12.tar.gz    
[root@lme test]# cd apr-util-1.3.12    
[root@lme apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config --enable-utf8     
[root@lme apr-util-1.3.12]# make && make install   

解决pcre问题

[root@lme test]#unzip -o pcre-8.10.zip    
[root@lme test]#cd pcre-8.10    
[root@lme pcre-8.10]#./configure --prefix=/usr/local/pcre    
[root@lme pcre-8.10]#make && make install  

补充(安装pcre可能遇到的出错状况):

./libtool: line 990: g++: command not found

make[1]: * [pcrecpp.lo] Error 1

make[1]: Leaving directory `/root/software/pcre-8.10’

make: * [all] Error 2

解决办法:yum install gcc+ gcc-c++
make && make install的时候出错:
libtool: link: unsupported hardcode properties

libtool: link: See the libtool documentation for moreinformation.

libtool: link: Fatal configuration error.

解决方案:在yum install gcc+ gcc-c++后要重新编译./configure下,再make即可。

提示缺少apr_escape.h文件

解决方案:在/usr/local/apr/include/apr-1下新建apr_escape.h文件,将http://apr.apache.org/docs/apr/1.5/apr__escape_8h_source.html 里的编码拷贝进去,重新执行make。

关联包安装完成之后重新编译安装

./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre  

make

make install

拓展

使yum保留下载的rpm包

可以设置使yum保留已经下载的rpm包,供以后升级或重新安装时使用。
修改/etc/yum.conf即可:
[main]
cachedir=/home/soft1/yumcache
keepcache=1
debuglevel=2
chchedir是放置下载的包的地方,可以修改为自己想放置的位置。
keepcache为1时表示保存已经下载的rpm包。

搭建局域网源

  1. 将光盘镜像挂载到/mnt下
  2. 新建一个目录

[root@linux7-128 ~]# mkdir -p /data/yumdata
3. 将/mnt/Packages下的一些包放到/data/yumdata下,例如a开头的

[root@linux7-128 ~]# cp /mnt/Packages/a*rpm /data/yumdata/
[root@linux7-128 ~]# du -sh !$
du -sh /data/yumdata/
53M /data/yumdata/

看看一共有多少个

[root@linux7-128 ~]# ls /data/yumdata/ |wc -l
137
  1. 创建仓库
[root@linux7-128 ~]# createrepo /data/yumdata/
Spawning worker 0 with 69 pkgs
Spawning worker 1 with 68 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@linux7-128 ~]# rpm -qf `which createrepo`   --查看createrepo命令的包
createrepo-0.9.9-28.el7.noarch

如果rpm包有增加,需要执行 createrepo --update /data/yumdata/

  1. 安装nginx,提供http服务

安装Nginx先要安装epel-release

[root@linux7-128 ~]# yum install epel-release
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: ftp.riken.jp
软件包 epel-release-7-11.noarch 已安装并且是最新版本
无须任何处理
[root@linux7-128 ~]# yum install nginx
.......
  1. 修改配置文件vi /etc/nginx/nginx.conf
    这段改为

   server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /data/yumdata;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                autoindex on;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
  1. 检查是否修改正确 nginx -t
[root@linux7-128 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 无误后启动[root@linux7-128 ~]# systemctl start nginx

并且关闭systemctl stop firewalld ; systemctl disable firewalld

  1. 在另一台机器上配置repo文件
cd /etc/yum.repos.d
mkdir bak
mv *.repo  bak/  //把系统自带的repo挪走
vim my.repo //内容如下
[aming]
name=myserver
baseurl=http://之前配置Nginx的主机IP
gpgcheck=0
enabled=1

这时候使用yum list就可以查看出前面那台机器里的包

给源增加包

  1. 进入cd /data/yumdata/
  2. 新建目录 mkdir 123
  3. 把之前挂载的镜像下b开头的包拷贝到123里
[root@linux7-128 yumdata]# cd 123
[root@linux7-128 123]# cp /mnt/Packages/b*rpm ./
  1. 更新包 createrepo --update /data/yumdata/
[root@linux7-128 123]# createrepo --update /data/yumdata/
Spawning worker 0 with 38 pkgs
Spawning worker 1 with 38 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
  1. 清除缓存yum clean all
[root@linux7-128 123]# yum clean all 
已加载插件:fastestmirror, langpacks
正在清理软件源: base epel extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors

怎么把网上的源同步到自己本地局域网上

比如可以把系统默认的源给镜像到局域网来,思路是用rsync工具把远程的rpm包同步到这台局域网的对应目录下即可。
1. 在/data/yumdata下新建目录 ustc并进入

[root@linux7-128 yumdata]# mkdir ustc
[root@linux7-128 yumdata]# cd ustc/
[root@linux7-128 ustc]#
  1. 将网络源中c开头的同步到当前目录下
[root@linux7-128 ustc]# rsync -av rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/c*rpm  ./
  1. 更新包 createrepo --update /data/yumdata/
  2. 当局域网的rpm库有更新时,除了服务端执行“createrepo –update /data/yumdata/”外,客户端上也需要执行
yum  clean all   //删除缓存

参考文章: http://blog.lishiming.net/?p=500

把源码包打包成rpm包

参考文章:https://jin-yang.github.io/post/linux-create-rpm-package.html

猜你喜欢

转载自blog.csdn.net/u013946328/article/details/80503877