zoukankan      html  css  js  c++  java
  • 软件安装细碎知识点

    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 :列出某个文件是否被更动过

  • 相关阅读:
    水晶报表关于System.Web.Extensions报错的问题
    个人下一步学习计划
    一个老程序员对数据库的一点纠结
    Visual SourceSafe权限配置记录
    SQL SERVER 2008代码折叠小技巧
    用命令行自动备份数据库到其他服务器
    CrystalReports 2008序列号留档
    ····
    C语言中的static
    页面自动刷新的几种方法
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/10125105.html
Copyright © 2011-2022 走看看