在我的系统中,我通过直接编译源代码或其他不使用包管理器的方法安装了一些程序(例如,我直接从网站上提供的iso安装了TeX Live ),其中一个例子是ViM:我直接编译源代码并运行sudo make install来安装它。
问题是包管理器不知道在我的系统上安装了这样的软件,因此它要求我安装它(例如,如果我输入apt install vim,它告诉我可以安装ViM,即使我已经在我的系统上安装了ViM )。
如何让包管理器知道一些包中包含的程序已经安装了?
提前谢谢。
编辑:这个问题来自我需要安装GNU。我已经安装了texlive (正如我前面提到的),但是apt仍然希望安装tex-common和texinfo。在安装之前,我通过输入man texinfo来检查包texinfo的内容是否存在,并显示了一个手册页面。在安装了texinfo和apt install texinfo之后,手动页面发生了更改。
发布于 2020-01-02 20:13:24
包管理器需要一些包上的数据才能发挥它的神奇作用。例如路径,配置文件,启动和停止服务,预安装和后删除脚本,依赖关系.
如果从源代码编译,而且源代码没有系统使用的包的构建目标,则很难让系统知道手动安装的软件(请注意,在包管理器的眼里,没有安装任何东西)。这相当于从源创建一个合适的包(例如,.deb)。
因此,答案是检查源是否为系统中使用的包构建了目标。如果没有,那么您必须自己创建一个结构来构建一个包。
八达通的工作人员属于另一个问题。如果这是真正的问题,那么开始一个新的问题,并发布apt命令和输出。
发布于 2020-01-03 11:02:34
您可以通过安装存根“等效”包来欺骗包管理器。equivs包可以帮助您创建这些程序,其描述如下:
绕过Debian包依赖关系,这个包提供了一个工具来创建简单的Debian包。通常,这些包只包含依赖信息,但也可以像其他包一样包含正常安装的文件。其中一个用途是创建一个元包:一个包,其唯一目的是声明其他包上的依赖关系和冲突,以便自动安装、升级或删除这些包。另一个用途是绕过依赖项检查:通过让dpkg认为某个特定的包名和版本在没有安装时已经安装,您可以绕过其他包的依赖项中的bug。(尽管如此,请仍然提交这样的bug。)
请注意,从现在起你就得靠自己了。希望您有一个很好的理由选择这条路线,而不是从软件包中安装软件(最好是后端,甚至是由checkinstall创建的)。
https://unix.stackexchange.com/questions/560000
复制相似问题