Skip to content
Anagnostakis Ioannis edited this page Jun 30, 2026 · 3 revisions

EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE

FAQ

常见问题与故障排查。另见 ConfigurationSecurityRepositories and Priority


slacker 能在 Slackware 15.0 上工作吗?

不能 —— 而且永远不会。slacker 面向 Slackware -current:64 位(x86_64),以及 自 0.9.0 起的 32 位(i586/i686)。参见 Status and Roadmap

slacker 能把我的系统升级到新的 Slackware 发行版吗?

可以 —— 那就是 slacker upgrade-dist {current|VERSION}。它会把你的镜像与仓库重新 指向目标发行版,并用目标的构建替换每个软件包(这是唯一一条有意绕过优先级模型的 命令),随后运行 install-new + clean-system,并在你重启前提醒你关于内核的事项。请 务必先做 --dry-run 并保留备份。注意:要升级一台 15.0 系统,你需要一个能在 15.0 较旧 glibc 上运行的 slacker 二进制(分发的软件包是为 -current 构建的);而 本地源选项(DISTRO_UPGRADE_MIRROR尚未经过测试。完整细节见 Distribution Upgrade

install/upgrade 拒绝一个软件包,说该仓库面向另一个发行版。

那是发行版匹配守卫。一个为另一 Slackware 发行版构建的仓库(例如一个仍在 15.0 上激活 的 alienbob -current 仓库)可能通过 GPG/md5,却安装会破坏你系统的软件包,因此 slacker 拒绝它。把该仓库指向你系统的发行版,或在你确定时传 --yes 以覆盖。 slacker status 会在它的 Repo release 行显示同样的不匹配。参见 Security

安装后我需要复制配置文件吗?

不需要。二进制软件包会把配置文件放到 /etc/slacker/ 下的位置。你只编辑其中两个 —— mirrors(选一个)和 repos(设优先级)。参见 Installation

我如何挑选一个快速、最新的镜像?

运行 slacker find-mirror。它探测官方 Slackware 镜像列表,为每个计时,剔除已落后于 上游主站的,按速度对其余排名,并打印最快的那个作为要放进 mirrors 的行 —— 它绝不 替你改动配置。它在配置任何镜像之前就能工作,因此是全新安装上自然的第一条命令。 此后,slacker status 会标出已变陈旧的镜像(落后上游超过 48 小时)。参见 Quick Start

update 说某个仓库的软件包无法下载(出现像 .../extra/extra/... 这样重复的路径)。

那个仓库是一棵发行版子树extrapatchestestingpasture),需要在 repos 中加 subtree flag。它的 PACKAGES.TXT 列出的是相对发行版根的位置;该 flag 告诉 slacker 从父 URL 获取软件包与密钥。参见 Repositories and Priority

error: repos: ... duplicate priority

二进制仓库的优先级必须互不相同。给每个二进制仓库一个唯一的编号。(tag-priority 行可以共用一个优先级 —— 那没问题。)

error: repos: ... two active mirrors / 「no mirror」

mirrors 中,必须恰好有行未被注释。零行会让官方 URL 为空;两行或更多则是 错误。

为什么 upgrade-all 没有升级我的 SBo / alienbob 软件包,尽管有更新的版本?

优先级。slacker 绝不把已安装的软件包迁移到不同优先级的来源,也不降级它。候选只会从 优先级更高或相等的仓库提出。如果你想要某个特定仓库的构建,就 pin 它: slacker upgrade alienbob:vlc。要让某个来源始终胜出,给它一个标签优先级。参见 Repositories and Priority

一次 -current 升级弄坏了一个软件包 —— 我能回滚吗?

