我使用的是 Ubuntu 服务器 22.04 (Jammy)。
我还是一个 Ubuntu 新手,我想要一个我之前通过相关 PPAapt upgrade
安装的软件包。apt
结果不行,apt看不到最新版本。原因是 PPA 背后的团队在最新版本的某些构建中失败了,并且apt
从逻辑上讲,认为我拥有最新版本,因为较新版本的构建失败了。
更新非常重要,因此我想通过项目 Github 提供的二进制文件手动安装/升级包。我的意思是下载.tar.gz
项目团队提供的。
之后包裹会怎样?apt 会继续跟踪单独的版本吗?apt 会拒绝更新我手动升级的东西吗?我会搬起石头砸自己的脚,最终得到同一个包裹的两个实例吗?
任何信息,将不胜感激。
您需要从包管理器的角度来思考。包管理器具有跟踪包、版本及其文件的本地数据库。因此,它看到“升级”的唯一方法是在数据库中增加版本。您可以在不更改任何包内容的情况下执行此操作,在这种情况下,您会“伪造”升级,因为包文件仍然是较旧的文件。
从您提到的
tar.gz
文件来看,您可能想从源代码编译包并用您构建的文件覆盖二进制文件。在这种情况下,它会工作一段时间,但随后更新将覆盖文件。更糟糕的是,如果您运行ninja/make install
而不只是复制几个文件,您最终可能会在系统中出现未跟踪的文件,这是另一种蠕虫病毒。话虽如此,只要您从源代码编译软件没有遇到任何问题(我认为自从您提到使用 以来,您就没有遇到过问题
tar.gz
),制作.deb
它的包就非常简单。基本上,你:control
文件来描述包名称、版本以及您想要的任何内容。不要忘记将较新的版本放在那里,以便包管理器知道在远程存储库/PPA 中出现较新的版本之前不要更新包。ninja/make install
并DESTDIR
覆盖到要组装包的目录的绝对路径fakeroot dpkg-deb --build "/foo/bar/package-dir" my-cool-pkg.deb
来组装my-cool-pkg.deb
文件然后你调用 a
sudo apt install ./my-cool-pkg.deb
来安装它。注意:不要使用 root/sudo 来组装包。如果你需要它,那你就做错了。您只需要它来安装软件包。
示例:这是我用来创建rr 实用程序的 git 版本的脚本,这是一个允许记录进程执行以便稍后在 gdb 中重放的框架:
您可以使用此脚本作为基础来为您想要的任何内容创建 deb 包。您可以删除文件中的大部分字段
control
,因为您可能只需要PACKAGE
和Version
字段,Depends
如果您愿意的话,也许还需要 a 字段。