Mencegah Nix dari meningkatkan git menjadi penuh git

8

Saya menggunakan Nix di Ubuntu untuk memiliki versi yang lebih modern dari beberapa paket, salah satunya adalah git. Ketika saya lari nix-env -u, inilah yang terjadi:

% nix-env -u --dry-run '*'
(dry run; not doing anything)
upgrading `git-1.8.5.4' to `git-1.9.0-full'

Ini bukan yang saya inginkan - Saya lebih suka versi polos git-1.9.0daripada -fullversi. Saya tahu saya dapat meng-upgrade ke versi biasa secara manual nix-env -i git-1.9.0, tetapi apakah ada cara nix-env -uuntuk melakukan apa yang saya inginkan?

Miikka
sumber

Jawaban:

4

Sebelum saya pergi dan menjawab yang ini, saya ingin menjelaskan bagaimana penamaan paket bekerja di Nix.

Nama yang Anda maksud adalah nama derivasi, yang tidak unik (beberapa paket dapat dikompilasi dengan cara yang berbeda git-1.9.0).

Jika Anda ingin merujuk paket dengan cara yang unik, atribut set name adalah caranya.

Untuk mencetak nama atur atribut saat meminta (catatan -P:

nix-env -qaP | grep git

Untuk memperbarui paket dengan nama unik:

nix-env -uA git

Dalam kasus Anda, ini adalah hasil dari fakta bahwa kedua paket dipanggil git-version. Nix memutuskan mana yang diambil berdasarkan prioritas. Untuk menurunkan prioritas untuk yang satu ini, atur:

nix-env --set-flag priority 10 git
nix-env -u
iElectric
sumber
1
Berdasarkan diskusi IRC: --set-flag prioritysebenarnya tidak membantu di sini, dan mungkin masuk akal mengubah konvensi penamaan varian paket di Nixpkgs: github.com/NixOS/nixpkgs/issues/1756
Miikka
3
Lihat github.com/NixOS/nixpkgs/issues/1756#issuecomment-37316142 , ini telah diperbaiki.
iElectric