Видалення програм в Linux


30

Я використовую Windows та Mac OS протягом останніх 5 років, і тепер я розглядаю можливість використовувати Linux щодня. Я встановив Ubuntu на віртуальну машину і намагаюся зрозуміти, як я можу використовувати Linux для своєї щоденної роботи (як js-програміст / веб-дизайнер).

Вибачте за запитання для початківців, але мені здається, що іноді, коли я встановлюю програму через make config&, make installвона змінює мою систему способами, які не піддаються реверсиві. У вікнах, коли ви встановлюєте програму, ви можете її видалити, і, сподіваємось, якщо вона буде відтворена за книгою, у файловій системі чи реєстрі не залишиться слідів програми тощо. У Mac OS ви просто видалите додаток, як файл.

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


Оновлення: при встановленні програми його файли можуть поширюватися де завгодно (менеджери пакетів вирішують частину проблеми), але навколо цього є крутий злом: використовуйте Docker для встановлення програм і зберігайте їх у своїй пісочниці, особливо якщо ви не збираєтесь використовуйте їх занадто часто. Також можна запускати додатки GUI, такі як Firefox, повністю в "пісочниці" Docker.


11
Як простого користувача ви повинні використовувати, apt-getа не makeвстановлювати програмне забезпечення. make installвикористовується тоді, коли потрібно створити останню (можливо, нестабільну) версію програмного забезпечення з джерел, яка ще не доступна як пакет.
Дмитро Григор’єв

@DmitryGrigoryev Використання aptпростіше і забезпечує кращий tui, ніж використання apt-get.
Бакуріу

3
Коли я використовував OS X, я часто виявляв *.appнедостатнє видалення файлу, оскільки установки програм часто засмічували інші місця (наприклад, каталог бібліотеки, з пам'яті). Крім того, якщо ви вручну створюєте з джерела в Ubuntu make install, використовуйте checkinstallнатомість, щоб дозволити просте видалення.
Спархаук

1
Не використовуй ./configure ; make ; make installшлях. Все, що вам потрібно - це вивчити казковий інструмент fpm .
Мисливець на оленів

що таке інструмент fpm?
AlexStack

Відповіді:


28

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

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

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

Якщо ви хочете видалити програму, apt-getви будете використовувати, apt-get remove packageяк було зазначено раніше. Будь-які програми, які покладаються на цей пакет, також будуть видалені, і ви зможете переглянути їх.

Якщо ви хочете видалити, то, як правило, цей процес є make uninstall. Попередження немає (як я вже говорив вище).

make configне змінить вашу систему, але make installбуде.

Як початківець я рекомендую використовувати apt-getабо будь-який дистрибутив, який ви використовуєте для двійкових пакетів. Це зберігає речі красиві та організовані, і якщо ви дійсно цього не хочете, це не порушить вашу систему.

Сподіваємось, це все очистить.


3
Для видалення без слідів ви, звичайно, скористаєтесь --purgeопцією зapt-get
Хаген фон Ейтцен

16

Теоретично, make uninstallслід видалити те, що make installдодано, і у вашій системі не накопичується суворе. Проблема, звичайно, полягає в тому, що не всі файли створюються рівними.

Деякі можуть опускати uninstallправило, залишаючи це вам розібратися, що installправило зробило. Гірше, якщо правило встановлення буде замінено пов'язану бібліотеку, німий uninstallрежим може порушити залежності для якоїсь іншої програми.

Найкраще рішення для встановлення джерела - використовувати інший префікс, ніж пакети, встановлені менеджером упаковки системи. Apt встановлює файли, щоб /usr/використовувати /usr/local/ієрархію для своїх джерел. Це набагато простіше відстежувати, які файли належать до яких пакетів та видалення не порушують систему.

./configure --prefix=/usr/localпрацює для багатьох сценаріїв налаштування. Якщо ні, ви можете редагувати Makefile вручну. Або просто скопіюйте файли вручну.

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


15

Я рекомендую вам використовувати apt-get installдля встановлення будь-якого пакета в linux та apt-get remove(ім'я пакета) або apt-get purge(ім'я пакета), який видалить не лише основний пакет, який ви хочете видалити, але й усі пов'язані з цим пакети чи залежності, які були встановлені під час встановлення.

Тепер, щоб зберегти систему чистішою, я рекомендую вам скористатися apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( ця публікація про це цікава), яка видалить усі файли, які були завантажені під час встановлення, але більше не потрібні.

Ще одна команда, яка була б корисною, якщо ви хочете видалити всі залежності, які встановлені у вашій системі, але вони не були видалені, коли ви видаляли apt-get autoremove.

Якщо ви встановите пакет через make and make install, ви несете відповідальність за його видалення самостійно (можливо, до завантаженого пакету входить файл README, який розповідає, як це зробити), а також за спробу видалити всі пов'язані з ним залежності. . Ось чому завжди рекомендується встановлювати пакети в Linux, які пропонуються диспетчером пакунків дистрибутива, якщо ви зробите це таким чином, ви можете бути впевнені, що ваш пакет достатньо перевірений для роботи з дистрибутивом (ароматом Linux), який ви використовуєте. і навряд чи вийде з ладу вашою системою. Крім того, ви можете бути впевнені, що ваш пакунок буде оновлений при необхідності, тоді як якщо ви встановите його самостійно, ви несете відповідальність за все це.

Сподіваюся, це допомагає :)


