本文所有实验均在CentOS6.8环境下验证成功
yum安装所遇问题
无效URL
[root@localhost ~]# yum install vim
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot find a valid baseurl for repo: base
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=extras&infra=stock error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
1. 进入库配置文件修改baseurl为有效URL(vi /etc/yum.repo.d/xxx.repo)
2. 进入/etc/hosts写入有效DNS服务器,如电信nameserver 114.114.114.114.
yum编译器错误
[root@www ~]# yum install mysql-server
bash: /usr/bin/yum: /usr/bin/python2.4: bad interpreter: No such file or directory
进入vi /usr/bin/yum修改编译器(第一行)为#!/usr/bin/python2.6
没有挂载
[root@localhost ~]# mount -a
mount: no medium found on /dev/sr0
[root@localhost ~]# mount -t iso9660 /dev/sr0 /media/cdrom
未删除官方仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Vault.repo
[root@localhost yum.repos.d]# rm -rf /etc/yum.repos.d/*
何为源代码?
源代码就是经过编译器编译之后形成的中间代码或者及其语言代码;
源代码 (编译器) 链接 目标代码
何为源码包?
源码包就是源代码 的可见软件包,基于Linux和BSD系统的软件最常见;
源代码有什么用?
源代码就相当于说明书,一个软件如果有源码,我们就可以知道它是怎么开发出来的,一般来说它的用处有2点:
1. 根据用户需要修改软件;
2. 二次开发;
如何进行源码编译安装
nginx
安装依赖工具:
[root@www ~]#yum install gcc automake pcre-devel openssl-devel zlib-devel
gcc:C编译工具;
automake:自动编译工具;
pcre-devel:正则表达式的支持,必装;
openssl-devel:支持ssl加密
zlib-devel: zlib库对响应的数据压缩;
-devel一般表示 表示源码包
下载源码包并解压
[root@www ~]#wget http://nginx.org/download/nginx-1.13.5.tar.gz
[root@www ~]#tar -xf FILE
绝大多数来自“源头”的源代码都是封装成所谓的tarball格式,其扩展名是.tar.gz 或 .tgz
- 为何是tarball?
我们知道Open Source软件包括源代码、说明文件、编译支持文件、配置文件样本等很多很多文件,要将数量如此之大的文件完整的发布出去,最典型的做法是以tar将它们封装成单一文件,再以gzip压缩。而经过这两道处理手续的文件,就称为tarball文件。
生成Makefile
configure是用户个性配置的工具, –表示要配置的选项,后面所跟参数可以指定某些配置文件所在路径,如:–prefix安装路径、日志路径等;也可以启动或者禁用某些模块,如http、ssl等;
./configure –help可以查看到选项;
[root@www nginx-1.12.2]#./configure --prefix=/usr/local/nginx --with-ssl-module --with-pcre --with-zlib
[root@www nginx-1.12.2]#vim Makefile
1
2 default: build
3
4 clean:
5 rm -rf Makefile objs
6
7 build:
8 $(MAKE) -f objs/Makefile
9
10 install:
11 $(MAKE) -f objs/Makefile install
12
13 modules:
14 $(MAKE) -f objs/Makefile modules
15
16 upgrade:
17 /usr/local/nginx/sbin/nginx -t
18
19 kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
20 sleep 1
21 test -f /usr/local/nginx/logs/nginx.pid.oldbin
22
23 kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
"Makefile" 23L, 376C 23,1-8 All
由上可知,生成一个make编译时需要用到Makefile,来定义软件功能开关,检查源码依赖的库是否齐全,说明安装顺序等。我们可以通过vim obis查看源代码
注意: 这条命令表示运行目录nginx-1.12.2下的一个脚本文件,因此需要进入该目录运行,且运行前需要保证有x权限 ,否则将出现以下错误提示
-bash: ./configure: No such file or directory
安装makefile定义的内容编译源码生成文件
[root@www nginx-1.12.2]# make
将目录代表安装到系统中
[root@www nginx-1.12.2]# make install
添加nginx命令到环境变量
[root@www nginx-1.12.2]# vim ~/.bashrc
export PATH=$PATH:/usr/local/nginx/sbin #环境变量通过冒号:连接;
[root@www nginx-1.12.2]# source ~/.bashrc #使环境变量生效
[root@www nginx-1.12.2]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin
#echo查看PATH中出现/usr/local/nginx/sbin即可;
测试
执行
- 手动执行文件 /usr/local/ngnix/sbin/nginx
- 直接在cmd上敲 nginx
关闭
nginx -s stop重启
nginx -s reload
注意:必须要开启了才能重启,否则将出现以下报错[root@www ~]# nginx -s reload
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)查看/usr/local/nginx目录
[root@www nginx]# ls
conf html logs sbin
源码编译后的软件放在conf,即主配置文件为/usr/local/nginx/conf/nginx.conf;
Python
yum install gcc automake pcre-devel openssl-devel zlib-devel
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
tar xf Python-3.5.1
./configure --prefix=/usr/local/python #定义python的编译器的安装路径,即是用C语言写的源代码;
make
make install
vim ~/.bashrc
//export PATH=$PATH:/usr/loacl/python/bin #将python3.5.1执行路径导入环境变量
mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/python/bin/python3.5 /usr/bin/python#将系统默认的python版本改为3.5.1
python -V #查看python版本显示3.5.1即可
vim /usr/bin/yum
// #!/usr/bin/python2.6 #将编译器改为此即可解决python升级后yum无法使用的问题