Balíčky v Linuxu

Miki

Balíčky v Linuxu
« kdy: 02. 04. 2013, 18:26:05 »
Zdravím,

rád bych vyřešil pár věcí, které mi vadí v souvislosti s Linuxem (Ubuntu). Nedávno jsem ho začal používat jako jediný systém na notebooku (do té doby jsem ho měl jen ve virtuálu, i když pravidelně využívaný).

1. Notebook má 20GB SSD disk (+ normální plotnový) a já si nainstaloval systém právě na SSD a "/home" napojil na ten plotnový. Vzhledem k tomu, že 20GB není moc, rád bych některé programy instaloval jinam než do složek v kořenovém adresáři. Jde to nějak? Zároveň bych rád zachoval automatické aktualizace těch programů i jejich viditelnost v aptitude.

2. To trochu souvisí s první otázkou. Pokud mám nějaký program, který si chci nainstalovat (je v repozitáři), ale nechci s tím zadělávat celý systém (chtěl bych si ho nainstalovat někam do home a později ho smazat). Je nějaká taková možnost? Kompilaci neuvažuju, protože to typicky znamená zároveň instalovat tuny dev balíčků a to už pak celá ta procedura trochu ztrácí smysl. Něco podobného Windowsímu Sandboxie ( http://www.sandboxie.com/ ).

3. Jde nějak zjistit, které konfiguráky v home patří k jakému programu? jsou tam pravděpodobně složky, které už dávno nejsou používané a pravděpodobně už ani nikdy nebudou (programy, které jsem si nainstaloval na zkoušku a pak smazal). Začíná jich být celkem hodně.

Díky za případné odpovědi.


pedro

Re:Balíčky v Linuxu
« Odpověď #1 kdy: 02. 04. 2013, 20:05:09 »
1. V podstatě ne. Teoreticky, pokud se s tím chceš hodně s*, tak klidně můžeš místo /usr/share/program mít symlink někam na ten plotnový disk nebo mountovat přes fstab.

2. To je stejná otázka. Přečti si něco o struktuře FS.

3. Jde to zjisti podle jmen těch kofiguráků. Jsou to obyčejné soubory, takže to nemá smysl řešit (koukni na velikost, vyjma cache browseru to bude pár KB).

...chápu jak jsi na ten dotaz přišel, ale prakticky řešíš blbosti.

Re:Balíčky v Linuxu
« Odpověď #2 kdy: 02. 04. 2013, 20:15:30 »
/home na pomalym plotnovym disku => prakticky nepoznas, ze tam ssd mas (krome startu, ale ten delam max 1x denne).
Děkuji za možnost editace příspěvku.

Re:Balíčky v Linuxu
« Odpověď #3 kdy: 02. 04. 2013, 22:05:28 »
Na ostatní otázky už tu odpověď byla, odpovím jen na třetí: Ke zjištění jména balíčku slouží

Kód: [Vybrat]
$ dpkg -S název_souboru

Miki

Re:Balíčky v Linuxu
« Odpověď #4 kdy: 02. 04. 2013, 22:43:07 »
Díky za odpovědi. I když jsem tak trochu doufal v něco jiného :).

1. V podstatě ne. Teoreticky, pokud se s tím chceš hodně s*, tak klidně můžeš místo /usr/share/program mít symlink někam na ten plotnový disk nebo mountovat přes fstab.

2. To je stejná otázka. Přečti si něco o struktuře FS.

3. Jde to zjisti podle jmen těch kofiguráků. Jsou to obyčejné soubory, takže to nemá smysl řešit (koukni na velikost, vyjma cache browseru to bude pár KB).

...chápu jak jsi na ten dotaz přišel, ale prakticky řešíš blbosti.
1. hmm, to je pech... proč nemá Linux něco jak Windowsy "C:/Program Files", "D:/Program Files"... (spíš řečnická otázka, tohle by asi stejně vedlo na nějaký flame :-D)

