Fork me on GitHub

软件安装细碎知识点

LFS推荐的软件安装方面文章,将源码安装,二进制安装描述的及其详细,同时也介绍了源码安装相关技术

Building and Installing Software Packages for Linux

Beginner's Guide to Installing from Source

Linux下可执行文件

虽说Linux上一个文件是否可以执行要看他有没有x权限,但Linux真正识别的可执行文件是二进制文件。shell script不是二进制文件却可以执行,本质上shell script时利用了Bash内置的一些功能(eg.判断),其他仍是调用已编译好的二进制可执行文件。


函数库

函数库包括动态库,静态库。很多软件在开发的时候都是直接取用系统内核提供的函数库与include文件,这样才能与操作系统兼容。

库文件位置/usr 和 /usr/lib

头文件位置/usr/include

make和configure

尽管每个Linux distribution都是用Linux这个内核,但是不同版内核使用的系统调用可能不同,每个软件需要的相关函数库也可能不同。因此软件安装之前,configure会根据检测当前环境,包括:

是否有合适的编译器——>用于编译本软件的源代码

是否有本软件需要的函数库,以及依赖软件

操作系统平台是否适合本软件,包括 Linux 的核心版本;

Kernel的头文件是否存在(取动程序必须检测)

检测通过后,configure会生成一个makefile给make执行。

tarball

所谓tarball就是将软件的源码文件先以tar打包,然后再用压缩工具进行压缩,最常见的就是gzip、bzip2。tarball的扩展名通常是*.tar.gz,*.tgz,*.tar.bz2。

tarball方式安装软件可以实现跨平台,因为C语言代码在各个平台上是可以通用的。
tarball一般安装过程:

取得源文件:将 tarball 在 /usr/local/src 下解压
查看安装文档:查看INSTALL 或 README
configure生成makefile
make clean,清除源码中可能残留的上次编译过的目标文件(.o文件)
make,依据makefile进行编译。顺利的话会生成可执行文件、库文件、配置文件、man手册等等
make install,这部就是将上一步生成的文件拷贝到指定目录,一般是/usr/local/src{etc,bin,lib,man}

软件安装位置

Linux distribution的软件一般放在/usr下面
用户自行安装的软件一般在/usr/local下面
推荐做法是安装在/usr/local/softname/下面,通常软件安装完后会生成4个字目录,etc、man、lib、bin。分别对应配置文件,man手册,库文件,可执行文件。
可执行文件需要加入到PATH,也可以在PATH的搜索路径中为可执行文件创建一个软连接
man手册需要在/etc/man.config下新增刚安装软件的man手册位置

软件打补丁

很多软件开发商在更新了源码中后,都会发布所谓的patch file。通过patch file,旧版源码直接变成新版源码,不需要下载最新tarball。patch file更新源马后,直接make,make install编译、安装。由于make工作机制,未改动过的文件不需要编译,改动过的文件可以自动更新,整个过程会很快完成。

软件卸载

软件卸载一定要从上往下卸载,就像拆楼,要先拆上面的,再拆下面的。

检验软件正确性

在软件正确性检验方面,主要分为内外两者机制。外部检验由厂商负责,内部检验更多是系统管理员的责任。
外部检验技术主要有2种

1、指纹编码机制,常用MD5或者SHA1,和Git底层原理使用SHA1道理类似,指纹时根据文件内容算出来的一堆数字。软件下载后可以使用md5sum或者sha1sum命令计算
该软件包的指纹,看看是否和官网给的一致。不一致说明软件包有问题。
这种方法也有问题,如果官网的软件包和指纹一起被改了,用户这面是发现不了的。
2、数字证书机制,参考:软件包数字签名

内部检验技术

/var/lib/rpm下面的数据库与当先系统下所有软件文件做对比
rpm -V :后面接软件名称,若该软件所含的文件被更动过,就会列出来
rpm -Va :列出目前系统上面所有可能被更动过的文件;
rpm -Vp :后面接文件名称,列出该软件内可能被更动过的文件;
rpm -Vf :列出某个文件是否被更动过

posted @ 2018-12-15 22:11  克拉默与矩阵  阅读(164)  评论(0编辑  收藏