在调查这个问题时,我遇到了一些非常奇怪的事情:
❯ gsettings get org.gnome.desktop.wm.preferences num-workspaces
4
❯ dconf read /org/gnome/desktop/wm/preferences/num-workspaces
'1'
这应该不可能吧?可能发生什么事?
git fetch --all --no-tags
并没有按照它所说的去做,并且每次运行它时都会重新获取标签。如何在不获取标签的情况下实际从所有遥控器获取数据?
重现:
[email protected]:cachix/install-nix-action.git
git fetch --all --no-tags
应该发生什么:这笔交易不应该伤害任何标签。
实际发生的情况:遥控器破坏了彼此的标签:
❯ git fetch --all --no-tags
Fetching origin
From github.com:example-user/install-nix-action
- [deleted] (none) -> [omitted]
[…]
Fetching upstream
From github.com:cachix/install-nix-action
* [new tag] [omitted] -> [omitted]
[…]
当仅获取默认远程时,它甚至会表现出这种行为:
❯ git fetch --no-tags
From github.com:example-user/install-nix-action
- [deleted] (none) -> [omitted]
我尝试将此撰写键序列添加到我的~/.XCompose
:
<Multi_key> <L> <L> : "Λ" U039B # GREEK CAPITAL LETTER LAMDA
然后我尝试在几个地方使用它,但序列永远不会终止。也就是说,提示表明我尚未输入完整的撰写键序列,即使它已经显示:
以上来自 GNOME 控制台,在键入撰写键时,它会在当前字符下显示一个下划线。
看来潜在的问题是上面的组合键序列是另一个组合键的前缀[X11 library root]/share/X11/locale/en_US.UTF-8/Compose
:
<Multi_key> <L> <L> <A> <P> : "🖖" U1F596 # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
如果它是另一个撰写键的前缀,如何告诉应用程序结束该撰写键?这是否可能,或者所有组合键都必须避免成为所有其他键的前缀?再次按撰写键(Caps Lock在我的情况下)没有帮助,并且按下Esc只是取消撰写键。
git help some-alias
打印别名配置值,例如:
$ git help aliases
'aliases' is aliased to '!git config --get-regexp '^alias\.' | cut --delimiter=. --fields 2-'
我想以git help diff
与其他别名相同的方式提供此别名和其他别名的详细帮助。到目前为止我已经得到了这个:
{
config.programs.git.package = pkgs.gitFull.overrideAttrs (
old: {
postInstall =
old.postInstall
+ ''
cp ${./includes/git-aliases/docs}/* $doc/share/doc/git/
'';
}
);
}
它成功地将一些文本文件复制到/nix/store/[git package]-doc/share/doc/git/
,但这些文件在运行时不会显示git help aliases
。
我还需要做什么才能将文档链接到子help
命令?更新一些文件注册表?.html
即使我只想要 CLI 文档,也要添加文件吗?还有别的事吗?
基本上,我想将条目config.programs.config.alias
放入单独的.bash
文件中,并在构建配置时动态读取它们。当前配置的代表性子集:
{
programs.git = {
config = {
alias = {
aliases = "!git config --get-regexp '^alias\.' | cut --delimiter=. --fields 2-";
git = "!git";
st = "status";
};
};
};
}
所有条目!git
最好作为单独的 shell 脚本。这样,我可以在将它们集成到 Git 别名配置中之前对它们进行 lint、格式化和运行以验证它们是否有效。
我似乎不知道如何在 Ubuntu 22.04 上构建 GNU Hello。要重现,请使用 启动 Docker 容器docker run --interactive --rm --tty ubuntu:22.04
,然后运行以下命令:
apt-get update
apt-get install -y debhelper-compat dpkg-dev wget
cd "$(mktemp --directory)"
wget http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.10.orig.tar.gz http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.10-2ubuntu4.dsc http://archive.ubuntu.com/ubuntu/pool/main/h/hello/hello_2.10-2ubuntu4.debian.tar.xz
tar -xf hello_2.10-2ubuntu4.debian.tar.xz
mkdir hello_2.10-2ubuntu4
mv debian hello_2.10-2ubuntu4
cd hello_2.10-2ubuntu4
dpkg-buildpackage
此时我收到此错误消息:
cp: 无法统计 'NEWS': 没有那个文件或目录
其次是
dh_installdocs: error: cp --reflink=auto -a NEWS debian/hello/usr/share/doc/hello 返回退出代码 1
我究竟做错了什么?该NEWS
文件应该在哪里?构建知道上游压缩包(“dpkg-source: info: building hello using existing ./hello_2.10.orig.tar.gz”),我需要手动解压吗?
鉴于即将发布的关键 OpenSSL 3.0.7 安全修复程序,我如何将 NixOS 更改为全局使用 LibreSSL 而不是 OpenSSL?
两者之间有什么实际区别吗
users.users.default.packages = [
pkgs.foo
];
和
home-manager = {
users.default = {
config,
pkgs,
nixpkgs,
lib,
specialArgs,
options,
modulesPath,
nixosConfig,
osConfig,
}: {
home = {
packages = [
pkgs.foo
];
};
};
useGlobalPkgs = true;
};
我已经尝试了很多方法来让我的项目创建一个result-dist
带有轮子的文件夹,我可以发布到 PyPI。不知何故,即使我使用的是 nixpkgs 版本pythonOutputDistHook
,我也只能得到一个result
文件夹,而不是result-dist
文件夹。
到目前为止我的调查:
pythonOutputDistHook
是可选的,基于withDistOutput
.
withDistOutput
如果format
包含 之一,则为真["pyproject" "setuptools" "flit"]
。
format ? "setuptools"
而且我的代码没有设置format
,所以pythonOutputDistHook
应该包括在内。
我已经验证了pythonOutputDistHook
它在我的 nixpkgs中:
$ cd nixpkgs
$ git checkout 9c14978f845f33b152f722709caf42148580a30c
HEAD is now at 9c14978f845 Merge master into staging-next
$ git grep pythonOutputDistHook
pkgs/development/interpreters/python/hooks/default.nix: pythonOutputDistHook = callPackage ({ }:
pkgs/development/interpreters/python/mk-python-derivation.nix:, pythonOutputDistHook
pkgs/development/interpreters/python/mk-python-derivation.nix: pythonOutputDistHook
pkgs/top-level/python-packages.nix: pythonOutputDistHook
有没有什么东西会pkgs
在其中一个 Nix 文件中注入不同的参数?
我注意到我接管的一些 CI 脚本中有一个奇怪的反模式,这基本上归结为这段代码检查包中是否存在特定文件:
dpkg --contents some.deb > contents.txt
grep --quiet foo contents.txt
我尝试了明显的重构dpkg --contents some.deb | grep --quiet foo
,但我不断收到此错误:
dpkg-deb: 错误: tar 子进程被信号杀死 (Broken pipe)
从更多的调查来看,这绝对是一个时间问题。如果我使用在输入流早期匹配的正则表达式,我会收到错误,但如果我使用专门匹配后期行的正则表达式,它会成功。
最明显的结论是dpkg
(或可能tar
)对 SIGPIPE 做错了什么。这是一个已知的问题?
平台:
# lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
# dpkg --version
Debian 'dpkg' package management program version 1.19.0.5 (amd64).
This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty.
# tar --version
tar (GNU tar) 1.29
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
GNOME 中的设置→显示→调整电视有什么作用?我正在使用 Wayland 以防万一。除了与此功能相关或提及此功能的错误报告外,网络搜索没有任何具体内容。GNOME wiki 页面没有解释它。
我无法在 Bash 4.4.20(Ubuntu 18.04 中的默认 shell)中得到这个答案:
$ complete -o nosort -W '--color=auto --color=always --color=never' mycommand
$ mycommand --<Tab>
--color=always --color=auto --color=never
在函数中设置COMPREPLY
会产生相同的结果:
_mycommand() {
COMPREPLY=($(compgen -W '--color=auto --color=always --color=never' -- "${COMP_WORDS[1]}"))
}
complete -o nosort -F _mycommand mycommand
man bash
提到了这个nosort
选项,所以应该支持它。是什么赋予了?
我想将 root 设置为另一个用户的 GID 和 UID startGid
。startUid
如果不对它们进行硬编码,我怎么能做到这一点?我尝试了以下几种变体:
users.users = {
root = {
subGidRanges = [
{
count = 1;
startGid = users.users.username.group;
}
];
subUidRanges = [
{
count = 1;
startUid = config.ids.uids.username;
}
];
};
username = {
isNormalUser = true;
};
};
如何完全删除root密码的公认答案建议passwd -d root
(“删除”密码),而评论建议使用passwd -l root
(“锁定”密码)。唯一的区别似乎是可以通过删除初始“!”来解锁锁定的密码。在它之前。是否有任何其他实际考虑,特别是与安全性和禁用 root 帐户有关?
journalctl --boot
打印自启动以来的日志行并journalctl --follow
打印日志的最后 10 行,然后跟随它。但journalctl --boot --follow
不像我期望的那样工作。而不是打印自启动以来的所有日志行,然后跟随日志,它只是忽略--boot
标志。交换旗帜没有任何区别。如何打印自启动以来的所有日志行,然后跟踪日志?
版本信息:
$ journalctl --version
systemd 239
+PAM +AUDIT -SELINUX +IMA +APPARMOR +SMACK -SYSVINIT +UTMP -LIBCRYPTSETUP +GCRYPT -GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
例如,在 Thunar 中,我只需单击外部 USB 驱动器即可将其安装在 /run/media/$USER/[something] 下。动态创建挂载点的事实是一个很大的副作用。但是对于我被告知 SATA 总线上的任何驱动器
mount:只有 root 可以做到这一点
或者
无权执行操作。
在这方面,如何将内部驱动器配置为像 USB 驱动器一样工作?
多年来,我一直在 Arch Linux 上使用 Awesome+LightDM 和GTK greeter,并且我正在迁移到 NixOS。一个问题是屏幕储物柜。我已经映射Windows-l到light-locker-command --lock
. 激活时屏幕变黑,然后关闭。要回到 LightDM,我必须按下Ctrl-Alt-F7并等待大约 10 秒钟,同时显示一些关于“被重定向到解锁对话框”的奇怪消息。我已经尝试安装和启用“gtk”和“mini”欢迎程序(不是同时),但是在重新启动 X 之后,这两个似乎都没有使用。我该如何设置它们中的任何一个?
配置的相关部分:
services = {
xserver = {
displayManager.lightdm.enable = true;
enable = true;
layout = "us";
libinput.enable = true;
windowManager = {
awesome.enable = true;
default = "awesome";
};
xkbOptions = "compose:caps";
xkbVariant = "dvorak-alt-intl";
};
};
我也尝试过 enable programs.slock
,但这并没有与 lightdm 集成。