Linux简单介绍(2)

四、软件管理机制

4.1 Linux软件管理介绍

        有一个很好的软件生态圈支持,才是一个优秀、值得广泛使用的操作系统平台。比如PC端的window操作系统、mac操作系统,手机端的IOS系统,Android系统等。在这些操作系统上安装软件,方便的不能再方便了。都有类似的一键安装,方便用户进行操作。

        当然,windows上的软件,五花八门,没有统一的妥善管理,漏洞就多。而手机端的操作系统,都有自己的应用商店来统一管理软件,通过审核的才会放入应用商店,相对来说,比较安全。

当然,大名鼎鼎的Linux操作系统,也有自己的软件生态,也有自己的软件管理方式。

目前在Linux操作系统上,软件管理方式最常见的有两种,分别是:

-RPM

        这个机制最早是由Red Hat这家公司开发出来的,后来实在很好用,因此很多distributions就使用这个机制来作为软件安装的管理方式。包括Fedora、CentOS、SuSE等知名的开发商。

-DPKG

        这个机制最早是由Debian Linux社群所开发出来, 通过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息,非常不错。只要是衍生自Debian的其他Lunix distributions大多使用了dpkg这个机制来管理软件的,包括B2D,ubuntu等。

        不论rpm,还是dpkg,这些机制在安装软件时,或多或少都会碰到软体依赖的问题,比如软件A的安装依赖于软件B和C,而B的安装依赖于软件D和E,这些依赖信息,软件开发商都已经在每一个软件中提供了一个文档并记录在内,安装时,会进行检查平台上是否存在依赖的软件环境。如果存在,可以安装成功,如果不存在,那么就会进行友好提示,并终止安装。那该如何解决这样的依赖问题呢?  

- 第一种方式:我们人工的一步一步的检测和安装所依赖的软件,直到依赖环境都存在。
- 第二种方式:就是使用一种自动管理机制,先获取依赖关系做成列表,查看平台是否已经存在所需要的环境,如果不存在,自动管理机制通过依赖关系,来获取所需要的软件,进行顺序安装,从而解决这样的问题。

        针对于自动管理机制的思想,目前Linux系统开发商都有提供了这样的【在线升级】机制,并提供了相应的软件仓库,只要有网络,你就可以安装开发商提供的任何软件。dpkg管理机制提供了APT在线升级机制,RPM则依开发商的不同,有Red hat系统的yum,SuSE系统的Yast Online Update(YOU)等  

distributions代表软件管理机制使用指令在线升级机制(指令)
Red Had/FedoraRPMrpm,rpmbuildYUM(yum)
Debian /UbuntuDPKGdpkgAPT(apt-get)

4.2 二进制安装

4.2.1 简介

        这样的软件包是已经将软件源码在不同的平台上进行事先编译,经过压缩打包的文件。 每一个安装包都有自己的平台。换一个不同的平台环境,失效。比较常用,优点:简单方便。 缺点:缺乏灵活性。

        二进制软件包提供了很多类型的打包方式,最常见的就是我们RPM格式的包,还有以“*.tar.gz*.tgz、*.bz2“等形式的二进制软件包,最后还有一个就是提供安装程序进行安装的二进制软件包。下面演示jdk的安装

4.2.2 案例演示:JDK的安装

步骤1)上传jdk的二进制安装包 jdk-8u221-linux-x64.tar.gz,比如上传到/root/下

步骤2)解压jdk安装包

[root@linux01 ~]# tar -zxvf ./jdk-8u221-linux-x64.tar.gz -C /usr/local

 步骤3)切换到/usr/local下并更名

[root@linux01 ~]# cd /usr/local
[root@linux01 local]# mv jdk1.8.0_221/  jdk

 步骤4)配置环境变量

环境变量的配置有三个位置可选,分别是以下三个位置

/etc/profile		:系统级别的环境变量配置文件    所有用户都可以使用
~/.bash_profile		:用户级别的环境变量配置文件    只对于一个用户好使
~/.bashrc			:用户级别的环境变量配置文件    只对于一个用户好使

        真实环境中,我们应该选择用户级别的环境变量,这样的好处是,即使配错了,我们可以使用root账号来帮助修改。如果是系统级别的,配错了的话,root账号也不好使了。自己想办法。很难。在学习期间,避免麻烦,直接配置系统级别的环境变量即可。

