1、FreeBSD应用系统的组成

FreeBSD应用系统由FreeBSD操作系统和移植(ports)到FreeBSD的各种应用软件组成

FreeBSD操作系统本身,是由内核和基本系统组成,基本系统由系统工具、系统库和文档组成,最小化安装选项安装的是内核、系统工具和系统库,系统工具提供了完整的系统管理和编译程序程序。而文档和代码以及ports系统是可选安装的。如果完整安装了FreeBSD,简单的说就是安装了内核、系统管理工具、系统库、编译程序、系统源代码、ports以及man、info、FreeBSD handbook等文档。

为了扩大FreeBSD的应用,FreeBSD移植(port)了大量的自由软件、开源软件。并构建了ports系统,把这些移植的软件汇集到一起,从移植应用程序本身来说,大都是基于源代码进行修改和调整,以便建立的程序可以运行在FreeBSD系统环境下,所以ports中存放的都是代码修改以及编译控制,以及FreeBSD的程序管理策略。

2、ports的组成

一个软件的ports,大致由以下几个部分组成:

pkg-descr  应用软件的简单描述

pkg-plist  软件安装的文件列表

distinfo   软件源代码的名称,版本以及校验信息

Makefile   控制软件编译的makefile

files目录  里面包含对源代码进行修改的各种补丁

利用port进行软件安装非常简单,这得益与ports系统的精心设计,大量繁琐的操作都定义在 /usr/ports/mk 目录下的文件当中,诸如一些变量定义,编译选项定义,文件下载地址定义,编译工具定义,以及一些操作的定义等等。具体软件的port中的Makefile文件,都会继承系统提供的这些定义,而且可以根据需要进行调整。

具体软件port的Makefile还提供了软件运行依赖,建立依赖,以及对源代码编译过程中一些具体的定义。

3、利用ports进行软件安装的过程。

简单来说,可以用下面的指令来完成安装

[Copy to clipboard] [ - ]

CODE:

make install clean

具体的过程是:

根据distinfo文件中的软件源代码文件名,检测 /usr/ports/distfiles 目录下,是否有软件的源代码

如果没有,调用 make fetch 从Makefile文件中定义的下载地址进行下载

下载完成以后,调用 make checksum ,利用 distinfo 文件中的源代码文件的校验信息,校验源代码包的完整性。

如果校验正确,调用 make extract,对源代码进行解压,具体的路径是:

[Copy to clipboard] [ - ]

CODE:

软件port当前路径/work/源代码文件名去掉后面的.gz.bz2/

解压源代码后,调用 make patch ,搜索 files 目录下的补丁文件为源代码打补丁,

打完补丁,根据 Makefile文件中定义的软件运行依赖关系,查找系统中是否安装对应的软件,如果没有安装,会转入相应的软件的ports中进行make install clean 。假设当前应用程序的所有运行依赖都已经安装,ports系统会进入源代码目录,运行里面的configure文件,生成源代码目录下的makefile文件,然后进行源代码的make过程,对源代码进行编译、连接。

当所有的make过程结束以后。运行ports系统的 make install进行安装。

安装完成以后,利用pkg-descr,pkg-plist的内容在  /var/db/pkg 目录下对这个软件进行注册。标记这个软件已经安装,并详细注册了安装文件列表。

如果软件注册成功,ports系统利用make clean命令,清除软件port当前目录下work子目录信息。如果在编译安装过程中对有依赖关系的软件进行过编译安装,会回溯清理过程。

4、packages软件安装和管理

packages,也可以称作编译封装好的应用软件的二进制包,是FreeBSD提供的基于ports系统建立的二进制软件包,这个软件包实际上是FreeBSD利用硬件资源,利用 ports 系统的 make package 命令建立的。这些package存放在 ftp.freebsd.org 服务器上,可以远程直接下载安装,也可以下载后进行安装。

以freebsd 7.0 release为例,它的二进制软件包网络地址是:

ftp://ftp.freebsd.org/pub/FreeBS ... ckages-7.0-release/

在这个网络目录下,有两个文件夹要用到,一个是 All ,一个是 Latest,注意第一个字母都是大写。

All目录下的文件,是利用ports建立的二进制软件包,例如 mysql51-server-5.1.22.tbz,软件包名称来自它的ports名,版本号是ports根据软件包源代码版本进行的定义。

Latest目录下的文件,其实是All目录下软件二进制包的软连接,并且省去了版本号,这个目录是 FreeBSD系统网络在线远程安装所要访问的目录,对于 mysql51-server-5.1.22.tbz 的软连接名是 mysql51-server.tbz。这样在远程安装时就省去了输入版本号的麻烦。

这两个目录的建立和维护也是由ports系统自动完成的,无需干预。

FreeBSD操作系统提供的系统管理工具中,提供了对packages的维护工具

软件安装

远程软件安装:  pkg_add -r 软件包名称  例如:pkg_add -r mysql51-server,pkg_add -r xorg,pkg_add -r kde