2. Tady upřímě řečeno moc nechápu tu souvislost s FS... Měl jsem na mysli, jesti prostě neexistuje nějaká možnost sandboxu pro aplikaci, abych jí odstínil od zbytku systému. Podle mě fakt perfetkní příklad tohohle je odkazovaný Sandboxie. Ten umožní programu číst z disku, ale zápisy odchytí a poznamená si je do nějaké vlastní vrstvy, takže při příštím čtení se pro ten sandboxovaný program tváří, jako kdyby byla data zapsaná normálně na disku. Něco takového by na Linuxu snad mohlo být, ne? Já to právě na Windowsech používám pro čisté zkoušení programů. Instalačku pustím v sandboxu, ona si rozkopíruje soubory a zapíše do registrů kam je libo, program vyzkouším a když už ho nepotřebuju, tak sandbox smažu a jako kdyby tam nikdy nebyl. Zároveň díky tomu, že to není žádná virtualizace, tak tam není téměř žádné zpomalení.

3. Jo... uznávám, že tohle je asi tak trochu moje úchylka, ale mám prostě rád na disku uklizeno a vadí mi, že když dám `LL`, tak se ukáže seznam složek na dvě stránky s tím, že vlastně polovina tam už nejspíš být vůbec nemusí...

/home na pomalym plotnovym disku => prakticky nepoznas, ze tam ssd mas (krome startu, ale ten delam max 1x denne).
Jak to? Já bral SSD především jako urychlení načítání kernelu a často používaných programů. K čemu by mi bylo SSD pro filmy/hudbu/cokoli-co-mám-v-home? Tam ta rychlost čtení moc podstatná není, ne?


student

Re:Balíčky v Linuxu
« Odpověď #5 kdy: 02. 04. 2013, 22:50:11 »
Este tu chyba odpoved na

2. mám nějaký program, [...] chci nainstalovat [...] nechci s tím zadělávat celý systém
Na to tu mame chroot - nainstalujes si to v nom. Ked nechces ani vacsie prava, tak by mozno stacil fakechroot + fakeroot (za toto druhe uz nerucim).
Celkovo ale rucne spravovany "zakladny" Linuxovsky chroot casto znamena zlozitejsie aktualizacie a nasledne kopec moznych bezpecnostnych problemov. Na to je ale uz kopec nastrojov, ktore si lahko najdes (pripadne pomozu vlastne skripty alebo sa vzdas Linuxu a skusis Solaris alebo FreeBSD).

Re:Balíčky v Linuxu
« Odpověď #6 kdy: 02. 04. 2013, 23:46:48 »
Díky za odpovědi. I když jsem tak trochu doufal v něco jiného :).
Doufal jsi právem, ony ty odpovědi jsou minimálně trochu diskutabilní :)

1. V podstatě ne. Teoreticky, pokud se s tím chceš hodně s*, tak klidně můžeš místo /usr/share/program mít symlink někam na ten plotnový disk nebo mountovat přes fstab.
To přeci není žádné sraní. Pokud mám distribuci, která mi např. celé Gnome instaluje do /opt/gnome, tak to je jeden symlink, který nemá na updaty prakticky žádný vliv (protože ten kořenový /opt/gnome pravděpodobně nikdo nikdy mazat nebude).

...čímž se mimochodem dostáváme k tomu, že [rýpací mód on]kdyby lidi kolem linuxu nebyli takoví frikulíni, tak by normálně fungovalo mountování /usr až po startu, že... No ale bylo mi zeširoka vysvětleno, že to prý v dnešní moderní době není potřeba. No tak není no ;) [rýpací mód off]

2. To trochu souvisí s první otázkou. Pokud mám nějaký program, který si chci nainstalovat (je v repozitáři), ale nechci s tím zadělávat celý systém (chtěl bych si ho nainstalovat někam do home a později ho smazat). Je nějaká taková možnost? Kompilaci neuvažuju, protože to typicky znamená zároveň instalovat tuny dev balíčků a to už pak celá ta procedura trochu ztrácí smysl.

Zkus nám to vysvětlit jako tříletému dítěti. Ptáš se na tohle? "Chci aby software fungoval jinak, než jak ho zkompiloval autor, ale zároveň program nechci kompilovat"? Na první pohled stupidní otázka :)

