实验目的

了解yum的原理及配置

学习软件的更新与安装

学习源代码编译安装

实验原理

1.编译安装
  前面我们讲到了安装软件的方式,因为linux是开放源码的,我们可以直接获得源码,自己编译安装。例如:新建一个hello.c的文件,在里面添加一下内容:

#include <stdio.h>

int main(void)

{

printf("Hello World\n");

}

  然后,使用"gcc hello.c"编译,生成一个a.out的可执行文件,在输入"./a.out"命令,就会发现程序执行打印了一行helloworld。这是最简单的编译源码安装的过程,但是我们安装的软件很大的时候,就不能这么简单的编译了,因为程序往往不止一个源文件,另外还会调用系统的函式库,编译就很麻烦,我们会在实验内容里添加这些内容,让大家进行简单体验。

2.软件更新与移除
  软件更新是很平常的操作,无论是新功能的添加、bug修复,尤其是安全问题,经常需要进行软件的升级,软件升级可以直接编译安装,但是每次都要重复这个过程效率低下,而且还需要卸载以前的低版本。
  Linux的源码编译安装软件其实过程比较复杂,如果我们需要移除这个软件,直接移除这个文件夹,但是这样的话,我么需要记住每一个软件的安装目录,当然有人觉得我们可以把软件安装在一个目录下,这样就很方便了。但是一个软件有很多依赖,我们安装的软件会附带安装别的软件,所以软件的移除往往也不是一个省心的事情。
  针对上面的问题,我们在安装软件的时候可以使用rpm包安装,rpm包包含了软件的很多信息,只要我们输入相应的命令,就可以自动进行安装、卸载操作。

3.yum原理及配置
  yum主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题。其实yum是Yellow dog Updater Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。yum 的宗旨是自动化地升级,安装/移除rpm 包,收集rpm 包的相关信息,检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http 或ftp 站点,也可以是本地软件池,但必须包含rpm 的header,header包括了rpm包的各种信息,包括描述、功能、提供的文件、依赖性等。正是收集了这些header并加以分析,才能自动化地完成余下的任务。yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。linux自带会安装yum,我们只需要配置它的配置文件。

yum 的配置文件分为两部分:main 和repository。

main :定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf 中。

repository:分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中。

实验环境

1.操作系统
  操作机1:Linux_Centos
  操作机2:Windows_7
  操作机1默认用户名:root,密码:123456
  操作机2默认用户名:hongya,密码:123456

2.GCC

GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。它是一套GNU编译器套装以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。它原本只能处理 C语言。之后变得可处理 C++,再之后也变得可处理 Fortran、Pascal、Objective-C、Java以及Ada与其他语言。
  在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。
  GCC最基本的用法是∶gcc [options] [filenames]
  其中options就是编译器所需要的参数,filenames给出相关的文件名称。
  -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
  -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
  -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
  -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
  -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。

步骤1:使用xshell进行连接

  1.1首先进入到操作机2(Win_7),点击xshell,对于弹出的会话框,点击新建,然后在连接属性内,输入名称(示例:test)和操作机1的IP地址(示例IP:90.10.0.16,IP以实验为准),连接操作机1,见下图:

