挂载
首先准备工作,把光盘加载到光驱中
创建要挂载的目录
$ mkdir -p /mnt/cdrom (目录名称随意)
执行mount挂载命令(mount 参数1:要挂载的源,参数2:要挂载的目标路径)
$ mount /dev/cdrom /mnt/cdrom(挂载光盘镜像)
$ mount 查看挂载信息,如下,可以看到光盘已经挂载到了 /mnt/cdrom 目录
需说明一下,/dev/cdrom 是/dev/sr0的软连接,如果直接挂载/dev/sr0 (命令:mout /dev/sr0 /mnt/cdrom )效果也是一样的,这里解释一下挂载源显示不一致的问题。
切换到目录 /mnt/cdrom目录,查看里面的挂载的光盘信息
卸载挂载的光盘镜像
[root@localhost /]# umount /dev/sr0
这时再查看/mnt/cdrom,什么也没有
重新挂载,会看到内容又可以看到了
进入Packages目录,会看到光盘里所有的rpm安装包,注意,这里显示的是完整的rpm软件包名称,如:abattis-cantarell-fonts-0.0.16-3.el7.noarch.rpm
如果我们要安装某个rpm软件,直接将包拷贝到放置的目录里,然后执行rpm -ivh 软件包名称
如:rpm -ivh abattis-cantarell-fonts-0.0.16-3.el7.noarch.rpm
到此,挂载光盘,安装里面已有的rpm软件已经完成。
RPM
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
rpm 安装包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
常用命令组合:
-ivh:安装显示安装进度--install--verbose--hash -Uvh:升级软件包--Update; -qpl:列出RPM软件包内的文件信息[Query Package list]; -qpi:列出RPM软件包的描述信息[Query Package install package(s)]; -qf:查找指定文件属于哪个RPM软件包[Query File]; -Va:校验所有的RPM软件包,查找丢失的文件[View Lost]; -e:删除包
rpm -q samba //查询程序是否安装 rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //按路径安装并显示进度 rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm //指定安装目录 rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm //用来检查依赖关系;并不是真正的安装; rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降级为旧版本 rpm -qa | grep httpd #[搜索指定rpm包是否安装]--all搜索*httpd* rpm -ql httpd #[搜索rpm包]--list所有文件安装目录 rpm -qpi Linux-1.4-6.i368.rpm #[查看rpm包]--query--package--install package信息 rpm -qpf Linux-1.4-6.i368.rpm #[查看rpm包]--file rpm -qpR file.rpm #[查看包]依赖关系 rpm2cpio file.rpm |cpio -div #[抽出文件] rpm -ivh file.rpm #[安装新的rpm]--install--verbose--hash rpm -ivh rpm -Uvh file.rpm #[升级一个rpm]--upgrade rpm -e file.rpm #[删除一个rpm包]--erase
常用参数:
Install/Upgrade/Erase options:
-i, --install install package(s) -v, --verbose provide more detailed output -h, --hash print hash marks as package installs (good with -v) -e, --erase erase (uninstall) package -U, --upgrade=<packagefile>+ upgrade package(s) --replacepkge 无论软件包是否已被安装,都强行安装软件包 --test 安装测试,并不实际安装 --nodeps 忽略软件包的依赖关系强行安装 --force 忽略软件包及文件的冲突 Query options (with -q or --query): -a, --all query/verify all packages -p, --package query/verify a package file -l, --list list files in package -d, --docfiles list all documentation files -f, --file query/verify package(s) owning file
RPM包名,由“-”、“.”构成:软件名称、版本信息、版本号、运行平台
RPM包常用安装位置说明
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件保存
RPM命令
对已安装软件信息的查询
rpm -qa 查询已安装的软件
rpm -qa |grep xxx 软件名 查询过滤某一个安装的软件
rpm -ql 软件名 查询已安装的软件包的安装信息
rpm -qf 文件名绝对路径 查看文件来源的安装包
实战:查看某个命令,是依赖哪个rpm安装包,如ls命令
[ linux 系统中的命令同windows 一样,通常是一些可执行文件,有时也存在一些可执行脚本。查看某个命令的可执行文件绝对路径用which 命令,如果which ls ; 如果继续查看ls命令是安装了那个软件产生的,则可以用rpm -qf 文件名绝对路径来查看 ]
软件名:rpm包去除平台信息和后缀信息
rpm -qi 软件名 查询一个已安装软件包的信息
rpm -qc 软件名 查看已安装软件的配置文件
rpm -qd 软件名 查看已安装软件的文档安装位置
rpm -qR 软件名 查看已安装软件依赖包和文件
对未安装软件信息的查询
rpm -qpi rpm文件 查看一个软件包的用途和版本信息
rpm -qpl rpm文件 查看一个软件包所包含的文件
rpm -qpd rpm文件 查看软件包的文档所在位置
rpm -qpc rpm文件 查看软件包的配置文件
rpm -qpR rpm文件 查看软件包的依赖关系
软件包的安装、升级、删除
rpm -ivh rpm文件 安装rpm包
rpm -Uvh rpm文件 更新rpm包
rpm -e 软件名 删除rpm包
rpm -e 软件名 --nodeps 不管依赖关系,强制删除软件
rpm --import 签名文件 导入签名
rpm --import RPM-GPG-KEY
yum
创建yum仓库有两种方法:参考文章 https://blog.51cto.com/13406057/2434605?source=dra
第一是直接使用光盘镜像,这种方法仅适合本机使用,在没有联网的情况可使用
第二种是创建网络yum仓库,通过互联网上的阿里云,清华,163等来实现。
创建yum仓库配置格式:
[repo ID] :仓库的id
name=[name] :仓库名称,可以看作是描述信息
baseurl=url://... :仓库的地址,有以下几种
file:// :本地路径地址
http:// :网络路径地址
https:// :安全的网络路径地址
ftp:// :基于ftp服务的网络路径地址
gpgcheck={0|1} :是否检查合法性,0表示不检查,1表示检查,默认就是1
enabled={0|1} :是否启用仓库,默认为启用,0位不启用
gpgkey=URL :公钥地址
创建本地光盘源使用例子:
如上我们已经挂载了光盘镜像,则可以把/etc/yum.repos.d/ 目录中的其他yum源配置文件xxx.repo删除,再随便起一个yum源配置文件的名称,如cd.repo,配置内容如下:
[repo_ id] #随便写,唯一就行
name=repo_ name #随便写,好辨认就行 enabled=1 gpgcheck=0
#配置源路径为光盘挂载的路径,如果是网络上的源,如果ftp服务器,web服务器,则这里填写ftp://xx或者http://xx,就是第二种配置方式
baseurl=file:///mnt/cdrom
第一种方式配置完成。
第二种方式采用阿里云yum源
直接参考阿里云文档即可,这里不再细述。
https://developer.aliyun.com/mirror/centos
https://developer.aliyun.com/mirror/epel
查看系统可用的yum源
yum repolist enabled
使用yum安装软件
例如:安装tree,ftp,lftp,telnet等包。
yum安装可以多个包同时进行安装
[root@centos6 yum.repos.d]#yum install tree ftp lftp telnet
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Determining fastest mirrors
Resolving Dependencies
--> Running transaction check
---> Package ftp.x86_64 0:0.17-54.el6 will be installed
---> Package lftp.x86_64 0:4.0.9-14.el6 will be installed
---> Package telnet.x86_64 1:0.17-48.el6 will be installed
---> Package tree.x86_64 0:1.5.3-3.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
Package Arch Version Repository Size
===============================================================================
Installing:
ftp x86_64 0.17-54.el6 base 58 k
lftp x86_64 4.0.9-14.el6 base 755 k
telnet x86_64 1:0.17-48.el6 base 58 k
tree x86_64 1.5.3-3.el6 base 36 k
Transaction Summary
===============================================================================
Install 4 Package(s)
Total download size: 907 k
Installed size: 2.8 M
Is this ok [y/N]: y
Downloading Packages:
-------------------------------------------------------------------------------
Total 24 MB/s | 907 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : lftp-4.0.9-14.el6.x86_64 1/4
Installing : ftp-0.17-54.el6.x86_64 2/4
Installing : tree-1.5.3-3.el6.x86_64 3/4
Installing : 1:telnet-0.17-48.el6.x86_64 4/4
Verifying : 1:telnet-0.17-48.el6.x86_64 1/4
Verifying : tree-1.5.3-3.el6.x86_64 2/4
Verifying : ftp-0.17-54.el6.x86_64 3/4
Verifying : lftp-4.0.9-14.el6.x86_64 4/4
Installed:
ftp.x86_64 0:0.17-54.el6 lftp.x86_64 0:4.0.9-14.el6
telnet.x86_64 1:0.17-48.el6 tree.x86_64 0:1.5.3-3.el6
Complete!
编写系统初始化脚本reset.sh,包括别名,提示符颜色,yum仓库配置文件;
#/bin/bash echo "alias cdnet='cd /etc/sysconfig/network-script/'" >> /root/.vimrc echo 'PS1=" 33[1;32m[u@h W]# 33[0m"' >> /etc/profile.d/env.sh cat > /etc/yum.repos.d/centos.repo << EOF [base] name=base baseurl=file:///misc/cd/ gpgcheck=0 [epel] name=epel baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ gpgcheck=0 EOF
yum常用命令
yum缓存信息
yum clean packages 清除缓存的rpm包文件
yum clean headers 清除缓存的rpm头文件
yum clean old headers 清除缓存中旧的头文件
yum clean all 清除缓存中旧的rpm头文件和包文件
查看系统可用的yum源:
yum repolist enabled
安装一个rpm包:
yum install [-y][软件名] #默认安装最新版的
yum install [-y][rpm软件包名] #因为指定了完整包名,所以就是安装特定版本的
卸载一个rpm包:
yum remove [-y][rpm软件名] 或者 yum remove [-y][rpm软件包名]
查看可以更新的软件包:
yum check-update
升级一个rpm包:
yum update [-y][rpm软件名] 或者[rpm软件包名]
查询软件包信息
yum search "firefox" 在yum源中搜索匹配特定字符的rpm包,软件名和描述匹配到的都会被搜索列出来
yum provides "firefox" 反查询文件包含在哪个rpm包里,与 rpm -qf '文件名' 功能类似。另外,yum provides xx, xx如果是文件的话需要全路径,命令的话直接查命令就行,如下的yum provides ls 和 yum provides /usr/bin/ls 都是可以查出ls命令来自安装的哪个rpm包。
yum list 列出资源库中所有可以安装或更新的rpm包
yum list firefox* 列出资源库中可以安装、可以更新、已安装的指定rpm包
yum list update 列出资源库中可以更新的rpm包
yum list installed 列出所有已安装的rpm包
yum list extras 列出已安装但不包含在资源库中rpm包
yum info 列出资源库中所有可以安装或更新的rpm包信息
yum info firefox* 列出资源库可以安装或更新的指定的rpm的信息
yum info update 列出资源库中可以更新的rpm包信息
yum info installed 列出已安装的所有rpm包信息
yum info extras 列出已安装到时不包含在资源库中rpm包信息
yum grouplist 列出组包
yum groupinstall 软件组名
yum groupremove
yum 命令支持模糊匹配,在安装,卸载,更新时,可以用模糊的软件名
安装多个类似软件时
yum -y install httpd*
安装多个非类似软件时
yum -y install httpd php php-gd mysql
卸载一个软件时
yum -y remove httpd
卸载多个相类似的软件
yum -y remove httpd*
卸载多个非类似软件时
yum -y remove httpd php php-gd mysql
yum安装特定版本的rpm包
yum默认都是安装最新版的软件,这样可能会出一些问题,或者我们希望yum安装指定(特定)版本(旧版本)软件包.所以,就顺带分享yum安装指定(特定)版本(旧版本)软件包的方法。
过程如下:
假设这里是我们想安装的是prce ,输入:
#yum list prce
输出:
pcre-7.8-6.el6.i686:Perl-compatibleregularexpressionlibrary
pcre-7.8-6.el6.x86_64:Perl-compatibleregularexpressionlibrary
pcre-7.8-6.el6.x86_64:Perl-compatibleregularexpressionlibrary
找到你要安装的版本的完整的名字,这里安装pcre-7.8-6.el6.i686,输入:
#yum install pcre-7.8-6.el6.i686 -y
安装完后,就是检查pcre的版本了,输入:
# rpm -qa | grep pcre
就可以看到你安装的版本是不是你要的了。
yum 解决依赖的原理
YUM 解决依赖关系问题,自动下载软件包。yum是基于C/S架构。C指的是客户端, S指的是服务器,想ftp,http,file、关于yum为什么能解决依赖关系:所有的Yum 源里面都有repodata,它里面是有XML格式文件,里面有说明需要什么包。例如上堂课实验的:mysql-server rpm 需要:perl-DBI ,python,或者是php等等包。
将yum源更新为阿里云的
参考下面两篇阿里云官方文档即可:
https://developer.aliyun.com/mirror/centos
https://developer.aliyun.com/mirror/epel
关于yum源的两个常用命令
$ yum clean all 清除本地yum的缓存
$ yum makecache 把源服务器的包信息下载到本地电脑缓存起来,makecache建立一个包头信息及依赖关系缓存,在不联网的情况下一样可以search某包,
查看相关依赖信息等。但是,这里下载的并非完整的包到本地,安装还是需要联网的。
验证步骤:
第一步:断网,清除全部缓存 yum clean all, 查询httpd包情况,会发现报错,尝试联网查询
第二步:联网,建立缓存,yum makecahe
第三步:断网,查询httpd包情况,可以看到可以正常查询
第四步:安装httpd,会发现yum依然需要去联网,去下载httpd的包。这里因为是断网状态,所以下载不成功。这也证明了yum makecache不是把完整的包缓存到本地的。
第五步:联网,继续安装httpd,发现开始正常下载httpd包及依赖包,最后顺利安装成功
第六步:查看httpd的安装情况,提示已经安装,@base说明来自base基础源