...ale ne zas tak moc. Samozřejmě to jde. Na unixech jde všechno ;) Ale pokud nevíš, jak na to, tak to nedělej, stoprocentně si přiděláš víc problémů než kolik ti to přinese užitku.

Něco podobného Windowsímu Sandboxie ( http://www.sandboxie.com/ ). [...] Měl jsem na mysli, jesti prostě neexistuje nějaká možnost sandboxu pro aplikaci, abych jí odstínil od zbytku systému.
Definuj "něco podobného". Samozřejmě existují různé způsoby, jak udělat sandbox. Je jich asi tak tisíc. Např. můžeš mít layered fs. Nebo chroot. Nebo jail. Nebo paravirtualizaci. Nebo hodinky s vodotryskem :)
Tady ale platí to samý - pokud to neumíš udělat ručně (a někdo ti neporadí totálně BFU nástroj), tak to nedělej. Až se naučíš unixoidní OS používat tak, jak ho radí používat manuál, pak teprve se pouštěj do toho, že ho budeš nějak fantasmagoricky ohýbat.

A hlavní rada: běžné použití Linuxu nevyžaduje sandbox. "Něco jako Sandboxie" na unixovém systému prostě při jeho obvyklém použití není potřeba. Na unixových systémech není zvykem, že by programy mírnyxtýrnyx kdesi v jakýchsi neviditelných registrech trousily jakýsi odpad. Pokud programy korektně instaluješ a korektně odistaluješ, nemáš co řešit. Maximálně můžeš udělat to, že program spustíš pod jiným uživatelem, než je tvůj běžný účet pro práci. V unixoidních systémech prostě problém "zapíše do registrů kam je libo" de facto neexistuje, proto taky nejsou potřeba frikulínské nástroje pro jeho řešení.

3. Jde nějak zjistit, které konfiguráky v home patří k jakému programu? jsou tam pravděpodobně složky, které už dávno nejsou používané a pravděpodobně už ani nikdy nebudou (programy, které jsem si nainstaloval na zkoušku a pak smazal). Začíná jich být celkem hodně.
Co o tomto problému říká manuál OS, který používáš? Jak je tam popsaná práce balíčkovacího systému s konfiguračními soubory? Čekáš, že hnedka, jak uvidíme "Miki", budeme vědět, že se ptáš na to, jak konfiguráky řeší Centos 6? :)

1. hmm, to je pech... proč nemá Linux něco jak Windowsy "C:/Program Files", "D:/Program Files"... (spíš řečnická otázka, tohle by asi stejně vedlo na nějaký flame :-D)
No asi tak ze stejného důvodu jako proč Windowsy nemají /dev/bpf :) Ano, máš pravdu, je to hloupá otázka. Pokud ti vyhovuje způsob, jakým mají FS rozvržený Windows (například tisíce souborů bez ladu a skladu totálně neprůhledně naházené do kontinuálně bobtnajícího C:\Windows), tak prostě používej Windows! Přesně tak snadné to je :)

3. Jo... uznávám, že tohle je asi tak trochu moje úchylka, ale mám prostě rád na disku uklizeno a vadí mi, že když dám `LL`, tak se ukáže seznam složek na dvě stránky s tím, že vlastně polovina tam už nejspíš být vůbec nemusí...
Zkusím to ještě polopatičtěji: program, který není spuštěný pod rootem, může zapisovat jenom na přesně definovaná místa. Obvykle jenom do ~user (domovská složka uživatele, který program spustil), /tmp a /var/tmp. Nikde jinde prostě nic program trousit nemůže.
Oba dva tmp se obvykle pravidelně mažou, čili na ty zapomeň. A zbyde ti jenom ~user. Čili si vytvoř uživatele "tester", vyzkoušej si pod ním program, a potom jeho home smaž. Voilá! Máme "něco jako Sandboxie" ;)

Jediný problém je s pouštěním programů, které vyžadují rootovská oprávnění. Ty si musíš zkoušet ve fikanějším sandboxu. Ideální je na to virtální mašinam, to je taky "něco jako Sandboxie" ;)

