Linux下的包/源管理命令:主要任务是完成在Linux环境下安装软件。
1.rpm 是最基础的rpm包的安装命令,需要提前下载相关安装包和依赖包。
2.yum/dnf是基于rpm包的自动安装命令,可以自动在仓库中匹配安装软件和依赖包。
3.光盘源 是指的 安装系统时候的操作系统光盘,它里面有很多自带的常用软件安装包,定位于当前主机。
4.局域网源·是指本地局域网不便连接互联网,而且客户机都在局域网内,定位于网内自建仓库局部使用。
5.互联网源 是指当前主机可以直接外接互联网,通过外网提供的的仓库完成在线安装软件。
6.源码安装 是指从互联网下载相关软件的源代码,在本机上进行配置,编译,安装 的过程。
离线管理命令
rpm:rpm命令中文译为“红帽软件包管理器,其功能是在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作常见的主流系统(如RHEL、CentOS、Fedora等)都采用这种软件包管理器,推荐用固定搭配“rpm -ivh " 软件包名”安装软件,而卸载软件则用固定搭配" rpm.-evh "软件包名。
语法格式:rpm 参数 软件包名
常用参数:
-a 显示所有软件包 -c 仅显示组态配置文件
-d 仅显示文本文件 -e 卸载软件包
-p 显示指定的软件包信息 -q 显示指定软件包是否已安装
-R 显示软件包的依赖关系 -s 显示文件状态信息
-f 显示文件或命令属于哪个软件包 -U 升级软件包
-h 安装软件包时显示标记信息 -v 显示执行过程信息
-vv 显示执行过程详细信息 -i 安装软件包
-l 显示软件包的文件列表
使用示例:
rpm -ivh cockpit #正常安装软件包,需要提前下载rpm包文件
rpm -qa # 显示系统已安装过的全部RPM软件包
rpm -qa | grep cockpit # 过滤出其中某一个包
rpm -qa --last # 列出所有已安装软件包,按照最近安装或者更新时间排序
rpm -ql cockpit #查询某个软件的安装路径
rpm -qi cockpit #查看包的信息
rpm -qf /sbin/ifconfig # 查看某一个程序来自哪个安装包
rpm -qc rsync # 查看安装的软件的配置文件位置
rpm -qR docker-ce # 查看安装软件的依赖包
rpm -evh cockpit #卸载通过RPM软件包安装的某个服务
rpm -e --nodeps coclpit #卸载软件包,忽略其依赖项
rpm -Uvh cockpit #升级某个软件包
rpm -Uvh --force cockpit-185-2.el8.x86_64.rpm #强制安装软件包,即使存在版本冲突或者其他问题
如果需要依赖,可以下载依赖并将依赖和程序一起安装
sudo rpm -ivh 主程序.rpm 依赖1.rpm 依赖2.rpm .........
^] 出现表示telnet 连接目标服务器和端口成功。
^] 不是输入的信息,是按下ctrl + l 会自动输入这个符合并退出telnet连接
quit 整体退出当前控制环境
本地源管理命令
yum: yum命令功能是在Linux系统中基于RPM技术进行软件包的管理工作。yum技术通用于RHEL、CentOS、Fedora、OpenSUSE等主流系统,可以让系统管理人员交互式地自动化更新和管理软件包,实现从指定服务器自动下载、更新、删除软件包的工作。yum软件仓库及命令能够自动处理软件依赖关系,一次性安装所需的全部软件,无须烦琐的操作。
语法格式:yum 参数 动作 软件包
常用参数:install 安装软件包 clean 清理过期的缓存
shell 设置使用的shell提示符 check-update 检查是否有可用的更新软件包
resolvedep 显示软件包的依赖关系 localinstall 安装本地软件包
update 更新软件包 remove 删除软件包
localupdate 更新本地软件包 deplist 显示软件包的依赖关系
info 显示指定软件包的描述和概要信息
list 显示软件包的信息 search 搜索指定软件包
参考示例:
yum clean all #清理原有的软件仓库信息缓存
yum makecache #建立最新的软件仓库信息缓存
yum install httpd #安装指定的服务及相关软件包
yum update httpd #更新指定的服务及相关软件包
yum remove httpd #卸载指定的服务及相关软件包
yum grouplist #显示可安装的软件包组列表
yum list #列出所有可安装的软件清单
yum info httpd #显示指定服务的软件信息
yum check-update #列出所有可更新的软件清单
yum update #安装所有更新软件
yum search httpd #使用YUM查找软件包
yum list installed #列出所有已安装的软件包
yum info installed #列出所有已安装的软件包信息
yum本地源实现过程及原理:
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用 yum/dnf 工具进行安装时会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
yum需要依赖于环境,依赖于服务端和客户端,允许跨网络。
(1)服务端需要的两个文件:
RPM包(Packages文件夹中)
元数据(repodata文件夹:目录 (软件的目录),软件的依赖关系,软件的位置)
(2)客户端的配置文件中:
baseurl=地址一定要写到这两个文件夹repodata和packages的上级目录
最终形成两个文件夹Packages(包文件夹一般取名packages)和repodata(元数据文件夹)
(3)仓库类型:
光盘的仓库基本仓库:比较常用的
epel扩展仓库:比较新
主配置文件:cat /etc/yum.conf
默认的yum仓库 是centos官方的yum源,需要联网才可以使用。 ls /etc/yum.repos.d/
局域网yum源配置:建设一个本地网络仓库给本地局域网用户提供下载安装。
第三方yum源配置:在线获取最新安装文件的通道。
1.局域网Web方式yum源配置:
web服务器提供yum安装服务:
yum install -y httpd #安装并启动httpd
setenforce 0 #关闭SELinuX#.查看当前状态
getenforce #查看当前状态
Permissive表示关了 Enforcing表示没关
systemctl stop firewalld #临时关闭防火墙
systemctl status firewalld #查看防火墙状态,空圈表示关闭,绿点表示开启
systemctl start httpd #启动httpd
systemctl status httpd #查看httpd是否启动,查看完毕用q键退出
httpd服务的目录文件在 /var/www/html
进入该目录,创建文件夹rhiso,挂载光盘到rhiso
mount /dev/sr0 var/www/html/rhiso
在浏览器输入本机ip/rhiso,比如:http://127.0.0.1/rhiso/ 出现下面页面代表配置完成
中文乱码解决方法 在 /etc/httpd/conf/httpd.conf 配置文件中加入 IndexOptions Charset=UTF-8
客户端访问服务器的yum源:
当在上一台机器已经配置好httpd后,我们选择同一网段内网其他机器配置yum源去访问此台服务器
如果使用拿不到ip地址,是因为我们都是同一个虚拟机拷贝的,会出现地址冲突
mv /var/lib/NetworkManager /var/lib/NetworkManager.bak #网络接口备份
reboot #重启虚拟机机器,设备在重启阶段会自动创建一个新的接口
有ip地址后,测试一下,当前客户机是否与服务器联通情况,ping 192.168.x.x #测试当前主机是否与服务器连接畅通
cd /etc/yum.repos.d/
vim local.repo 加入如下内容:
[RHEL9-BaseOS]
name=RHEL9-BaseOS
baseurl=http://172.16.80.63/rhiso/BaseOS
gpgcheck=0
[RHEL9-Appstream]
name=RHEL9-Appstream
baseurl=http://172.16.80.63/rhiso/AppStream
gpgcheck=0
yum clean all #清理旧缓存
yum makecache #建立新缓存
yum repolist #查看仓库列表
源码管理命令
源码包的安装
编译需要编译环境,开发环境,开发库,开发工具。
常用的编译环境有c、c++、perl、java、python5种
c环境的编译器:gcc(GNU C Complier)
c++环境的编译器:g++
make(进行编译的动作)编译命令:c、c++的统一项目管理工具,编译时有可能调用gcc也有可能调用g++。
使用makefile文件定义make按何种次序去编译源程序文件中的源程序
源码安装三部曲(常见):
第一步: ./configure(定制组件)
1.指定安装路径,例如 – prefix=/opt/nginx-1.12
2.启用或禁用某项功能, 例如 --enable-ssl
3.和其它软件关联,例如–with-pcre
4.检查安装环境,例如是否有编译器 gcc,是否满足软件的依赖需求
5.检测通过后生成Makefile文件
第二步: make (生成程序)
1.执行make命令进行编译, 可以使用-j指定CPU核心数进行编译
2.按Makefile文件进行编译, 编译成可执行二进制文件
3.生成各类模块和主程序
第三步: make install
1.按Makefile定义好的路径拷贝至安装目录中
上面介绍的源码三部曲不能百分百通用于所有源码包, 也就是说源码包的安装并非存在标准安装步骤,但是大部分源码安装都是类似的步骤
建议:
拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名
源码包编译实例
下面通过编译安装nginx来深入理解源码包安装
1.基础环境准备 [root@localhost ~]#
编译器:yum -y install gcc gcc-c++ make wget
依赖包:yum -y install zlib zlib-devel openssl pcre pcre-devel
2.下载源码包(源码包一定要上官方站点下载,其他站点不安全)
[root@localhost ~]# cd /usr/src
[root@localhost src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
3.解压源码包,并进入相应目录
[root@localhost src]# tar -zxvf nginx-1.12.2.tar.gz
[root@localhost src]# cd nginx-1.12.2
4.配置相关的选项,并生成Makefile
[root@localhost nginx-1.12.2]# ./configure --prefix=/opt/nginx-1.12.2
5.编译并安装
[root@localhost nginx-1.12.2]# make #开始编译源码
[root@localhost nginx-1.12.2]# make install #开始安装程序
6.建立软链接
[root@localhost nginx-1.12.2]# ln -s /opt/nginx-1.12.2 /opt/nginx
7.测试效果
systemctl stop httpd #停止Apache
cd obj
./nginx #启动nginx
打开浏览器,输入127.0.0.1
可能出现的错误:
1、not found ./configure: error: C compiler cc is not found
解决方案
[root@localhost ~]# yum -y install gcc gcc-c++ make
2./configure: error: the HTTP rewrite module requires the PCRE library.
解决方案
[root@localhost ~]# yum install -y pcre-devel
3./configure: error: the HTTP gzip module requires the zlib library.
解决方案:
[root@localhost ~]# yum -y install zlib-deve
4./configure: error: SSL modules require the OpenSSL library.
解决方案
[root@localhost ~]# yum -y install openssl-devel
5.error: ‘struct crypt_data’ has no member named ‘current_salt’
cd.current_salt[0] = ~salt[0];
解决方案
vi src/os/unix/ngx_user.c
将26行 **cd.current_salt[0] = ~salt[0];**注释掉
6、ngx_http_script.c:698:18: error: cast between incompatible function
//解决方案
进入objs目录下修改Makefile文件
CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter **-
Werror** -g
将 **- Werror** 去掉
扩展:
在选择Web服务器时,Nginx和Apache都是备受推崇的选择。然而,对于许多开发者和管理员来说,选择哪一个可能会成为一个难以解决的问题。因此,我们需要对两者进行比较,以确定哪一个更适合我们的需求。
首先,Nginx以其高效的性能而闻名。它是一个轻量级的Web服务器,可以处理大量并发连接。
相比之下,Apache是一个成熟的Web服务器,但它在处理并发连接时可能会出现性能瓶颈。
因此,如果您需要处理大量并发连接,Nginx可能是更好的选择。
其次,Nginx具有更好的负载均衡功能。它可以在多个服务器之间均衡地分配流量,以提高性能和可靠性。Apache也可以实现负载均衡,但相对来说要更为复杂。
最后,Nginx的配置文件比Apache更为简单和易于理解。这意味着您可以更快地配置服务器并更快地上线。相比之下,Apache的配置可能会更加复杂,需要更多的时间和精力。