debian软件仓库研究.doc_第1页
debian软件仓库研究.doc_第2页
debian软件仓库研究.doc_第3页
debian软件仓库研究.doc_第4页
debian软件仓库研究.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

以Debian官方的软件仓库即站点URL(/debian/)为例子进行Debian软件仓库FTP结构学习研究。Debian的FTP结构:Debian/doc目录是一些Debian documentation。Debian/indices目录Various indices of the site,是一些维护人员使用的索引文件。Debian/project目录Experimental packages and other miscellaneous files,一些开发人员的资源。Debian/tools目录Tools for creating boot disks and booting Linux。Debian/pool目录是存储软件包的物理地址。Debian/dists目录的意思是distributions,该目录是获得Debian发布版本(releases)和已发布版本(pre-releases)的软件包的正规途径。有些旧软件包及packages.gz文件仍在其中。该目录可以视为Debian软件的索引目录。本课题主要研究Debian/pool目录和Debian/dists目录结构。Debian/dists目录:该目录下分为“stable”发行版,“testing”发行版,“unstable”发行版,有时还有一个“frozen”发行版,“sid”版本软件包。过去sid并不存在,FTP站点结构有个缺点:假设当前unstable发行版中创建了某个软件开发项目,当unstable成为新的stable版之时,便是它的发布之日。由于软件包一但发布就需要移动到新的stable目录,当众多软件开发项目移动目录时大量带宽会被吞噬掉,这个流程就显得很不切实际,因而许多软件开发项目并没有按这个方法行事。经过几年的研究摸索,文档管理员提出一个方案,将未获准发布的二进制文档存入名为sid的特定目录。由于这些软件尚未发布,从那时起,它们就被加入到unstable目录树。当它们首次发布时,将会建立一个从当前stable指向sid的链接。刚刚开发的软件包放置在unstable中,其反映了系统的最新开发进展,使用unstable版本的好处就是用户总能体验Debian项目的最新更新。当unstable版本经过通过级别测试后登记到testing版本,这些软件包必须同时运行于所有架构,并且没有关联性问题影响到其卸载,unstable版版本有更少的release-critical错误。Testing版本可以作为更佳发布候选版本。当testing发布版足够成熟,这些版本的软件会被“freezing”,一段时间后这个“testing”发行版就真正的“frozen”了,即这个版本不再加入新的代码,只进行除错工作,testing版本经过不断测试后错误总数低于可接受的最大值,则frozen的testing就晋升位stable并分发一个版本号。Sid、unstable、testing、stable等目录下的目录结构都是一样的。以stable目录为例:Stable/main/目录包含的软件包是最新Debian GNU/Linux系统发布版的正式组成部分。stable/non-free/目录包含的软件包受到一定的限制,发行者需要遵循特殊版权要求,是非自由软件。stable/contrib/目录包含的软件包均遵循DFSG-free原则,本身是自由发布的,但是这些软件包的关联软件包不具有自由属性,他们位于non-free目录,该目录下软件可视为半自由软件包。Stable/Release文件:该文件应该包含对应目录中关于发布文件和校验和的索引元数据信息。Stable/Release.gpg文件:该文件是对应的Release文件的gpg签名文件,保存签名信息。Stable/Contents-$arch.gz:这个文件有很多,对应着各个不同的体系架构(amd64、i386、ia64、armhf等),这个文件将Debian(ubuntu)系统中可用的每个文件映射到它所源自的那个软件包。它包含了所有Debian/dists发布版本下对应架构的包。这个文件中是一个两列组成的列表,第一列是“FILE”字段,表示系统中的文件,第二列是“LOCATION”字段,表示软件包。如下图所示:用户可以用这个列表来确定哪个软件包包含或者不包含哪个文件,也可以确定文件的路径。这个列表是每周更新的,每个不同的架构对应的该文件更新不在同一天。当一个文件被不止一个软件包包含,所有的软件包都会被列出来。但是当一个路径被不止一个软件包包含的时候,仅仅会列出第一个软件包。比如要查看cat命令在哪个包,用dpkg -search /bin/cat查看,dpkg就是通过该文件进行查找的,结果是coreutils软件包,再用apt-cache show coreutils命令查看该软件包的详细信息,在Description-en字段中,我们获取如下信息:Specifically, this package includes: arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false flock fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink users vdir wc who whoami yesMain/、contrib/、non-free/目录(ubuntu软件仓库镜像站点对应的目录是main、multiverse、restricted、universe)下的结构也是一样的。下图是下载到本地的ubuntu镜像dists/trusty/main目录下的文件内容。i18n/目录:该目录下是“Translation”indices,有一个Index索引文件保存本目录下的文件SHA1索引值,其他每个文件的命名方式是Translation-$LANG.bz2,$LANG对应不同的本地化语言。该目录下的每个文件中包含的文件索引和binary-$ARCH下的Packages索引文件内的软件包索引是一一对应的。Translation索引文件就像Packages索引文件一样,但是仅仅有三个字段:Package、Description-md5、Description-$LANG这三个字段,其中Package和Description-md5两个字段和binary-$ARCH下的Packages索引文件中的这两个字段是一模一样的,Description-$LANG字段是相应的$LANG本地化语言的描述行语言。Binary-$ARCH目录:该目录是对应的$ARCH架构下的软件包的索引,这里要说明一下indices文件的压缩格式一般有三种:No compression、Gzip、Bzip2三种格式,对应下图中的文件分别是Packages、Packages.gz、packages.bz2三个文件,这三个索引文件的内容都是一样的。Packages文件称为二进制包索引,其文件有多个段组成,每个字段都在Debian Policy文档中5.3(Binary package control files - DEBIAN/control)节定义,其中也可能会包含没有在官方文档中定义的字段,但是能在control文件中找到。Packages文件每个段都是以”Package“字段开头的。如下所示为一个段的内容:Package: libghc-quickcheck1-profSource: haskell-quickcheck1 (-2)Version: -2+b1Installed-Size: 686Maintainer: Debian Haskell Group Architecture: amd64Replaces: libghc-quickcheck-prof ( -6)Provides: libghc-quickcheck-prof, libghc-quickcheck-prof--f4e65Depends: libghc-quickcheck1-dev (= -2+b1), libghc-base-prof--40b99, libghc-random-prof--e3566Conflicts: libghc-quickcheck-prof ( -6)Description: Haskell automatic testing library for GHC; profiling librariesHomepage: /package/QuickCheckDescription-md5: 6846e7c2e8c18b9e5e4f69c0eda9f372Section: haskellPriority: extraFilename: pool/main/h/haskell-quickcheck1/libghc-quickcheck1-prof_-2+b1_amd64.debSize: 115464MD5sum: a02dcd36d586f440646fe4b44821650bSHA1: fe36a4915558a6ac4c7971b8bf322b1df9dcf2d9SHA256: bf607b240ab2cb7f06195538d056f290540d064c4db89616f673668fe0e38cc3其大部分的字段和Debian的deb包中的Debian/control文件中的字段是意义相同的,部分字段是在这里必须有的:Filename字段(强制性必须有的):强制性的Filename字段应该列出里获取安装包在仓库中相对于跟目录的路径(在pool目录下的软件包物理地址)。该路径应该是规范形式,也就是没有任何表示当前目录或父目录的格式(“.”或“.”)。它还应不利用任何特定协议的组成部分,诸如URL编码的参数。Size字段(强制性必须有的):强制性Size字段描述了包的大小,在其压缩格式下,以字节为单位。其值应是一个严格的正整数,以十进制形式给出,不以0开头。MD5sum, SHA1, SHA256字段 (建议应该有的字段):该MD5sum(小写s),SHA1,SHA256字段为验证文件的完整性提供加密的哈希值。其值应以十六进制给出,包括0开头,并且使用小写字母。其中至少提供一个字段,建议提供一个 MD5sum 字段和另一个字段。Description-md5(可选的字段):该字段是对description字段的完整英文描述的MD5校验和,如果没有特殊情况,从description(deb包中的Description字段)字段冒号后的第二个字符(第一个字符是空格)开始进行MD5校验和计算,并且包含字段尾的换行符。字段值原样处理,不做任何格式的修改如移除压缩等。下面给出个例子,从commandline的“c”字符开始到Description-md5之前都在Description-md5的校验和计算范围之内:Description: commandline package managerThis package provides commandline tools for searching andmanaging as well as querying information about packagesas a low-level access to all features of the libapt-pkg library.These include:* apt-get for retrieval of packages and information about themfrom authenticated sources and for installation, upgrade andremoval of packages together with their dependencies* apt-cache for querying available information about installedas well as installable packages* apt-cdrom to use removable media as a source for packages* apt-config as an interface to the configuration settings* apt-key as an interface to manage authentication keysDescription-md5: 9fb97a88cb7383934ef963352b53b4a7Binary-$ARCH/Release文件:描述了该仓库目录的一些标签信息。如下:/debian/dists/stable/main/binary-amd64/ReleaseArchive: stableOrigin: DebianLabel: DebianVersion: 7.8Component: mainArchitecture: amd64对于Release索引文件,在不同的仓库位置,其中的内容有点区别:在软件仓库中有/dists/$DIST/Release和/dists/$DIST/binary-$ARCH/Release这两个索引文件,这两个文件都是相同性质的索引文件:图1是/dests/$DIST/Release的文件,图2是/dists/$DIST/binary-$ARCH/Release的文件,前者相对于后者有一个MD5Sum字段,这个字段按行把当前目录及其子目录下的文件列出,每行分别是MD5、Size、Filename三个字段。后者就没有这一个字段。Release中的各个字段是对当前软件仓库的元数据信息描述,以便区分不同的存储库。这些字段非常丰富:Description:仓库的描述信息。Origin:可选字段,标识存储库起源。Label:可选字段,包括一些种类的标签。Version:版本字段,如果指定,应是发行文件的版本。Suite:在Debian体系中,这应是oldstable, stable, testing,unstable, experimental之中的一个;且带有可选的后缀如-updates。Codename:开发版本代号,wheezy、trusty等。Components:一个用空格分隔的列表清单,debian下是main contrib non-free。Architectures:单独的单词标识debian的机器架构。Date:该字段应指定创建发布文件时的时间Valid-Until:该字段可以指定什么时间客户端可以把发布文件视为过期MD5Sum, SHA1, SHA256:索引值,用于验证文件的真是性和一致性,每行三段,分别是MD5、文件Size、FilenameNotAutomatic and ButAutomaticUpgrades:NotAutomatic和ButAutomaticUpgrades字段都是可选的布尔型字段用于指示包管理器。它们可以包含值“yes”和“no”。如果没有指定一个字段,这该字段默认为“no”。如果指定了NotAutomatic字段“yes”值,包管理器在这个软件仓库没有显式的用户同意(APT分配优先级为1)不应该安装包(或升级到更新的版本),如果字段ButAutomaticUpgrades被指定为良好,设置值为“yes”,则包管理应自动从该库中安装升级包,如果已安装的包的版本比包在其他来源(APT分配的优先级为100)的版本高。指定ButAutomaticUpgrades字段为yes,而不指定NotAutomatic字段为yes是无效的。Source/目录:其包含本发行版的所有源代码包的索引文件. 索引文件称做 Sources,这个文件同Packages文件一样,也有三种压缩格式:No compression、Gzip、Bzip2。分别对应Sources、Sources.gz、Sources.bz2。该目录下同样有Release文件对应的描述文件。Sources文件又添加了几个特定的新字段:Directory字段(强制必须的字段):该字段应列出源代码包在库中的位置,相对于仓库根目录(/pool)的路径。Priority字段(可选字段):required、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论