diff --git a/intro-applications-repository.md b/intro-applications-repository.md index e8c1027..e3bdae6 100644 --- a/intro-applications-repository.md +++ b/intro-applications-repository.md @@ -26,7 +26,6 @@ GNU/Linux操作系统(GNU/Linux OS)本身是由linux内核和特定GNU应用 tree applications ``` 可以显示出applications目录的树型结构。下图中省略了大量的子目录,因为浏览工作区applications时你会发现工作区的目录层级结构是非常简单的,很容易看清楚。所以,省略的这些子目录对于本文档的预期目标是无关紧要的。这里列出几个具有代表性的目录,其中包含了所有子目录中将会出现的文件。 - ``` applications/ ├── build @@ -120,7 +119,6 @@ applications/ 在applications工作区下,有隐藏目录.git和隐藏文件.gitignore: * .git:初始化git时创建的隐藏目录,这里就是git版本库(git是一个版本控制工具)。 * .gitignore:是git的一个配置文件,所有在这里列出了名字的文件将会被git忽略掉,不跟踪这些文件。例如,在applications工作区下,有这么一些文件将不被git跟踪: - ``` cat applications/.gitignore @@ -132,17 +130,23 @@ cat applications/.gitignore *.o *.so.* ``` +源码包目录下的隐藏文件有.footprint*,.md5sum: +* .footprint\*:每个源码包目录下都有这一系列的文件,只不过会基于不同的计算机体系结构会呈现出不同的文件名。此文件名的机构为,.footprint_计算机体系结构_二进制包的类型,下面分别进行介绍: + * .footprint:这是此文件名中通用的字段,每个文件都会有; + * 计算机体系结构:编写此文档时,最常见的是x86_64。有些源码包目录下也许会有ia64、ppc_64等类型的体系结构; + * 二进制包类型:rocky6.0.42.41的二进制包分为安全包(这个字段为sec)和基本包(这个字段为base)。编包时,给pkgmk加上选项-s,编出来的就是安全包,不加就是基本包。详细介绍见《pkg 命令说明文档V0.2.odt》。 +以在x86_64体系结构的计算机上编译acct二进制安全包时生成的.footprint_x86_64_sec为例,来介绍此系列文件的内容: +``` +cat .footprint_x86_64_sec -源码包目录下的隐藏文件,有.footprint*,.md5sum: -* .footprint\*:每个源码包目录下都有这一系列的文件,这一系列的文件,记录了针对不同的计算机体系结构,编译出来的二进制报的目录、文件的摆放位置。 - * .footprint:记录了不针对任何体系结构时,编译出来的安全包的文件和目录的存放位置 - * .footprint_base:记录了不针对任何体系结构时,编译出来的基本包的文件和目录的存放位置; - * .footprint_ia64_sec:记录了针对ia64体系结构的计算机,编译出来的安全软件包的文件和目录的存放位置; - * .footprint_ppc64_base:记录了针对ppc64体系结构的计算机,编译出来的基本包的文件和目录的存放位置; - * .footprint_x86_64_base:记录了针对x86_64体系结构的计算机,编译出来的基本包的文件和目录的存放位置; - * .footprint_x86_64_sec:记录了针对x86_64体系结构的计算机,编译出来的安全包的文件和目录的存放位置。 -文件名中的base表示针对基本包的记录,sec表示的是针对安全包的记录。 -打开其中任意一个文件查看其内容,发现这个文件的每一行包含三个字段,结尾处是一个目录名或者文件名。 +drwxr-xr-x sys/sys usr/ +drwxr-xr-x sys/sys usr/bin/ +-rwxr-xr-x sys/sys usr/bin/ac +... 此处省略若干行... +drwxr-xr-x root/root var/lib/pkginfo/ +-rw-r--r-- root/root var/lib/pkginfo/acct.md5sum +``` +发现这个文件的每一行包含三个字段,结尾处是一个目录名或者文件名。 * 第一个字段描述这一行结尾处文件或目录的属性; * 第二个字段是这个目录或文件的属主、属组; * 第三个字段是这个文件或目录的存放路径。 @@ -158,4 +162,5 @@ d77fa789b4cae8b1ef7bc10e6220a529 binutils-2.18-GCC43-1.patch * 第一个字段是一个校验和; * 第二个字段是这个校验和对应的文件名。 实际上,每一个在Pkgfile的source=()中列出的文件,都会有一个校验和存放到这个文件中,当这些文件被改动后,如果不更新被改动文件的校验和,pkgmk命令将会报错,这时可以用pkgmk命令加上-um参数来更新文件的校验和。 + 最后,还有一点跟源码包目录下的内容相关的问题。由于历史的原因:smile:,有些源码包目录下会有各种不同版本号的源码包,以及这些源码包各自需要的补丁文件等,例如上面的目录树示例中列出的firefox目录。其实,没必要将所有用过的不同版本的源码包以及这些源码包用到的文件都保留下来,每个源码包目录下只需要放置最近一次使用的源码包和它所需要的文件即可。所以,在写作本文档的时候编包,不再将多余的内容放在软件包名目录下,只放本次编译二进制包用到的文件,这让软件包名目录下的内容显得精炼了不少,例如上面示例中的acct目录就是。