Як по-справжньому встановити файл tar.gz в Linux - як керувати встановленими вручну (або окремими) програмами?


12

Я бачу всі ці посилання, що пояснюють пакети та .debs ... Я знаю, що ... і існує багато хитрощів для роботи файлів tar.gz (наприклад: оновлення-альтернативи для Java або вручну перекидання файлу в / usr / local / бін (або десь інше, яке я вирахував із годин пошуку)). Якщо пакети настільки розумні, наскільки так мало додатків Linux доступні в пакунках або .debs / rpms?

Я виступаю як новий користувач; Я знаю, що фахівці, напевно, знають це краще (я думаю, я можу завантажити компільовану версію Eclipse?). Як і netbeans та chrome .sh, eclipse - це звичайний, стартовий каталог, Java вимагає цього update-alternativesбізнесу, але я не думаю, що він реєструється у списку програм Ubuntu / Debian (просто реєструється як команда) тощо. Я знаю, що це іноді доступний у сховищах, але я просто заплутаний, чому сторінки для завантаження не мають належних пояснень).

Короткий огляд: Якщо завантажувати або компілювати файл tar.gz, як його зареєструвати у системі? update-alternativesздається, зареєстрував це як команду, в Ubuntu він не відображається на панелі пошуку. У Debian я можу вручну додати ярлик до запуску GNOME 2. Але що мені насправді робити?


Редагувати:

Тож погравши трохи більше з новими рішеннями, я можу впорядкувати свою "проблему":

Як мені керувати своїми програмами, встановленими вручну? Firefox та Eclipse - єдині мої приклади на даний момент (я не завантажую багато матеріалів). Вони можуть обоє закінчити коробку, що мені подобається. За винятком того, де я повинен їх встановлювати? Я бачу, що у Eclipse є свої власні інструкції, але я б краще зробити всі свої "ручні пакети" однаково.

  1. Після деяких досліджень я вирішив застосувати ці програми /usr/local/bin.
  2. З того, як встановити eclipse , я зрозумів, що щось з’явиться в пусковій установці, мені потрібно помістити xxx.desktopфайл ~/.local/share/applications/. Чи має значення цей файл .desktop?
  3. Начинки з автоінструментами (шукаю configureабо unix/configureфайл) вийдуть добре. Деякі дослідницькі моменти, які я повинен використовувати, CheckInstallщоб відстежувати все це.
  4. Мені слід використовувати update-alternativesдля реєстрації шляхів. З цього потоку Java , схоже, я створюю посилання з /usr/bin/javaна /usr/lib/jvm/jdk.... Коли я встановлюю такі "автономні" програми, як Eclipse або Firefox, чи слід завжди посилатися на це /usr/bin/[app]? І якщо твердження 1 є правдивим, я б робив подібні речіsudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1

Чи правильні ці інструкції / хороший спосіб керування ручними установками? Чи є якісь інші кроки, яких я повинен виконувати? Інші пропозиції?


1
Чому б не шукати *.debпакет замість цього?
m0nhawk

@ m0nhawk Не завжди можна знайти .deb файл? Як і на сторінці завантаження Eclipse, це лише tar.gz. Якщо я цього повністю не пропускаю
Raekye

1
Для Eclipse напевно існує пакет для Debian ( для Ubuntu ). І я думаю, що найкращий спосіб *.tar.gz*.rpm*.deb
попрацювати

1
Вам потрібен .desktopфайл, щоб щось з’явилося в меню. update-alternativesпрацює лише для того, щоб визначити пріоритет PATH.
трійчатка

1
Ваше питання все ще стосується "що мені робити, щоб зареєструвати нове програмне забезпечення з ______", де _____ - це певне середовище робочого столу, а не "що я повинен робити WRT linux" взагалі. Плюс, можливо, мається на увазі незнання щодо змінної середовища $ PATH?
goldilocks

Відповіді:


15

Чому багато реквізитів недоступні в репост пакетів?

Причин може бути багато:

Немає жодної єдиної причини. Якщо ви хочете бачити свою улюблену програму в диспетчері пакунків дистрибутива, вам слід розглянути кожен випадок окремо. Спробуйте зв’язатися з розробниками (наприклад, на каналі IRC або списком розсилки) і запитайте, як ви могли допомогти упаковці.

Як встановити тарбол?

Тарбол (пакет .tar.gz) може містити що завгодно. Поки ви фактично не відкриєте його, ви не можете припустити, як його встановити. Знову ж, до кожного пакету слід підходити по-різному.

Шукайте документацію! Будь-який (напів-) гідний пакет надасть інструкції щодо встановлення програми. Ваш перший рефлекс повинен завжди шукати текстовий файл під назвою README, INSTALL або щось подібне. Перевірка веб-сайту видавця також може допомогти.