[root@linux01 ~]#vim /etc/profile
........省略...................
# JDK environment
JAVA_HOME=/usr/local/jdk
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME PATH            <==导出环境变量,使其称为环境变量小贴士:原有的PATH值拼在新值的后面

 步骤5)让环境变量生效(刷新环境变量)

[root@linux01 ~]# source /etc/profile

 步骤6)验证是否生效         

[root@linux01 ~]# java -version
[root@linux01 ~]# javac

扩展:二进制软件包的安装还有执行程序式的安装,只需要运行安装指令后,跟着提示进行下一步下一步的操作即可。类似于windows平台上的软件安装界面。

4.3 rpm机制安装

4.3.1 rpm安装原理

1. 下载好的rpm软件包里包含了软件程序,依赖关系文件,版本信息文件
2. 当启动安装操作时,会先根据依赖关系文件查找该平台上是否已经安装好了依赖的软件
3. 如果依赖的软件没有提前安装,则终止该软件的安装
4. 如果依赖的软件已经提前安装,则继续安装,直到成功。

参考如图: 

 注意:应用程序在使用rpm方式安装时,而该程序的核心文件会默认放置在下面的目录中。

目录说明
/etc一些配置文档存储的目录,例如 /etc/ssh
/usr/bin一些可执行文件的目录
/usr/lib一些程式使用的动态函数库
/usr/share/doc一些基本的程序使用手册和说明文档
/usr/share/man一些 man page 文档
/var/lib/rpm程序相关的资讯信息,即资料库

 注意:这里说明一下资料库,以后如果对软件升级,版本的比较信息就来源于这里,还有,我们可能会经常查询系统已经安装的程序,也是从这里进行查询的。

4.3.2 rpm指令的常用选项

 1)查询选项

]# rpm -qa                                        <==查询系统内已安裝程序
]# rpm -q [licdR] 【已安装的程序名】               <==查询系统内某个已安裝程序的信息 

选项参数:
-q :用于查询指定的程序是否已经安装 
-qa :列出所有已经安装在Linux系统下的程序名称
-qi :列出该程序的详细信息 ,如版本号,发行时间,安装时间等
-ql :列出该程序所有的文档与目录
-qc :列出该程序的所有配置文件 (通常是指在 /etc/ 底下的文件)
-qd :列出该程序的所有说明文档 (指与 man 有关的文件)
-qR :列出与该程序有关的依赖软件所含的文件 (Required 的意思)
-qf :找出指定文件属于哪一个已经安装的程序

案例测试:用python来测试
[root@linux01 ~]# rpm -qa  python

 2)安装和卸载选项

 基本语法:rpm  [-ivh]   软件包名

-i    :安装的含义
-v   :安装过程中显示详情
-h   :以进度条的形式显示安装进度
-e   :卸载参数

--nodeps :安装或卸载软件时,有依赖关系时,可以进行强制安装或卸载。有一定的危险性,安装后可以能造成软件无法正常使用!

4.3.3 案例演示:rpm安装mysql

步骤1)上传mysql相关的软件包,比如上传到/root下

mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

 步骤2)拆包

[root@linux01 ~]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar 
[root@linux01 ~]# llmysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-server-5.7.28-1.el7.x86_64.rpm
mysql-community-test-5.7.28-1.el7.x86_64.rpm小贴士: 其实我们是想安装mysql-community-server-5.7.28-1.el7.x86_64.rpm

 步骤3)安装mysql

