软件包安装流程及相关问题
软件包安装流程如图:

当执行安装包命令后,会先去寻找仓库地址,仓库地址存放在/etc/yum.repos.d/*.repo中,至于为什么默认存放在这里,这是因为是在/etc/yum.conf主配置文件中声明了。其实也可以直接将repo文件中的内容直接放到主配置文件中,也可以正常寻找和运行。但为了方便日后方便寻找修改和管理,所以都放在/etc/yum.repos.d/下,repo的文件名是可以自定义的。找到仓库地址后,会向yum仓库发送获取元数据信息的请求,从而下载元数据缓存信息表到本机,元数据缓存信息表中存放的是所有仓库中的包的一个清单,有所有包在仓库中的一个存放位置。然后就该下载安装包了,下载完成后进行安装,安装完成后安装包会自动删除。
一些小questions:
1、/etc/yum.repos.d/目录内没有.repo文件,会导致什么问题?
找不到仓库。
2、执行yum命令的情况下,元数据缓存文件的作用是什么?
确定仓库中有哪些包以及包的位置,分析所要安装包的依赖关系。
3、yum clean all执行没问题,yum makecache报错是什么原因?
仓库配置文件有问题,说明没有配置或者配置错误。
4、yum repolist执行发现仓库名称都正常显示,但是对应包的数量都是0是什么原因?
可能仓库配置文件的URL写错了,从而无法正常获取到我们所需要仓库的包。
yum方式管理软件
1 2 3 4 5 6 7 8
| yum分类:本地yum和远程yum 本地yum: file:// 远程yum: http:// ftp://
以上都被称为URL,统一资源定位符
|
yum常见操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 清理yum缓存:(元数据建立) yum clean all #一般在仓库配置文件有所变动之后使用,因为之前的缓存文件已经不能满足现在的需求
缓存软件包信息: 提高搜索/安装软件的速度 yum makecache #一般不常用,因为在第一次安装软件包时会自动下载缓存信息表
查询yum源信息: yum repolist 查看命令属于哪个软件 yum provides 命令 #可以查看并没有安装的命令属于哪一个包,从而根据自己需求进行安装软件包
安装软件: yum -y install 软件名称 #加了-y后不再需要确认即可直接安装 重装软件: yum -y reinstall 软件名 #既然是重装,肯定要先卸载再安装,一般在误删了相关文件不知情导致不能正常使用时使用
卸载软件: yum erase 软件名 yum remove 软件名
|
更换网络yum源–aliyun(此处以aliyun为例)
为什么要更换网络yum源呢?
因为官方的yum源仓库地址是国外的网址,要进行翻墙后才能正常访问下载,即使不翻墙也能访问到,那访问和下载速度也是非常的慢的,非常不利于我们的使用。国内很多公司和大学会有自己的镜像源仓库,我们可以把yum源换成国内的,这样访问和下载速度会快许多。下面以aliyun为例。
1 2 3 4 5 6 7 8
| 安装主yum源 [root@linux-server ~]# cd /etc/yum.repo.d [root@linux-server yum.repos.d]# mkdir back [root@linux-server yum.repos.d]# mv *.repo back #将之前的仓库配置文件备份 [root@linux-server yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下载aliyun的yum源 或者 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 完成后可以通过yum repolist命令查看是否成功!
|
老版本的主yum源尽量不要跟新版本的扩展源放在一起,因为老版本的源会去寻找新版本的依赖,可能会导致不能够正常使用。
制作本地yum源和仓库
为什么要制作本地yum源呢?因为在工作当中,很多公司的电脑其实他都是不连接网络的,所以这时候就需要制作本地yum源仓库了,那么一个存放了许多软件包的目录就是仓库了嘛。非也。一个目录并不是因为存了包之后就是仓库了,而是需要经过createrepo创建以后才能成为仓库,成为仓库中会多一个repodata文件。而镜像文件是比较特殊的,默认就是仓库文件,他里边已经有了repodata文件。
通过镜像制作本地yum源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 首先需要挂载镜像 [root@linux-server ~]# mkdir /mnt/centos7u4 将本地镜像上传到虚拟机中的/root目录中
语法: mount 挂载设备 挂载点
[root@linux-server ~]# mount CentOS-7-x86_64-DVD-1708.iso /mnt/centos7u4/ [root@linux-server ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/back #备份 [root@linux-server ~]# cd /etc/yum.repos.d/ #yum源配置文件存放目录 [root@linux-server yum.repos.d]# vim CentOS.Base.repo #在编写yum配置文件是必须是.repo [centos7u4] #yum源区别名称,用来区分其他的yum源 name=centos7u4 #yum源描述 yum源名字 baseurl=file:///mnt/centos7u4 #指定本地yum源的路径 enabled=1 #是否使用此yum源(1为打开,0为关闭) gpgcheck=0 #检查软件
|
完成后可以通过yum repolist命令查看是否成功!
通过开启yum下载缓存功能制作自己的yum源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 制作自己的yum源: 打开Yum缓存功能:安装完软件之后,软件不会被删除(默认安装完之后,不会保留安装包) # vim /etc/yum.conf 修改下面参数的值为1,软件会被保存到cachedir指定的目录下 keepcache=1 [root@linux-server ~]# yum install -y httpd [root@linux-server ~]# mkdir /yum_cache [root@linux-server ~]# find /var/cache/yum/ -name "*.rpm" | xargs -i mv {} /yum_cache/ #此时/yum_cache下已经有包了,但还没有声明仓库 [root@linux-server ~]# ls /yum_cache/ apr-1.4.8-7.el7.x86_64.rpm apr-util-1.5.2-6.el7.x86_64.rpm httpd-2.4.6-97.el7.centos.5.x86_64.rpm httpd-tools-2.4.6-97.el7.centos.5.x86_64.rpm mailcap-2.1.41-2.el7.noarch.rpm [root@linux-server ~]# yum install -y createrepo #创建repo文件工具 [root@linux-server ~]# createrepo /yum_cache/ //此目录就可以作为yum源了。 [root@linux-server ~]# vim /etc/yum.repos.d/myyum.repo [myyum] name=myyum baseurl=file:///yum_cache/ enabled=1 #默认是开启的 gpgcheck=0 [root@linux-server ~]# yum repolist
|
总的来说就是以下流程:
1.修改主配置文件中内容,打开Yum缓存功能
2.创建文件夹,将来作为仓库使用
3.在安装包之后,找到包的存放位置并放到要作为仓库的文件夹中
4.声明存放包的文件夹为仓库
5.配置yum配置文件,之后即可使用
源码包管理
1 2 3
| 一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。 源码包的编译用到了linux系统里的编译器,通常源码包都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。 源码安装的优点,编译安装过程,可以设定参数按照需求增加功能,进行安装,并且可以指定安装的版本,可以指定安装路径,灵活性比较大。
|
获得源码包途径 官方网站,可以获得最新的软件包
mysql: http://www.mysql.com/
1
| wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz
|
Nginx: www.nginx.org
1 2 3 4 5 6 7 8 9 10 11
| 安装源码包 准备工作(去Nginx官网下载Nginx软件的源码包) 1.编译环境如编译器gcc、make # yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel gcc是编译工具,编译单个文件 make工具可以看成是一个智能的批处理工具,通过调用makefile文件中用户指定的命令来进行编译和链接的。(将这种高级语言写的代码编译成二进制语言) pcre支持正则表达式 zlib-devel,有些应用依赖于这个库才能正常运行,因此需要安装zlib-devel openssl-devel 某些库文件等跟开发相关的东西。 2.准备软件 nginx-1.16.0.tar.gz 3.部署安装Nginx软件服务
|
1 2 3 4 5 6 7 8 9 10 11 12
| 实战: [root@linux-server ~]# wget http://nginx.org/download/nginx-1.16.1.tar.gz [root@linux-server ~]# tar xzf nginx-1.16.1.tar.gz [root@linux-server ~]# cd nginx-1.16.1 [root@linux-server nginx-1.16.1]# ./configure --user=www --group=www --prefix=/usr/local/nginx #--user指定用户 --prefix指定安装路径 --group指定组 [root@linux-server nginx-1.16.1]# make #编译文件 [root@linux-server nginx-1.16.1]# make install #安装文件 [root@linux-server ~]# useradd www #创建nginx用户 [root@linux-server ~]# /usr/local/nginx/sbin/nginx #启动nginx [root@linux-server ~]# systemctl stop firewalld #关闭防火墙 [root@linux-server ~]# setenforce 0 #关闭selinux防火墙 [root@linux-server nginx-1.16.1]# /usr/local/nginx/sbin/nginx -s stop #停止nginx
|
输入IP访问

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| 1、关闭防火墙
2、创建启动mysql服务的系统用户,mysql useradd -r mysql -M -s /bin/nologin
3、下载编译工具 yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake
4、创建存放mysql服务的目录 mkdir -p /usr/local/mysql/{data,mysql,log}(data:数据存放;mysql:服务存放;log:日志信息)
5、获取mysql的源码包并解压
6、cd进mysql的源码包内执行使用cmake进行对mysql安装设置 指定端口,配置文件,安装位置,字符集,配置文件,数据信息等设置
7、编译及安装 make && make install
8、修改/etc/my.cnf的配置文件 [mysqld] basedir=/usr/local/mysql #指定安装目录 datadir=/usr/local/mysql/data #指定数据存放目录 innodb_buffer_pool_size = 4G #给mysql分内存
9、初始化 给mysql安装目录及子文件修改拥有者和所属组 初始化:./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data `--initialize`:表示进行数据库初始化操作。 `--user=mysql`:指定使用 "mysql" 用户运行 MySQL 服务。 `--basedir=/usr/local/mysql`:指定 MySQL 的安装目录。 `--datadir=/usr/local/mysql/data`:指定 MySQL 数据库文件的存储目录。 得到十二位密码
10、启动mysqld服务 /usr/local/mysql/bin/mysqld_safe --user=mysql &
`bin/mysqld_safe`:这是启动MySQL服务器的一个包装脚本。 mysqld_safe 脚本会尝试安全地启动 mysqld 服务器。它会检查并设置一些环境变量,并尝试在 mysald 崩溃时重新启动它。这个脚本通常位于MySQL的安装目录的 bin 子目录下。 `-user=mysql`:这是一个命令行选项,用于指定运行MySQL服务器进程的系统用户。在这个例子中,它指定2mysq! 用户。出于安全考虑,通常建议以非root用户身份运行MySQL服务器。 `&`:这是一个Unix/linux shell的特性,用于将命令放到后台执行。这意味着当你运行这个命令时,你不需要等待MVSQL服务器完全启动就可以继续在shel中执行其他命令,服务器将在后台启动,并继续运行,即使你关闭了启动它的shell会话。
11、登录mysql bin/mysql -uroot -p'十二位密码' 12、修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 13、停止mysqld服务 /usr/local/mysql/bin/mysqladmin -uroot -p'密码' shutdown
|