11

Нормальний спосіб управління встановленими програмами під Linux - це менеджер пакунків. Вибір менеджерів пакетів - одна з головних речей, що розрізняють розподіли. Ubuntu, як і Debian (на його основі), використовує dpkg та APT ; більшу частину часу вам потрібно лише взаємодіяти з одним з інтерфейсів APT, таких як apt-get(командний рядок), здатність (командний рядок або текстовий режим) або Synaptic (GUI).

Менеджер пакунків відстежує, які файли належать до встановленої програми. Як і в Windows, програми можуть виконувати довільний код як частину процедури їх встановлення чи видалення, але, як правило, добре себе почувають і не порушують інших програм. Крім того, (не) код інсталяції записується обслуговувачем пакунків, а не початковим автором (для пакунків у основному дистрибутиві). На відміну від Windows, існує єдиний інтерфейс до встановлення, оновлення та видалення: менеджер пакунків. Вам не потрібно шукати деінсталятор (якщо такий є), просто натисніть на значок «Видалити» у графічному менеджері пакетів або запустіть apt-get remove PACKAGENAME.

Якщо вам потрібне "екзотичне" програмне забезпечення, можливо, вам доведеться встановити його вручну, розпакувавши архів або склавши з джерела. Інсталятори, які надходять у вигляді виконуваної програми, рідкісні у світі Linux. Біг make installмає тенденцію поширюватися кожну програму в протягом декількох каталогів ( /usr/local/bin, /usr/local/man, /usr/local/libі т.д.). Щоб сортувати речі, я рекомендую використовувати «менеджера пакунків бідного чоловіка», наприклад, stow . За допомогою Stow кожен пакет встановлюється у власному каталозі, і stowутиліта піклується про створення символічних посилань, щоб команди, встановлені пакетом, знаходились у шляху пошуку команд тощо. Докладніше див. У розділі Відстеження програм .


це "екзотичне програмне забезпечення" може написати хто завгодно? Як це "екзотичне програмне забезпечення" стає офіційно доступним у дистрибутивах? Хтось переглядає їх вихідний код за рядком? Як, наприклад, Ubuntu вирішує включити програмне забезпечення у свою команду APT-GET і проігнорувати інше?
AlexStack

1
@AlexStack Більшість дистрибуцій проводиться волонтерами. Ubuntu спонсорується компанією Canonical, яка платить небагатьом людям, але все ж основну частину обслуговування пакету здійснюють волонтери. Тож найточніша відповідь полягає в тому, що Ubuntu включає все програмне забезпечення, яке волонтер вирішив включити. Точніше, більшість програмного забезпечення в Ubuntu походить від Debian, тому розробник Debian повинен був вирішити, над яким пакетом варто працювати, і програмне забезпечення повинно відповідати політиці (прийнятна ліцензія, не надто баггі).
Жиль "ТАК - перестань бути злим"

@AlexStack немає гарантії, що хтось переглянув певний фрагмент програмного забезпечення по черзі, навіть якщо це програмне забезпечення доступне у сховищах Ubuntu (тобто через встановлення за замовчуванням apt-getтощо). Але вони розміщують лише досить популярні програми у сховищах, ті, у яких достатньо користувачів, щоб бути впевненими, що вони в основному роблять те, що їм потрібно робити.
David Z

8

Майже в кожному дистрибутиві є власний вибір менеджера пакунків, є декілька популярних. pacman, apt, rpm, emerge, ... дистрибуції на основі debian використовують apt.

Документ виглядає приголомшливо, але насправді не все так складно зробити .debs для місцевого використання , просто залишайтеся за завданням.


8