系统会自动在上面所说的ftp服务器Latest目录下查找 mysql51-server.tbz,xorg.tbz,kde.tbz,但有一点需要注意,FreeBSD的ftp服务器并不保证ports上容纳的所有的移植过来的软件都有二进制包,尤其是stable分支,有些是因为软件ports本身有问题无法建立,也有一些软件ports正在修订,还有一些只允许源代码包发布,协议不允许进行打包。

本地软件安装: pkg_add  软件包文件名 ,用这种方式安装软件包,需要从All目录下载,防止软件安装时搜索特定版本的有依赖关系的软件包。

一个建议:利用pkg_add -r -K 这个命令,它的作用是,远程下载,安装,并且把下载的二进制包保存在 PKGDIR 定义的目录上。PKGDIR 默认的定义是 /usr/ports/packages/

freebsd系统能用的C语言工具,FreeBSD的软件管理相关推荐

  1. Linux系统中的软件管理

    Linux系统中的软件管理 1 Linux中软件包的类型 2 软件包的名称结构 3 rpm命令管理软件包 4 本地软件仓库的搭建 4.1 系统软件仓库的作用 4.2 搭建方法 5 dnf 软件管理命令 ...

  2. Nat. Commun. | AI语言工具揭示分子运动

    大家好,今天推荐的是Nature Communication发表的UMD研究人员使用人工智能语言工具解码分子运动的文章,文章的通讯作者是来自马里兰大学化学与生物化学系和物理科学与技术学院的医学博士Pr ...

  3. 教你制作可以随身携带的FreeBSD系统[转]

    http://www.knowsky.com/343408.html 前言 大家可能见到过很多在软盘上运行的Linux系 统,可在软盘上运行的FreeBSD反而比较少,虽然有PICOBSD,然而很多时 ...

  4. [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. FreeBSD系统常用软件列表

    FreeBSD系统常用软件列表 用ports来编辑安装,但如xfce那些则建议直接pkg安装. 下列列表序号为安装顺序 01. sudo 02. vim-lite (注:若用pkg则装vim,port ...

  6. 程序员的开发工具:Java语言开发人员常用软件

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华. 如果小伙伴们觉得我的文章有点 feel ,那就点个赞再走哦. 文章目录 一.前言 二.相关软件介绍: 1. IDEA(IntelliJ ID ...

  7. 系统重构的未来:重构工具 Coca 一周年

    一年前,在公司大佬的指点之下,我开始写系统级重构工具 Coca (https://github.com/phodal/coca) .哦,不,不对,是刚开始学习 Golang,因为我的第一次提交是从一个 ...

  8. Linux系统中编译大型C语言项目必备技能之:Makefile文件的编写

    文章目录 Makefile的介绍 Makefile的编写规范--简单举例 Makefile的编写规范--复杂举例 项目描述 编译需求 编译思路 Makefile的介绍 我们在阅读一些大型的C语言项目时 ...

  9. python好用的软件_mac系统中都有什么python开发工具好用?

    小编相信大家一定想知道在Mac系统中到底有哪些比较给力的Mac python开发工具吧?那么就让小编一一为你解答吧,相信小编为Mac用户提供的mac系统中都有什么python开发工具好用?文章会为广大 ...

最新文章

  1. 39条常见的Linux系统简单面试题
  2. threadlocal内存泄露_ThreadLocal原理解析
  3. LINUX inner-process communication
  4. 使用ftp命令之后,如何退出
  5. Linux:VMware12.5.7安装Ubuntu16.04.2失败的解决方案cpufreq: cpufreq_online: Failed to initialize policy for cpu
  6. Paip.语义分析----情绪情感词汇表总结
  7. 用正则表达式改变或清除页面超链接标签url内容
  8. 《现代控制系统》第五章——反馈控制系统性能分析 5.4 二阶系统里面极点以及零点带来的影响
  9. 《左耳听风》读书笔记
  10. 程序猿如何提高申购新股中签率
  11. android 模拟器终端 了解及部分命令
  12. 骑行318、 2016.7.15
  13. 蔡颖-《APS走向实践》书解读之四:供应链、系统模型、APS软件
  14. 记录Hbuilder项目使用xcode离线打包上传苹果商店踩过的坑
  15. 最新steam rpgmz dlc有新技能新人物,有兴趣么?
  16. 浅析2017年医疗类APP开发前景
  17. 计算机excel按F4是那个公式,Excel中F4有哪些功能 Excel如何巧妙使用F4
  18. vin-slam中调用ceres库内部代码分析与性能优化
  19. 这些电商运营指标你知道吗?
  20. android 打卡app,打卡小日常APP

热门文章

  1. 枚举 注解 常量的使用区别
  2. html5 泡泡堂,HTML5 拖放 - 彩色泡泡糖的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 软件工程(七)软件系统设计
  4. 【windows系统cmd下打开管理员模式】
  5. ethernet phy
  6. NetBIOS名字解析过程
  7. 学习笔记04(java多人聊天室)
  8. Day27-万物皆对象
  9. Java 正则表达式:语法讲解和常用表达式汇总
  10. 测试女朋友是好是坏的软件,脱单测试题女生版最准测试