我是 OpenBSD 用户。在OpenBSD FAQ 中,它说:
OpenBSD 是一个完整的系统,旨在保持同步。它不是可以单独升级的内核和实用程序。
当您升级系统时,您可以一次性完成;内核和基本系统被替换。然后你去更新你的第 3 方包。如果从源代码编译,则重新编译内核并引导它。然后你重建基本系统,然后是你已经安装的包。如果自上次重建所有内容以来已经过去了几个星期/几个月,您首先安装一个快照并从那里重建(如果您正在关注最新的 CVS 分支)。
具有不同步的内核、基本系统和/或 3rd 方软件包是潜在问题的来源,并且或多或少使您无法从官方邮件列表中获得任何认真的帮助。
我对此很满意。事实上,这也是我使用 OpenBSD 的原因之一。它使系统成为一个一致的单元,并使我很容易对它形成一个心理概述。
在 Linux 上感觉如何?我所知道的大多数 Linux 都没有与 BSD 相同意义上的“基本系统”,而是由分发提供商组装的一组软件包。然后由本地管理员以这样的方式添加更多软件,使得从一开始就有的软件和后来添加的软件之间的界限充其量是模糊的。
Linux(一般而言)是否没有强大的内核与用户空间耦合? 据我所知,内核已更新,就像任何其他软件包一样,这让我有点困惑,这完全是可能的。除此之外,有些甚至编译自定义内核(在 OpenBSD 上不鼓励这样做),并且在其引导菜单中列出了多种不同的内核版本。
谁或什么保证 Linux 系统的各个子系统能够相互协作,即使它们彼此独立更新?
我问的原因是因为该站点上的另一个用户问我是否可以用更新的版本替换他的 Linux 系统中的内核“可行”。从 OpenBSD 方面来看,我不能说是的,这将保证不会破坏系统。
我使用上面的“Linux”作为“Linux 发行版”、内核 + 实用程序的简写。
我目前正在运行 Debian 测试 (Wheezy) 并试图让SCIM工作。我想安装scim-pinyin包,但在测试存储库中没有这样的包,尽管在以前的稳定 (Squeeze) 存储库中有一个。有一个包的副本不稳定但不适用于我的架构(amd64)。
查看软件包版本,我注意到稳定存储库中的版本与不稳定存储库中的版本相同。既然如此,我有两个问题:
有什么原因我不能从较旧的存储库安装软件包,因为我认为大多数 Squeeze 软件包的依赖项可能会被当前正在测试的软件包版本所满足?
实现这一目标的最佳方法是什么?(将 Squeeze 存储库添加到sources.list?下载 Squeeze 包并手动安装?)
我怎样才能得到,不是包的依赖,而是依赖于某个包的包?
我在我的 Web 服务器上使用 debian 6.0 Squeeze-LTS(第一次扩展以获取长期支持!),它报告说对某个软件包的支持已经结束:
Unfortunately, it has been necessary to limit security support for some
packages.
The following packages found on this system are affected by this:
* Source:libplrpc-perl, ended on 2014-05-31 at version 0.2020-2
Details: Not supported in squeeze LTS
Affected binary package:
- libplrpc-perl (installed version: 0.2020-2)
Run Code Online (Sandbox Code Playgroud)
我真的不想在没有看到依赖于它的东西的情况下尝试卸载那个二进制包,它的描述描述了我以前从未听说过的东西:
libplrpc-perl: Perl extensions for writing PlRPC servers and clients
Run Code Online (Sandbox Code Playgroud)
因此,如果可能的话,我只删除包就可以了,但想在这样做之前确定依赖于它的东西。
这是我想要的:
从一个虚拟系统开始,没有安装软件包。然后我调用一个工具,类似于apt-get要求它计算依赖项并将所有将安装的包标记为已安装。
让我说清楚:它说安装了软件包,但实际上没有安装任何文件。
然后,如果我要求“安装”更多软件包,它可能会建议添加或删除其他软件包。它实际上不会删除包,但显然只是将它们标记为已删除。
这将很有用,因为我将能够在裸机 Debian 或 Ubuntu 系统上测试软件包的安装。它会让我知道在特定情况下是否可以安装软件包。
对实际安装执行此操作会占用大量磁盘空间和时间。
apt 有一个“模拟”选项,但它不会将软件包标记为已安装。
例如,qcad由于错误:“找不到 qdict.h” ,我无法安装包。
如何找到提供该文件qdict.h的软件包以便我可以安装该软件包qcad?
一些包,有一个Provides:标题。例如,postfixDebian Wheezy 上的软件包有Provides: mail-transport-agent.
mail-transport-agent物理上不存在的包被视为“虚拟”包。
在基于 Debian 的系统上,我如何知道给定的虚拟包是否已“安装”(或“提供”)?我可以列出每个“提供的”虚拟包吗?
提示:要列出每个现有的虚拟包,安装与否,请执行以下操作:aptitude search "~v"
我编写了一个使用 Postgres 数据库的程序,并为它编写了一个 systemd 服务文件。目前我的服务在启动时启动得很好,当 Postgres 停止升级时它会停止(通过apt upgrade)。但是,当升级完成并再次启动Postgres 时,我的服务并没有自动启动。
我可以定义一些依赖项来让我的服务再次自动启动吗?
这是我的服务在 Postgres 升级期间自动停止后的状态:
? tabill.service - My service
Loaded: loaded (/srv/tabill/tabill.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2017-07-04 00:29:24 EEST; 44min ago
Main PID: 1048 (code=killed, signal=TERM)
Run Code Online (Sandbox Code Playgroud)
请注意,我可以再次手动启动该服务就好了。
这是我的服务文件:
[Unit]
Description=My service
Wants=nginx.service
Requires=postgresql.service
After=postgresql.service
[Service]
Type=simple
ExecStart=/srv/tabill/app/serve
Restart=always
TimeoutSec=60
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我试过添加PartOf=postgresql.serviceand BindsTo=postgresql.service,然后手动停止和启动 Postgres,但都没有帮助。
当然,我可以删除Requires,但最好同时停止这两个服务,前提是它们都可以重新启动。
我正在尝试安装我之前在 Debian 8 上安装的第 3 方 .deb 软件包。但我无法在全新的 Debian 9 设置上安装,因为出现以下错误:
dpkg: dependency problems prevent configuration of parity:
parity depends on libssl1.0.0 (>= 1.0.0); however:
Package libssl1.0.0 is not installed.
Run Code Online (Sandbox Code Playgroud)
我确实安装了 libssl1.0.2。但它没有被识别为 ">= libssl1.0.0" 所以我想知道如何解决这个问题。
我是否手动安装 libssl1.0.0?如果是这样,如何?
我符号链接的东西吗?如果是这样,是什么?
还有什么?
Apt处理从其存储库或*.deb文件安装的包之间的依赖关系。但是,用户在./configure && make && make install没有先创建.deb文件的情况下从源代码编译和安装的软件呢?Apt是否有可能删除此类软件所需的软件包?将在从源代码安装软件/opt或/usr/local有所作为?
我将我的 Linux 机器从 Ubuntu 18.04 升级到 20.04。
我需要安装 clang 编译器套件,apt命令给了我错误。我已经搜索了许多可能的解决方案,但到目前为止,我发现的解决类似问题的建议都没有帮助。这是我尝试时得到的apt install clang:
? ~ sudo apt-get install -f clang
读取软件包列表...完成 构建依赖树
读取状态信息...完成 无法安装某些软件包。这可能意味着您请求了一个不可能的情况,或者如果您使用的是不稳定的发行版,一些必需的包尚未创建或已从 Incoming 中移出。以下信息可能有助于解决这种情况:
以下软件包具有未满足的依赖项: clang : Depends: clang-10 (>= 10~) 但它不会被安装 E: 无法纠正问题,您持有损坏的软件包。? ~
我做过各种apt-get update和apt-get upgrade。我还尝试一个接一个地列出每个包,但列表不断增长,并没有解决问题。
编辑:在@Martin Konrad 之后,我尝试了 aptitude:
? ~ sudo aptitude install clang
The following NEW packages will be installed:
clang clang-10{ab} lib32gcc-s1{ab} lib32gcc1{ab} lib32stdc++6{ab}
libc6-i386{a} libclang-common-10-dev{ab} libclang-cpp10{ab} libffi-dev{a}
libobjc-9-dev{ab} libobjc4{ab} libomp-10-dev{a} libomp5-10{a} libpfm4{a}
libz3-4{a} libz3-dev{a} …Run Code Online (Sandbox Code Playgroud)