Вам слід спробувати використовувати менеджер пакунків (apt-get, aptitude, synaptic, або aptdcon, програмний центр, mintinstall, ..), якщо це можливо. Використання завдання make для встановлення є дуже необґрунтованим, не гарантовано мати uninstallаналог і не гарантовано добре грати з рештою системи (Це просто сценарій, прив’язаний до системи збирання make - і на відміну від переглянутого пакета, завдання можуть містити будь-який виконуваний код, потенційно шкідливе програмне забезпечення).

Якщо ви не знайдете упаковану версію потрібного програмного забезпечення, ви можете виявити checkinstall( checkinstall make install) корисною.


3

Я не експерт, і не знаю багато про встановлення програмного забезпечення з джерела, але, використовуючи apt-get, ви можете видалити встановлене програмне забезпечення за допомогою apt-get remove package-name. Щоб також видалити всі конфігураційні файли, використовуйте apt-get purge package-name. Найбезпечніший спосіб зберегти установку Linux в порядку - це використовувати лише пакети в офіційних сховищах. Коли потрібен пакет, який не знаходиться в офіційних сховищах, його часто можна знайти (оскільки ви використовуєте Ubuntu) в PPA .


apt-getнемає жодної користі для ОП, які використовували configureтаmake install
roaima

3

Як говорять інші відповіді, сьогодні типово встановлювати переважну більшість програмного забезпечення за допомогою диспетчера пакетів вашого вибору. Це настільки зручно, що ви, ймовірно, пропустите його, повернувшись до Windows! У певному сенсі різні "ринки" та "магазини" йдуть у цьому напрямку також і для комерційних ОС.

Сказавши це, я пам’ятаю, що коли я вперше почав вивчати Linux, я був спантеличений тим, як зазвичай встановлюється програмне забезпечення. Хоча в Windows всі файли йдуть в одному каталозі c:\Programs, традиційний "unix спосіб" полягає в тому, щоб розкидати їх навколо "стандартних місць" (деталі не такі стандартизовані, [дивіться LSB для отримання додаткової інформації] [1] ), наприклад, /usr/local/binдля виконуваних файлів, /usr/local/docдля документації тощо.

У певному сенсі Windows "не знає", де знаходяться ваші виконувані файли. Знає, що вони "десь під c:\Program Files", але не набагато більше. Сканування всіх цих каталогів, щоб їх знайти, або раніше було надзвичайно дорогим. Отже, посилання на виконуваний файл буде явно розміщене у відомому місці (меню "Пуск"), і саме це ви б використали для його запуску.

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

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

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


дякую @unclezeif. Ця проблема з "файлами, розкиданими по всьому місцю" насправді клопоче мене, тому що я не розумію цього. Ви сказали, що підхід Unix, як правило, є більш гнучким. Чи можете ви докладно уточнити?
AlexStack

Наприклад, документація знаходиться в одному місці, значки - в одному місці і т. Д., Що в деяких випадках дуже приємно! Під більш гнучким розумінням я маю на увазі, що, будуючи все на шляху, ви можете робити такі речі, як: нерестування нової оболонки, де змінюються змінні середовища, щоб ви бачили лише виконувані файли в певній директорії, тим самим обмежуючи (або розширюючи) свій вибір. Це все дуже "просто", оскільки ви використовуєте лише файли та змінні середовища для досягнення великої ступеня налаштування.
UncleZeiv

Інший приклад: в принципі ви можете встановити програму у свій домашній каталог, наприклад / home / foo / bin, а також просто додати / home / foo / bin у ваше середовище шляху, не торкаючись спільної системи.
UncleZeiv

3

Я думаю, що найкраща порада - саме в цьому форумі . Ось ваші варіанти (2 і 3 - більш-менш однакові за рівнем ефекту):

  1. Використовуйте менеджер пакунків та сховище. Це означає, що ви отримуєте оновлення, отримуєте офіційні релізи, підписані релізи, тощо, тощо.
  2. Якщо ви не можете чи не хочете використовувати пакет із сховища, складіть пакет для програмного забезпечення та встановіть його за допомогою менеджера пакунків. Детальні вказівки щодо цього в системах на базі Debian містяться у посиланні, пов’язаному вище. Спочатку це виглядає страшно, але це дуже просто, і особливо у випадку з Debian є багато сценаріїв, щоб зробити всю важку роботу за вас.
  3. Якщо ви не можете змусити цей метод працювати, використовуйте, checkinstallяк рекомендували інші. Це зробити дуже простою заміною, що випадає:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Це повинно будувати програмне забезпечення як звичайне, а потім запускатись make installу обмеженому середовищі, яке відстежує, що він робить, та створює пакет, який би робив саме ті речі. Потім він встановлює цей пакет разом із вашим менеджером пакунків. Видалення тоді - це як видалення будь-якого іншого пакету, як і в (2).

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