Де встановлено програмне забезпечення, що зберігається в Linux? [дублікат]


11

Можливий дублікат:
Де встановлена ​​типова програма для Linux

Я новачок у Linux і хочу поцікавитись трохи більше про пакети.

У Windows завантажую .exeфайл і встановлюю його. Коли я встановлюю, я визначаю шлях, де я хочу зберігати цю програму. У цій папці я маю всі файли, необхідні для програми.

Однак, коли я встановлюю пакет в Linux за допомогою yumабо apt-get, я не знаю, куди пакет встановлений і де зберігаються необхідні файли для цієї програми. Я бачив, що більшість конфігурацій знаходяться в /etcкаталозі. Але чому Linux зберігає необхідні файли для програми в різних каталогах?

Хтось може сказати мені, як встановлені пакети, і де і як вони зберігаються? І якщо моє розуміння щодо управління пакунками неправильне, будь ласка, виправте мене.


Якщо ваш дистрибутив використовує rpm, ви можете rpm -q --whatprovidesзнайти ім'я пакета для певного файлу, а потім rpm -q -aдізнатися, які файли встановлено в пакеті.
Девід Шварц

З apt-get, якщо пакет встановлений використовувати dpkg -L PKGNAME, якщо він не використовується apt-file list.
Тор

Відповіді:


15

Багато програм (бінарні файли / сценарії) опиняються в /binабо /usr/binз іншими частинами в різних каталогах конфігурації (часто в / під etc), як ви вже зазначали.

Для будь-якої конкретної команди ви можете перевірити, де це

whereis prog_name

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

which prog_name

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


1
+1 для whatis - дуже корисно для новачків у Linux

але чому просто конфігурація збережена в окремому каталозі?

@KOU Я не знаю історії цього, але це могло бути так, що програми можна було б оновлювати, не псуючи інформацію про конфігурацію, оскільки це було б в іншому каталозі. Таким чином, різні версії можуть використовувати ту саму інформацію конфігурації (якщо припустимо, що формат тощо не був змінений, тобто сумісний). Я просто здогадуюсь тут. Для точної відповіді вам доведеться вивчити історію файлової системи Unix / Linux.
Левон

1
Я не впевнений в історії рішення про розміщення всіх системних конфігураційних файлів /etc/, але наявність центрального місця для конфігураційних файлів дозволяє зробити їх резервну копію дуже простою. (Уявіть, що резервне копіювання конфігураційних файлів у всій системі в Windows, де вони розкидані по всій файловій системі та реєстру ...)
Li-aung Yip

@ Li-aungYip Добрий момент
Левон

5

У Windows, особливо старіших версіях, для програм було прийнято зберігати файли конфігурації та непостійні дані у своєму C:\Program Filesкаталозі. Це випливає з того, як програми зазвичай встановлювались та працювали під однокористувацьким, немережевим доступом DOS без дозволу.

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

З появою роздратування Vista та UAC ця традиція, нарешті, починає серйозно втрачати тягу.

UNIX та Linux, будучи багатокористувацькою системою набагато раніше, мали тенденцію відокремлювати виконавчі каталоги від інших каталогів набагато раніше, оскільки виникла потреба у запобіганні інших користувачів, крім root, змінювати встановлені бінарні файли. Це також чому, /usrі навіть /sbinіноді є окремими розділами - особливо адміністратор, який має особливу безпеку, зможе змонтувати ці розділи лише заново та перезавантажити їх для читання / запису, коли потрібно буде встановити / видалити.

Пакети зазвичай встановлюються у менеджера пакунків. Існують різні менеджери пакунків, такі як aptitude(Debian та похідні дистрибутиви), yum(Redhat та похідні дистрибутиви), pacman(забудьте, який дистриб'ютор це ...) та інші.

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

Зазвичай менеджер пакунків також дозволить проводити ті самі операції над пакетом, який ви завантажили вручну поза будь-якими сховищами. Інструменти також доступні, якщо ви хочете створити своє власне програмне забезпечення, яке ви створили або склали самостійно.

Оскільки сам пакет НЕ є виконуваним файлом, вам не доведеться запускати ненадійний виконуваний файл, який ви насправді не знаєте, що він робить. (Windows нарешті збирається з оновленнями, розповсюджуючи .msu'замість .exe', - але .msiвони були деякий час ...)


1
Re. pacman, це для Arch Linux .

2

Ви можете отримати список файлів, встановлених даним yumпакетом, виконавши:

yum install yum-utils

Тоді ви можете запустити його так:

repoquery --list yum-utils

(Очевидно, замініть "yum-utils" у цій другій на ім'я того пакету, список файлів якого ви хотіли б побачити.)

Бо apt-getви можете використовувати:

dpkg -L package-name

1

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


1

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


0

/optКаталог зарезервований для Windows , як установок , де кожен пакет має своє власне дерево каталогів. Ніхто цим не користується. Я не впевнений, чому; Можливо, додавання /opt/PACKAGE/binдо $PATHкожного пакету кожного разу просто дратує.


/optЗдається, в основному використовують комерційні / невільні програмні пакети, наприклад, MATLAB
Li-aung Yip

На моєму Ubuntu 12.04, Google Chrome встановлює в /optале так само LibreOffice 3.5 , який я встановив прямо з тут .

0

Програмне забезпечення в Linux трохи відрізняється від парадигми від Windows або Mac. У цьому виконуваному файлі та всі його підтримувані файли встановлюються в одну папку: Windows зазвичай підтримує їх c:\Program Files\program name, Apple - в /Applications/program.app. Під Linux існує більш ... комунальна структура. Бінарні файли, як правило, знаходяться, загальна /usr/binсистема налаштована, конфігурація для /etcкористувача зазвичай знаходиться у ~/.program. Бібліотеки є /usr/lib, підтримуються файли (наприклад, твори мистецтва), часто є /usr/share/programі т. Д. Існує навіть стандарт, який підказує, куди треба йти.

Програми , як правило , встановлюються програмами керування пакунками, rpmі dpkg; їх автоматично шукають та отримують (включаючи управління залежностями) відповідно yumта aptitude/ apt-get. На більш технічному рівні пакети - це прості стислі файли (я вважаю, що rpm і deb - це обидва .tar.gz). Ці архіви містять дзеркало фрагментів файлової системи від кореня, куди йдуть файли (наприклад, файл, який повинен бути встановлений на, /usr/bin/programбуде у usr/bin/programвідповідній папці в пакеті.

Щоб знайти інформацію про певний пакет, використовуйте менеджер пакунків для вашої системи, як пояснили інші.


0

Hier сторінка керівництва може дати певне уявлення


2
Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться.
MaQleod

@MaQleod Якщо ви стурбовані тим, що посилання може стати недійсним, я зв'язав лише для зручності. Я міг би просто написати "man hier" простим текстом, оскільки ви можете знайти цю сторінку в будь-якому поширеному дистрибутиві Linux.
AnonymousLurker

2
"див. посібник" - це також не відповідна відповідь, це коментар. Відповіді фактично повинні відповісти на запитання. Як це відповідає на поставлене запитання? наскільки істотний перелік ієрархії? Чому ОП (чи хтось інший) повинен вважати цю відповідь заслуговувальною увагою? Скопіюйте відповідні частини посилання (або чоловічої сторінки) та поясніть, чому вони є важливими в контексті питання, тоді ви відповіли на питання, а не просто зробили коментар.
MaQleod
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.