Що таке Бінарний пакет? Як їх побудувати?


12

Я хочу ознайомитись з бінарними пакунками та запустити їх на Linux. У мене працює база Debian (Ubuntu / Linux mint) Linux os.

  1. Як побудувати бінарний пакет з джерела? І чи можу я безпосередньо завантажувати двійковий пакет для додатків (наприклад, Firefox тощо) та ігор (наприклад, boswars тощо)?
  2. Я запускаю прямий пакет, який знаходиться у форматі "xyz.linux.run" Що це за пакунок? Вони незалежні від залежностей? чи це попередньо вбудовані двійкові пакети?
  3. Як побудувати їх, які можна запустити в операційній системі Linux безпосередньо "xyz.linux.run" на Linux.
  4. Яка різниця між бінарним пакетом та дебютним пакетом?

Ви знайшли, як створити бінарний пакет з джерела ?!
Dr.jacky

Відповіді:


17

У строгому сенсі двійковий файл - це той, який не кодується як людський текст, який читається. Більш розмовно, "бінарний" посилається на файл, який компілюється, виконуваним кодом, хоча сам файл може бути не виконуваним (мається на увазі не стільки дозволів, скільки здатності запускатись окремо; деякі файли бінарного коду, такі як бібліотеки, складено, але незалежно від дозволів вони не можуть бути виконані всі самостійно). Бінарний файл, який працює як окремий виконуваний файл, є "виконуваним файлом", хоча не всі виконувані файли є двійковими файлами (і це стосується дозволів: виконувані текстові файли, які викликають інтерпретатора через shebang, такі як #!/bin/shвиконувані файли).

Що таке двійковий пакет?

Бінарний пакет у контексті Linux - це додаток, який містить (попередньо вбудовані) виконувані файли, на відміну від вихідного коду.

Зауважте, що це не означає, що пакетний файл сам по собі виконується. Файл пакунків - це архів (на зразок а .zip), який містить інші файли, а "двійковий" файл пакету - це файл, який спеціально містить виконувані файли (хоча знову ж таки, виконувані файли не обов'язково є справді бінарними файлами, і насправді двійкові пакети можуть використовуватися для складені бібліотеки, які є двійковим кодом, але не виконуються). Однак пакет повинен бути розпакований, щоб мати доступ до цих файлів.

Зазвичай про це піклується система управління пакунками (наприклад, apt / dpkg), яка завантажує пакет і розпаковує та встановлює бінарні файли всередині вас.

Яка різниця між бінарним пакетом та дебютним пакетом?

Немає - .debпакунки є двійковими пакунками, хоча .debзамість них є s, які містять джерело, вони зазвичай -srcдодаються до їх імені.

Я запускаю прямий пакет, який знаходиться у форматі "xyz.linux.run" Що це за пакунок?

Це, як правило, саморозпаковуються двійкові пакети; вони працюють, вставляючи двійковий корисний вантаж у сценарій оболонки. "Саморозпаковування" означає, що вам не доведеться викликати іншу програму (наприклад, менеджер пакунків), щоб розпакувати та використовувати їх. Однак, оскільки вони не працюють з менеджером пакунків, вирішення їх залежностей може бути скоріше скачуванням, і тому деякі такі пакети використовують статично пов'язані виконувані файли (у них вбудовані всі необхідні бібліотеки), що витрачає трохи пам’яті при їх використанні .


Відмінний варіант відповіді! Чи повинен я відокремлюватися від цього питання: Як створити попередньо вбудований виконуваний файл (двійковий пакет) з джерела?
Пандія

Так, це було б гарним питанням самостійно, якщо на нього вже не відповіли в якійсь формі.
золотинки

6

Оскільки на решту ваших запитань відповіли золотники, я зупинюсь на першій частині, як будувати речі з джерела.

Насправді коротка версія полягає в тому, що коли ви завантажуєте вихідні файли з Інтернету, вони, як правило, матимуть пов'язаний з ними readme, який повинен точно розповісти, як запустити програму та запустити її.

Але сказати вам прочитати readme насправді не відповідає на питання, тому в основному сенсі ви можете написати дуже базову програму, яка є

    #include <stdio.h>

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

і введіть gcc helloWorld.cі gccстворить цю двійкову та виведе програму, яка пише "Hello World!" до консолі при запуску.

Гаразд, тепер ви створили програму, але хіба це не буде смачно вводити кожен вихідний файл, який ви хотіли скласти кожен раз, коли вам потрібно було щось зібрати? Ось для чого makefiles. Якщо ви натикаєтеся програму , яка має купу вихідних файлів він зазвичай приходять з Makefile або який - або інший файл автоматизації збирання ( ant, Cmakeабо , autoconfабо що - то).

Щоб створити ці типи програм, просто запустіть make <build target>всередині каталогу. Makefile для моєї програми привіт привіт може включати ціль, helloworldяка називається helloWorld.c. Я би запустив це, make helloworldі він виводить двійковий файл.

Зауважте, що побудова речей з джерела може зайняти дуже багато часу та велику кількість пам'яті ( команда Chromium навіть рекомендує другий жорсткий диск для створення свого джерела! ). Також зауважте, що коли ви будуєте речі з джерела, вам доведеться мати справу з залежностями, а не менеджером пакунків, який робить це за вас

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.