马哥教育74期Linux云计算SRE-第03周作业
N74072-北京-岳帅
1. 尝试基于gcc命令说明 c语言编译过程。
答:C语言的程序编译主要经过四个过程:C程序源代码-->预处理-->编译-->汇编-->链接
预处理:将所有的#define删除,并且展开所有的宏定义;处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等;处理#include预编译指令,将被包含的文件插入到该预编译指令的位置;删除所有注释"//"和"/**/";添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号;保留所有的#pragma编译指令,因为编译器需要使用它们
编译:编译过程就是把预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后,最后生成向相应的汇编代码
汇编:汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可
链接:通过调用链接器id来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可执行文件
2. 总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? yum/dnf/apt
答:rpm包管理:安装不自动解决依赖关系,比较麻烦,所以主推荐使用查询功能
CentOS使用yum,dnf解决rpm的包依赖关系
yum:Yellowdog Update Modifier,rpm包管理器的前端程序,通用性强,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,CentOS8用dnf代替了yum,不过保留了和yum的兼容性,配置也是通用的;yum服务器存放rpm包和相关包的元数据库,yum客户端访问yum服务器进行安装或查询等
dnf:Fedora18+rpm包管理器前端管理工具,CentOS8版代替yum
apt:Advanced Packaging Tool,Ubuntu系统使用,deb包管理器前端工具,功能强大的软件管理工具,甚至可升级整个Ubuntu的系统,基于客户/服务器架构,类似于yum
3. 总结程序包获取途径,以及rpm, yum, apt命令选项示例。
答:软件包需要事先将源码进行编译后打包形成,获取包的途径如下:
系统发版的光盘或官方网站
第三方组织提供
软件项目官方站点
搜索引擎
rpm选项示例:-ivh安装
-e 卸载
-q 包名
-qa 列出所有安装好的包
-ql 包名,列出此包包括的文件列表
-qc 包名,只列出此包中的配置文件
-qi 包名,包的说明:版本,安装时间,发行者,功能
-qf 文件名 查询此文件来自于哪个包
yum选项示例:yum install 安装
yum remove 卸载
yum list 列出所有的包
yum info 显示指定包的详细信息
yum provides 文件名路径 没有安装好的文件来自于哪个包
yum history 历史安装信息
yum -y install --downloadonly --downloaddir=/data/httpd httpd 只下载httpd不安装 文件夹自动生成 yum -y install /data/httpd/*.rpm安装
apt选项示例:apt install 安装
apt remove 卸载
apt purge 卸载软件包及配置文件
apt autoremove 自动删除不需要的包
apt search 搜索应用程序
4. 简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
答:yum/dnf是基于C/S模式
yum服务器存放rpm包和相关包的元数据
yum客户端访问yum服务器进行安装或查询等
yum实现过程:
现在yum服务器上创建yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
[root@rocky ~]# cd /etc/yum.repos.d/
[root@rocky yum.repos.d]# vim test.repo
[baseOS]
name=baseos
baseurl=https://mirror.nju.edu.cn/rocky/8/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[AppStream]
name=AppStream
baseurl=https://mirror.nju.edu.cn/rocky/8/AppStream/x86_64/os/
enabled=1
gpgcheck=0
[epel]
name=epel repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
enabled=1
gpgcheck=0
[root@rocky yum.repos.d]# yum repolist
repo id repo name
AppStream AppStream
appstream Rocky Linux 8 - AppStream
baseOS baseos
baseos Rocky Linux 8 - BaseOS
epel epel repo
extras Rocky Linux 8 - Extras
[root@rocky yum.repos.d]# yum -y install httpd
[root@rocky yum.repos.d]# systemctl enable --now httpd
root@rocky yum.repos.d]# cd /var/www/html
[root@rocky html]# vim index.html
<h1> welcome </h1>
[root@rocky yum.repos.d]# ip a

[root@rocky html]# dnf reposync --repoid=epel --download-metadata -p /var/www/html/

[root@rocky html]# dnf reposync --repoid=baseos --download-metadata -p /var/www/html/


5. 总结系统安装之后的常用初始化步骤。rocky/ubuntu
#关闭SELinux
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
#关闭防火墙
systemctl disable --now firewalld
#支持光盘,/misc/cd对应就是光盘内容
yum -y install autofs
systemctl enable --now autofs
#修改网卡名称
sed -ri '/GRUB_CMDLINE_LINUX=/s#(.*)"$#\1 IFNAMES=0"#' /etc/default/grub
grub2 -mkconfig -o /boot/grub2/grub.cfg ;reboot
#配置yum仓库
系统源,EPEL源
#最小化安装系统后,安装常用软件
yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages -y
#Ubuntu开启root远程登录功能
sudo -i
passwd root
sed -i '/PermitRootLogin/c PermitRootLogin yes' /etc/ssh/sshd_config
systemctl restart sshd
7. 总结开放系统互联OSI模型,每层作用及对应的协议
答:第1层 物理层(Physical Layer)在局部局域网上传送数据帧,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚,电压,线缆规范,集线器,中继器,主机接口卡等
第2层 数据链路层(Data Link Layer)负责网络寻址,错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框。数据链表头是包含了物理地址和错误侦测及改错的方法。数据链表尾是一串指示数据包末端的字符串。例如以太网,无线局域网和通用分组无线服务等。分为两个子层:逻辑链路控制子层和介质访问控制子层
第3层 网络层(Network Layer)决定数据的路径选择和转寄,将网络表头加至数据包,已形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等
第4层 传输层(Transport Layer)把传输表头加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等
第5层 会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接
第6层 表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式
第7层 应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如:HTTP ,HTTPS,FTP,TELNET,SSH,SMTP,POP3,MYSQL等

浙公网安备 33010602011771号