安装软件包的三种方法
- 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: 2018年04月28日 星期六 04时34分19秒
Group : System Environment/Base
Size : 5803844
License : GPLv2+
Signature : RSA/SHA256, 2017年08月11日 星期五 04时27分53秒, Key ID 24c6a8a7f4a80eb5
Source RPM : yum-3.4.3-154.el7.centos.src.rpm
Build Date : 2017年08月06日 星期日 03时13分08秒
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搭建本地仓库
首先要先将光盘或者镜像挂载到/mnt/目录下,使系统可以访问
在没联网的情况下yum是使用不了的,这时候可以搭建一个本地仓库,方便安装包和它所依赖的包。操作的时候可能会删除一下文件,所以提前备份下
cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
删除/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 ./*
- 创建 dvd.repo
vi dvd.repo,在里面输入
[dvd] //仓库名字
name=install dvd //自定义一个描述字符串,意义大不
baseurl=file:///mnt //路径地址
enable=1 //是否可用,1可用,0不可用
gpcheck=0 //是否检测,0不检测,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
- 查看 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
- 删掉CentOS-Base.repo
[root@linux7-128 yum.repos.d]# rm -f CentOS-Base.repo
- 下载国内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
- 正常使用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
源码包
源代码包里面包括了程序原始的程序代码,需要在你的计算机上进行编译以后才可以产生可以运行程 序,所以从源代码安装的时间会比较长。
**优点:可以根据需求去配置
缺点: 安装和卸载比较麻烦**
源码包安装
- 源码包存放路径
/usr/local/src/
- 下载源码包
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
- 解压
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%)
- 开始安装
指定安装路径 ./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包。
搭建局域网源
- 将光盘镜像挂载到/mnt下
- 新建一个目录
[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
- 创建仓库
[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/
- 安装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
.......
- 修改配置文件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 {
}
- 检查是否修改正确 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
- 无误后启动
[root@linux7-128 ~]# systemctl start nginx
并且关闭systemctl stop firewalld ; systemctl disable firewalld
- 在另一台机器上配置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就可以查看出前面那台机器里的包
给源增加包
- 进入
cd /data/yumdata/
- 新建目录
mkdir 123
- 把之前挂载的镜像下b开头的包拷贝到123里
[root@linux7-128 yumdata]# cd 123
[root@linux7-128 123]# cp /mnt/Packages/b*rpm ./
- 更新包
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
- 清除缓存
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]#
- 将网络源中c开头的同步到当前目录下
[root@linux7-128 ustc]# rsync -av rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/c*rpm ./
- 更新包
createrepo --update /data/yumdata/
- 当局域网的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