可以,对 -current 上的官方软件包而言。slacker revert-pkg NAME 会列出该软件 包先前的构建(来自 removed_packages),从累积归档中获取你选中的那个(针对被固定的 Slackware 密钥做 GPG 校验),并用 upgradepkg --reinstall 将其降级。先试 --dry-run 以查看确切的构建。随后它会提议冻结该软件包,使 upgrade-all 不会再次 把它推向前 —— 之后用 slacker unfrozen NAME 解除。第三方软件包不在覆盖范围(累积 归档只携带官方的),且仅在 -current 上有效:代码读取 VERSION_CODENAME,并在 稳定发行版上拒绝执行(一道严格的 fail-closed 守卫)。参见 Common Workflows

我如何从黑名单移除一条规则?

slacker unfrozen RULE —— frozen 的对应命令。以无参数运行 slacker unfrozen 来 列出当前规则,然后完全照样传入一条(匹配是按字面的,所以 .* / * / / 永远不会被当作模式)。手动编辑 /etc/slacker/blacklist 也行。参见 Blacklist

install-new 一直推荐我移除过的东西 / 从不推荐我移除过的某个软件包。

install-new 针对的是名称新加入发行版的软件包 —— 而非你移除过的软件包(那些 已经存在于树中)。要重新放回一个被移除的软件包,请用 slacker install NAME (或 install @repo)。参见 Commands

history emacs 什么也不显示,但软件包确实已安装。

名称精确匹配。如果软件包是 aircrack-ng,那么 history aircrack 什么也找不到 —— 请用精确的名称。参见 Package History

history 把我确定移除过的东西显示成 old → new 的升级。

pkgtools 的 removed_packages/ 目录每个软件包标识符只保留一个文件,因此较晚的 移除会覆盖较早的记录 —— 一部分历史被工具自身丢失了。slacker 会尽量重建,并从下一条 已知记录推断出丢失的升级目标。参见 Package History

一个仓库处于隔离状态,不提供任何软件包。

slacker 会隔离一个未通过审查的仓库(无法连通,或元数据畸形/恶意)。用 slacker vet-repo NAME 重新检查;若你判断这是误报,slacker trust-repo NAME 会解除它(由你负责)。参见 Security

「key-substitution attack」 / 一把密钥无法导入。

slacker 在首次导入时固定每个仓库的 GPG 指纹(trust on first use)。此后指纹不同的 密钥会被拒绝。若密钥是合法地更换了,你需要清除该仓库在 STATE_DIR 下的固定 (/var/lib/slacker/gpg/<repo>.fpr)并重新导入。参见 Security

我如何防止 clean-system 移除 extra/testing/patches 的软件包?

repos 中把这些仓库标为 immutable。它们已安装的软件包于是被保留,而无需逐个 加入黑名单。参见 Common Workflows

install * / remove * / history * 没有做我期望的事。

slacker 没有 * 通配符来选择软件包。整个仓库是 @repo(例如 install @gnome);单个软件包是它的精确名称;子串匹配一个家族。一个未加引号的 * 会在 slacker 运行之前被你的 shell 展开成当前目录的文件名 —— slacker 永远看不到 *, 也永远不读你的目录。当这产生一堆并非软件包的参数时,slacker 会识别出来并拒绝该 命令,不做任何改动remove * 不会删除那些碰巧与某个文件名共享子串的真实软件 包)。请给字面模式加引号,或用 @repo。注意黑名单不同:frozen 确实接受 glob 与正则 —— 参见 Blacklist

我能以普通用户身份运行查询吗?

可以。searchinfofile-searchcheck-updatesshow-changeloghistoryfind-mirror 在任何用户下都能运行。一切会改动系统的操作都需要 root。

某条命令说有另一个实例正在运行。

会改动系统的命令会取得一个独占锁(/run/slacker.lock);同一时间只运行一个。若 slacker 退出或被杀,锁会自动释放。查询不取锁。

颜色把我的日志 / 终端弄乱了。

设置 NO_COLOR=1(当输出并非终端时,颜色也会自动关闭)。长输出的分页器是 $PAGERless -FRX

我如何报告一个缺陷或请求一项功能?

在以下地址开一个 issue: https://forge.slackware.nl/rizitis/slacker/issues

Clone this wiki locally