1. 先检查是否安装了mariadb, 如果已经安装,就卸载掉
[root@linux01 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[root@linux01 ~]# rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps2. 安装mysql-common
[root@linux01 ~]# rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm3. 安装mysql-lib
[root@linux01 ~]# rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm4. 安装mysql-client
[root@linux01 ~]# rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm5. 安装mysql-server
[root@linux01 ~]# rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm--------------------------到此为止,rpm安装完毕 -----------------------mysql在linux中的服务项叫mysqld6. 启动mysql的服务项mysqld
[root@linux01 ~]# systemctl start mysqld
[root@linux01 ~]# systemctl status mysqld   并查看7. 查看mysql提供的默认密码,并复制,   注意,如果服务项启动失败,则不会产生mysqld.log文件
[root@linux01 ~]# cat /var/log/mysqld.log | grep password8. 登录mysql,并修改密码
[root@linux01 ~]# mysql -uroot -p'9Pe%mQVcs-#<'    回车即可
.... 进入后,修改密码
mysql> alter user root@'localhost' identified by '@Mmforu45';9. 如果想要远程连接该机器上的mysql server, 那么mysql server需要进行远程授权。 注意关闭linux的防火墙
mysql> grant all privileges on *.* to root@'%' identified by '@Mmforu45';然后可以在windows启动navicat 远程连接linux上的mysql了。

4.4 yum在线安装机制

4.4.1 yum安装原理介绍

在使用rpm机制的时候,我们最闹心的地方,可能就是软件依赖问题了。而YUM机制恰恰帮助我们解决了这一问题。YUM,是Yellow dog Updater, Modified 的简称。YUM会通过分析rpm软件包内的预设参数,制定软件依赖的解决方法,然后自动处理软件依赖的问题。这样,在安装、升级或者是卸载时,用户就不必头疼这个依赖问题了。 图示YUM在线升级得原理和过程:

YUM服务器:

 YUM客户端:

 安装流程

 

yum服务器:   存储了大量的现成的软件,并且维护着这些软件之间的依赖关系列表
安装流程:    机器在执行yum安装指令准备安装软件A时,会先向yum服务器发送请求,获取软件A的依赖关系列表,下载到本地,与本地的资料库做比较,如果本地的资料库缺少依赖关系中的某些软件,就会从yum服务器上获取所缺的依赖软件以及软件A,然后按照依赖顺序,开始安装。 

yum服务器的地址存储在/etc/yum.repo.d/CentOS-Base.repo文件中

小贴士:yum在线安装底层应用的还是RPM机制安装,只不过帮助管理依赖软件的安装而已  

4.4.2 YUM常用的查询功能

]#  yum list all                    <==列出yum源仓库里面的所有可用的安装包
]#  yum list installed                <==列出所有已经安装的安装包
]#  yum list available                <==列出没有安装的安装包 ####安装软件
]#  yum info [appName]                <==查看软件的信息
]#  yum search [keywords]            <==根据关键字查找到相关安装包软件的信息
]#  yum whatprovides [fileName]     <==查找包含指定文件的相关安装包 

4.4.3 YUM的安装/卸载功能

语法:yum [install | update| reinstall | remove ] [软件名称]

]#  yum install appname             <==安装指定的软件
]#  yum reinstall appname            <==重新安装指定的软件
]#  yum update  [appname]            <==升级指定软件,不指定软件时,升级整个系统的软件
]#  yum remove appname              <==卸装指定的软件 

4.4.4 案例演示:

以前安装过的:
yum -y install vim
yum -y install bzip2
yum -y install net-tools

现在:本地时间可能不准,那就需要和网络上的时间进行同步,那么可以使用ntpdate -u ntp1.aliyun.com进行同步。但是ntpdate指令不存在,需要安装。

yum -y install ntp  

说明: ntp这款软件依赖于ntpdate和autogen,  yum都会帮助提前下载并安装

4.5 源码安装

        由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache、tomcat、php等软件。开源软件基本都提供源码下载,源码安装的方式;

4.5.1 源码安装的优缺点

1)优点

1.用户可以自己定制软件功能,安装需要的模块,不需要的功能可以不用安装。
2.用户还可以自己选择安装路径,方便管理。
3.卸载软件也很方便,只需删除对应的安装目录即可
4.能最大程度和服务器平台融合效率稍微比其他方式高
5.没有windows所谓的注册表之说

2)缺点  

1.安装较为繁琐,需要自己配置
2.安装较为耗时,需要自己编译源码
3.安装较为容易出错出错也难以解决 

4.5.2 案例演示:安装Nginx

1) 下载源码包,并解压到你喜欢的位置

[root@linux01 ~]# tar -zxvf nginx-1.8.0.tar.gz  -C /usr/local

2)进入该软件的家里

[root@linux01 ~]# cd /usr/local/nginx-1.8.0

3)执行配置信息

注意:需要c语言环境提前安装好

