引:当你拿到一台新电脑的第一反应是什么,当然是装软件,然后好好玩呀!服务器也是如此,所以你必须掌握软件的安装。
源码安装
开放源码的软件安装相关概念
Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。
而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。
开放源码、编译程序、可执行文件
- 开放源码:就是程序代码,写给人类看的语言,但机器并不认识,所以无法执行。
- 编译程序:将程序代码转译称为机器看得懂的语言。
- 可执行文件:经过编译程序变成二进制程序后,机器看得懂所以可执行的文件。
函式库
类似子程序的角色,可以被呼叫来执行的一段功能函数。
make与configure
- configure:侦测用户操作环境,是否支持软件的运行,侦测完毕生成makefile文件
- 是否有适合的编译程序可以编译本软件的程序代码
- 是否已经存在本软件所需要的函数库,或其他需要的相依软件
- 操作系统平台是否适合本软件,包括 Linux 的核心版本
- 核心的头文件定义档 (header include) 是否存在 (驱动程序必须要的侦测)。
- make:make是一个程序,会去找makefile文件,然后执行编译。
tarball软件
tarball文件其实就是将软件的源码先以tar打包,然后再压缩。其实就是一个软件包。通常解压缩之后会存在源代码文件、侦测程序文件(configure)、本软件的简易说明与安装说明(README)。
Tarball的安装的基本步骤
- 取得源文件:将tarball文件在/usr/local/src目录解压缩
- 取得步骤流程:进入新建立的目录下面,去查阅INSTALL与README等相关文件内容(很重要)
- 相关属性软件安装:根据INSTALL/README的内容查看并安装好一些相关的软件
- 建立makefile文件:以自动检测程序(configure)检测操作环境,并建立Makefile文件
- 编译:以make这个程序并使用该目录下得Makefile作为它的参数配置文件,来进行make的操作
- 安装:以make这个程序,并以Makefile这个参数配置文件,依据install这个目标(在Makefile文件中会有多个操作目标,如clean)的指定来安装到正确地路径。
Tarball软件安装的建议事项
在默认情况下,原本的Linux distribution发布安装的软件大多是在/usr里面的,而自行安装的软件则建议放置在/usr/local里面。
- linux distribution默认的安装软件的路径如下,以httpd为例:
- /etc/httpd(配置文件)
- /usr/lib(函数库)
- /usr/bin(可执行文件)
- /usr/share/man(在线帮助文档)
- tarball安装,默认放在/usr/local,如下目录:(升级,删除不方便)
- /usr/local/etc
- /usr/local/bin
- /usr/local/lib
- /usr/local/man
- tarball安装,但是单一软件都在同一个目录下,以apache为例:(利于删除,升级)
- /usr/local/apache/etc
- /usr/local/apache/bin
- /usr/local/apache/lib
- /usr/local/apache/man
当然,实际安装的时候还是得视该软件的Makefile里头的install目标信息才能知道安装路径情况。
为了方便Tarball的管理,这样建议:
- 最好将tarball的原始数据解压缩到/usr/local/src当中
- 安装时,最好安装到/usr/local这个默认路径下
- 考虑将来的删除,最好可以将每个软件单独安装在/usr/local下面
- 为安装到单独目录的软件的man page加入到man path搜索,即在/etc/man.config增加一行。
简单安装范例(ntp时间服务器)
假设这个软件在/opt下,解压到/usr/local/src,并安装到/usr/local/ntp目录下。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19cd /usr/local/src //切换目录
tar -zxvf /opt/ntp-4.2.4p7.tar.gz //解压缩到此目录
cd ntp-4.2.4p7/
vi INSTALL // 查阅安装信息
// 检查configure支持参数,并实际生成makefile规则文件(很重要)
./configure --help | more
./configure --prefix=/usr/local/ntp \
--enable-all-clocks --enable-parse-clocks //开始建立makefile(设置了安装目录等)
// 开始编译并安装
make clean; make
make check
make install
利用patch更新源码
1 | // 基本语法 |
RPM安装
RPM和DPKG
当前Linux上有两款主流的软件管理程序,分别是:RPM和DPKG。
这两款软件均提供在线升级机制。
RPM
RPM全称为Red Hat Package Manager,是Red Hat公司研发的Linux软件管理程序。目前CentOS、SuSE、Fedora等操作系统使用它。
RPM使用YUM进行在线升级。DPKG
dpkg由Debian Linux开发,目前使用该软件的操作系统有Ubuntu、B2D等。
dpkg使用apt-get进行在线升级。
PS:什么是“在线升级机制”?
一个软件往往会依赖其他软件的一些功能,那么在安装过程中,只有确保一个软件所依赖的所有软件都被安装后,该软件才能被正确安装。
而在线升级机制能够在软件安装过程中,若发现该软件的依赖软件尚未安装,则会自动从互联网中下载所依赖的软件。这就是在线升级机制
RPM默认安装的路径
/etc | 一些设置文件放置的目录,例如/etc/crontab |
---|---|
/usr/bin | 一些可执行文件 |
/usr/lib | 一些程序使用的动态函数库 |
/usr/share/doc | 一些基本的软件使用手册与帮助文档 |
/usr/share/man | 一些man page文件 |
RPM安装
因为安装软件是root的工作,所以你必须是root用户才能使用rpm命令,使用范例如下(例子为安装rp-pppoe-3.5-32.1.i386.rpm):1
2// 安装软件是,显示安装信息与进度
rpm -ivh rp-pppoe-3.5-32.1.i386.rpm
RPM的升级与更新
范例如下:1
2
3
4
5
6
7rpm -Uvh 需要升级的软件名
-Uvh:若待升级的软件尚未安装,则直接安装
rpm -Fvh 需要升级的软件名
-Fvh:若待升级的软件尚未安装,则该软件不会被安装
RPM查询
查询的信息分为两类,一类是查询已被安装的软件的信息(由/var/lib/rpm提供),另一类是查询尚未被安装的软件安装包的信息。 第一类信息通过rpm -q查询,第二类信息通过rpm -qp查询。范例如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18// 1. 找出你的Linux是否安装logrotate这个软件
rpm -q logrorate
// 2. 列出logrotate这个软件所提供的所有目录与文件
rpm -ql logrorate
// 3. 列出logrotate这个软件的相关文件说明
rpm -qi logrorate
// 4. 列出logrotate这个软件的设置文件与帮助文件
rpm -qc logrorate
rpm -qd logrorate
// 5. 列出logrotate这个软件所依赖软件的文件
rpm -qR logrorate
// 6. 列出该文件属于哪一个软件
rpm -qf /bin/sh
卸载RPM与重建数据库
卸载一个软件非常方便,通过-e即可删除。但一个软件所提供的动态函数库被其他软件引用,那么该软件将无法卸载,除非将引用该函数库的所有软件都卸载后才能卸载。范例如下:1
2
3
4
5
61. 找出与pam有关的软件名称,并尝试删除pam这个软件
rpm -qa | grep pam
rpm -e pam(出错,因为你需要先删除依赖它的软件)
2. 删除pam-devel软件
rpm -e pam-devel (成功)
当/var/lib/rpm内的文件发生损坏时,可以通过如下命令重建数据库修复:1
rpm --rebuilddb
YUM安装
RPM虽然省去了编译过程,并且提供数据库存储软件的信息,但仍然需要我们手动下载RPM安装包,而YUM的出现解决了这一问题。较多软件的RPM安装包都存放在了YUM Server上,只要我们的计算机能连互联网,就能使用yum自动下载RPM安装包并安装软件。
yum功能
yum的使用非常简单,就是通过yum这个命令,用法范例如下:
查询功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 1. 搜索磁盘阵列相关的软件
yum search raid
// 2. 找出mdadm这个软件的功能如何
yum info mdadm
// 3. 列出yum服务器上面提供的所有软件名称
yum list
// 4. 列出目前服务器上可供本机升级的软件有哪些
yum list updates
// 5. 列出提供passwd这个文件的软件有哪些
yum provides passwd安装/升级功能
1
2// 1. 安装/升级pam-devel
yum install/update pam-devel删除功能
1
2// 1. 删除pam-devel
yum remove pam-devel
管理的选择:RPM or Tarball
建议如下:
- 优先选择原厂的RPM功能
- 选择软件官方网站发布的RPM或者是提供的容器网址(yum server)
- 利用Tabball安装特殊软件(没有RPM)
- 用Tarball测试新版软件
RPM与Tarball各有优点,但是如果有RPM的话,优先选择RPM。如果无法解决依赖性问题,那就选tarball。
参考
- 《鸟哥的Linux私房菜》