像 Debian、Red Hat 这样的 Linux 发行版如何从一个源码包制作多个二进制包?

像 Debian、Red Hat 这样的 Linux 发行版如何从一个源码包制作多个二进制包?

我想知道 Debian、Red Hat、Gentoo、Ubuntu 等 Linux 发行版是如何从一个包中生成多个二进制包的?当我编译包时,它们就变成了全部安装。所以我的问题是:

他们如何将它们分开?

他们如何找出他们的依赖关系?

答案1

构建分发包时,工件不会直接安装在其目标位置。相反,它们被安装到临时位置,并使用那里的内容构建包。

对于构建多个二进制包的源包,上面的最后一步被拆分为多个目标包。每个目标包都列出了它应该包含的文件。查看各个.install文件我的libevdev包裹例如;构建libevdev安装以下文件:

debian/tmp/usr/include/libevdev-1.0/libevdev/libevdev.h
debian/tmp/usr/include/libevdev-1.0/libevdev/libevdev-uinput.h
debian/tmp/usr/lib/x86_64-linux-gnu/libevdev.la
debian/tmp/usr/lib/x86_64-linux-gnu/libevdev.a
debian/tmp/usr/lib/x86_64-linux-gnu/libevdev.so.2.3.0
debian/tmp/usr/lib/x86_64-linux-gnu/pkgconfig/libevdev.pc
debian/tmp/usr/bin/libevdev-tweak-device
debian/tmp/usr/bin/mouse-dpi-tool
debian/tmp/usr/bin/touchpad-edge-detector
debian/tmp/usr/share/man/man3/libevdev.3

(相当于你通过安装得到的sudo make install),并且这些被分成

  • libevdev2

    /usr/lib/x86_64-linux-gnu/libevdev.so.2.3.0
    
  • libevdev-dev

    /usr/include/libevdev-1.0/libevdev/libevdev.h
    /usr/include/libevdev-1.0/libevdev/libevdev-uinput.h
    /usr/lib/x86_64-linux-gnu/libevdev.a
    /usr/lib/x86_64-linux-gnu/pkgconfig/libevdev.pc
    /usr/share/man/man3/libevdev.3
    
  • libevdev-tools

    /usr/bin/libevdev-tweak-device
    /usr/bin/mouse-dpi-tool
    /usr/bin/touchpad-edge-detector
    

(这udeb是一个特殊情况,可能不值得在这里讨论。)

相关内容