Оскільки кожен пакет різний, не існує універсального способу обробляти кожен тарбол у світі. Це як запитати рецепт, який діє на всі інгредієнти у світі. Не відбувається.

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

Особливий випадок: Автоінструменти

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

У світі Linux / Open Source / Free Software одна система складання отримала ширше прийняття: GNU Autotools . Якщо ви коли-небудь матимете справу з (n відкритим) вихідним пакетом, є велика ймовірність, що ви будете використовувати Autotools.

У найпростішому випадку, ось як встановити додаток, упакований з автоінструментами:

  • ./configure: Сценарій, який генерує Makefiles відповідно до вашої системи (він також часто перевіряє наявність залежностей).
  • make: Компілювання вихідного коду відповідно до створених раніше файлів Makefiles.
  • make install: Копіює двійкові файли у відповідні місця, створює символьні посилання та будь-який інший крок, визначений розробником.

Примітки

  • configureСценарії зазвичай мають багато варіантів, наприклад, який компілятор використовувати або як визначити цільовий каталог. Якщо вам потрібна гнучкість, то варто подивитися ./configure --help.
  • Навіть якщо ви впевнені, що це Autotools, і ви це добре знаєте, завжди почніть з читання документів (README, INSTALL, ...)

Відповідь на оновлення у запитанні

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

Це було сказано, ось кілька особистих зауважень.

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

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

  • /usr/local/binмає перевагу в тому, що ви вже знаходитесь у вашій PATH . Якщо ви хочете використовувати інший каталог (наприклад, /optяк я пропоную), не забудьте включити його у свій ПАТ. Якщо ви не знаєте, як це зробити, відкрийте термінал і виконайте наступне в терміналі (не найкрасивіший спосіб зробити це, але нічого не знаючи про вашу систему, я нічого не можу запропонувати):echo 'export PATH=$PATH:/opt' >> ~/.bashrc


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

Вітаю вас, я сподіваюся, що це допоможе :) Я відредагував свою відповідь, щоб вирішити ваші оновлення. Пам’ятайте, що не існує «Єдиного вірного шляху», який би робив справи (за винятком випадків, коли ви emacsкористувач). Вам доведеться пройти випробування та помилки, щоб з часом дізнатися про переваги та недоліки кожного з різних підходів.
rahmu

Дякуємо за оновлення! Звичайно. Я здогадуюсь, xxx.desktopяк правило, працює для GNome. Що ви знаєте про використання update-alternativesшляху для встановлення шляху?
Raekye

1
Наскільки я знаю, це специфічний для Debian спосіб поводження з універсальним програмним забезпеченням, як-от наявність декількох браузерів чи редакторів. (Ubuntu та Mint базуються на Debian і це успадкували). Ось більше, якщо вас цікавить
rahmu

Чудова відповідь. Одне, що часто потрібно (або принаймні бажано) - це зробити встановлення судо як останній крок (з пакетом, якому ви довіряєте). Це дає процесу необхідні дозволи для розміщення речей у системних каталогах, які не належать вашому користувачеві (наприклад, / usr / bin).
Джо

8

Я думаю , ви повинні уточнити з собою то , що ви хочете «зареєструвати» його з .

Для пояснення - і я не намагаюся бути розумним-алеккі - "Linux" - це, звичайно, ядро, і ядро ​​ні про що не знає, ні про інтерес до будь-якого програмного забезпечення користувачів вашої системи, крім init. То про що ми тут говоримо?

Ви згадуєте ряд різних дистрибутивів. Я іноді будую програмне забезпечення з джерела, навіть якщо воно доступне у сховищі, тому що я хочу встановити деякі параметри налаштування, які не встановлені у бінарному дистрибутиві. Єдина проблема, яка у мене є, полягає в тому, що якщо пакет є необхідною умовою для чогось іншого, я дійсно повинен зареєструвати це в системі упаковки , щоб уникнути випадкового встановлення пакета distro поверх того, що я створив. У системах на базі fedora / rpm це робиться за допомогою rpm -i --justdb <package>. Я не роблю цього в системах на базі debian / apt; натомість я просто змушую встановити за потребою, що, мабуть, ліниво - виглядає, що це буде приємніше робити це, створивши макетний пакет, який претендує на виконання будь-якого попереднього запиту. Це на зразок пропозиції m0nhawk щодо фактичного створення пакету з джерела .tar.gz - за винятком дещо простішого (я чесно скажу, що мені зовсім не подобається пропозиція m0nhawk).

Здається, у вас є ще деякі проблеми, крім проблеми із системою упаковки. Мені незрозуміло, що це, хоча ви згадуєте середовище робочого столу (наприклад, Gnome). Вони неоднорідні, тому просто немає жодної відповіді на питання "як це зробити на Linux" - це навіть не питання "як це зробити на ubuntu" чи "як це зробити на gentoo "- це питання" як це зробити для робочого столу gnome "або" як це зробити на робочому столі XFCE "і т. д. На мій погляд, єдине питання - це питання про пускові установки, які ви згадуєте, про які я хотілося б вірити, що кожен DE пропонує прості засоби для цього (але це не буде абсолютно однаковим, оскільки вони різні).

