week04
一、知识回顾
第七天
七、文本处理sed&软件管理
1、文本处理三剑客之sed的高级用法
2、软件运行和编译过程及库调用机制
3、rpm包管理器常用用法
4、yum实现和配置文件
5、yum的私有仓库和内核升级
6、源码编译安装软件
7、源码编译安装软件实战
第八天
八、软件管理2
1、ubunut软件管理
2、磁盘类型和结构
3、MBR和GPT分区类型
4、文件系统管理
5、挂载管理和swap空间管理
6、移动设备和raid初步
7、raid工作原理和特性
二、第四周TEST
1、自建yum仓库,分别为网络源和本地源
rpm包安装有直接的rpm包安装或者现在为了解决rpm包安装时的依赖问题的yum(dnf)安装。yum安装本质上还是底层调用rpm包安装。
接下来为第一种情况来配置yum源,在yum安装软件包时,yum时根据系统的yum源的配置来安装软件的。yum源所指是本地的文件就是本地源,指向其他服务器就是网络源。
在yum安装软件时就会去yum所指的文件路径中去寻找软件,找不到就会报错。
yum源配置文件主要有2个。
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/.repo 这里面的.repo文件。为仓库的指向提供配置
## yum仓库
本地:将本地的一个目录做成yum仓库,只有当前系统可以
网络:通过网络将服务器上的一个目录作为yum仓库,网络中的全部主机都可以用
使用yum仓库的方式,就是修改yum的配置文件
yum的配置文件
主:/etc/yum.conf
子:/etc/yum.repos.d/*.repo
/etc/yum.conf文件
cachedir=/var/cache/yum/![basearch/](https://math.jianshu.com/math?formula=basearch%2F)releasever
指定缓存文件的保存位置,默认:/var/cache/yum/x86_64/7/
keepcache=0
指定是否保留缓存文件
用yum安装软件过程中会从yum仓库下载并缓存多个资源
1)会将yum仓库的元数据文件缓存到配置文件所指定的路径中
2)会将要安装的软件及其依赖的软件一并缓存到配置文件指定的目录中
## **yum配置文件的构成**
[localRpm] <<< 指定yum仓库的id,可以随便写,但是中间不能有空格
name=xxx <<< 指定yum仓库的名称,可以随便写
enabled=0|1 <<< 指定是否使用该yum仓库,0表示不使用;1表示使用
gpgcheck=0|1 <<< 指定是否对rpm包做完整性和来源合法性验证,0表示不做验证;1表示必须做验证
gpgkey= <<< 指定公钥文件(如果gpgcheck=1,那么该项不能省略)
baseurl= <<< 指定yum仓库的url
[repoid]
name=reponame
enabled=1
gpgcheck=0 | 1 #0表示不校验 、 1表示校验
baseurl=file:// | http://
gpgkey=file://
## **yum仓库的url的表示方式**
注意:在指定yum仓库的时候,其实不是指向rpm包的目录,而是执行repodata所在目录本地yum仓库file://
例子:比如我的yum仓库 /myrpm,此时yum仓库的表示方式就是file:///myrpm
网络yum仓库
http://
## **创建本地yum仓库**
使用光盘中的rpm包作为yum仓库
第一步:挂载光盘
mount /dev/cdrom /media
第二步:备份yum自带的配置文件
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
第三步:创建yum的配置文件,使用光盘作为yum仓库
例子1:编写本地yum文件–未开校验
[ken]
name=ken1
enabled=1
gpgcheck=0
baseurl=file:///mnt
例子2:编写本地yum文件–开启校验
[ken]
name=ken1
enabled=1
gpgcheck=1
baseurl=file:///mnt
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
第四步:执行yum命令检测结果
yum clean all <<< 清空yum缓存的全部数据
yum repolist <<< 检查yum仓库中有多少个可用的rpm包
## **yum使用**
1. 安装软件
yum -y install 软件1 软件2 软件3 ….
2. 卸载软件
yum -y remove 软件1 软件2 软件3 ….
3. 管理包组
grouplist:查看系统中的全部的包组
groupinfo 包组名:查看指定包组的信息(包组的作用、包含的软件)
groupinstall 包组名:安装指定的包组
groupremove 包组名:卸载指定的包组
CentOS7: 命令行界面升级为图形化界面
这时,我们可以通过命令 startx 进入图形界面,第一次进入会比较慢,请耐心等待。(可能需要重启,命令为reboot)
4. 管理yum的缓存数据
clean [ packages | metadata | all ]
all:清除所有数据
packages:仅仅清除rpm包
metadata:仅仅清理缓存元数据
[root@ken ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: ken
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
查看yum源
[root@ken ~]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
ken | 3.6 kB 00:00:00
(1/2): ken/group_gz | 166 kB 00:00:00
(2/2): ken/primary_db | 3.1 MB 00:00:00
repo id repo name status
ken ken1 3,971
## **制作一个网络yum源**
思路:在网络上准备一个主机,在其中安装一个web服务器软件(比如apache),然后创建一个目录,在这个目录中准备上yum仓库的全部资源,如果用户可以通过网络访问到该主机的这个目录,那么这个目录就成为网络yum仓
实现过程
第一步:配置yum源主机
1)安装配置apache
略
2)配置yum仓库相关资源
1. 创建一个目录,作为存储yum资源的目录
mkdir /usr/local/apache/htdocs/mysource
2. 挂载光盘
mount /dev/cdrom /mnt
3. 将光盘中的资源复制到前面所创建的目录下
cp /mnt/* /usr/local/apache/htdocs/mysource -rvf
4. 用浏览器访问一下yum仓库,检查是否可以看到相关文件
http://ip/mysource
第二步:配置客户端主机
修改yum配置文件
1)备份原有的配置文件
mkdir bak
mv *.repo bak
vim a.repo
[]
name
enabled=
gpgcheck=
baseurl=[http://ip/mysource](https://links.jianshu.com/go?to=http%3A%2F%2Fip%2Fmysource)
2)测试一下
### yum repolist
实例演示网络yum源–配置epel源
第一步:创建本地yum文件
[root@ken yum.repos.d]# vim net.repo
[net]
name=aliyun
enabled=1
gpgcheck=0
baseurl=[https://mirrors.aliyun.com/epel/7/x86_64/](https://links.jianshu.com/go?to=https%3A%2F%2Fmirrors.aliyun.com%2Fepel%2F7%2Fx86_64%2F)
第二步:清空缓存
[root@ken yum.repos.d]# yum clean all
第三步:查看包
[root@ken yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
ken | 3.6 kB 00:00:00
net | 4.7 kB 00:00:00
(1/5): ken/group_gz | 166 kB 00:00:00
(2/5): ken/primary_db | 3.1 MB 00:00:00
(3/5): net/group_gz | 88 kB 00:00:01
(4/5): net/updateinfo | 1.0 MB 00:00:03
(5/5): net/primary_db | 6.7 MB 00:00:27
repo id repo name status
ken ken1 3,971
net aliyun 13,190
repolist: 17,161
第四步:下载redis
[root@ken yum.repos.d]# yum install redis -y
第五步:验证redis是否下载成功
[root@ken yum.repos.d]# systemctl restart redis
[root@ken yum.repos.d]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> set name ken
OK
127.0.0.1:6379> get name
“ken”
0
2、编译安装http2.4,实现可以正常访问,并将编译步骤和结果提交。
源编译的特点:
定制化操作,官方没有给出指定rpm包。版本有特别操作,定制化功能。
第一步:编译前准备(下载源包,安装依赖环境)
##安装依赖环境
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
##下载源码包并解压
[root@centos8 ~]#wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.46.tar.bz2
[root@centos8 ~]#tar xvf httpd-2.4.46.tar.bz2 -C /usr/local/src
[root@centos8 ~]#cd /usr/local/src/httpd-2.4.43/
第二步:./configure 通过选项传递参数,指定安装路径、启用特性等;执行时会参考用户的指定以及Makefile.in文件生成Makefile
[root@centos8 httpd-2.4.46]#./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl
//指定编译位置,系统文件路径,
第三步: make 读取makefile,会检测依赖的环境,进行构建应用程序。第四步:make install 复制文件到相应路径
编译并安装
[root@centos8 httpd-2.4.46]#make -j 4 && make install
第五步:配置环境
[root@centos8 ~]#echo 'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
[root@centos8 ~]#. /etc/profile.d/httpd.sh
运行
[root@centos8 ~]#apachectl start
3、利用sed 取出ifconfig命令中本机的IPv4地址
ifconfig eth0 | sed -nr '2s/.* ([0-9.]+) net.*/\1/p'
4、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed -nr -i '/' /etc/fstab
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
echo /etc/fstab |sed -r 's#(/.*/)(.*)#\1 \2#'
sed 分隔符的知识:s / / / :查找替换,支持使用别的分隔符,s@ @ @,s # # # 这样的。
替换的标记 :g :行内全局替换p :显示替换成功的行 w /path/tosomefile :将替换成功的行保存至文件中。
6、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
7、列出ubuntu软件管理工具apt的一些用法(自由总结)
apt install 安装软件
apt remove 删除软件
apt purge 完全卸载软件
apt list 列出包含条件的包(已安装,可升级)
apt-file 找到指定程序所需要的包 同 yum provide
apt-cache 应用缓存
apt update 刷新存储库索引
apt upgrade 升级到最新版本
apt show 显示安装细节
apt search 搜索应用程序
8、在/etc/passwd每一行行首增加#号
sed -i.bak 's/^/#/' /etc/passwd
42 #avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
43 #postfix:x:89:89::/var/spool/postfix:/sbin/nologin
44 #sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
45 #tcpdump:x:72:72::/:/sbin/nologin
46 #oprofile:x:16:16:Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
47 #liusuo:x:1000:1000:liu:/home/liusuo:/bin/bash
48 #mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
49 #test:x:1001:1001::/home/test:/bin/bash
50 #user1:x:1002:1002::/home/user1:/bin/bash
51 #user2:x:1003:1003::/home/user2:/bin/bash
52 #user3:x:1004:1004::/home/user3:/bin/bash
53 #slack:x:1005:1007::/home/slack:/bin/bash
54 #mageia:x:1100:1100::/home/linux:/bin/bash
55 #archlinux:x:1101:1101::/userss/archlinux:/bin/bash
root@cent7-55.6$ sed = passwd | sed 'N;s/\n/ /'
=:加行号,但是默认a,i,= 都是以行位单位,自动换行,所以需要再次替换。