[root@linux01 ~]# yum -y install gcc-c++
[root@linux01 ~]# yum install -y pcre pcre-devel
[root@linux01 ~]# yum install -y zlib zlib-devel
[root@linux01 ~]# yum install -y openssl openssl-devel

安装好环境后,在配置nginx的属性信息

[root@linux01 nginx-1.8.0]# ./configure \--prefix=/usr/local/nginx-1.8.0 \--pid-path=/usr/local/nginx-1.8.0/tmp/nginx.pid 

4)在家里执行编译指令

[root@linux01 nginx-1.8.0]# make

5)在家里执行安装指令

[root@linux01 nginx-1.8.0]# make install

如果出现了bin或者sbin目录,则表示安装成功。

6)清空缓存

[root@linux01 nginx-1.8.0]# make clean

五、Linux的其他常用操作

5.1 虚拟机的克隆

步骤1)先克隆机器

先关掉要克隆的机器,然后
右键点击机器名称--->管理-->克隆-->虚拟机的当前状态-->创建完整克隆-->虚拟机名称--完成

步骤2)修改IP和主机名以及映射文件,然后重启  

[root@linux01 ~]# hostnamectl set-hostname linux02
[root@linux01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@linux01 ~]# vim /etc/hosts
[root@linux01 ~]# reboot

步骤3)测试是否可以通信

[root@linux01 ~]# ping linux02
[root@linux02 ~]# ping linux01

5.2 SCP指令

作用:用于远程拷贝文件
语法:  scp [-r] filename....  远程用户名@远程机器IP:pathname 

案例演示:

[root@linux01 ~]# echo "gaoyuanyuan is my friend" > nvshen.txt
​
eg1:将nvshen.txt文件以michael的身份拷贝到linux02机器上的家里
[root@linux01 ~]# scp nvshen.txt michael@linux02:/home/michael/
​
eg2:  将nvshen.txt文件以root身份拷贝到linux02机器上的家里
[root@linux01 ~]# scp nvshen.txt root@linux02:~/
​
eg3:  因为linux02的root用户和当前机器的用户都是root。因此可以简写
[root@linux01 ~]# scp nvshen.txt linux02:~/
​
eg4:  如果拷贝的位置和当前位置一致,可以使用$PWD
[root@linux01 ~]# scp nvshen.txt linux02:$PWD

5.3 免密登录认证(重要)

5.3.1 准备工作

        假如机器A想要免密登录机器B,那么需要提前在机器A上生成一对秘钥文件:公钥和私钥文件而且机器A的公钥文件里的公钥信息还需要拷贝到机器B的连接用户的主目录下的隐藏目录.ssh/下的authorized_keys里

1.先在机器A上生成秘钥

[root@linux01 ~]#  ssh-keygen -t rsa    一路回车下去
​
说明:最后会在当前用户的家里的.ssh隐藏目录下产生两个文件id_rsa:   私钥文件id_rsa.pub  : 公钥文件

2. 将机器A的公钥信息,拷贝到机器B的相关用户的家里的隐藏目录.ssh下的authorized_keys里

注意:先确认机器B里是否有.ssh目录,如果没有需要提前创建在机器B上,执行 ssh localhost, 就会产生.ssh目录
[root@linux01 .ssh]# scp id_rsa.pub linux02:~/.ssh/authorized_keys       

5.3.2 免密登录认证的原理流程

 认证原理(步骤):参考图中的1,2,3,4,5,6,7

5.3.3 准备工作的简化方式

1. 生成秘钥
[root@linux01 ~]#  ssh-keygen -t rsa    一路回车下去
2. 将公钥拷贝到远程机器上
[root@linux01 ~]#  ssh-copy-id -i linux02
ssh-copy-id的作用:将公钥文件拷贝到远程机器的.ssh隐藏目录下,并更名成authorized_keys文件

问题:集群可能有多台机器,都要进行免密登录认证,如果每个机器都有自己的一套秘钥,拷贝赋值非常麻烦,所以这些机器可以用同一套秘钥。

1. 生成秘钥
[root@linux01 ~]#  ssh-keygen -t rsa    一路回车下去
2. 对自己进行免密登录认证
[root@linux01 ~]#  ssh-copy-id -i linux01
3. 其他机器如果想要这一套钥匙,则需要拷贝id_rsa,id_rsa.pub,authorized_keys到相应的目录下
[root@linux01 ~]#  scp ~/.ssh/{id*,authorized_keys} linux02:~/.ssh/