Потім є служби, якими керує система init (наприклад, systemd або upstart). Таким чином, це питання - це насправді низка суміжних питань, що потенційно стосуються:

  • система упаковки, наприклад, apt або yum
  • система init, наприклад, systemd або upstart
  • середовище робочого столу, наприклад, kde або юнит
  • файлообробник, наприклад, nautilus або konqueror
  • ?????

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

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


"в дистрибутиві бінарних" <- / мені промовляє щось про джерело, що базується на
джерелах

Крім того, проблема зі стандартом XDG, ймовірно, полягає в тому, що деякі потокові потоки взагалі не переймаються цим, а розробники дистрибутивів - ті, хто надає свої .desktopфайли, для такого роду завдань вони потрібні.
njsg

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

Я свого роду сформулював краще питання - як мені керувати своїми програмами, встановленими вручну? Як Eclipse та Firefox, які, як правило, працюють без складних залежностей (тому я можу налаштувати його сам і завантажити пакет). Вони працюють автономно, як згадував ваш або хтось інший, але я повинен слідкувати за цими програмами, а не залишати їх навколо моєї файлової системи? (Дивіться оновлене запитання)
Raekye

Raekye: На мою думку, це не має ніякого значення, а це те, що вам не потрібно нічого робити, щоб керувати або «відслідковувати» речі, які ви встановили з джерела в / usr / local, за винятком того, наскільки ви хочете для будь-яких ваших цілей. Крім компіляції та встановлення в $ PATH, не існує універсального реєстру Linux, оскільки немає такої універсальної мети. Я припускаю, що ти просто переживаєш, що ти щось пропустив - ти цього не зробив. Ти ун-тар, ти configure, ти make install. Ось і все, зроблено. Все після цього - питання особистої переваги.
goldilocks

5

Я думаю, що основна причина вашої загальної проблеми полягає в тому, що власна система Linux не містить "реєстру" як такої. Виконаний файл - це все, що вам дійсно потрібно для чогось запустити. Якщо ви не хочете вказувати повний шлях до виконуваного файлу, то більшість оболонок шукатиме їх у каталогах, перелічених у вашій змінній $ PATH. Це може стати трохи складнішим із пов’язаними бібліотеками тощо, але зазвичай вам не потрібно заглиблюватися так далеко.

Різні дистрибутиви Linux стандартизовані для різних макетів файлової системи та систем управління пакетами, в чому полягає проблема. Redhats використовують rpm , Debians / Ubuntu використовують пакети deb. Арка пішла також власним шляхом . З точки зору програмних проектів, якщо ви не хочете бути включеними в дистрибутив, ваша база користувачів повністю знаходиться в одному дистрибутиві, або комерційний продукт, який спрямований на легкість встановлення для всіх, вони, мабуть, єдині пункти, які ви починаєте шукати для створення різні пакети.

Фактично, джерело tar.gz, яке gccстворюється, - це, мабуть, найкраще визначення загального "пакета Linux". Ядро Linux з деякими утилітами GNU та GCC майже про загальний знаменник між усіма різними ароматами операційних систем на базі Linux.

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

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

В Інтернеті існують різні посібники щодо пакетів побудови . Debian є одним з них .

Якщо все, що ви хочете зробити, це запустити складений пакет, можливо, додайте бінарний шлях до свого $PATH?

Якщо ви робите щось інше, що це?


"Якщо все, що ви хочете зробити, це запустити складений пакет, можливо, додайте бінарний шлях до вашої $ PATH?" <- Я припускаю, що будь-яка розумна процедура встановлення (скажімо, make installтощо) як мінімум встановила б під цим символьним посиланням /usr/bin/, якби не встановити цю річ під /)
njsg

Здебільшого, я думаю, це пов’язано з тим, що я роблю багато, --prefix=/elsewhereщоб утримати власні побудови подалі від звичайного дерева.
Метт

1
Як правило, тарболи з використанням make installвстановлять до/usr/local/bin
Шадур

0

Я хотів би додати, що ви можете також посилатись на ~/bin/замість цього /usr/bin. *.desktopфайли можуть бути розміщені в ~/.local/share/applications/або /usr/share/applications/. Тільки я використовую свій комп’ютер, і мені подобається максимально не торкатися системних файлів (нічого, що не стосується домашнього каталогу).

Звичайно, якщо ви помістите речі в аналоги «домашнього каталогу», вони не з’являться для інших користувачів.

Це те, що включено у програму ~/.profileDebian wheezy за замовчуванням :

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.