rpm(Redhat Package Manager)RPM软件包管理器,是以一种数据库记录的方式来将我们所需要的套件安装到Linux主机的一套管理程序。rpm包是预先在Linux机器上编译好并打包好的文件,安装起来非常快捷。但是有一个缺点:安装环境必须与编译时的一致或相当;包与包之间存在着相互依赖的情况,安装或卸载包时需要先把依赖的包安装/卸载,如果依赖的包时系统所必须的,那就不能卸载这个包。
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制码并进行安装。其优点是配置灵活,可以随意去掉或保留某些功能/模块,适应多种硬件/操作系统平台及编译环境;缺点是难度较大。
挂载系统安装盘镜像(挂载到一个空目录,此处/mnt/目录未使用,所以直接挂载到/mnt/目录下)
[root@gaohanwei ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
devtmpfs 483M 0 483M 0% /dev
tmpfs 493M 0 493M 0% /dev/shm
tmpfs 493M 6.8M 486M 2% /run
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 99M 0 99M 0% /run/user/0
[root@gaohanwei ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@gaohanwei mnt]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@gaohanwei Packages]# ls
yum-plugin-changelog-1.1.31-40.el7.noarch.rpm
yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm
yum-plugin-tmprepo-1.1.31-40.el7.noarch.rpm
yum-plugin-verify-1.1.31-40.el7.noarch.rpm
yum-plugin-versionlock-1.1.31-40.el7.noarch.rpm
……
(rpm包格式:包名、版本号、发布版本号、平台)
rpm包存放在Packages该文件下!
安装rpm包
Options:
-i:=install,安装
-v:可视化
-h:显示安装进度
在安装一个rpm包时常用附带选项:
--force:强制安装
--nodeps:=no dependent 无依赖安装(忽视与其他包之间的依赖关系)
[root@gaohanwei Packages]# rpm -ivh x86info-1.30-6.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:x86info-1:1.30-6.el7 ################################# [100%]
[root@gaohanwei Packages]# rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm
错误:依赖检测失败:
ypbind 被 yp-tools-2.14-3.el7.x86_64 需要
## 即,两个包之间存在依赖关系
## 解决办法:
①:
[root@gaohanwei Packages]# rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm yp-tools-2.14-3.el7.x86_64
②:
[root@adai002 Packages]# rpm -ivh --force yp-tools-2.14-3.el7.x86_64.rpm
(添加--force或--nodeps选项即可安装)
说明: 安装有依赖关系的包时,可以先安装其所依赖的包再安装目标包(同时安装存在依赖关系的包),或者使用--force或--nodeps选项进行强行安装(不建议使用)。
[root@gaohanwei Packages]# rpm -Uvh x86info-1.30-6.el7.x86_64.rpm
Preparing... ################################# [100%]
package x86info-1:1.30-6.el7.x86_64 is already installed
说明: 如果升级一个已经安装的最新版本的包,执行该命令后无任何操作。
[root@gaohanwei Packages]# rpm -e x86info-1.30-6.el7.x86_64.rpm
error: package x86info-1.30-6.el7.x86_64.rpm is not installed
[root@gaohanwei Packages]# rpm -e x86info
注: 卸载时直接跟报名,无需跟该包的信息;当包之间存在依赖关系时也需要先卸载其依赖包。
语法:
rpm [-q] [包名] 查询指定包
rpm [-qa] 查询所有已安装包
实例:
[root@gaohanwei Packages]# rpm -q kmod
kmod-20-9.el7.x86_64
#########################################
[root@gaohanwei Packages]# rpm -qa |head -5
trousers-0.3.13-1.el7.x86_64
filesystem-3.2-21.el7.x86_64
net-tools-2.0-0.17.20131004git.el7.x86_64
bind-license-9.9.4-37.el7.noarch
fxload-2002_04_11-16.el7.x86_64
语法: rpm [-qi] [包名]
i=information
[root@gaohanwei Packages]# rpm -qi filesystem
Name : filesystem
Version : 3.2
Release : 21.el7
Architecture: x86_64
Install Date: Mon May 22 01:19:49 2017
Group : System Environment/Base
Size : 0
……
语法: rpm [-ql] [包名]
l=list
[root@gaohanwei Packages]# rpm -ql vim-enhanced
/etc/profile.d/vim.csh
/etc/profile.d/vim.sh
/usr/bin/rvim
/usr/bin/vim
/usr/bin/vimdiff
/usr/bin/vimtutor
[root@gaohanwei Packages]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-1.el7_3.1.x86_64
即,通过其绝对路径查询到其安装包,当不知道其绝对路径时,使用which命令查询。
反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。即,在命令行上把Linux命令放在反引号中,这个命令会首先被执行,然后将其结果作为为该命令行的一个参数。
[root@gaohanwei Packages]# rpm -qf `which cd`
bash-4.2.46-20.el7_2.x86_64
说明: 先执行“which cd”命令,其次将“which cd”的结果作为“rpm -qf”的参数执行该命令。
[root@gaohanwei Packages]# yum list
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* extras: mirrors.aliyun.com
* updates: mirrors.tuna.tsinghua.edu.cn
Installed Packages
NetworkManager-libnm.x86_64 1:1.4.0-12.el7 @anaconda
NetworkManager-team.x86_64 1:1.4.0-12.el7 @anaconda
zsh.x86_64 5.0.2-25.el7_3.1 updates
zsh-html.x86_64 5.0.2-25.el7_3.1 updates
zziplib.i686 0.13.62-5.el7 base
zziplib.x86_64 0.13.62-5.el7 base
……
Exiting on Broken Pipe
说明: 第一列是包名,第二列是版本号,第三列是库,库所在位置有“@”表示已安装;“updates”表示已安装,有新版本,需要升级;其他的表示可安装但还未安装的rpm包。
[root@gaohanwei Packages]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo
CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo
[root@gaohanwei Packages]# cat /etc/yum.repos.d/CentOS-Base.repo
# CentOS-Base.repo
#
……
[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
……
说明: 该文件下有rpm包所在库base的镜像地址信息!
[root@gaohanwei Packages]# yum search vim
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* extras: mirrors.aliyun.com
* updates: mirrors.tuna.tsinghua.edu.cn
====================================== N/S matched: vim =============================
golang-vim.noarch : Vim plugins for Go
protobuf-vim.x86_64 : Vim syntax highlighting
vim-minimal.x86_64 : A minimal version of the VIM editor
Name and summary matches only, use "search all" for everything.
说明: 使用该命令搜索时会列出所有包含‘vim’(关键词)的信息,不精确,为了只搜索相关rpm包,可用如下方法:
[root@gaohanwei Packages]# yum list |grep vim
Failed to set locale, defaulting to C
vim-common.x86_64 2:7.4.160-1.el7_3.1 @updates
vim-enhanced.x86_64 2:7.4.160-1.el7_3.1 @updates
vim-filesystem.x86_64 2:7.4.160-1.el7_3.1 @updates
vim-minimal.x86_64 2:7.4.160-1.el7 @anaconda
说明: grep表示过滤。
[root@gaohanwei Packages]# yum grouplist
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* extras: mirrors.aliyun.com
* updates: mirrors.tuna.tsinghua.edu.cn
Available Environment Groups:
Minimal Install
Compute Node
……
Available Groups:
Compatibility Libraries
Console Internet Tools
……
Done
语法: yum groupinstall [-y] [包的组名]
如果不知道组名,可用yum grouplist查看(注:进行安装时只能用英文名)。
用法:
[root@gaohanwei Packages]# yum provides “/*/vim”
说明: 因为该命令位置不确定,所以进行搜索时使用‘*’(通配符)来代表其路径。
有时候Linux系统无法联网,此时无法使用网上的yum源,需要我们利用Linux系统光盘制作一个yum源。
步骤
挂载光盘——删除/etc/yum.repos.d/目录所有repo文件——创建新文件dvd.repo——清除原有缓存‘yum clean all’。
[root@gaohanwei ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
备份原.repo文件
[root@gaohanwei ~]# cd /etc/yum.repos.d 切换目录
[root@gaohanwei 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@gaohanwei yum.repos.d]# rm -rf ./*
删除原有repo文件
[root@gaohanwei yum.repos.d]# vim dvd.repo
“
[dvd]
name=install dvd
baseurl=file:///mnt
enable=1
gpgcheck=0
”
此部分内容除baseurl目录根据个人实际操作更改外,其余内容固定。
[root@adai002 yum.repos.d]# yum clean all
清除系统原有缓存
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Cleaning repos: dvd
Cleaning up everything
Cleaning up list of fastest mirrors
[root@gaohanwei ~]# yum list
……
Available Packages 还未安装的可安装rpm包的库都变成dvd
ypserv.x86_64 2.31-8.el7 dvd
yum-langpacks.noarch 0.4.2-7.el7 dvd
yum-plugin-aliases.noarch 1.1.31-40.el7 dvd
yum-plugin-changelog.noarch 1.1.31-40.el7 dvd
yum-plugin-tmprepo.noarch 1.1.31-40.el7 dvd
……
配置完成后便可直接使用yum安装所需要的rpm包。如果不想使用本地yum源,需要删除/etc/yum.repos.d/dvd.repo文件,然后恢复原来的配置文件。
可以设置使yum保留已经下载的rpm包,供以后升级或重新安装时使用。
修改/etc/yum/conf即可:
[main]
cachedir=/home/soft1/yumcache
keepcache=1
debuglevel=2
cachedir是放置下载的包的地方,可以修改成自己想放置的位置。
keepcache为1时表示保存已经下载的rpm包。
搭建Apache服务器或ftp服务器
yum安装或二进制包安装.
把CentOS的DVD1和DVD2.iso都下载下来,把DVD1.iso里的所有内容解压出来,放到/var/www/html/centos-6目录下,然后把DVD2.iso解压出来的Packages目录下的rpm包复制到/var/html/centos-6/Packages目录下,这样/var/html/centos-6/Packages里面就有了6000多个rpm包。
准备createrepo:yum -y install createrepo
创建repository:createrepo /var/www/html/centos-6/
创建完成之后,会在/var/www/html/centos-6/repodata下生成一些文件。
使用软件源
在其他centos机器上试试软件源能不能用。
[root@gaohanwei Packages]# cd /etc/yum.repos.d
[root@gaohanwei yum.repos.d]# ls
dvd.repo
[root@gaohanwei yum.repos.d]# rm -f dvd.repo
[root@gaohanwei yum.repos.d]# ls
[root@gaohanwei yum.repos.d]# cp ../yum.repos.d.bak/* .
[root@gaohanwei yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@gaohanwei yum.repos.d]# rm -f CentOS-Base.repo
先删除默认yum源,然后使用wget命令建立新yum源:
[root@gaohanwei yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
-bash: wget: 未找到命令
此时wget命令未安装,同时删除了yum源文件,无法安装wget包。
所以用下面的方法:“curl命令”
[root@gaohanwei 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 8959 0 --:--:-- --:--:-- --:--:-- 8982
[root@gaohanwei yum.repos.d]# ls
CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
说明: 执行完curl命令后,原有yum源文件CentOS-Base.repo被替换成CentOS7-Base-163.repo。查看该yum源文件:
[root@gaohanwei yum.repos.d]# vim CentOS7-Base-163.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 - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
"CentOS7-Base-163.repo" 41L, 1572C
其镜像文件地址更换为:“baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/”。
注: 该过程中使用的yum源需要事先下载。
安装扩展源epel
安装一个扩展源文件(epel-release)即可:
[root@gaohanwei yum.repos.d]# ls
CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@gaohanwei yum.repos.d]# yum install -y epel-release
……
已安装:
epel-release.noarch 0:7-9
完毕!
[root@gaohanwei yum.repos.d]# ls
CentOS7-Base-163.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo epel.repo
CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo
安装完成后,yum.repos.d/下增加“epel.repo”、“epel-testing.repo”两个文件:
[root@gaohanwei yum.repos.d]# cat epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
……
查看:
[root@gaohanwei yum.repos.d]# yum list
……
zulucrypt-doc.noarch 5.0.1-1.el7 epel
zulucrypt-libs.x86_64 5.0.1-1.el7 epel
zvbi.x86_64 0.2.35-1.el7 epel ……
增加了很多来自epel库的rpm包。
命令:yum install -y [包名] --downloadonly
[root@gaohanwei yum.repos.d]# yum install -y zsh --downloadonly
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
……
zsh-5.0.2-25.el7_3.1.x86_64.rpm | 2.4 MB 00:00:02
exiting because "Download Only" specified
[root@gaohanwei yum.repos.d]# rpm -q zsh
未安装软件包 zsh
即,该命令的含义就是只下载不安装。
下载的包默认保存位置为:
[root@gaohanwei yum.repos.d]# ls /var/cache/yum/x86_64/7/updates/packages
zsh-5.0.2-25.el7_3.1.x86_64.rpm
自定义下载目录
命令:
yum install -y [包名] --downloadonly --downloaddir=/tmp/(自定义目录)
[root@gaohanwei yum.repos.d]# yum install -y zsh --downloadonly --downloaddir=/tmp/
[root@gaohanwei yum.repos.d]# ls /tmp/
zsh-5.0.2-25.el7_3.1.x86_64.rpm
下载一个已经安装过的包:
[root@gaohanwei yum.repos.d]# yum install -y vim-enhanced --downloadonly --downloaddir=/tmp/
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* epel: mirror01.idc.hinet.net
软件包 2:vim-enhanced-7.4.160-1.el7_3.1.x86_64 已安装并且是最新版本
无须任何处理
[root@gaohanwei yum.repos.d]# yum reinstall -y vim-enhanced --downloadonly --downloaddir=/tmp/
已加载插件:fastestmirror
……
[root@gaohanwei yum.repos.d]# ls /tmp/
vim-enhanced-7.4.160-1.el7_3.1.x86_64.rpm
zsh-5.0.2-25.el7_3.1.x86_64.rpm
说明: 当下一个已经安装过的包时系统不会执行任何操作,此时可以使用“reinstall”来下该包。
先下载一个源码包!
注: 今后所有源码包放到目录“/usr/local/src/”!!!
[root@gaohanwei src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.32.tar.gz
下载Apache!该地址来自于“阿铭码市”。
下载完后解压该文件:
[root@gaohanwei src]# tar zxvf httpd-2.2.32.tar.gz
[root@gaohanwei src]# ls
httpd-2.2.32 httpd-2.2.32.tar.gz
查看文件httpd-2.2.32的内容:
[root@gaohanwei src]# cd httpd-2.2.32
[root@gaohanwei httpd-2.2.32]# ls
ABOUT_APACHE CHANGES httpd.dsp libhttpd.dep NOTICE server
acinclude.m4 config.layout httpd.mak libhttpd.dsp NWGNUmakefile srclib
Apache.dsw configure httpd.spec libhttpd.mak os support
build configure.in include LICENSE README test
BuildAll.dsp docs INSTALL Makefile.in README.platforms VERSIONING
BuildBin.dsp emacs-style InstallBin.dsp Makefile.win README-win32.txt
buildconf httpd.dep LAYOUT modules ROADMAP
安装Apache:
①
[root@gaohanwei httpd-2.2.32]# ./configure --prefix=/usr/local/apache2
checking for chosen layout... Apache
checking for working mkdir -p... yes
……
checking for chosen layout... apr
checking for gcc... no
checking for cc... no
当某命令运行结束后,使用"echo $?"检验其是否正确:
[root@gaohanwei httpd-2.2.32]# echo $?
1
当该值为0时表示上一条命令正确,如果值为1则错误。
此处值为1,即上面命令错误,查看其安装过程发现“checking for gcc... no”——表示“gcc”编译器不存在,所以需要先安装gcc编译器:
[root@gaohanwei httpd-2.2.32]# yum install -y gcc
…………
完毕!
[root@gaohanwei httpd-2.2.32]# ./configure --prefix=/usr/local/apache2
再次安装。
[root@gaohanwei httpd-2.2.32]# echo $?
0
检测,正确。
②
[root@gaohanwei httpd-2.2.32]# make 编译!
……
[root@gaohanwei httpd-2.2.32]# echo $?
0
③
[root@gaohanwei httpd-2.2.32]# make install
……
[root@gaohanwei httpd-2.2.32]# echo $?
0
每次命令执行完后用“echo $?”进行检测,确保其正确。
安装完成!
查看其安装目录的内容:
[root@gaohanwei httpd-2.2.32]# ls /usr/local/apache2/
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
注: 下载源码包要到官方网站或可信任站点——安全!
转载于:https://blog.51cto.com/13530586/2121903