Rehber NixOS'ta DEB/RPM/AppImage dosylarını çalıştırma: Nix-alien

Başlıkta her ne kadar DEB/RPM/AppImage yazmış olsam da asıl mantık içinde bulunan yürütülebilir dosyaları çalıştırmak. NixOS, diğer dağıtımlar gibi /usr/bin ve daha farklı dizinlerde paketlerini tutmaz. Konfigörasyon ile kurulursa /nix/store üzerine, eğer nix env -iA ile kurulursa da ~/.nix-profile konumuna kurar. Ki bu da yürütülebilen paketlerin aradığı konumu bulamamasına yol açar.

Önceden sistemin kurallarına göre manuel olarak yapılması gerekirdi ama Nix-Alien isimli bu araç her şeyi otomatikeştirmiş durumda.


Nix-Alien'ın kurulumu:


Flake, konfigürasyon ve Home Manager olmak üzere 3 yöntemle de kuruluyor ancak ben hala flake kısmına hakim deiğilim, flake kullanmak isterseniz alta bırakacağım GitHub sayfasından kendiniz inceleyip görebilirsiniz.

Bazı kodlar değişebileceğinden lazım kendinizin kontrol etmesi gerekebilir.

Konfigürasyon ile kurulum:

Normal bir şekilde konfigürasyona da ekleyebiliriz ancak bu aracı yapan kişi muhtemelen işimiz bittiğinde daha rahat silebilmemiz için konfigürasyonun içine aktarmamızın daha kolay olacağını düşünmüş.

Kod:
cd /etc/nixos
touch nix-alien.nix
sudo nano nix-alien.nix

nix-alien.nix dosyamızın içine yapıştırın.

Kod:
{ ... }:

let
  nix-alien-pkgs = import (
    builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
  ) { };
in
{
  environment.systemPackages = with nix-alien-pkgs; [
    nix-alien
  ];

  # Optional, but this is needed for `nix-alien-ld` command
  programs.nix-ld.enable = true;
}

Daha sonra içe aktarmak için konfigürasyondaki import kısmına bu dosyamızı ekleyelim. Sonuç alttaki gibi olmalı.

Kod:
{pkgs, lib, config, ...}
{
 imports =
   [.hardware-configuration.nix
    .nix-alien.nix
   ];
 
  #geri kalan konfigürasyonunuz

}

Daha sonra rebuild etmeniz yeterli.

Home-Manager ile kurulum:

Kod:
{ ... }:

let
  nix-alien-pkgs = import (
    builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
  ) { };
in
{
  # ...
  home.packages = with nix-alien-pkgs; [
    nix-alien
  ];
}

Eğer ilk defa home-manager kullanıyorsanız bu kodu direkt kopyala yapıştır yapmamanız gerektiğini bildirmeliyim. Kodda yazan "let" ile "in" kısımlarını göz önünde bulundurmalısınız. eğer yapamam derseniz konfigürasyondaki gibi içe aktarabilirsiniz. dosyanın home.nix ile aynı konumda olduğundan emin olun.

Yürütülebilir dosyaları için gerekli paketler:


Nix-Alien direkt paketleri çalıştırmaz, içindeki dosyayı çıkarıp ona vermelisiniz. DEB için dpkg, RPM için ise cpio kurmamız gerek. alttaki kodu keni konfigürasyonunuza veya home.nix dosyanıza ekleyebilirsiniz.

Kod:
#configuration.nix
{pkgs, ...}

{  environment.systemPackages = with pkgs; {
   dpkg
   dnf
   cpio
 };
}

Kod:
#home-manager
{pkgs, ...}
{
  home.packages = with pkgs; {
  dpkg
  dnf
  cpio
  };
}


Dosyaları çıkarmak:


İlgili dosyanın olduğu konuma gidin ve terminal açın.

DEB dosyaları için:
Kod:
dpkg-deb -e dosya.deb klasöradı

RPM dosyaları için:
Kod:
rpm2cpio paket.rpm | cpio -idmv

AppImage dosyaları için:
Kod:
./dosyaadı.appimage --appimage-exract


Nix-Alien ile çalıştırmak:


Her pakette yürütülebilir dosyanın konumu farklı olabileceğinden klasörleri incelemeniz gerekmekte. çalıştırılabilir dosyanın uzantısı yoktur. terminalde klasörlere cd ile girip dosyalaro listelediğinizde mavi veya yeşil bir şekilde adı yazar. eğer bulursanız o dosyanın olduğu konumda terminale attaki kodu yazabilirsiniz:

Kod:
nix-alien uygulama adı

#örnek. bu chrome'un deb ve rpm
#paketlerinde bulabileceğiniz dosyadır ancak NixOS'ta buna gerek yoktur.
#başka tarayıcı kullanabilir veya Flatpak'tan indirebilirsiniz.
nix-alien chrome


Ekran Görüntüsü 2025-07-15 15-28-58.png


Burada olduğu gibi derleme yapacak ve size çeşitli sorular soracaktır. ok tuşları ile sorduğu soruları cevaplayın. açılmış olacaktır.


Kurulumsuz kullanım:


Sadece denemek için kurmak istemiyorsanız nix-run ile de kullanılabiliyor. Eğer flake kullanıyorsanız alttaki kodu kullanmanız yeterli olur.
Kod:
nix run "github:thiagokokada/nix-alien#nix-alien" -- ~/uygulamaadı

Eğer flake kullanmıyorsanız alttaki kodu kullanabilirsiniz:
Kod:
$ nix --extra-experimental-features "nix-command flakes" run "github:thiagokokada/nix-alien#nix-alien" -- ~/uygulamaadı

İki kodda da çalıştırılabilir dosya ile aynı dizinde olmalısınız.


Rehber buraya kadardı, yazması beklediğimden uzun sürdü, yazım yanlışları varsa affınıza sığınıyorum.

İlgili GitHub linki:
 
Ellerinize sağlık hocam. Paketlerin bağımlılık kontrolü ne durumda? APT bile bağımlılıklar konusunda problem yaşatabilirken NixOS'te bu şekilde .DEB kurulumu yaparken bağımlılıklar doğru tespit edilip kurulabiliyor mu?
 
Ellerinize sağlık hocam. Paketlerin bağımlılık kontrolü ne durumda? Apt bile bağımlılıklar konusunda problem yaşatabilirken NixOS'te bu şekilde .deb kurulumu yaparken bağımlılıklar doğru tespit edilip kurulabiliyor mu?

Derleme sırasında duruma göre birden çok kütüphane sunuyor ve seçmemizi istiyor. Eğer kütüphaneler sistemde yoksa da geçiçi süreliğine o kütüphaneyi kuruyor. 1 tane müzik oynatıcısı vardı, onda ses alamamıştım ama o da Linux için paket sunan kişi ile ilgiliydi. Onun dışında denediğim paketlerin hepsi çalıştı. Bir sorun yaşamadım. Hatta beklediğimden de iyi çalıştılar diyebilirim.

Belki rehberde belirtmemiş olabilirim. Dosyanın uzantısına bakmıyor, onun içindeki yürütülebilir dosyaya bakıyor bu araç. Bu yüzden AppImage dosyalarını da ekledim. Yürütülebilir dosyaların konumu hepsinde farklı olabileceğinden kendimizin onu bulması gerek.
 

Technopat Haberler

Yeni konular

Geri
Yukarı