我使用 OpenBSD 已经有一段时间了。然而,我所做的只是从一个版本到下一个版本,总是只做更新。我对系统进行了配置,使其可以用作我的路由器和防火墙,而且它的运行效果非常好。但我从不更新软件包。我所做的只是继续下一个版本。
来自 Linux 世界,我习惯于每周应用几次更新;但我如何在 *BSD 上做到这一点?- 或者这不是 *BSD 哲学的一部分?
我目前正在运行 Debian 测试 (Wheezy) 并试图让SCIM工作。我想安装scim-pinyin包,但在测试存储库中没有这样的包,尽管在以前的稳定 (Squeeze) 存储库中有一个。有一个包的副本不稳定但不适用于我的架构(amd64)。
查看软件包版本,我注意到稳定存储库中的版本与不稳定存储库中的版本相同。既然如此,我有两个问题:
有什么原因我不能从较旧的存储库安装软件包,因为我认为大多数 Squeeze 软件包的依赖项可能会被当前正在测试的软件包版本所满足?
实现这一目标的最佳方法是什么?(将 Squeeze 存储库添加到sources.list?下载 Squeeze 包并手动安装?)
有些情况需要使用dpkg -i <packagename>. 有时,利用该apt包的功能可能会更有用,所以问题是:
您如何使用基于 Debian 的 linux 发行版(例如 Xubuntu 13.04/Ubuntu)为随机包快速创建本地存储库?
是否有一个术语来指代 Debian 发行版自动安装的软件包子集?
我认为它与包优先级有关,但似乎并非如此,因为默认情况下安装的包中有所有优先级级别的包。
此外,初始子集的某些包具有automatically installed标志,例如wireless-tools. 因此,如果根据它们手动删除初始子集的包,它们将被自动删除。我想知道,安装工具是否只保留要考虑手动安装的软件包列表并自动安装它们的依赖项?
回答前两个问题:
在安装核心 Debian 实用程序后,Debian 安装程序似乎会调用tasksel以执行安装“任务”。其中典型的任务是“标准”任务和“笔记本电脑”任务。从工具tasksel页:
“标准”任务
标准任务是 Debian 安装程序使用的特殊任务。它实际上依赖于包的优先级。“标准系统”任务包括什么?
tasksel --task-packages standard这是一个 aptitude 搜索字符串,相当于
aptitude search ~pstandard ~prequired ~pimportant -F%p
所以tasksel安装standard,required和important包。
“笔记本电脑”任务
笔记本电脑任务是 Debian 安装程序使用的一项特殊任务,用于提取笔记本电脑上有用的软件包:
桌面
我正在使用一个没有top安装程序的最小 Debian 系统。我试图用 安装 top sudo apt-get install top,但是top不是包名。
这似乎top是其他一些包的一部分。我怎样才能找出我应该安装哪个包来获取它?更一般地说,我如何找到包含程序的包?
我有一个现有的 CentOS 安装,我想在其中安装额外的软件包。要安装的软件包以列表形式提供给我,每行一个软件包,如下所示:
....
Cluster_Administration-en-US.noarch
ElectricFence.x86_64
GConf2.i386
GConf2.x86_64
GConf2-devel.i386
GConf2-devel.x86_64
Global_File_System-en-US.noarch
ImageMagick.i386
...
Run Code Online (Sandbox Code Playgroud)
使用这个文本文件,有没有办法安装列出的每个包?我怀疑该列表实际上是最初设置操作系统时可能已安装的“所有”软件包的列表。
我知道我可以pacman像手册中显示的那样定义想要的包版本pacman -S "bash>=3.2"。但是我怎么知道有哪些版本可用?
我也知道pacman在同步 .db 文件时创建镜像副本/var/lib/pacman/sync/,但这些文件不是人类可读的。
如果我想安装某个版本virtualbox,例如,我希望在某个地方的镜像中,那不需要比我安装的(因为驱动程序)更新的版本linux(设置为IgnorePkgin )怎么办?我如何知道这是什么版本以及它是否可用?pacman.confnvidia
我在NixOS上使用Nix 包管理器。假设我想安装一个提供文件的包。我如何找到提供此文件的包,类似于其他 GNU/Linux 发行版?libgtk-x11-2.0.so.0
目前我必须谷歌该文件并找出它可能属于哪个包并在 Nix 存储库中找到相应的包,但我想要一个更惯用的方法。
我在系统上运行(最近的)基于 Debian 的发行版。
我想生成与特定模式匹配的所有已安装软件包的简单列表。我可以通过跑步来做到这一点
apt list --installed "linux-image-*" | cut -d/ -f1
Run Code Online (Sandbox Code Playgroud)
但我得到了我不关心的线路,例如:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
Run Code Online (Sandbox Code Playgroud)
所以也许我最好不要使用apt. 我可以像这样运行 dpkg-query:
dpkg-query --showformat='${Package}\n' --show "linux-image*"
Run Code Online (Sandbox Code Playgroud)
但这不仅限于已安装的软件包。我可以用
dpkg-query --list "linux-image-*" | grep "ii"
Run Code Online (Sandbox Code Playgroud)
但后来我需要做一堆文本处理,谁能相信这些空间,对吧?
所以,最重要的是:获取与模式匹配的已安装软件包列表的正确方法是什么?
注意:
我想了解 APT 包的一般管理方式,考虑到我今天遇到的以下情况:
我试图将 MongoDB 添加到我的 Debian 机器上。apt search mongodb显示出不错的结果,在尝试安装之前,我阅读了MondoDB 文档,其中指出:
请按照以下步骤在您的系统上运行 MongoDB Community Edition。这些说明假设您使用的是官方 mongodb-org 软件包——而不是 Debian 提供的非官方 mongodb 软件包——并且使用默认设置。
由此,我明白并惊讶的是,我从 Debian 获得的东西apt install是应用程序开发人员的非官方内容。这听起来比“不推荐”更糟糕。
我确实了解 Debian APT 软件包存储库倾向于显示旧版本,并且永远不会赶上最新的前沿更新。有很多方法可以解决这个问题,但现在我对“非官方”一词感到担忧。这是否意味着 APT 存储库中与 MongoDB(或任何其他应用程序)相关的软件包未得到应用程序开发人员的正式批准?或者它是由开发人员正式发布但“避免因为它不是最新版本”?或者有人(某个实体?)从官方安装包中复制并粘贴到APT?
我并不是想理解 MongoDB 的这个具体案例。相反,我想了解应用程序和 APT 的整体“政治”。它是如何工作的,它应该如何工作?
如果这是一个菜鸟问题,那么我很抱歉,但我在网上找不到很好的解释。任何链接或参考将不胜感激。
opensource-projects debian apt package-management repository
apt ×6
debian ×5
dpkg ×2
aptitude ×1
arch-linux ×1
centos ×1
command-line ×1
dependencies ×1
freebsd ×1
netbsd ×1
nix ×1
nixos ×1
openbsd ×1
pacman ×1
repository ×1
version ×1
yum ×1