5.4 定时器crontab(熟悉)

5.4.1 crontab的简介

        - 在Linux中,周期性的执行任务一般由cron这个守护进程来处理,它是一个linux下 的定时任务执行工具,可以在无需人工干预的情况下运行作业。  

        [ps -ef|grep cron]

        - cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

        - cron的配置文件称为“crontab”,是“cron table”的简写。

5.4.2 cron服务

systemctl start crond   //临时启动服务
systemctl stop crond     //临时关闭服务
systemctl restart crond //重启服务
systemctl disable crond //禁用启动项
systemctl enable crond   //启动开启启动项
systemctl stutas crond  //查看服务状态 

5.4.3 cron的配置文件位置:

1. /var/spool/cron/ 
2. 说明这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。

5.4.4 crontab命令格式

作用:用于生成cron进程所需要的crontab文件 
格式:crontab  [-u username] -e
​
-u:用于指定其他用户的定时任务设置

5.4.5 查看定时器的格式

[root@linux01 cron]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
​
# For details see man 4 crontabs
​
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
​
​
即:
格式如下:
*   *   *   *   *   user-name command to be executed
共有六部分组成,分别表示:
分   时   日   月   星期  要运行的命令
解析:minute:     一小时中的哪一分钟 [0~59] hour:       一天中的哪个小时 [0~23] day:        一月中的哪一天 [1~31] month:      一年中的哪一月 [1~12] week:       一周中的哪一天 [0~6] 0表示星期天 commands:   执行的命令
​
书写注意事项 1.全都不能为空,必须填入,不知道的值使用通配符*表示任何时间 2.每个时间字段都可以指定多个值,不连续的值用,间隔,连续的值用-间隔。 3.命令应该给出绝对路径 4.用户必须具有运行所对应的命令或程序的权限5. */num   表示频率

5.4.6 常用案例演示

1. 每天早上6点 0 6 * * * echo "Good morning." >> /tmp/test.txt //注意 如果不进行追加 ,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
2. 每两个小时 0 */2 * * * echo "Have a break now." >> /tmp/test.txt  
3. 晚上11点到早上8点之间每两个小时和早上八点 0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt
4. 周一到周五下午,5点半提醒学生15分钟后关机30 17 * * 1-5 /usr/bin/wall < /etc/issue45 17 * * 1-5 /sbin/shutdown -h now
5. 学校的计划任务, 12点到14点,每两分钟,检查apache服务是否启动*/2 12-14 * 3-6,9-12 1-5
6. 每月1、10、22日的4:45运行/apps/bin目录下的backup.sh45 4 1,10,22 * * /apps/bin/backup.sh
7. 每周六、周日的 1 : 10运行一个find命令10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
8. 在每天 18:00至23 :00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh0,30 18-23 * * * /apps/bin/dbcheck.sh
9.每星期六的 11:00 pm运行/apps/bin目录下的qtrend.sh0 23 * * 6 /apps/bin/qtrend.sh

5.5 时间同步服务器的搭建

5.5.1 时间同步

在生产环境中的集群里,每台机器都有自己的时间,有的时候机器可能宕机,恢复后,时间不准确,也就是和其他机器时间不一致(不同步)。有些在集群上运行的作业对整个集群上所有机器的时间是有要求的,比如hbase集群要求所有机器的时间差不能超出30s。因此需要同步时间

5.5.2 如何同步时间

使用ntpdate指令进行同步时间,前提是只能同步时间服务器的时间。

用法: ntpdate -u timeserver
​
网络上的常用时间服务器:
阿里云时间服务器:ntp1.aliyun.com
微软时间服务器:time.windows.com
​
如果ntpdate命令不存在,需要安装ntpdate.x86_64
[root@linux01 ~]# yum -y install ntpdate.x86_64

如果生产环境中的集群没有连接外网,那么则需要搭建一个局域网的时间服务器

5.5.3 搭建局域网时间服务器

