我曾经决定从源代码构建一个程序,但后来意识到我将无法再更新它,因此手动删除了所有它。
有没有办法make install
不乱扔文件/
?例如在桌面上创建一个程序文件夹,并在那里编译构建?
我使用的是 Debian 10.4。
答案1
README
当编译一个不熟悉的源代码包时,您应该始终从读取它的和INSTALL
文件(如果包中存在)开始。
制作精良的源代码分发 tarball 应该始终提取到与运行提取它的命令的位置相关的单个子目录中。但并非所有源代码发行版都制作精良:您应该始终首先检查内容列表在tar tf tarball.tar.gz
提取不熟悉的 tarball 之前,如果有必要,请为该特定源包创建一个工作目录,cd
放入其中,然后在其中运行提取命令。
如果构建过程是./configure; make; make install
(即它使用 Autoconf),那么您可以在该阶段使用命令行选项configure
来确定最终结果将安装到哪里。请参阅./configure --help
参考资料 获取特定源代码包中可用选项的列表。
你可能应该总是使用类似./configure --prefix=/usr/local
, ./configure --prefix=/opt/<name of software package>
, 或者也许./configure --prefix=$HOME/Desktop/My_Software/<name of software package>
如果构建过程仅以 开始,则 main和/或make
中通常有许多变量,您可以编辑这些变量以确定安装位置。Makefile
config.h
在运行之前make install
(这通常是进程中可能需要以 root 身份运行的唯一部分,具体取决于程序需要安装到的位置),通常最好运行一下,make -n install
因此它会列出命令如果在没有该选项的情况下执行,它将运行-n
,并验证目标目录是否正确。
make clean
通常会从源代码目录中删除编译过程的所有结果,并保持所有编译时配置文件不变。
一些(但不是全部)源代码包也有一个make uninstall
会尝试删除make install
.
如果主源代码目录包含名为 的子目录debian
,其中包含名为rules
和的文件control
,则开发人员已包含*.deb
从该源代码分发包自动构建包的功能。在这种情况下,您可以使用该debuild
命令(或其等效命令之一,例如fakeroot debian/rules binary
)来构建一个或多个*.deb
可以使用dpkg
或apt
照常安装的二进制包。
如果您想*.deb
从尚未具有 Debian 打包工具的源代码包生成软件包,那么添加它们通常不会太困难。这有时称为“debianizing”源代码包。请参阅此链接:https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html