我将我的 nixos 频道更改为 unstable,为什么我的软件包仍然没有更新?
I changed my nixos channel to unstable, why are my packages still not updated?
如何将我的包从 nixos-18.09
频道更新到 nixos-unstable
频道?我正在尝试这样做,因为我需要使用某些软件包的更新版本。
按照 nixos manual 中的说明,我添加了 nixos-unstable
频道 https://nixos.org/channels/nixos-unstable
,删除了 nixos-18.09
频道 https://nixos.org/channels/nixos-18.09
,
和 运行 $ nix-channel --update
和 $ sudo nixos-rebuild switch --upgrade
.
然而,我安装的软件包仍然是旧版本。我也试过 $ nix-env -u '*'
并且仍然有旧版本。我还需要做什么才能将我的包更新到 nixos-unstable
版本?
要切换到不稳定的 NixOS 频道:
- 成为root;您想要更改 root 用户的 Nix 频道:
su
- 删除 NixOS 频道:
nix-channel --remove nixos
- 添加 NixOS 不稳定频道并确保其命名为 nixos:
nix-channel --add nixos https://nixos.org/channels/nixos-unstable
然后您就可以像往常一样升级了。例如,nixos-rebuild --upgrade boot
将首先更新 NixOS 频道,然后从更新的频道安装软件包。重新启动后,您将得到更新。
注意: 我建议不要这样做 nixos-rebuild --upgrade switch
,尤其是在更改频道时,因为 NixOS 无论如何都不会重新启动所有服务。因此 switch 是不完整的。
I am trying to do this as I need to use updated versions of some
packages.
您可以使用来自不同渠道的包。所以可能保持你的默认频道稳定,并且只从不稳定的频道引用特定的包可能是一个更好的解决方案。
我的配置中有以下导入(使用我分配给 unstable
的频道中的 google-chrome
):
{ config, pkgs, ... }:
let
unstable = import <unstable> {
config = config.nixpkgs.config;
};
in
{
environment.systemPackages = with pkgs; [
awscli
google-cloud-sdk
kubectl
libreoffice
# ...
unstable.google-chrome
];
}
至于为什么你的包没有使用不稳定的频道,可能是因为它们引用了你似乎没有修改的 nixos
频道(你似乎只添加了一个名为 nixos-unstable
的频道,但最有可能没有引用此频道名称)。
如果你想把所有的包都改成unstable
{ pkgs, ... }@args:
let
pkgsUrl = "https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz";
pkgs = import (builtins.fetchTarball pkgsUrl) {};
in
{...}
如何将我的包从 nixos-18.09
频道更新到 nixos-unstable
频道?我正在尝试这样做,因为我需要使用某些软件包的更新版本。
按照 nixos manual 中的说明,我添加了 nixos-unstable
频道 https://nixos.org/channels/nixos-unstable
,删除了 nixos-18.09
频道 https://nixos.org/channels/nixos-18.09
,
和 运行 $ nix-channel --update
和 $ sudo nixos-rebuild switch --upgrade
.
然而,我安装的软件包仍然是旧版本。我也试过 $ nix-env -u '*'
并且仍然有旧版本。我还需要做什么才能将我的包更新到 nixos-unstable
版本?
要切换到不稳定的 NixOS 频道:
- 成为root;您想要更改 root 用户的 Nix 频道:
su
- 删除 NixOS 频道:
nix-channel --remove nixos
- 添加 NixOS 不稳定频道并确保其命名为 nixos:
nix-channel --add nixos https://nixos.org/channels/nixos-unstable
然后您就可以像往常一样升级了。例如,nixos-rebuild --upgrade boot
将首先更新 NixOS 频道,然后从更新的频道安装软件包。重新启动后,您将得到更新。
注意: 我建议不要这样做 nixos-rebuild --upgrade switch
,尤其是在更改频道时,因为 NixOS 无论如何都不会重新启动所有服务。因此 switch 是不完整的。
I am trying to do this as I need to use updated versions of some packages.
您可以使用来自不同渠道的包。所以可能保持你的默认频道稳定,并且只从不稳定的频道引用特定的包可能是一个更好的解决方案。
我的配置中有以下导入(使用我分配给 unstable
的频道中的 google-chrome
):
{ config, pkgs, ... }:
let
unstable = import <unstable> {
config = config.nixpkgs.config;
};
in
{
environment.systemPackages = with pkgs; [
awscli
google-cloud-sdk
kubectl
libreoffice
# ...
unstable.google-chrome
];
}
至于为什么你的包没有使用不稳定的频道,可能是因为它们引用了你似乎没有修改的 nixos
频道(你似乎只添加了一个名为 nixos-unstable
的频道,但最有可能没有引用此频道名称)。
如果你想把所有的包都改成unstable
{ pkgs, ... }@args:
let
pkgsUrl = "https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz";
pkgs = import (builtins.fetchTarball pkgsUrl) {};
in
{...}