-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ.zh
EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
常见问题与故障排查。另见 Configuration、Security 与 Repositories and Priority。
不能 —— 而且永远不会。slacker 面向 Slackware -current:64 位(x86_64),以及 自 0.9.0 起的 32 位(i586/i686)。参见 Status and Roadmap。
可以 —— 那就是 slacker upgrade-dist {current|VERSION}。它会把你的镜像与仓库重新
指向目标发行版,并用目标的构建替换每个软件包(这是唯一一条有意绕过优先级模型的
命令),随后运行 install-new + clean-system,并在你重启前提醒你关于内核的事项。请
务必先做 --dry-run 并保留备份。注意:要升级一台 15.0 系统,你需要一个能在
15.0 较旧 glibc 上运行的 slacker 二进制(分发的软件包是为 -current 构建的);而
本地源选项(DISTRO_UPGRADE_MIRROR)尚未经过测试。完整细节见
Distribution 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。
那个仓库是一棵发行版子树(extra、patches、testing、pasture),需要在
repos 中加 subtree flag。它的 PACKAGES.TXT 列出的是相对发行版根的位置;该
flag 告诉 slacker 从父 URL 获取软件包与密钥。参见 Repositories and Priority。
二进制仓库的优先级必须互不相同。给每个二进制仓库一个唯一的编号。(tag-priority 行可以共用一个优先级 —— 那没问题。)
在 mirrors 中,必须恰好有一行未被注释。零行会让官方 URL 为空;两行或更多则是
错误。
优先级。slacker 绝不把已安装的软件包迁移到不同优先级的来源,也不降级它。候选只会从
优先级更高或相等的仓库提出。如果你想要某个特定仓库的构建,就 pin 它:
slacker upgrade alienbob:vlc。要让某个来源始终胜出,给它一个标签优先级。参见
Repositories and Priority。
可以,对 -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 针对的是名称新加入发行版的软件包 —— 而非你移除过的软件包(那些
已经存在于树中)。要重新放回一个被移除的软件包,请用 slacker install NAME
(或 install @repo)。参见 Commands。
名称精确匹配。如果软件包是 aircrack-ng,那么 history aircrack 什么也找不到
—— 请用精确的名称。参见 Package History。
pkgtools 的 removed_packages/ 目录每个软件包标识符只保留一个文件,因此较晚的
移除会覆盖较早的记录 —— 一部分历史被工具自身丢失了。slacker 会尽量重建,并从下一条
已知记录推断出丢失的升级目标。参见 Package History。
slacker 会隔离一个未通过审查的仓库(无法连通,或元数据畸形/恶意)。用
slacker vet-repo NAME 重新检查;若你判断这是误报,slacker trust-repo NAME
会解除它(由你负责)。参见 Security。
slacker 在首次导入时固定每个仓库的 GPG 指纹(trust on first use)。此后指纹不同的
密钥会被拒绝。若密钥是合法地更换了,你需要清除该仓库在 STATE_DIR 下的固定
(/var/lib/slacker/gpg/<repo>.fpr)并重新导入。参见 Security。
在 repos 中把这些仓库标为 immutable。它们已安装的软件包于是被保留,而无需逐个
加入黑名单。参见 Common Workflows。
slacker 没有 * 通配符来选择软件包。整个仓库是 @repo(例如 install @gnome);单个软件包是它的精确名称;子串匹配一个家族。一个未加引号的 * 会在
slacker 运行之前被你的 shell 展开成当前目录的文件名 —— slacker 永远看不到 *,
也永远不读你的目录。当这产生一堆并非软件包的参数时,slacker 会识别出来并拒绝该
命令,不做任何改动(remove * 不会删除那些碰巧与某个文件名共享子串的真实软件
包)。请给字面模式加引号,或用 @repo。注意黑名单不同:frozen 确实接受 glob
与正则 —— 参见 Blacklist。
可以。search、info、file-search、check-updates、show-changelog、
history 和 find-mirror 在任何用户下都能运行。一切会改动系统的操作都需要 root。
会改动系统的命令会取得一个独占锁(/run/slacker.lock);同一时间只运行一个。若
slacker 退出或被杀,锁会自动释放。查询不取锁。
设置 NO_COLOR=1(当输出并非终端时,颜色也会自动关闭)。长输出的分页器是 $PAGER
或 less -FRX。
在以下地址开一个 issue: https://forge.slackware.nl/rizitis/slacker/issues。
slacker - slackpkg + slackpkg+ in one - Apache-2.0 - by Ioannis Anagnostakis (rizitis) - beta / WIP, for Slackware -current (64-bit & 32-bit)
Getting started
Using slacker
- Commands
- Common Workflows
- Distribution Upgrade
- Repositories and Priority
- Package History
- Dependencies
- Docker
- Templates
- Blacklist
Trust & safety
Reference
For contributors