ubuntu 源码编译,dpkg,apt 安装原理 及简单使用

1. 源码编译(源码安装通常安装比较麻烦,特别是解决依赖经常会出现问题,但是通常编译可以获得该软件的最新版本)

  • 源码:程序代码,写给人开的程序语言,但机器无法识别,所以无法执行;
  • 编译程序:将程序代码转译成为机器能看得懂的语言,相当与翻译器;
  • 可执行文件:经过编译程序变成二进制程序后机器可以识别的可执行二进制文件;

而在整个编译的过程,又需要设置软件安装路径,确定链接库位置,检测库依赖关系是否满足,判断目标系统上是否有合适的编译环境等复杂的过程。通常软件开发商都会写这样一个检测程序,来检测用户的操作环境,以及该操作环境是否满足开发商所需的其他功能,替我们完成上诉的复杂过程。检测完毕后,就会主动新建一个Makefile的规则文件,而这个检测程序的名字通常为configure(下载完软件源码会在源码文件中找到)。

获取源码文件,解压后,cd进入源码文件目录,找到configure程序,使用./configure建立Makefile文件(必须保证Makefile文件正确建立,如果建立不成功的话,查看错误,并依据错误提示,解决后再次建立Makefile文件,直到正确建立Makefile文件)

成功生成 Makefile后 我们只需要使用sudo make命令进行编译

编译成功后,使用sudo make install进行安装软件

不过源码安装的话,尽量将源码文件放在一个能找到的特定位置,一般的话Makefile也会提供uninstall,这样的话,当我们需要卸载软件时,可以到软件包中输入sudo make uninstall卸载软件。
也可以使用 ./configure --prefix='File Path'命令,将软件安装在File Path位置,这样可以方便删除。关于configure的更多参数可以查看软件包中列如ReadMe文件或INSTALL文件,一般有参数设置说明。

正因为上诉源码安装时出现的各种麻烦,所以引入了软件包管理系统。(不过在使用linux 时需要进行源码编译,也是比较常见的!)

2. dpkg安装

为了解决上诉问题,很多厂商发布了针对各种 linxu distribution 编译好的软件。因为软件已经编译好了,所以我们只要像windows下一样安装就ok。

linux 开发商在固定的硬件平台和操作系统平台上将需要安装的软件编译好,然后将这个软件所有的相关文件打包成一个特殊格式的文件,这个文件还包括了预先检测系统与依赖的脚本,并且提供记载该软件提供的所有文件信息。客户取得软件包后,只要通过特定的命令来安装,那么该软件就会按照内部的脚本来检测前驱软件的存在,若安装的环境符合满足需求,按么就会开始安装。安装完成后还会将该软件的信息写入软件管理机制中,以完成未来的升级,删除等操作。

下面是dpkg一些基础命令的简介:

  1. dpkg -i package-name 安装软件包
  2. dpkg -r package-name 删除软件包(保留配置信息)
  3. dpkg -P package-name 删除软件包(包括配置信息)
  4. dpkg --configure package-name 配置软件包,如果加上-a表示配置所有未配置的软件包
  5. dpkg --unpack package-name 解开软件包到系统目录,但不进行配置

下面几个命令用于对软件包进行查询

  1. dpkg -I filename 查看软件说明(直接使用dpkg -l 查询所有安装的软件包,filename可以使用正则,我通常用```dpkg -l | grep "filename"因为会存在软件名记不住的情况)
  2. dpkg -L filename 查看package-name对应的软件包安装的文件及目录
  3. dpkg -s filename 查看package-name对应的软件包信息
  4. dpkg -S filename-pattern 从已经安装的软件包中查找包含filename的软件包名称

dpkg软件包相关文件介绍
/etc/dpkg/dpkg.cfg dpkg包管理软件的配置文件
/var/log/dpkg.log dpkg包管理软件的日志文件
/var/lib/dpkg/available 存放系统所有安装过的软件包信息
/var/lib/dpkg/status 存放系统现在所有安装软件的状态信息
/var/lib/dpkg/info 记安装软件包控制目录的控制信息文件

3. apt安装

虽然我们在使用dpkg时,已经解决掉了 软件安装过程中的大量问题,但是当依赖关系不满足时,仍然需要手动解决,而apt这个工具解决了这样的问题,linux distribution 先将软件放置到对应的服务器中,然后分析软件的依赖关系,并且记录下来,然后当客户端有安装软件需求时,通过清单列表与本地的dpkg以存在的软件数据相比较,就能从网络端获取所有需要的具有依赖属性的软件了。

下面是apt的一些基础命令简介:

  1. apt-get update 更新源
  2. apt-ge dist-upgrade 升级系统
  3. apt-get upgrade 更新所有已经安装的软件包
  4. apt-get install package_name 安装软件包(加上 --reinstall重新安装)
  5. apt-get remove 移除软件包(保留配置信息)
  6. apt-get purge package_name 移除软件包(删除配置信息)
  7. apt show pack_name 获取包的相关信息
  8. apt search page_name 搜索包的相关信息
  9. apt-cache depends package 了解使用依赖
  10. apt-get check 检查是否有损坏的依赖

apt软件包相关文件介绍:
/etc/apt/sources.list 记录软件源的地址
/var/cache/apt/archives 已经下载到的软件包都放在这里



文/jockerMe(简书作者)
原文链接:http://www.jianshu.com/p/45fa3d6b2e8d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
posted @ 2016-10-20 09:43  脱裤子放屁  阅读(3455)  评论(0编辑  收藏  举报