Co to jest pakiet binarny? Jak je zbudować?

12

Chcę uzyskać szczegółowe informacje na temat pakietu binarnego i uruchomić je na systemie Linux. Korzystam z systemu operacyjnego Linux Debian (Ubuntu / Linux mint).

  1. Jak zbudować pakiet binarny ze źródła? Czy mogę bezpośrednio pobrać pakiet binarny dla aplikacji (takich jak Firefox, itp.) I gier (takich jak Boswars itp.)?
  2. Uruchamiam jakiś pakiet bezpośredni w formacie „xyz.linux.run” Co to za pakiet? Czy są niezależne od zależności? lub Czy to są gotowe pakiety binarne?
  3. Jak je zbudować, które można uruchomić w systemie operacyjnym Linux poprzez bezpośrednie „xyz.linux.run” w systemie Linux.
  4. Jaka jest różnica między pakietem binarnym a pakietem deb?
Pandya
źródło
Czy znalazłeś jak zbudować pakiet binarny ze źródła ?!
Dr.jacky

Odpowiedzi:

17

W ścisłym znaczeniu plik binarny to taki, który nie jest zakodowany znakowo jako tekst czytelny dla człowieka. Mówiąc bardziej kolokwialnie, „plik binarny” odnosi się do pliku, który jest skompilowanym, kodem wykonywalnym, chociaż sam plik może nie być wykonywalny (odnosząc się nie tyle do uprawnień, ile do możliwości uruchamiania samego; niektóre pliki kodu binarnego, takie jak biblioteki, są skompilowane, ale niezależnie od uprawnień nie można ich wszystkie wykonać samodzielnie). Plik binarny, który działa jako samodzielny plik wykonywalny, jest „plikiem wykonywalnym”, chociaż nie wszystkie pliki wykonywalne są plikami binarnymi (dotyczy to uprawnień: wykonywalnych plików tekstowych, które wywołują interpreter za pomocą shebang, tak jak #!/bin/shpliki wykonywalne).

Co to jest pakiet binarny?

Pakiet binarny w kontekście linuksowym to pakiet aplikacji, który zawiera (wstępnie wbudowane) pliki wykonywalne, w przeciwieństwie do kodu źródłowego.

Zauważ, że nie oznacza to, że plik pakietu sam w sobie jest plikiem wykonywalnym. Plik pakietu to archiwum (coś w rodzaju a .zip), które zawiera inne pliki, a „pakiet binarny” to plik, który zawiera pliki wykonywalne (chociaż znowu pliki wykonywalne niekoniecznie są naprawdę plikami binarnymi, aw rzeczywistości można użyć pakietów binarnych do biblioteki skompilowane, które są kodem binarnym, ale nie są plikami wykonywalnymi). Jednak pakiet musi zostać rozpakowany, aby uzyskać dostęp do tych plików.

Zazwyczaj zajmuje się to tobą system zarządzania pakietami (np. Apt / dpkg), który pobiera pakiet, rozpakowuje i instaluje pliki binarne wewnątrz ciebie.

Jaka jest różnica między pakietem binarnym a pakietem deb?

Nie ma - .debpakiety są pakietami binarnymi, chociaż istnieją takie, .debktóre zawierają źródło, zwykle -srcdołączane są do ich nazw.

Uruchamiam jakiś pakiet bezpośredni w formacie „xyz.linux.run” Co to za pakiet?

Są to zazwyczaj samorozpakowujące się pakiety binarne; działają poprzez osadzenie binarnego ładunku w skrypcie powłoki. „Samorozpakowujący się” oznacza, że ​​nie trzeba wywoływać innej aplikacji (np. Menedżera pakietów) w celu rozpakowania i korzystania z nich. Ponieważ jednak nie działają one z menedżerem pakietów, rozwiązywanie ich zależności może być bardziej crapshoot, a zatem niektóre takie pakiety używają statycznie powiązanych plików wykonywalnych (mają wbudowane wszystkie niezbędne biblioteki), co marnuje trochę pamięci, gdy są używane .

Złotowłosa
źródło
Doskonała odpowiedź !, Czy powinienem oddzielić się od tego pytania: Jak zbudować gotowy plik wykonywalny (pakiet binarny) ze źródła?
Pandya
Tak, to byłoby dobre pytanie samo w sobie, jeśli nie ma tu odpowiedzi w jakiejś formie.
Złotowłosa
6

ponieważ na resztę twojego pytania odpowiedziały złotowłosa, zastanowię się nad pierwszą częścią, jak budować rzeczy ze źródła.

Naprawdę krótka wersja jest taka, że ​​kiedy pobierasz pliki źródłowe z Internetu, zwykle mają one powiązany plik Readme, który powinien dokładnie powiedzieć, jak uruchomić program.

Ale nakazanie przeczytania readme tak naprawdę nie odpowiada na pytanie, więc w podstawowym sensie możesz napisać bardzo prosty program, który jest

    #include <stdio.h>

    int main( ) {
        printf("Hello World!");
    }

i wpisz gcc helloWorld.ci gcczbuduje ten plik binarny i wyświetli program, który napisze „Hello World!” do konsoli po uruchomieniu.

Ok, więc teraz zbudowałeś program, ale czy nie byłoby ssanie, gdy trzeba wpisywać każdy pojedynczy plik źródłowy, który chciałbyś skompilować za każdym razem, gdy trzeba coś skompilować? Po to makefilessą. Jeśli natrafisz na program, który ma kilka plików źródłowych będzie zazwyczaj pochodzą z makefile lub innego pliku automatyzacji kompilacji ( ant, Cmakelub autoconfczy coś).

Aby zbudować tego typu programy, po prostu uruchom je make <build target>w katalogu. Makefile dla mojego programu hello world może zawierać cel o nazwie, helloworldktóry po prostu kompiluje helloWorld.c. Uruchomiłbym to make helloworldi wyprowadził binarne.

Pamiętaj, że budowanie rzeczy ze źródła może zająć bardzo dużo czasu i dużej ilości pamięci ( zespół Chromium zaleca nawet drugi dysk twardy do zbudowania źródła! ). Zauważ też, że kiedy budujesz rzeczy ze źródła, będziesz musiał poradzić sobie z zależnościami, niż menedżer pakietów robi to za ciebie

Chris Pickard
źródło