Jak to? Já bral SSD především jako urychlení načítání kernelu a často používaných programů. K čemu by mi bylo SSD pro filmy/hudbu/cokoli-co-mám-v-home? Tam ta rychlost čtení moc podstatná není, ne?
Pokud máš dostatek paměti, tak ty často používané programy máš stejně v cache. A s kernelem si nemusíš dělat starost, ten se stejně z disku načítá jednou pro vždy při startu :)

Re:Balíčky v Linuxu
« Odpověď #7 kdy: 02. 04. 2013, 23:52:31 »
Omlouvám se za ten Centos, teprve teď koukám, že jsem přehlédl, že Ubuntu zaznělo.

Takže: co říká o práci s konfiguráky manuál Ubuntu? ;)

student

Re:Balíčky v Linuxu
« Odpověď #8 kdy: 03. 04. 2013, 01:05:57 »
Tady ale platí to samý - pokud to neumíš udělat ručně (a někdo ti neporadí totálně BFU nástroj), tak to nedělej. Až se naučíš unixoidní OS používat tak, jak ho radí používat manuál, pak teprve se pouštěj do toho, že ho budeš nějak fantasmagoricky ohýbat.
S tymto az tak nesuhlasim (ak sa teda bavime naozaj len o OS "na hranie"). Jasne, manual je treba, ale je nudny, pomerne silno vynucuje nejaky postup a uzivatel mu zo zaciatku az tak dobre nerozumie. Preto odporucam, aby sa s tym pohral na testovacom stroji a az si skusi, ako to vlastne funguje (s vedomim rizik kompromitacie takehoto systemu), potom si moze citat manual a pripadne to nasadzovat niekam do produkcie.
 
V unixoidních systémech prostě problém "zapíše do registrů kam je libo" de facto neexistuje, proto taky nejsou potřeba frikulínské nástroje pro jeho řešení.
Na urovni "kam je libo" to AFAIK nie je ani vo Windows; zalozenie ineho uzivatela pomoze prakticky tak isto. Problem je len "zostavajuci bordel" a pustanie programov s plnymi pravami - to je ale vlastne mozne aj na Unixoidnych systemoch. Bordel u mna na Linuxe zostal napriklad v ~/liferea_1.6 a ~/liferea_1.7; program s plnymi pravami ma rovnaku sancu hadzat vsetko vsade...

Obvykle jenom do ~user (domovská složka uživatele, který program spustil), /tmp a /var/tmp. Nikde jinde prostě nic program trousit nemůže.
Pre uplnost, na Linuxe aspon 2.6 je takto este bezne /dev/shm (z principu sa maze pri reboote); na Ubuntu 13.04 je naviac world-writable aj /run/user/$USER a /run/lock.

Oba dva tmp se obvykle pravidelně mažou, čili na ty zapomeň.
Taky /var/tmp by mal prezit aj reboot - tam sa neda spolahnut na mazanie, ak si to uzivatel nezariadi sam (ja tam mam napriklad zabudnuty subor este z roku 2009, takze to bezne prezije aj upgrade).

Re:Balíčky v Linuxu
« Odpověď #9 kdy: 03. 04. 2013, 01:28:43 »
S tymto az tak nesuhlasim (ak sa teda bavime naozaj len o OS "na hranie"). Jasne, manual je treba, ale je nudny, pomerne silno vynucuje nejaky postup a uzivatel mu zo zaciatku az tak dobre nerozumie. Preto odporucam, aby sa s tym pohral na testovacom stroji a az si skusi, ako to vlastne funguje (s vedomim rizik kompromitacie takehoto systemu), potom si moze citat manual a pripadne to nasadzovat niekam do produkcie.
Jo, to je pravda. Jestli si chce hrát, může zkoušet cokoli. Třeba dd if=/dev/zero of=/dev/sda. Ovšem pokud mu tak moc záleží na nezasírání systému (proto chce sandbox), nejsem si jistý, jak by mu vyhovovalo takovéhle úplné vyčištění systému :)

