在我的系统上,我通过直接编译源代码或通过其他不使用包管理器的方式安装了一些程序(例如,我直接从网站上提供的 iso 安装了 TeX Live),一个例子它们是 ViM:我通过直接编译源代码安装它并运行sudo make install
.
问题是包管理器不知道我的系统上安装了这样的软件,因此它要求我安装它(例如,如果我键入apt install vim
它告诉我可以安装 ViM,即使我已经安装了 ViM我的系统)。
如何让包管理器知道某些包中包含的程序已经安装的事实?
提前致谢。
编辑:这个问题来自我安装 GNU-Octave 的需要。我已经安装了 texlive(正如我之前提到的),但仍然apt
想安装tex-common
和texinfo
. man texinfo
我在安装之前通过键入检查了包 texinfo 的内容是否存在,并显示了一个手册页。安装后texinfo
用apt install texinfo
那个手册页改变了。
包管理器需要一些关于包的数据才能发挥它的魔力。诸如路径、配置文件、启动和停止服务、安装前和删除后脚本、依赖项......
如果您从源代码编译,并且源代码没有您系统使用的包的构建目标,则很难让系统知道手动安装的软件(请注意,在包管理器的眼中,什么都没有安装)。它相当于从源代码创建一个合适的包(例如,一个 .deb)。
因此,答案是检查源是否具有系统中使用的包的构建目标。如果还没有,那么您必须自己创建结构来构建包。
Octave 工作人员属于另一个问题。如果那是您真正的问题,那么开始一个新问题,并发布
apt
命令和输出。您可以通过安装存根“等效”包来欺骗包管理器。equivs包可以帮助你创建它们,它的描述是:
请注意,从这一点开始,您将独自一人。希望您有充分的理由选择这条路线,而不是从包中安装软件(最好是反向移植,但甚至是由
checkinstall
.我有一个类似的问题,因为我花了一段时间才弄清楚,我想我会把我的解决方案放在这里。
这是一个脚本,您可以使用包名列表调用它,它构建可安装的 .deb 包文件。
完成后(需要几秒钟或更短的时间),您可以使用“dpkg -i *.deb”安装软件包