我想知道 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
是一个特殊情况,可能不值得在这里讨论。)