1. 选择集群中的某一台机器linux01作为时间服务器
2. 保证这台服务器安装了ntp.x86_64。[root@linux01 ~]# yum list installed | grep ntp    查询[root@linux01 ~]# yum -y install ntp.x86_64
3. 保证ntpd 服务运行......(开机自启动)[root@linux01 ~]# systemctl start ntpd[root@linux01 ~]# systemctl enable ntpd[root@linux01 ~]# systemctl status ntpd
4. 配置相应文件:vi /etc/ntp.conf......省略....restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap #添加集群中的网络段位server 127.127.1.0    # 固定写法 注意:-- 需要重启机器,或者重启服务 -- 服务器的防火墙要关闭
​
5. 其他机器要保证安装ntpdate.x86_64
6. 在其他机器上进行测试,是否可以同步ntpdate -u linux01
7. 其他机器要使用root定义定时器*/1 * * * * /usr/sbin/ntpdate -u linux01

5.6 YUM源的更换

本地的yum信息在/etc/yum.repo.d/下。

[root@linux01 ~]# cd /etc/yum.repos.d/
[root@linux01 yum.repos.d]# ll
总用量 32
-rw-r--r--. 1 root root 1664 9月   5 2019 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 9月   5 2019 CentOS-CR.repo
-rw-r--r--. 1 root root  649 9月   5 2019 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 9月   5 2019 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 9月   5 2019 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 9月   5 2019 CentOS-Sources.repo
-rw-r--r--. 1 root root 6639 9月   5 2019 CentOS-Vault.repo

5.6.1 网络yum源的更换

由于CentOS系统默认的网络YUM源的地址是国外的,网速相对较慢,因此可以更换成国内的YUM源,比如阿里云、网易的等

这里选择更换成阿里云的yum源

步骤1)确保wget指令或者使curl指令存在

如果不在,就安装以下
yum -y install wget* curl*

步骤2)备份原有的yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

步骤3)下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
​
或者是:
​
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

步骤4)清理原有的缓存

yum clean all

步骤5)重新构建缓存

yum makecache

5.6.2 本地yum源的搭建

1.确保虚拟机连接了DVD.iso影像文件,开机后,此文件位于/dev/cdrom
​
2.创建挂载目录/mnt/dvd
[root@scott ~]# mkdir /mnt/dvd
​
3.将映像文件挂载到/mnt/dvd下, 软件都在Packages目录下
[root@scott ~]# cd /mnt/dvd
[root@scott dvd]# mount -t iso9660  /dev/cdrom -o loop /mnt/dvd
[root@scott dvd]# ll
​
-t:用来指定文件类型,   光盘的类型是:iso9660
-o: 用来指定挂载方式,  loop 用来把一个文件当成硬盘分区挂接上系统 
​
4.将原有的yum源设置为失效状态(修改后缀即可)
[root@scott Packages]# cd /etc/yum.repos.d/
[root@scott yum.repos.d]# rename .repo .repo.bak  ./*.repo
​
解析:rename  [要修改的扩展名] [修改后的扩展名] [源文件]
​
5.创建local.repo文件,配置本地yum源信息
[root@scott yum.repos.d]# vi local.repo
​
[local]       <---  资源库的唯一标识 
name=local    <---  资源库的名字
baseurl=file:///mnt/dvd             <-----------指向本地路径
gpgcheck=0                          <-----------0表示禁止校验,1表示开启校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    <--- CentOS yum源的秘钥文件
enabled=1                           <-----------0表示禁用本资源库,1表示开启本资源库
​
6.清空yum源缓存
[root@scott yum.repos.d]# yum clean all
​
7.查询yum源软件列表
[root@scott yum.repos.d]# yum list all

注意:重启机器后,需要重写挂载,也就是重新执行mount指令。

5.6.3 局域网yum源的搭建

步骤1)选择局域网内的一台机器作为YUM源服务器,安装HTTP服务进程

[root@linux01 ~]# systemctl status httpd
[root@scott yum.repos.d]# yum -y install httpd.x86_64

步骤2)启动httpd服务项

[root@linux01 ~]# systemctl start httpd
[root@linux01 ~]# systemctl enable httpd
[root@linux01 ~]# systemctl status httpd

步骤3)配置HTTP服务管理YUM源目录

# HTTP服务进程管理的目录是/var/www/html
​
#在管理目录下,创建软连接,指向YUM源目录
]# ln -s /mnt/dvd /var/www/html/repo        <===都是用绝对路径,保没错