图1

  1.2点击“用户身份验证”,输入要连接主机的用户名和密码,然后点击确定。这里我们连接操作机1,输入如下:

  • 用户名:root
  • 密码:123456
  • 图2

      1.3这样一个新的会话就已经建立起来了,直接点击连接按钮,对操作机1进行连接。见下图:

  • 步骤2:配置yum源,进行安装软件

      2.1连接成功后,首先进入配置目录“/etc/yum.repos.d/”,本试验环境下有一个已经配置好的CentOS-Base.repo文件,为CentOS-Base.repo.bak,输入命令进行查看:

    • 进入配置目录:cd /etc/yum.repos.d/
    • 查看文件:ls
    • vi编辑命令:vi CentOS-Base.repo
    • 图4

        2.2修改配置文件“/etc/yum.repos.d/CentOS-Base.repo”,yum源为http://ftp.sjtu.edu.cn/centos/,我们注释掉配置文件的mirrorlist,把baseurl修改为http://ftp.sjtu.edu.cn/centos/…(只修改ftp.sjtu.edu.cn,后续的变量不改变),下图中可以观察看到修改前后的变化(只修改了两个,便于比较),请同学自行全部修改,然后保存退出(先按“ESC”键退出编辑模式,再输入“wq”保存退出)。如果失败可能是权限的问题,可以跳过。

    • 2.3使用yum安装mysql。

      • 安装命令(-y表示,如果有询问,就是yes):yum install mysql-server -y
      • 2.4使用yum升级mysql。升级命令只需修改install为update:

        • 升级命令:yum update mysql-server -y
        • 删除命令:yum remove mysql-server -y
        • 步骤3:手动编译安装

            3.1编译一个helloworld,编写hello.c文件。注意先回到主目录下进行实验。

          命令:vi hello.c

            文件内容为:

          #include <stdio.h>

          int main(void)

          {

          printf("Hello world\n");

          }

        • 图8

            3.2文件编译好之后,需要用到gcc进行编译,由于操作机中没有安装gcc环境,需要先安装。

          命令:yum install -y gcc texinfo-tex flex zip libgcc.i386 glibc-devel.i386

        • 图9

            3.3编译并执行文件。
            只编译文件hello.c(.c为源文件代码),编译器由输入的.c等源代码文件生成.o为后缀的目标文件

          查看文件:ls

          只编译文件hello.c:gcc -c hello.c

          再次查看文件:ls

            输出可执行文件(.o为编译后的目标文件),同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。

          命令:gcc -o hello hello.o

          查看文件:ls

            执行文件

          命令:./hello

        • 图10

            3.4编译测试主、子程序。编写源文件trhanks.c和thanks_2.c。

          命令:vi trhanks.c

          编写完毕后查看:cat trhanks.c

            thanks.c内容:

          #include <stdio.h>

          int main(void)

          {

          printf("Hello World\n");

          thanks_2();

          }

          命令:thanks_2.c

          编写完毕后查看:cat thanks_2.c

            thanks_2.c内容:

          #include <stdio.h>

          void thanks_2(void)

          {

          printf("Thank you!\n");

          }

        • 图11

            3.5编译并测试程序。

          编译文件命令:gcc -c thanks.c thanks_2.c

          输出文件命令:gcc -o thanks thanks.o thanks_2.o

          查看文件命令:ls

          执行文件命令:./thanks

        • 图12

            3.6呼叫外部函式库:加入连结的函式库

          命令:vi sin.c

          编写完毕后查看:cat sin.c

            编写sin.c的代码,引入外部函数:

          #include <stdio.h>

          int main(void)

          {

          float value;

          value = sin (3.14/2);

          printf("%f\n",value);

          }

        • 图13

            3.7编译执行,编译时加入额外函式库连结的方式
            编译,这里的警告可能是函数库的问题。(-l:是加入某个凼式库(library)的意思;-m:则是 libm.so 这个函式库,其中, lib 不扩展名需要写)

          编译:gcc sin.c -lm -L/lib -L/usr/lib

            执行,没有设定输出名称,默认为a.out。

          执行:./a.out

        • 图14

          步骤4:配置文件main

            4.1yum的main配置文件为“/etc/yum.conf”,只需要配置这个文件相关内容就可以,实验中只对其进行查看。

          查看配置文件命令:cat /etc/yum.conf

            解释:

          cachedir=/var/cache/yum:yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yum。

          keepcache=0 安装完成后是否保留软件包,0为不保留(默认为0),1为保留。

          其他配置的意思大家可以自行查阅资料。

        • 图15

            4.2配置yum源仓库。首先查看仓库目录:

          进入仓库目录:cd /etc/yum.repos.d/

          查看仓库目录:ll

            每个文件都代表一个源,可以修改内容,配置自己的源,比如本地源,阿里云的源或者其他的源。

        • 4.3查看仓库内容(以上图中CentOS-Media.repo为例)

          命令:cat CentOS-Media.repo

        • 图17

            所有repository (仓库)服务器设置都应该遵循如下格式:

          [serverid]

          name=Some name for this server

          baseurl=url://path/to/repository/

            其中:

          serverid 是用于区别各个不同的repository,必须有一个独一无二的名称;

          name 是对repository 的描述,支持像$releasever $basearch这样的变量;

          baseurl 是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。

          它的格式是:

          baseurl=url://server1/path/to/repository/

          url://server2/path/to/repository/

          url://server3/path/to/repository/

          其中url 支持的协议有 http:// ftp:// file:// 三种。baseurl 后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl 只能有一个。