Ale především, než vůbec s tímhle vším začne, měl by se naučit dokazovat věty o Turingově stroji, na tom je to totiž všechno založeno a bez toho vůbec nemá smysl si s nějakým počítačem hrát, že jo.
 
Na urovni "kam je libo" to AFAIK nie je ani vo Windows; zalozenie ineho uzivatela pomoze prakticky tak isto. Problem je len "zostavajuci bordel" a pustanie programov s plnymi pravami - to je ale vlastne mozne aj na Unixoidnych systemoch. Bordel u mna na Linuxe zostal napriklad v ~/liferea_1.6 a ~/liferea_1.7; program s plnymi pravami ma rovnaku sancu hadzat vsetko vsade...
Ano, teoreticky to je stejné, v praxi je to úplně jiné. Např. proto, že v unix-světě se obvykle dodržují jakási základní pravidla. Nebo proto, že unixové systémy obvykle mají jakýsi repozitář, kam se dostanou jenom programy splňující jakási kritéria.
Pokud sw na unixovém systému po odinstalaci zanechá jakýsi bordel kdesi, je to jasný bug, o kterém se nediskutuje. Na Win je to spíš standard.

Pre uplnost, na Linuxe aspon 2.6 je takto este bezne /dev/shm (z principu sa maze pri reboote); na Ubuntu 13.04 je naviac world-writable aj /run/user/$USER a /run/lock.
Díky za doplnění.

Taky /var/tmp by mal prezit aj reboot - tam sa neda spolahnut na mazanie, ak si to uzivatel nezariadi sam (ja tam mam napriklad zabudnuty subor este z roku 2009, takze to bezne prezije aj upgrade).
Může být. Ale taky nemusí. Proto je potřeba číst ty nudné manuály :) Každopádně soubory v tempech si hlavu lámat nemusí, o to jde.

alfi

  • ****
  • 338
    • Zobrazit profil
    • E-mail
Re:Balíčky v Linuxu
« Odpověď #10 kdy: 03. 04. 2013, 09:37:39 »
nějaké tipy jsou tady, http://serverfault.com/questions/23734/is-there-any-way-to-get-apt-to-install-packages-to-my-home-directory , další potom na googlu (https://www.google.cz/search?q=dpkg+install+other+directory).

podle manuálu by to měl umět i dpkg :-)
Kód: [Vybrat]
man dpkg
--root=dir
              Changing root changes instdir to dir and admindir to dir/var/lib/dpkg.
jen pak teda bude problém se spouštěním programů, nemusí najít všechny knihovny... obvykle to potřebuje na původní místa v /usr/lib/, /usr/bin apod. přidat symlinky. hodí se to hlavně u embedded zařízení, které mají malou flash a externí usb (routery...) :-)

Re:Balíčky v Linuxu
« Odpověď #11 kdy: 03. 04. 2013, 09:46:38 »
podle manuálu by to měl umět i dpkg :-)
Kód: [Vybrat]
man dpkg
--root=dir
              Changing root changes instdir to dir and admindir to dir/var/lib/dpkg.
To není určeno k jenom tak mírnyx týrnyx přesunutí čehokoli kamkoli, ale pro instalaci balíčku v chrootu apod. Má to stejný efekt, jako kdybych ty soubory přesunul pomocí normálního mv. Čili většina programů po přesunutí nebude fungovat.

student

Re:Balíčky v Linuxu
« Odpověď #12 kdy: 03. 04. 2013, 09:58:56 »
Jo, to je pravda. Jestli si chce hrát, může zkoušet cokoli. Třeba dd if=/dev/zero of=/dev/sda. Ovšem pokud mu tak moc záleží na nezasírání systému (proto chce sandbox), nejsem si jistý, jak by mu vyhovovalo takovéhle úplné vyčištění systému :)
Prave preto je tu chroot, ktory izoluje pomerne dobre aspon na opatchovanych jadrach... Nastavit si popisovanu paravirtualizaciu sa mi zda o rad zlozitejsie; o moznosti layered fs per-program ani neviem (co nevylucuje existenciu takeho niecoho). Islo by preloadnut vlastne kniznice cez LD_PRELOAD, ale to podla mna nie je dost bezpecne.

