RPM介绍:
RPM软件包也称为二进制软件包 类似于windows exe
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的行业标准了。
RPM命令使用
rpm的常用参数
i:安装应用程序(install)
vh:显示安装进度;(verbose hash)
U:升级软件包;(update)
qa: 显示所有已安装软件包(query all)
e:卸载应用程序(erase)
注意:如果其它软件包有依赖关系,卸载时会产生提示信息,可使用--nodeps强行卸载。
查询所有的rpm包: # rpm –qa
查询mysql相关的包: # rpm –qa | grep mysql
安装:rpm -ivh jdk.rpm
卸载: rpm –e mysql*
强行卸载:rpm –e mysql* --nodeps
存在问题:依赖关系
树形依赖: a -> b -> c -> d
环形依赖: a -> b -> c -> a
解决方案: a c b 一起安装
更好的解决方案
YUM管理
yellowdog updater modified 软件包管理工具
应用yum的好处:
1,自动解决软件包依赖关系
2,方便的软件包升级
安装
yum -y install 包名 -y 自动回答yes
升级
yum -y update 包名
注意:如果不加包名,就升级所有的,包括内核。必须加包名升级单个软件包,慎用升级所有的
检测升级 yum check-update
卸载
yum -y remove 包名
帮助
yum --help、man yum
yum clean all 清除缓存和旧的包
yum repolist 查看当前可用的yum源
安装,升级 还是卸载 都使用包名
查询
yum list 查询所有可用软件包列表
yum list installed 查看所有已安装的软件包列表
yum search 关键字 搜索服务器上所有和关键字相关的包
可以通过yum info 关键字来查找包名
使用非官方yum源:
如果不配置本地yum源,可以使用国内的yum源。国内比较快的有163源、sohu源。Eg: 163源
# cd /etc/yum.repos.d
# rename .repo .repo.bak *
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -O /etc/yum.repo.d/CentOS6-Base-163.repo
# yum clean all
# yum repolist
阿里云源:
#wget http://mirrors.aliyun.com/repo/Centos-6.repo -O /etc/yum.repos.d/CentOS-aliyun.repo
搭建光盘yum源
选择挂载dvd镜像。
选择完整版本。包很全。
挂载
相当于把光驱和文件系统关联上。
#cat /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
解释:
[base] 容器名称,一定要放在[]中
name 容器说明,这个可以自己随便写
mirrorlist 镜像站点,这个可以注释掉
baseurl yum源服务器的地址。默认是CentOS官方的yum源服务器,
enabled 此容器是否生效,如果不写或写enable=1都是生效,写成enable=0就是不生效
gpgcheck 如果是1是指RPM的数字证书生效,如果是0则不生效
pggkey 数字证书的公匙文件保存位置,不用修改
- 挂载光盘
# mkdir /mnt/cdrom
#mount /dev/cdrom /mnt/cdrom
卸载挂载用 # umount /mnt/cdrom
这是正常的提示.无需解决.
/dev/cdrom写保护,以只读方式挂载。
mount命令默认以读写方式挂载一个设备,而光盘是只读的,所以在挂载光盘这个块设备时会出现上述从读写方式切换为以只读方式挂载光盘的提示。如果不想看到这个提示,就请在mount命令后面添加参数,指定以只读方式来挂载设备
2,让网络yum源文件失效
# cd /etc/yum.repos.d/
# rename .repo .repo.bak * #重命名所有的.repo文件
# cp CentOS-Media.repo.bak CentOS-Media.repo #配置一个.repo文件
3,修改光盘yum源文件
vi CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
#这里的地址为自己光盘挂载地址,并把不存在的地址注释掉,在行首注释
# file:///media/cdrom/
# file:///media/cdrecorder/
gpgcheck=1
enabled=1 #把原来的0改为1,让这个yum源配资文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GrPG-KEY-CentOS-6
可使用 yum repolist 查看 当前可用yum源
yum clean all
yum repolist
让修改的配置重启后生效:修改配置文件/etc/fstab
# Vim /etc/fstab
添加一行记录:
/dev/sr0 /mnt/cdrom/ iso9660 ro 0 0
搭建集群环境
scp & ssh
集群模式下,各节点之间如何方便的拷贝文件?
命令格式:
scp file 远程用户名@远程服务器IP:~/ (注意:冒号和目录之间不能有空格)
如果拷贝目录,需要加-r 选项。
使用root用户
eg: scp /etc/profile root@node2:/etc
eg: scp -r /usr/jdk1.8 node2:/usr/java
eg:scp hello.log node2:`pwd`
eg:scp hello.log node2:$PWD
注:使用`pwd`或者$PWD 默认到当前目录。
~:到当前用户的宿主目录
scp /etc/services node2:/root/service.hard
可以通过这种方式修改拷贝的文件名。
如何跨节点执行命令??
ssh node2
免密登录
- 在第一台机器上生成一对钥匙,公钥和私钥
当前用户的宿主目录下的.ssh目录多了两个文件
将公钥拷贝给要免密码登录的机器
注意:主机名和ip都可以(确保配置了主机名 ip的映射)
还需要输入密码
拷贝完成之后,会在要免密登录的机器上生成授权密码文件
验证免密码登录
注意:免密码登录是单向的
ssh免密登录原理:
1, node1 使用 ssh-keygen –t rsa 生成公钥和私钥
- ssh-copy-id root@node2 将公钥拷贝到node2上,实际上是把公钥内容追加到 authorized_keys文件中。
请求时:
1,node1向node2发送连接请求时,附带主机,ip地址等信息
- node2收到请求后,去授权文件里查找node1的公钥,找到之后,随机生成一个字符串,并用公钥加密,并发送给node1
- node1接收到密文之后,用私钥解密,并把解密结果返回给node2
node2拿到解密结果之后,与之前的字符串进行比较,如果相同,则可以登录成功。