吴裕雄--天生自然HADOOP学习笔记:使用yum安装更新软件的更多相关文章

  1. 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告

    实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...

  2. 吴裕雄--天生自然HADOOP学习笔记:基本环境配置

    实验目的 学习安装Java 学习配置环境变量 学习设置免密码登陆的方法 掌握Linux环境下时间同步的配置 实验原理 1.Java的安装 java是大数据的黄金语言,这和java跨平台的特性是密不可分 ...

  3. 吴裕雄--天生自然Hadoop学习笔记:Hadoop简介

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系统(H ...

  4. 吴裕雄--天生自然HADOOP学习笔记:Shell工具使用

    实验目的 学习使用xshell工具连接Linux服务器 在连上的服务器中进入用户目录 熟悉简单的文件操作命令 实验原理 熟悉shell命令是熟悉使用linux环境进行开发的第一步,我们在linux的交 ...

  5. 吴裕雄--天生自然MySQL学习笔记:MySQL UPDATE 更新

    如果需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table ...

  6. 吴裕雄--天生自然MySQL学习笔记:MySQL 安装

    所有平台的 MySQL 下载地址为: MySQL 下载:https://dev.mysql.com/downloads/mysql/ 注意:安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足 ...

  7. 吴裕雄--天生自然python学习笔记:python安装配置tesseract-ocr-setup-3.05.00dev.exe

    下载地址:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.00dev.exe 点击安装,记得复制安装的路径,待会 ...

  8. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  9. 吴裕雄--天生自然MySQL学习笔记:MySQL 插入数据

    MySQL 表中使用 INSERT INTO SQL语句来插入数据. 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 以下为向MySQL数据表插入数据通 ...

随机推荐

  1. 传奇脚本:#AutoRun NPC SEC 参数说明

    传奇脚本:#AutoRun NPC SEC 参数说明 SEC:按秒运行MIN:按分运行HOUR:按小时运行DAY:按天运行RunOnDay:按每天什么时候运行RUNONWEEK:按星期几及时间运行机器 ...

  2. PHP的isset(),is_null,empty()你了解了没?

    这几个变量判断函数在PHP开发中用的其实挺多的,而且粗看上去都差不多,但其实还是有不少的区别的,如果搞不清楚,也许就会遗留一些潜在的bug, 包括我自已也遇到过这样的坑,比如有一次我就遇到过用empt ...

  3. Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类

    第四部分第11章,接口:从协议到抽象基类(重点讲抽象基类) 接口就是实现特定角色的方法集合. 严格来说,协议是非正式的接口(只由文档约束),正式接口会施加限制(抽象基类对接口一致性的强制). 在Pyt ...

  4. vue 事件总线(bus)

    1.全局引入bus Vue.prototype.$bus = new.Vue() 2.组件间传值使用(在发送事件时接收组件会实时接收到, 可以用做兄弟组件间相互传值, 但页面跳转组件间有问题 通过$e ...

  5. zk的单机部署,与客户端的使用

    下载zk wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz 安装jdk t ...

  6. IOS XE-show memory

    有些时候,我们可能会遇到IOS XE设备的high memory的情况.我们可以使用的命令去查看相关信息. 例如: Router# show version Router# show memory R ...

  7. 「AT2381 [AGC015C] Nuske vs Phantom Thnook」

    题目大意 给出一个01矩阵,这个矩阵有一个特殊的性质: 对于任意两个 \(1\) 之间最多只有 \(1\) 条由 \(1\) 构成的路径.每次询问给出一个矩形范围,查询在这个范围内的联通快个数. 分析 ...

  8. RPC远程服务调用

    RPC远程服务调用: RPC 的全称是 Remote Procedure Call 是一种进程间通信方式. 它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编 ...

  9. 看完这篇微服务架构设计思想,90%的Java程序员都收藏了

    本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 微服务 软件架构是一个包含各种组织的系统组织, ...

  10. MySQL(window10)加载配置文件的顺序

    mysql加载配置的顺序为:(mysql --help中有详细的说明) C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:***\my ...