Linux软件安装
知识小仓库:
在RPM(红帽软件包管理器)公布之前,要想在Linux系统中安装软件只能采取源码包的方式安装。早期在Linux系统中安装程序是一件非常困难、耗费耐心的事情,而且大多数的服务程序仅仅提供源代码,需要运维人员自行编译代码并解决许多的软件依赖关系,因此要安装好一个服务程序,运维人员需要具备丰富知识、高超的技能,甚至良好的耐心。而且在安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、卸载、查询、升级等管理软件操作时难度都非常大。
RPM机制则为解决这些问题而设计的。RPM有点像Windows系统中的控制面板,会建立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。目前RPM的优势已经被公众所认可,使用范围也已不局限在红帽系统中了。
尽管RPM能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。Yum软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。
常用的RPM软件包命令一览表
安装软件的命令格式 | rpm -ivh filename.rpm 包全名 |
升级软件的命令格式 | rpm -Uvh filename.rpm 包全名 |
卸载软件的命令格式 | rpm -e filename.rpm 包名 |
查询软件描述信息的命令格式 | rpm -qpi filename.rpm p 未安装的包全名 |
列出软件文件信息的命令格式 |
rpm -qpl filename.rpm
rpm -qpR filename.rpm R依赖关系
|
查询文件属于哪个RPM的命令格式 | rpm -qf filename |
EL is short for Red Hat Enterprise Linux (EL).
EL6软件包用于在Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x进行安装
EL7 软件包用于在Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x的安装
解决环形依赖, 一条命令同时装多个包
.so.2结尾的是库依赖,某一个软件包中的一个文件
包全名:安装、更新 包名:卸载
rpm命令主要用作查询,安装用yum命令
注意:实例中的mariabd包已安装
列出软件包的所有文件
\ 表示换行 丢了某个文件找回可使用这个命令
yum解决依赖性原理:告诉系统要安装哪个包,自动去服务器下载,同时把依赖的软件包也一并下载,且自动安装这些软件包。
并不是一定要求有网,在没网的时候可以用本地光盘作为yum源(所有的rpm包都在光盘里)。
Redhat 公司 认为这是个售后服务,需要掏一定费用才能使用这个yum源,centos是由社区维护,不需要任何费用。
注意:没有所谓的yum包,其管理的还是rpm包
有ip和子网掩码,就可以在局域网内使用
ip、子网掩码、网管、dns才可以访问互联网
gpgcheck和gpgkey如果不清楚 可以不写;
xxx.repo 结尾的文件
常见的Yum命令一览
命令 | 作用 |
yum repolist all | 列出所有仓库 |
yum list all | 列出仓库中所有软件包 |
yum info 软件包名称 | 查看软件包信息 |
yum install 软件包名称 | 安装软件包 |
yum reinstall 软件包名称 | 重新安装软件包 |
yum update 软件包名称 | 升级软件包 |
yum remove 软件包名称 | 移除软件包 |
yum clean all | 清除所有仓库缓存 |
yum check-update | 检查可更新的软件包 |
yum grouplist | 查看系统中已经安装的软件包组 |
yum groupinstall 软件包组 | 安装指定的软件包组 |
yum groupremove 软件包组 | 移除指定的软件包组 |
yum groupinfo 软件包组 | 查询指定的软件包组信息 |
yum的仓库数据存储在/etc/yum.repos.d/文件夹下, 仓库文件以repo作为后缀.
如果我们想添加一个网络中的仓库, 我们可以先把repo文件下载, 然后复制到仓库文件夹下:
cd /etc/yum.repos.d/
wget repository_url
或者使用yum 仓库管理工具 yum-config-manager:
yum-config-manager --add-repo repository_url
如果不跟包名,会更新所有软件包,包括内核(服务器需做一定配置才能使用;若远程执行,可能导致服务器起不来,慎用!)
卸载时,一个包可能被多个依赖(有可能是内核),慎用
若软件组名有空格 用“ ”括起来即可
/mnt/cdrom 为自定义目录,在这称为挂载点
容器名c6-media
配置文件的修改,要严格的遵从格式要求
使用光盘yum源 首先软件版本固定,其次必须放入光盘
yum list
service httpd start 是Redhat开发的命令,其他Linux系统不一定有,其原理是去rpm包的默认安装目录搜素服务;不能管理源码包安装
yum install -y gcc
安装过rpm包的相同软件能再安装源代码包,因为安装位置不同。
上述位置 是系统建议
目录下的 INSTALL(安装说明) README(使用说明)
./configure 或 make报错 执行make clean 清空编译产生的临时文件
./ setup.sh
centos7 下
Systemd初始化进程
Linux操作系统的开机过程是这样的,即从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的初始化工作,为用户提供合适的工作环境。红帽RHEL 7系统已经替换掉了熟悉的初始化进程服务System V init,正式采用全新的systemd初始化进程服务。如果您之前学习的是RHEL 5或RHEL 6系统,可能会不习惯。systemd初始化进程服务采用了并发启动机制,开机速度得到了不小的提升。虽然systemd初始化进程服务具有很多新特性和优势,但目前还是下面4个槽点。
槽点1:systemd初始化进程服务的开发人员Lennart Poettering就职于红帽公司,这让其他系统的粉丝很不爽。槽点2: systemd初始化进程服务仅仅可在Linux系统下运行,“抛弃”了UNIX系统用户。槽点3:systemd接管了诸如syslogd、udev、cgroup等服务的工作,不再甘心只做初始化进程服务。槽点4:使用systemd初始化进程服务后,RHEL 7系统变化太大,而相关的参考文档不多,令用户着实为难。
无论怎样,RHEL 7系统选择systemd初始化进程服务已经是一个既定事实,因此也没有了“运行级别”这个概念,Linux系统在启动时要进行大量的初始化工作,比如挂载文件系统和交换分区、启动各类进程服务等,这些都可以看作是一个一个的单元(Unit),systemd用目标(target)代替了System V init中运行级别的概念,这两者的区别如表1-3所示。
systemd与System V init的区别以及作用
System V init运行级别 | systemd目标名称 | 作用 |
0 | runlevel0.target, poweroff.target | 关机 |
1 | runlevel1.target, rescue.target | 单用户模式 |
2 | runlevel2.target, multi-user.target | 等同于级别3 |
3 | runlevel3.target, multi-user.target | 多用户的文本界面 |
4 | runlevel4.target, multi-user.target | 等同于级别3 |
5 | runlevel5.target, graphical.target | 多用户的图形界面 |
6 | runlevel6.target, reboot.target | 重启 |
emergency | emergency.target | 紧急Shell |
如果想要将系统默认的运行目标修改为“多用户,无图形”模式,可直接用ln命令把多用户模式目标文件连接到/etc/systemd/system/目录:
[root@linuxprobe ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
如果有读者之前学习过RHEL 6系统,或者已经习惯使用service、chkconfig等命令来管理系统服务,那么现在就比较郁闷了,因为在RHEL 7系统中是使用systemctl命令来管理服务的。
表1-4和表1-5所示RHEL 6系统中System V init命令与RHEL 7系统中systemctl命令的对比
systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令
System V init命令(RHEL 6系统) | systemctl命令(RHEL 7系统) | 作用 |
service foo start | systemctl start foo.service | 启动服务 |
service foo restart | systemctl restart foo.service | 重启服务 |
service foo stop | systemctl stop foo.service | 停止服务 |
service foo reload | systemctl reload foo.service | 重新加载配置文件(不终止服务) |
service foo status | systemctl status foo.service | 查看服务状态 |
systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
System V init命令(RHEL 6系统) | systemctl命令(RHEL 7系统) | 作用 |
chkconfig foo on | systemctl enable foo.service | 开机自动启动 |
chkconfig foo off | systemctl disable foo.service | 开机不自动启动 |
chkconfig foo | systemctl is-enabled foo.service | 查看特定服务是否为开机自启动 |
chkconfig --list | systemctl list-unit-files --type=service |
查看各个级别下服务的启动与禁用情况
|
分情破爱始乱弃,流落天涯思别离。
如花似玉负情意,影如白昼暗自迷。
随风浮沉千叶落,行色匆匆鬓已稀。