Proč není mnoho aplikací dostupných v úložištích balíčků?
Důvodů může být mnoho:
- Nikdo se neobtěžoval aplikaci zabalit.
- Nikdo nesmí zabalit aplikaci (jako Oracle trvá na tom, že bude jediný, kdo distribuuje Javu).
- Balík je publikován pod licencí, která je v rozporu s hodnotami distribuce.
- ...
Není jediný důvod. Pokud chcete vidět svou oblíbenou aplikaci ve správci balíčků vašeho distribuce, měli byste řešit každý případ zvlášť. Zkuste se spojit s vývojáři (například na IRC kanálu nebo v mailing listu) a zeptejte se, jak byste mohli pomoci s balením.
Jak nainstalovat tarball?
Tarball (balíček .tar.gz) může obsahovat cokoliv. Dokud ji skutečně neotevřete, nemůžete předpokládat, jak ji nainstalovat. Ke každému balíčku je opět třeba přistupovat jinak.
Hledejte dokumentaci! Jakýkoli (polo)slušný balíček poskytne návod, jak aplikaci nainstalovat. Vaším prvním krokem by mělo být vždy vyhledat textový soubor s názvem README, INSTALL nebo něco podobného. Může vám také pomoci podívat se na web vydavatele.
Protože je každý balíček jiný, neexistuje žádný univerzální způsob, jak zpracovat každý tarball na světě. To je jako žádat o recept, který funguje na všechny ingredience na světě. Neděje se.
Dobrá znalost vašeho systému, distribuce a vašeho desktopového prostředí vám pomůže, takže pokud je to uklidňující, věci budou vypadat stále předvídatelněji, jak budete trávit čas ve světě linuxu.
Zvláštní případ:Autotools
Jak se projekty rozrůstají, musí poskytovat snadné způsoby přechodu od zdrojového kódu k binárnímu až po úplnou instalaci do systému. To je důvod, proč se dodávají s vestavěným sestavovacím systémem, sbírkou skriptů, které provádějí potřebné.
Ve světě Linux/Open Source/Svobodný software získal jeden sestavení systém širší přijetí:GNU Autotools. Pokud budete někdy jednat s (n open) zdrojovým balíčkem, je velká šance, že budete používat Autotools.
V nejjednodušším případě zde je návod, jak nainstalovat aplikaci zabalenou s autotools:
./configure
:Skript, který vygeneruje soubory Makefiles odpovídající vašemu systému (často také kontroluje dostupnost závislostí).make
:Kompilace zdrojového kódu podle dříve vygenerovaných souborů Makefiles.make install
:Zkopíruje binární soubory do příslušných umístění, vytvoří symbolické odkazy a další kroky definované vývojářem.
Poznámky
configure
skripty mají obvykle mnoho možností, jako například který kompilátor použít nebo jak definovat cílový adresář. Pokud potřebujete flexibilitu, stojí za to podívat se na./configure --help
.- I když jste si jisti, že je to Autotools a víte to opravdu dobře, vždy začněte čtením dokumentů (README, INSTALL, ...)
Odpovězte na aktualizaci v otázce
To, na co se ptáte, nemá jednoznačnou odpověď. Každý zde může mít svůj názor na to, co představuje „dobrý postup“, ale nakonec jen vy můžete najít to, co vám vyhovuje . Kdyby existovala snadná odpověď, nekladli byste otázku. Vaše distribuce by na to odpověděla za vás.
Jak již bylo řečeno, zde je několik osobních poznámek.
-
V mém systému rezervuji
/usr/local/bin
pro balíčky nainstalované mým správcem balíčků. Všechno, co zkompiluji/nainstaluji ručně, jde v/opt
. Toto je detail, ale pomáhá vyhnout se velkým bolestem hlavy při práci s několika verzemi stejného programu. -
xxx.desktop
a problémy s GUI obecně jsou specifické pro desktopové prostředí, které používáte. Pokud to funguje pro váš systém, skvělé. Nelze to však zobecnit na všechna prostředí dostupná na Unixu. -
/usr/local/bin
má tu výhodu, že už je na vaší PATH. Pokud chcete použít jiný adresář (například/opt
jak navrhuji), nezapomeňte jej zahrnout do své PATH. Pokud nevíte, jak to udělat, otevřete terminál a proveďte následující v terminálu (není to nejhezčí způsob, jak to udělat, ale aniž bych věděl něco o vašem systému, nemohu navrhnout nic jiného):echo 'export PATH=$PATH:/opt' >> ~/.bashrc
Myslím, že si u sebe musíte ujasnit, k čemu to chcete zaregistrovat .
Abych vysvětlil – a nesnažím se být chytrý – „linux“ je samozřejmě jádro a jádro o žádném softwaru uživatelského prostoru na vašem systému kromě init neví a ani se o něj nezajímá. O čem se tu tedy bavíme?
Zmiňujete řadu různých distribucí. Někdy vytvářím software ze zdroje, i když je dostupný v úložišti, protože chci nastavit nějaké konfigurační možnosti, které nejsou nastaveny v binárním souboru distribuce. Jediný problém, který s tím mám, je, že pokud je balíček předpokladem pro něco jiného, musím to skutečně zaregistrovat v systému balení abych se vyhnul náhodné instalaci balíčku distribuce na ten, který jsem vytvořil. Na systémech založených na fedora/rpm se to provádí pomocí rpm -i --justdb <package>
. Na systémech založených na debian/apt to nedělám; místo toho pouze vynucuji instalace podle potřeby, což je možná líné - zdá se, že existuje hezčí způsob, jak to udělat, vytvořením fiktivního balíčku, který předstírá, že splňuje jakýkoli požadavek. To je něco v souladu s návrhem m0nhawk skutečně vytvořit balíček ze zdroje .tar.gz - až na trochu jednodušší (budu upřímný a řeknu, že se mi m0nhawkův návrh vůbec nelíbí).
Zdá se, že máte nějaké další problémy kromě toho se systémem balení. Není mi jasné, co to je, i když zmiňujete desktopové prostředí (např. Gnome). Ty jsou heterogenní, takže na otázku „jak to udělám na linuxu“ prostě neexistuje jediná odpověď – není to ani otázka „jak to udělám na ubuntu“ nebo „jak to udělám na gentoo“ – je to otázka „jak to udělám pro plochu gnome“ nebo „jak to udělám na ploše XFCE“ atd. Podle mého názoru je jediným problémem vámi zmíněná záležitost spouštěčů, které rád bych věřil, že každé DE poskytuje jednoduchý prostředek, jak toho dosáhnout (ale nebude to úplně stejné, protože se liší). Možná je zde také problém, že něco poskytuje výchozí nastavení pro práci se soubory – myslím, že tato otázka zní „jak zaregistruji příkaz ve svém prohlížeči souborů“ (a prohlížeče souborů na linuxu jsou také heterogenní kolekce).
Dále jsou to služby, které jsou spravovány systémem init (např. systemd nebo upstart). Takže tato otázka je ve skutečnosti řadou souvisejících otázek, které se potenciálně týkají:
- systém balení, např. apt nebo yum
- systém init, např. systemd nebo upstart
- prostředí pracovní plochy, např. kde nebo unity
- prohlížeč souborů, např. nautilus nebo konqueror
- ?????
Částečně proto, že nemůže existovat jedno jednoduché jednotné řešení (ačkoli standard XDG může poskytnout některé části takového) je, že „linux“ není jednoduchý jednotný operační systém a myslím si, že drtivá většina jeho uživatelů mu to tak vyhovuje. DE často vůbec nepoužívám a nikdy nepoužívám prohlížeč souborů, se kterým jsou dodávány atd.
Opět se opravdu snažím být v tomto nápomocný a nejen pontifikovat:pokud existují problémy, které zde chcete vyřešit, budete muset přesněji zvážit, o jaké problémy jde a jaký software je s nimi ve skutečnosti spojen (kromě „linuxu "), pokud je chcete vyřešit.
Myslím, že základním důvodem vašeho celkového problému je to, že systém Linux sám o sobě neobsahuje „registr“ jako takový. Spustitelný soubor je vše, co opravdu potřebujete, aby něco fungovalo. Pokud nechcete zadat úplnou cestu ke spustitelnému souboru, většina shellů je bude hledat v adresářích uvedených v proměnné $PATH vašeho prostředí. Může to být trochu složitější s propojenými knihovnami a tak dále, ale normálně se nemusíte ponořit tak daleko.
Různé distribuce Linuxu se standardizovaly na různých rozvrženích souborových systémů a systémech správy balíčků, v tom je problém. Redhati používají rpm, Debians/Ubuntu používají balíčky deb. Arch se také vydal svou vlastní cestou. Z hlediska softwarových projektů, pokud nechcete být zahrnuti do distribuce, vaše uživatelská základna je celá v jedné distribuci nebo komerční produkt, jehož cílem je snadná instalace pro každého, jsou to pravděpodobně jediné body, které začnete hledat. různé balíčky.
Ve skutečnosti je to zdrojový tar.gz, který se staví s gcc
je pravděpodobně nejlepší definice běžného "linuxového balíčku". Linuxové jádro s některými GNU utilitami a GCC téměř společným jmenovatelem všech různých variant operačních systémů založených na Linuxu, které můžete získat.
Nešel bych tak daleko, abych řekl, že „tak málo“ věcí je dostupných jako balíčky, protože něco konkrétního, co hledáte, není. (nebo se možná distributor rozhodl neobtěžovat se všemi těmi balíčkovými povyky? Jako Chrome a jeho vlastní proces aktualizace). Existuje tolik balíčků pro tolik různých balíčkových systémů pro tolik architektur a tolik svobodného softwaru, že to není legrace.
Pokud jste vytvořili něco, co není dodáváno jako balíček pro vaši distribuci linuxu, nebo podporuje možnost sestavení jako balíček, nejlepším způsobem, jak to „zaregistrovat“ jako skutečný balíček, je vytvořit pro něj balíček, který definuje, kde všechny soubory by měly být založeny na systému balíčků, který si vyberete, a nainstalovat je tímto způsobem. Buďte duší a přispějte svou prací na balení zpět do projektu, aby z toho mohli těžit ostatní.
Na webu jsou různé příručky o sestavování balíčků. Debian je jedním z nich.
Pokud vše, co chcete udělat, je spustit zkompilovaný balíček, možná přidejte binární cestu do $PATH
?
Pokud děláte něco jiného, co to je?