步骤4)其他机器只需要把自己本地YUM源的路径指向局域网YUM源地址即可

[root@linux02 yum.repos.d]# rename .repo .repo.bak ./*.repo
[root@linux02 yum.repos.d]# vi local.repo               #编辑文件,后缀必须是.repo
​
[local]                                 <===YUM源仓库名
name=localrepo                          <===昵称
baseurl=http://局域网IP/repo               <===局域网YUM仓库位置
enabled=1                               <===1 表示启用,0表示禁用
gpgcheck=1                              <===1 表示 校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7     <===校验钥匙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/409870.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang测试func TestXX(t *testing.T)的使用

一般Golang中的测试代码都以xxx_test.go的样式&#xff0c;在命名测试函数的时候以Testxx开头。 以下是我写的一个单元&#xff1a; package testsimport "strings"func Split(s, sep string) (res []string) {i : strings.Index(s, sep)for i > -1 {res append…

Furion+SqlSugar环境配置与项目创建

一、速通一图流 二、安装 .NET 8 1. 下载与安装 .NET 8 SDK 访问 .NET 下载页面 并下载最新版本的 .NET 8 SDK。根据操作系统选择适合的安装包&#xff08;如 Windows、macOS 或 Linux&#xff09;&#xff0c;并按照提示完成安装。 2. 验证安装 打开终端或命令提示符&…

探索Python数据世界的秘密武器:xlrd库

文章目录 探索Python数据世界的秘密武器&#xff1a;xlrd库背景&#xff1a;为什么选择xlrd&#xff1f;库简介&#xff1a;xlrd是什么&#xff1f;安装指南&#xff1a;如何安装xlrd&#xff1f;快速上手&#xff1a;常用函数介绍实战演练&#xff1a;应用场景常见问题与解决方…

从web.xml动态读取sunspringmvc.xml文件

文章目录 1.问题分析1.SunWebApplicationContext.java 中sunspringmvc.xml是写死的2.但是web.xml已经配置了init-param&#xff0c;所以应该是可以读取的 2.具体实现1.SunDispatcherServlet.java 得到ServletConfig传递给Spring容器完成初始化2.SunWebApplicationContext.java …

ELK

ELK elk介绍前期准备1、修改主机名2、配置/ect/hosts3、检查防火墙selinux是否关闭4、时钟同步 elasticsearch部署介绍1、安装JAVA包2、解压安装包&#xff0c;修改配置文件 elasticsearch集群部署elaticsearch基础API操作1、RestFul API 格式2、查看节点信息3、查看索引信息和…

蓝牙芯片 vs. 蓝牙模块:如何为蓝牙方案做出最佳选择?

不论您是设计全新的低功耗蓝牙产品&#xff0c;还是升级现有产品&#xff0c;开发者都面临的一个关键的选择&#xff1a;是采用蓝牙芯片还是蓝牙模块呢&#xff1f;作为蓝牙技术领域的资深专家&#xff0c;信驰达将从蓝牙芯片与蓝牙模块的各自优缺点进行分析&#xff0c;帮助您…

使用AWS的EC2服务如何降低成本

在现代企业中&#xff0c;云计算已经成为推动业务创新和发展的重要工具。亚马逊云服务&#xff08;AWS&#xff09;的弹性计算云&#xff08;EC2&#xff09;提供了灵活的计算能力&#xff0c;企业可以根据需求快速部署和管理应用。然而&#xff0c;如何在使用EC2服务的过程中有…

机器学习:SVM的代码实现

目录 前言 一、完整代码 二、输出结果 三、实现步骤解析 1.读取数据 2.创建模型并训练 3.可视化SVM结果 总结 前言 支持向量机&#xff08;SVM&#xff0c;Support Vector Machine&#xff09;是一种用于分类和回归的监督学习算法。它的核心思想是通过在特征空间中找到…

记录|Visual Studio中的Git上传下载使用

目录 前言一、前提准备Step1 仓库准备Step2. 本地仓库和远程仓库绑定当前效果展示 二、下载更新内容到本地仓库情形Step1. 下载 三、更新内容&#xff0c;上传文件到远程仓库情形Step1. 下载Step2. 上传当前效果展示 更新时间 前言 这部分是使用过程中的经验 一、前提准备 St…

