我应该安装一个不在apt源中的软件包版本的.deb文件吗?

如果一个软件包的版本不在apt源中,即当我运行apt-cache policy package时该版本不会出现,那么安装这个版本的.deb文件是否明智?我猜这里存在风险。这样的风险经常发生吗?风险的后果通常是大还是小?通过卸载软件包以恢复正常状态可以逆转这些风险吗?
举个具体例子,我想安装bluez_5.50-0ubuntu1_amd64.deb文件而不是bluez_5.37-0ubuntu5.1_amd64.deb软件包维护者的版本。有人尝试过这样做吗?可以吗?

15.37 是Xenial(16.04)。5.50 是Cosmic(18.10)。安装错误版本的deb软件包通常是一个糟糕的主意,并且有可能会严重破坏您的系统。考虑在您的硬件上尝试使用一个18.10的LiveUSB来测试蓝牙是否工作更好。如果是这样的话,那么就决定进行完整的系统升级吧。 - user535733
1个回答

1. 从外部软件源手动安装的.deb文件不会像从默认的Ubuntu存储库或PPA安装的那样自动更新。
2. 当安装.deb文件时,它的缺失依赖项也会随之安装。由于与从默认的Ubuntu存储库安装的其他软件包存在冲突的依赖关系,可能会导致软件包管理问题。
3. 您是否有理由相信您手动安装的.deb文件的来源与默认的Ubuntu存储库中的软件包一样可靠?对于某些人来说,这个因素本身就足以让他们在虚拟机中安装.deb文件,以尽量减少安装不受信任软件包可能带来的不利和/或不可逆转的后果。
4. 安装相对不受信任的.deb文件可能有更安全的替代方案。 - 与apt软件包不同,snap软件包通常会更新到最新版本。如果默认的Ubuntu存储库中提供了snap软件包,那么snap软件包是相对不受信任的手动安装.deb文件的一个很好的替代方案。 - 另一种安装相对不受信任的.deb文件而无需root权限的替代方案是找到软件包的源代码,并在普通用户的主目录中编译它。这是一个复杂的选项,其优点是当正确执行时,比使用root权限安装相对不受信任的软件包更安全。
5. `rmadison bluez` 的结果显示了以下bluez版本。bluez软件包包含用于使用蓝牙设备的工具和系统守护程序,但它不包含所有蓝牙设备所需的驱动程序。当蓝牙出现故障时,通常是由于驱动程序问题而不是bluez本身。 ``` bluez | 4.98-2ubuntu7 | precise | 源码, amd64, armel, armhf, i386, powerpc bluez | 4.98-2ubuntu7.2 | precise-updates | 源码, amd64, armel, armhf, i386, powerpc bluez | 4.101-0ubuntu13 | trusty | 源码, amd64, arm64, armhf, i386, powerpc, ppc64el bluez | 4.101-0ubuntu13.3 | trusty-security | 源码, amd64, arm64, armhf, i386, powerpc, ppc64el bluez | 4.101-0ubuntu13.3 | trusty-updates | 源码, amd64, arm64, armhf, i386, powerpc, ppc64el bluez | 5.37-0ubuntu5 | xenial | 源码, amd64, arm64, armhf, i386, powerpc, ppc64el, s390x bluez | 5.37-0ubuntu5.1 | xenial-security | 源码, amd64, arm64, armhf, i386, powerpc, ppc64el, s390x bluez | 5.37-0ubuntu5.1 | xenial-updates | 源码, amd64, arm64, armhf, i386, powerpc, ppc64el, s390x bluez | 5.48-0ubuntu3 | bionic | 源码, amd64, arm64, armhf, i386, ppc64el, s390x bluez | 5.48-0ubuntu3.1 | bionic-updates | 源码, amd64, arm64, armhf, i386, ppc64el, s390x bluez | 5.50-0ubuntu1 | cosmic | 源码, amd64, arm64, armhf, i

如果发生冲突,移除deb软件包能解决问题吗? - ydhhat
卸载一个.deb软件包并不会自动删除与之一同安装的依赖项,但如果依赖包存在包管理问题,可以使用aptitude程序手动逐个删除,或者通过运行sudo apt autoremove命令批量卸载便捷地解决。 - karel
为什么sudo apt autoremove有时候起作用 - ydhhat
如果由.deb文件安装的依赖包不再需要,它被称为孤立的包,sudo apt autoremove可以自动删除它,但有时其他已安装的包也需要相同的依赖包,这时需要aptitude提供智能的方式来删除这些包,并用Ubuntu软件源中的包替换非Ubuntu软件源中的包。 - karel