【问题标题】:Adding a .deb file to debian package as dependency将 .deb 文件添加到 debian 包作为依赖项
【发布时间】:2015-07-30 19:18:00
【问题描述】:

我正在尝试打包一个程序 (FCL),但它有一个依赖项 - libccd - 我必须自己打包。所以现在我使用 check-install 创建了一个libccd_2.0-1.deb 文件,我希望它作为 FCL 依赖项安装。所以我在 FCL Debian 包的控制文件中添加了libccd (>= 1.0)。但是FCL包抱怨找不到依赖libccd

当看到依赖项libccd 时,如何让FCL 包安装libccd_2.0-1.deb?另外,我应该在 FCL Debian 软件包中的哪里添加 .deb 文件?

【问题讨论】:

    标签: debian packaging


    【解决方案1】:

    不,你不能。 dpkg(用于安装单个 .deb 文件)无法填充依赖项。

    依赖只能通过apt-get/aptitude来解决,但不能直接安装.deb文件,只能从仓库安装包。每个存储库都有一个元数据文件并易于构建其知识数据库,因此当依赖项说需要包 libccd 时,它会知道可以从存储库 XY 获得。

    但是dpkg 不知道在哪里搜索所需的包。您可以先安装libccd*.deb,然后安装fcl*.deb 本身来安装您的软件包。或者最好您可以将它们都作为一个 dpkg 调用的参数,如下所示:dpkg -i fcl*.deb libccd*.deb 和 dpkg 将自行确定首先安装这两个中的哪一个。 (或者您可以创建自己的存储库,您将在其中拥有两个包含相关元数据的包。)

    【讨论】:

    • 我通常使用 Ubuntu 软件中心安装单独的 .deb 文件,它也会安装所有依赖项
    • (不知道他们内部是否使用 aptitude)
    • 这是 aptitude/dpkg 的 GUI 前端,所以我猜它会解析 dpkg 输出中的依赖项,通过 aptitude 安装它们,然后通过 dpkg 安装 .deb 文件。
    • 依赖解析系统称为apt,其中apt-getaptitude(以及synaptics 等等)是前端。
    【解决方案2】:

    从 apt 1.1 版开始(目前在 Debian 实验版中),您实际上可以直接使用以下方式安装 .deb 文件:

    % sudo apt-get install ./disorderfs_0.1.0-1_amd64.deb
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Note, selecting 'disorderfs' instead of 'disorderfs_0.1.0-1_amd64.deb'
    The following additional packages will be installed:
      fuse
    The following NEW packages will be installed:
      disorderfs fuse
    0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
    Need to get 70.8 kB/81.2 kB of archives.
    After this operation, 175 kB of additional disk space will be used.
    Do you want to continue? [Y/n] 
    

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      相关资源
      最近更新 更多