SpringBoot集成kafka-监听器手动确认接收消息(主要为了保证业务完成后再确认接收)

SpringBoot集成kafka-监听器手动确认接收消息 1、说明2、示例2.1、application.yml2.2、消费者2.3、生产者2.4、测试类2.5、测试 1、说明 kafak中默认情况下是自动确认消息接收的&#xff0c;也就是说先启动消费者监听程序&#xff0c;再启动生产者发送消息&#xff0c;此时消…

【Java并发】变量的内存存储、线程安全分析

要理解原因&#xff0c;首先要清楚局部变量是什么&#xff1f;局部变量的存储方式是什么&#xff1f; 局部变量&#xff0c;从名字上就可以知道&#xff0c;它是只在特定作用域内可见并且只能在该作用域内使用的变量。也就意味着不同作用域的局部变量是不共享的。在多线程环境下…

HTML静态网页成品作业(HTML+CSS+JS)——迪士尼公主介绍(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代码…

ICML 2024 顶级论文:机器学习有什么新进展?

在本周的文章中&#xff0c;我打算探讨在国际机器学习大会 ICML 上发表的论文&#xff0c;该大会目前于 2024 年 7 月 21 日至 27 日在奥地利首都维也纳举行。与其他顶级人工智能会议一样&#xff0c;每年都会有数千篇论文提交&#xff0c;但录取率相对较低&#xff08;过去三年…

机械学习—零基础学习日志(如何理解概率论5)

二维随机变量 这里的其实就是边缘分布 联合分布 当结合来看&#xff0c;小明和小红的成绩。可以发现&#xff0c;小明和小红是独立事件&#xff0c;可以放到一个模块内部分析。 而当所有的情况考虑&#xff0c;单独小红取得某个成绩的概率&#xff0c;都可以计算出来。 例如…

攻防世界 1000次点击

做题笔记。 下载解压 查壳。 32位ida打开。 查找字符串。 winmain函数写的&#xff0c;程序运行如下&#xff1a; 一开始思路是想着分析找到关键代码然后去od进行调试。 后来&#xff0c;额&#xff0c;不想看代码了。吐了。 尝试去字符串搜索flag样式&#xff0c;确实一发现…

【C/C++】Sleep()函数详解

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Visual Studio 2022 / Xshell (操作系统:CentOS 7.9 64位) 目录 &#x1f4cc;Windows系统下Sleep()函数简介 &#x1f38f;函数功能 &#x1f38f;函数参数 &#x1f579;️DWORD milliseconds &…

Linux云计算 |【第二阶段】SHELL-DAY2

主要内容&#xff1a; 条件测试&#xff08;字符串比较、整数比较、文件状态&#xff09;、IF选择结构&#xff08;单分支、双分支、多分支&#xff09;、For循环结构、While循环结构 一、表达式比较评估 test 命令是 Unix 和 Linux 系统中用于评估条件表达式的命令。它通常用…

致远OA OCR票据识别组件

OCR票据识别 技术支持 技术大佬支持本文档 使用范围 任何票种信息&#xff0c;只要需要对接到oa底表中&#xff0c;就能够实现各种票种&#xff0c;各种字段的对接&#xff0c;包括票据识别&#xff0c;发票核验&#xff0c;适配各种票据 使用介绍 1 配置每种发票的ocr设…

yup 使用 2 - 获取默认值,循环依赖,超大数字验证,本地化

yup 使用 2 - 获取默认值&#xff0c;循环依赖&#xff0c;超大数字验证&#xff0c;本地化 上一篇的使用在这里&#xff1a;yup 基础使用以及 jest 测试&#xff0c;这篇讲的是比较基础的东西&#xff0c; 获取默认值 之前用的都是 cast({})&#xff0c;然后如果有些值是必…

叉车(工业车辆)安全管理系统,云端监管人车信息运营情况方案

近年来&#xff0c;国家和各地政府相继出台了多项政策法规&#xff0c;从政策层面推行叉车智慧监管&#xff0c;加大叉车安全监管力度。同时鼓励各地结合实际&#xff0c;积极探索智慧叉车建设&#xff0c;实现作业人员资格认证、车辆状态认证、安全操作提醒、行驶轨迹监控等&a…