这些是有关如何在 Linux 上安装 Apache 的要求和说明。 http://httpd.apache.org/docs/current/install.html
所以我已经安装了所有东西 ( c++ compiler,apr和apr-util) 以便能够正确安装 Apache。
唯一剩下的是 PCRE,我已经安装了它并且它位于我的 /usr/local/src/pcre-8.32
当我尝试时,sudo ./configure --with-included-apr我收到此错误:
checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我在什么地方发生了这种奇怪的事情,
pacman -S -w awesome xorg-xinit xorg-server xorg-server-utils
Run Code Online (Sandbox Code Playgroud)
pacman不会下载所有必需的依赖项。
下载包的原因是因为我正在创建一个本地存储库,其中只包含我需要的特定包。(而不是下载整个 repo,因为 Arch 社区由于带宽限制不希望您这样做,这是尊重)
现在,上面定义的包可以很好地下载,它会下载xorg-server等等,并-w确保它们不会被安装。但-S也应该下载它不出于任何原因的所有依赖项。
稍后尝试使用本地存储库安装上述软件包时的输出结果为:
warning: cannot resolve "xorg-xset", a dependency of "xorg-server-utils"
warning: cannot resolve "xorg-xauth", a dependency of "xorg-xinit"
Run Code Online (Sandbox Code Playgroud)
并且列表还在继续......检查回购肯定包丢失并且从未在任何地方下载过。
为什么会这样?我错过了什么吗?逻辑上还是参数明智?
我们在 FreeBSD 10.3 上有开发环境。我听说 FreeBSD 以这种方式管理包依赖关系,它总是寻找所有包的最新版本,主包依赖于哪个包。它看起来像真的。所以,我的问题是:
.deb出于某些原因,我从 a 安装了 Opera 12.16 。假设我需要这个特定版本的特定浏览器,而且别无选择。
但是,该 deb 依赖于不再在我的发行版中的软件包(例如 gstreamer0.10 系列)(Debian 测试)。这使得 apt 在每个操作上都失败,除了apt remove opera依赖错误:
# apt install cli-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
opera : Depends: gstreamer0.10-plugins-good but it is not installable
Recommends: flashplugin-nonfree but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken …Run Code Online (Sandbox Code Playgroud) 我很想了解~Apt 的依赖项是如何处理的,或者它是如何为 deb 文件定义的(我不确定语法是在哪里定义的)。
我遇到了关于 Ubuntu (Focal) 元包的依赖关系,python3该包具有依赖关系约束:(python3.8 >= 3.8.2-1~请参阅此处)。
我相信软件包版本是这样定义的,以便它们按词法顺序排序,但是当我检查 ubuntu focus 时,没有按python3.8词法排序的版本>= 3.8.2-1~,但有一个版本3.8.10-0ubuntu1~20.04.4推断 Ubuntu Focal 的依赖项已损坏(它们没有)或存在~依赖关系中有一些特殊含义。
我能找到的关于该主题的唯一文档是 Debian 的声明包之间的关系。但这没有提到~or 模式匹配。
~那么.deb 依赖项中尾随的含义是什么?
当我运行时equery depgraph www-client/chromium-10.0.648.151,并非所有依赖项都可用。有些节目M[package.mask],而另一些节目[missing keyword]。我的ACCEPT_KEYWORDS是~amd64-linux,根据emerge --info。我尝试了不同的ACCEPT_KEYWORDS(作为传递给 的环境变量eqeury),并且都有不同的缺失依赖项。在所有可能的组合中,只有ACCEPT_KEYWORDS='amd64 ~amd64 ~amd64-linux'同时满足所有依赖关系。
以下是我的问题:
ACCEPT_KEYWORDS='amd64 ~amd64 ~amd64-linux'有效的配置吗?amd64意味着稳定, ~amd64意味着不稳定。怎么样~amd64-linux?~amd64,则equery不会使用仅适用于 的包 amd64,从而导致缺少依赖项。这是预期的吗?如果是这样,不稳定的测试人员应该至少使用ACCEPT_KEYWORDS='amd64 ~amd64'而不是ACCEPT_KEYWORDS='~amd64'?附加信息:我按照本指南安装了 Gentoo Prefix 。默认情况下,
$EPREFIX/etc/make.profile是指向$EPREFIX/usr/portage/profiles/prefix/linux/amd64并包含make.defaults具有ACCEPT_KEYWORDS="-amd64 ~amd64-linux". 既不$EPREFIX/etc/make.conf也不$EPREFIX/etc/make.globals已ACCEPT_KEYWORDS配置。根据eselect profile list,没有选择配置文件。
man for systemd unit 的定义有点不清楚:https : //www.freedesktop.org/software/systemd/man/systemd.unit.html
如果一个单元
foo.service包含一个设置Before=bar.service并且两个单元都在启动,则bar.service的启动将延迟到foo.service启动。[...]After=是 的倒数Before=,即 whileAfter=确保在列出的单元完成启动后启动已配置的单元,Before=确保相反,在启动列出的单元之前已配置的单元完全启动。
可以说我有a.service和b.service。我想a.service之前完全启动,b.service因为b.service取决于a.service.
阅读上述手册页后,我找不到任何关于是否的结论性解释:
Before=b.service在a.service单元文件中指定After=a.service在b.service单元文件中指定After=a.service在b.service单位的文件,并 Before=b.service在a.service单元文件我需要为 systemd 单元文件声明哪些依赖项?有关系吗?
在我的无头 debian 11(牛眼)服务器上,当我尝试安装时libvirt-daemon-system,apt几乎会安装整个图形环境,包括音频库和所有内容:
mic@micserver:~$ sudo apt install libvirt-daemon-system
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-core augeas-lenses dbus-user-session dconf-gsettings-backend dconf-service fontconfig glib-networking glib-networking-common
glib-networking-services gsettings-desktop-schemas gstreamer1.0-libav gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x gtk-update-icon-cache hicolor-icon-theme i965-va-driver
ibverbs-providers intel-media-va-driver ipxe-qemu jq libaa1 libaacs0 libasound2 libasound2-data libass9 libasyncns0 libatk-bridge2.0-0 libatk1.0-0 libatk1.0-data libatspi2.0-0 libaugeas0 libavc1394-0
libavcodec58 libavfilter7 libavformat58 libavutil56 libbdplus0 libbluray2 libbrlapi0.8 libbs2b0 libcaca0 libcacard0 libcairo-gobject2 libcairo2 libcapstone4 …Run Code Online (Sandbox Code Playgroud) 我已经知道我可以通过运行以下命令来检查我的存储库中是否存在在 Debian 或 Ubuntu 中安装软件包所需的多个依赖项:
apt policy first-package second-package ... last-package
Run Code Online (Sandbox Code Playgroud)
此命令还告诉我当前是否安装了每个软件包。
我的问题是如何快速检查我当前未安装的受支持版本的 Debian 或 Ubuntu 中是否存在多个依赖包。因为我当前没有安装该操作系统,所以我无法检查本地和离线依赖包是否存在,但我想从终端检查默认存储库中是否存在所需的依赖包。
此信息的一种可能用途是在安装最新版本的 Ubuntu 或将现有操作系统升级到最新版本之前,检查安装在 Ubuntu 中的应用程序是否也可以安装在最新版本的 Ubuntu 中。
我的包裹有问题apt,我已经解决了。问题和解决方案在这里讨论:
Aptitude 说我的很多软件包需要删除......?
然而,在讨论这个问题时,我意识到我有一个辅助问题,apt我想找到答案,这就是我发布这个当前问题的原因。
我不小心做了一些事情,导致超过 1,400 个“自动”软件包成为孤立的,它们被列为“不再使用”,并在aptitude. 现在看来,造成这种情况的原因是因为它们最终都依赖于某个被错误删除的基础级包或元包。
如果是这种情况,是否有一个实用程序或过程可以用来将apt包列表作为输入,并为整个包集(作为一个整体)生成依赖关系树?如果是这样,我可能能够识别出我不小心删除的这棵树顶部的软件包,然后我可以重新安装该软件包以解决我的问题。
换句话说,我正在寻找一些过程或实用程序,它会将包列表作为输入并生成与此类似的内容作为输出......
top-package
|--package-000
|-+package-001
| |--package-002
|-+package-003
| |--package-004
| |--package-005
| |-+package-006
| | |--package-007
| |--package-008
|--package-009
... etc. ...
Run Code Online (Sandbox Code Playgroud)
...package-NNN我的输入包列表以及它们恰好是依赖项的任何其他包在哪里,并且top-package是依赖项树的根。如果我的假设是正确的,即我的问题是由于意外删除了高级元包所致,那么top-package将识别该已删除的包。然后我可以重新安装top-package并大概解决我的问题。
需要明确的是,我想重复一下,我已经以不同的方式解决了我的具体问题(请参阅引用的讨论)。我在这里问这个不是为了解决这个特定问题,而是因为我想要某种像上面描述的依赖树列表工具,以帮助诊断和修复可能发生在未来。
非常感谢您提供任何参考或建议。
dependencies ×10
apt ×4
debian ×3
apache-httpd ×1
aptitude ×1
arch-linux ×1
chrome ×1
deb ×1
dpkg ×1
freebsd ×1
gentoo ×1
libvirt ×1
pacman ×1
services ×1
shell-script ×1
systemd ×1
ubuntu ×1