Ale především, než vůbec s tímhle vším začne, měl by se naučit dokazovat věty o Turingově stroji, na tom je to totiž všechno založeno a bez toho vůbec nemá smysl si s nějakým počítačem hrát, že jo.
Tak to by sa mal najskor naucit citat - to bude potrebovat ako u prispevkov na fore, aby netvrdil co ini nehovoria, tak sa mu to oplati vediet aj v lubovolnych inych systemoch a programoch.
Bohuzial dnes castejsie vidim, ze ludia citaju, co si myslia, ze je napisane ako co je napisane.
 
Ano, teoreticky to je stejné, v praxi je to úplně jiné. Např. proto, že v unix-světě se obvykle dodržují jakási základní pravidla.
To by mali aj na Windowse...

Nebo proto, že unixové systémy obvykle mají jakýsi repozitář, kam se dostanou jenom programy splňující jakási kritéria.
Myslis napriklad spominany program Liferea?

Pokud sw na unixovém systému po odinstalaci zanechá jakýsi bordel kdesi, je to jasný bug, o kterém se nediskutuje. Na Win je to spíš standard.
Na obidvoch platformach sa ten bordel zanechava len za tym ucelom, aby sa zachovali uzivatelske nastavenia. Preto casto zostava bordel v ~/.program (nie vyhradne tam) a preto zostava aj v registroch na Windowse.

Může být. Ale taky nemusí. Proto je potřeba číst ty nudné manuály :) Každopádně soubory v tempech si hlavu lámat nemusí, o to jde.
Ciastocne suhlasim - ale na druhu stranu to moze niekomu vadit rovnako ako registry Windows.

Re:Balíčky v Linuxu
« Odpověď #13 kdy: 03. 04. 2013, 10:09:07 »
K vyřčenému bych možná ještě doplnil, že cesty, kde program hledá své další části, jsou obvykle compile-time proměnné, které se nastavují jako parametry skriptu configure.sh před kompilací. A když jsou compile-time, tak to taky znamená, že jediná čistá cesta, jak je změnit, je rekompilace. Takže pokud si chci nainstalovat vlastní program na server, kde nemám root práva, můžu ho zkompilovat například takto:
Kód: [Vybrat]
$ mkdir /home/user/local
$ ./configure --prefix=/home/user/local
$ make -j
$ make install

Jinak pokud bys chtěl distribuci, která používá spíše windowsovské uspořádání souborů, kdy se k sobě dávají všechny soubory stejné aplikace, namísto unixovského třídění souborů podle typu, tak i takové distribuce existují/existovaly, vím například o Gobo linuxu a Sinuxu.

Re:Balíčky v Linuxu
« Odpověď #14 kdy: 03. 04. 2013, 11:13:34 »
Na obidvoch platformach sa ten bordel zanechava len za tym ucelom, aby sa zachovali uzivatelske nastavenia.
Nejen. Taky napriklad proto, ze (afaik) na Windows nejde smazat otevreny soubor. Cili program nemuze odinstalovat sam sebe, takze smazani posledni casti se necha na nekdy jindy (napr. pri dalsim restartu). Snadny zdroj chyby.

Taky je velky rozdil v tom, ze unixove systemy maji jednoho spravce balicku, zatimco na Windows ma obvykle kazdy program svuj instalator, nekdy pochybne kvality (malo kdo instaluje vsechno pres msi a ani to neni samospasitelne).

A dalsi rozdil je v tom, ze pro rozumny unixovy OS se balicky do repozitaru vytvari v nejakem sandboxu a kontroluje se, jestli se korektne nainstaluji a odinstaluji. Takze pravdepodobnost, ze nekde zustane nejaky bordel je zase o neco mensi.

Proste kdyz budu unixovy system pouzivat tak, jak rika navod, a budu instalovat jenom balicky z rozumnych repozitaru, sance, ze budu mit problem s nejakym bordelem nekde, je celkem zanedbatelna.

A když jsou compile-time, tak to taky znamená, že jediná čistá cesta, jak je změnit, je rekompilace.
...kterouzto ale OP odmita :)