Як я можу знати, куди помістити речі в Linux?


58

Встановлення чогось у Windows вимагає натискання кнопки. Але кожен раз, коли я намагаюся встановити щось в Linux, чого не можна знайти в APT, я так заплутався.

Ви завантажуєте папку-блискавку, і що тоді? Якщо вам пощастило, є README, посилаючись на деяку документацію, яка може допомогти вам, якщо вам пощастить.

Який магічний трюк при "встановленні" розширень та додатків, які не знайдені в APT?

Я люблю Linux, але ця проблема переслідує мене щодня.



8
Не по темі. Але найпростіший трюк - ніколи нічого не встановлювати поза системою управління пакетами.
Let_Me_Be

1
Якщо це не з APT, то, ймовірно, це не те, що ви можете просто встановити - вам потрібно буде скласти та встановити його самостійно. І тоді він почне плутатись з пакетами на основі APT. Найпростіше просто знайти APT / .debs на все, що вам потрібно, наскільки ви можете.
Rup

2
@Rup Plus, якщо в програмному забезпеченні немає пакету дебюту, ви, ймовірно, не повинні його встановлювати, оскільки це або щось застаріле, або кровоточить, або не сумісне з підходящими дистрибутивами.
Let_Me_Be

3
Як тільки ви отримаєте достатній досвід зі створення / встановлення програмного забезпечення, ви можете просто створити власні пакети. Будь ласка, не забудьте надіслати відгук постачальнику вище!
jsbillings

Відповіді:


32

Якщо це програмне забезпечення , яке підпорядковується Filesystem Hierarchy Standard , ніж ви повинні помістити його в /usr/localі відповідні підкаталоги (як bin, lib, share, ...).

Інше програмне забезпечення слід розмістити у власному каталозі під /opt. Тоді або встановити PATHзмінну для включення в binкаталог або будь-який каталог , який зберігає виконувані файли або створювати символічні посилання /usr/local/bin.


1
Хороша відповідь, насправді, але не слід робити це щодня.
phunehehe

1
@phunehehe - Ви повинні це робити щодня?
Роб

3
Ні, я мав на увазі ОП "ця проблема переслідує мене щодня".
phunehehe

1
Окрім посилання на вікіпедію до FHS, прочитайте і цей: pathname.com/fhs/pub/fhs-2.3.html . Прочитайте розділ, у якому написано «Мета».
yasouser

27

На це питання немає простої відповіді, але я можу дати вам загальний конспект того, як це працює:

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

Програмне забезпечення Windows зазвичай поставляється у попередньо складеному вигляді Це означає, що є один загальний виконуваний файл для всіх комп'ютерів Windows, і залежності часто поставляються з ним у пакеті встановлення.

Дистрибутиви Linux беруть вихідний код, попередньо компілюють його і пропонують вам також як пакет. У пакет не входять залежності, але він посилається на них і змушує пакетну систему встановлювати їх також (що іноді може призвести до безладу, який ви, напевно, вже відчували самі).

Якщо попередньо складеного пакету немає, ви завжди можете завантажити вихідний код і скласти його самостійно. Більшу частину часу буде працювати наступне:

./configure
make
(sudo) make install (or sudo checkinstall)

Рядок ./configure встановлює етап для процесу компіляції (і видає помилки, якщо залежності не виконано). Рядок make буде виконувати Makefile - скрипт, який компілює всі частини програми.

Традиційно ви використовуєте make install, щоб потім встановити програмне забезпечення. Зазвичай вони ставлять виконувані файли в / usr / local / bin.

Оскільки ви використовуєте apt, я дуже рекомендую отримати перевірку. Ви можете використовувати його замість make install, і він створить пакет .deb для вас. Це значно спрощує видалення програмного забезпечення згодом.

Зауважте, що існує декілька інших систем компіляції, наприклад cmake; і деяке програмне забезпечення поставляється заздалегідь складеним, але не упакованим (у такому випадку ви можете запустити його прямо з нерозпакованої папки); а деяке програмне забезпечення поставляється як набір сценаріїв, які ви повинні запустити самостійно. Свіжий код з SVN іноді не має сценаріїв налаштування, тож спочатку потрібно запустити ланцюжок інструментів autoconf ... тощо, тощо. скажіть, що робити з більшістю цих загадкових завантажень. Налаштування-Make-Checkinstall - хороший перший старт.

PS. Проведіть вихідні-два, щоб навчитися програмувати себе, і все стане дуже очевидним :-)

PPS. Вам може бути цікаво, чому автори програмного забезпечення Linux не надають лише попередньо складені пакети замість вихідного коду. Що ж, іноді так і роблять. Але різні платформи та дистрибутиви Linux мають свої власні формати пакетів та правила файлової системи, тому розробнику вам доведеться надавати пакунки для кожної можливої ​​конфігурації - що болить. Пакети Ubuntu часто найпростіше знайти - ви повинні з'ясувати, що таке PPA і як він працює!


1
"PS. Проведіть вихідні-два, щоб навчитися програмувати себе, і все стане дуже очевидним :-)". Погана порада в іншому випадку відмінна відповідь. Попросити людей програмувати зрозуміти Linux - це як пасажири авіакомпаній, що ремонтують літаки.
apoorv020

замість програмування просто змініть його, щоб скласти свій власний linux, наприклад LFS (linux з нуля) linuxfromscratch.org
jsolarski

@apoorv, точка взята. :)
sebastian_k

4

Ви повинні перевірити Checkinstall . Замість

./configure
make
sudo make install

ти робиш

./configure
make
sudo make checkinstall

і ви зможете керувати цим пакетом так, як ніби ви встановили його через apt.


На жаль, щойно помітив, що @sebastian_k вже згадував реєстрацію ... О добре!
mgalgs

1

Є поважна, розумна причина, що це так заплутано (є також дратівливий артефакт) ...

У Unix історія є багатокористувацькою, і більшість користувачів не мали доступу до встановлення додатків за межами областей, до яких їм було надано конкретний доступ.

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

ПК з ОС Windows, як правило, однокористувацькі системи і не мають цього обмеження. Все відбувається в файлах програми, незважаючи ні на що.

Тоді є дурний, дратівливий факт, що кожного разу, коли виходила нова версія Unix, творці відчували, що потрібно змінювати місця, але старі повинні були там бути для автоматизованих сценаріїв. Це дає вам купу пов’язаних каталогів, що служать одній і тій же цілі.

Система init ще гірша.

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