Portál AbcLinuxu, 24. dubna 2024 00:26


Biicode, balíčkovací systém pro C a C++

Článek na Opensource.com představuje Biicode, multiplatformní balíčkovací systém pro programovací jazyky C a C++ inspirovaný balíčkovacími systémy jako Pip pro Python, Gem pro Ruby nebo Pub pro Dart. [LWN.net]

25.1.2015 14:30 | Ladislav Hagara | Zajímavý projekt


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

25.1.2015 21:42 Ivorne | blog: Ivorne
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Odpovědět | Sbalit | Link | Blokovat | Admin
Nikdy jsem nebyl moc příznivce Pipu nebo Rubygems. Proč mít v systému několik balíčkovacích systémů? Tuhle jsem dělal něco v Ruby a potřeboval jsem tam nějakou knihovnu a musel jsem jednak nainstalovat systémový balíček pomocí Portage a pak Ruby binding pomocí Rubygemu. Ne, že by mě to zas tak iritovalo, ale nechápu, proč si to uživatelé tak chválí. Jako teoreticky je tam jakási multiplatformovost. Ale reálně mi přijde, že je multiplatformnost dost podobná jako u systémových balíčkovacích systémů - když ten balíček vývojář neudělá dobře, nebo to neotestuje na různých distribucích, tak je kolikrát snazší instalovat to bez použití jakéhokoliv balíčkovacího systému.

Jako neříkám že tyhle balíčkovací systémy jsou úplně k ničemu, jen nemůžu přijít na to, k čemu vlastně jsou. A hlavně mám pocit, že spousta lidí, kteří to hrozně chválí to taky neví.
25.1.2015 22:45 gauri
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
pokud chci neco vyzkouset a nazasvinit si system zavislostma co to ma, popr. testovat neco proti jiny verzi knihovny nez mam v systemu, tak pip s virtualenvem jsou dost sikovny…
pavlix avatar 25.1.2015 22:49 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Mimochodem jsem se bavil s vývojáři Enlightenment a rovněž chystají svůj vlastní balíčkovací systém ve stylu těch s Pythonu a Ruby a považují to za natolik skvělou věc, že někteří z nich nevidí smysl v tom mít aplikace balené pro jednotlivé distribuce. Jinak třeba Pythoní distutils jsou udělané docela dobře, ačkoli nezvládají některé základní věci jako rozlišování bin a sbin. Běžné programy jsou pak zabalené tak, že je lze do distribuce jednoduše přebalit v podstatě bez práce. A tak by to podle mě mělo být vždy navrženo.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
26.1.2015 08:37 Sid
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Potom by mozno nebolo od veci aby existoval nejaky multiplatform projekt ako kniznica ktory by dokazal naviazat sa na tieto jednotlive balickovacie systemy a poskytoval by nejake high-level api pre balickovaci system na urovni celej distribucie.
pavlix avatar 26.1.2015 10:12 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
To nedává smysl. High level API pro balíčkovací systémy pokud vím i existuje, jenže high level znamená, že na to budeš moci navázat aplikaci pro výběr a instalování balíčků. Samotné balíčky jsou z principu low level, pilíř, na kterém se všechno staví.

Vytvořit obecný vstupní balíčkovací formát by nebyl až takový problém, jenže někteří distributoři trvají na svých příšerných formátech a jakémukoli zlepšení se budou zuby nehty bránit. Ať se nebavíme trochu na objektivní úrovni, je zjevné, že většina světa (Debian a spol. je výjimkou) má potřebu minimalizovat množství a složitost vstupních dat pro balíčkovací systém mimo upstreamový tarball. Takže deb je první adept na zahození. RPM má své quirky, ale už zhruba odpovídá něčemu, co by se dalo používat, stejnětak ebuild na gentoo nebo pkgbuild v archu.

Pak je ještě potřeba, aby se chytili za hlavu správci některých upstreamových projektů. Opravdu není důvod, abych půlku buildsystému musel konfigurovat/programovat v rámci těch vstupních informací. Balík by měl jít zkompilovat tak, že opíšu závislosti z README a řeknu o který buildsystém se jedná. Pak už jenom upravuju volby a závislosti podle potřeby distribuce.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
26.1.2015 10:54 Sid
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
mozno som to napisal trocha nepresne ale v principe mi islo o toto: ako uzivatel by som preferoval keby som nemusel vzdy ked chcem nieco nainstalovat skumat 5 minut syntax toho konkretneho balickovacieho systemu (alebo mat 5x rozne GUI pre toto). Chcel by som nieco na sposob napr dnf (hocico ine) install nazov package. Je mi jasne ze uplne low level veci by sa s tym nedali urobit ale povacsine pri beznych veciach to ani uzivatel nemusi riesit. To ze na pozadi sa zavola napr ruby gem by ma az tak nemalo zaujimat. Takze ani ma nezaujima nejaky obecny format (aj ked by to bolo skvele).
pavlix avatar 26.1.2015 11:03 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
mozno som to napisal trocha nepresne ale v principe mi islo o toto: ako uzivatel by som preferoval keby som nemusel vzdy ked chcem nieco nainstalovat skumat 5 minut syntax toho konkretneho balickovacieho systemu (alebo mat 5x rozne GUI pre toto).
Jako uživatel přece nic takového neděláš a používáš distribuční balíčky, které instaluješ pomocí jednoho GUI. Právě proto jsem nechápal, co že to vlastně požaduješ.
Chcel by som nieco na sposob napr dnf (hocico ine) install nazov package.
Tak to ale přesně funguje.
To ze na pozadi sa zavola napr ruby gem by ma az tak nemalo zaujimat.
O tom rozhodují maintaineři těch konkrétních Ruby balíčků a jako uživateli ti to může být jedno.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
26.1.2015 13:50 Sid
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
a ako je to presne urobene? Funguje to tak, ze napr rpm balicek ma v sebe nejake scripty ktore na pozadi volaju napr gem? Mne by prislo logickejsie keby cela ta cinnost bola presunuta priamo do nejakeho pluginu nad systemovym balickovacim programov a napr v rpm by bol cisto iba obaleny balicek pre ten konkretny balickovaci system.
pavlix avatar 26.1.2015 14:50 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
a ako je to presne urobene? Funguje to tak, ze napr rpm balicek ma v sebe nejake scripty ktore na pozadi volaju napr gem?
Nejsem ruby package maintainer. Jestliže daný nástroj maintainerům něco přináší, tak ho používají i v tom RPM. Například v Pythonu je to velice jednoduché, protože stačí spustit setup.py. Nejsou potřeba žádné extra skripty nebo pluginy. Ale například Gentoo má rozšíření pro Python, které umí automaticky buildovat pro jednu nebo více verzí Pythonu dle přání administrátora systému.
Mne by prislo logickejsie keby cela ta cinnost bola presunuta priamo do nejakeho pluginu
On to vůbec nemusí být plugin. Jediné, co člověk potřebuje, je balík nakonfigurovat dle pravidel distribude, zkompilovat, pokud je to potřeba a instalovat do speciální cesty. Tam už si to v případě RPM převezme ten builder a vyrobí z toho RPM balík. Není v tom žádná velká věda.

Navíc ten plugin nepatří do koncového systému, ale do buildovacího systému. Setká se s ním tedy vývojář nebo provozovatel té buildovací služby. Bavíme se přece o distribučních balících a finálním produktem má být vždy balík ve stejném formátu pro danou distribuci. Samozřejmě lze instalovat i balíky z cizích zdrojů, ale to už jaksi není součást té které distribuce, že.

Akorát v tom Gentoo je vlastně buildovací služba součástí lokálního systému, takže tam o hodně věcech rozhoduje administrátor. A tam je to třeba pro Python řešeno přesně tím pluginem (přesněji) do toho buildovacího systému, ale jeho úkolem není jenom zavolat setup.py, ale zavolat ho třeba i několikrát s různým prostředím a poskytnout tak uživateli build třeba i pro více verzí Pythonu.

Hlavní je si nepředstavovat nějaké složité procesy, vždycky je to jen nějaká obdoba ./configure && make && make install DESTDIR=/path/to/temporary/destination, pár metadat, a zbytek už je jenom napravování věcí, co vývojáři nějak pokazili nebo zbytečně zkomplikovali.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
26.1.2015 15:07 Sid
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
dik za info
26.1.2015 00:57 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
jen nemůžu přijít na to, k čemu vlastně jsou
Balíčky jsou nezávislé na distribuci. Vlastní balíčkovací systém může odstranit některá omezení distribučního balíčkovače (např. nainstalovat různé verze jednoho balíčku naráz).
26.1.2015 11:06 Ivan
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Vezmete si treba rozdil mezi RHEL(rpm) a Perl(CPAN). RHEL obsahuje jen velice malo knihoven a casto jsou dost zabugovane. Takze pokud doopravdy potrebujete Perl - napriklad proto, ze v nem mate napsane monitorovaci scripty - tak pouzijete jadro OS z distribuce a zbytek si sam prelozite ze zdrojaku.

PS: i Java ma svuj maven a C# zase NuGet.
Ruža Becelin avatar 27.1.2015 08:06 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Samoty RHEL snad nikdo nepouziva, ne?
mirec avatar 27.1.2015 13:55 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++

Je to dobré na jednu vec. Keď moja napr. webová aplikácia je testovaná a beží dobre pod určitými verziami knižníc tak pocou pip je možné do samostatného adresára nainštalovať závislosti pomocou jednoduchého pip install -r requirements.txt (v rovnakých verziách ako má programátor). Pri deployi na server napr. cez git hook je možné automaticky spustiť pip install --upgrade -r requirements.txt a automaticky sa pre daný projekt natiahnu knižnice ktoré používal programátor a zvyšok systému si beží nezávisle na ňom (nedotkne sa to softvéru ktorý potrebuje napr. staršiu verziu knižníc). Pre gem platí to isté.

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
27.1.2015 14:30 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Pre gem platí to isté.
Samotné rubygems to nezvládnou, ale snad všichni rubysti na to dnes používají bundler.
27.1.2015 14:33 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
A jen teda ještě doplním, že oblíbené jsou také nástroje RVM a rbenv, které umožňují instalaci více verzí/implementací Ruby a přepínaní mezi nimi.
pavlix avatar 27.1.2015 14:40 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Nakonec ty webovky stejně budete distribuovat v dockeru nebo něčem podobném :D.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
27.1.2015 15:36 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
pavlix avatar 27.1.2015 19:25 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Nemám zájem o odkazy bez zjevného kontextu a vysvětlujícího komentáře.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
27.1.2015 21:37 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Odpusť.
27.1.2015 14:51 tomvec | skóre: 24 | Kojetín
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Keď moja napr. webová aplikácia je testovaná a beží dobre pod určitými verziami knižníc tak pocou pip je možné do samostatného adresára nainštalovať závislosti pomocou jednoduchého pip install -r requirements.txt (v rovnakých verziách ako má programátor).
Takže na Windows opovrhovaná "vlastnost", kdy si aplikace tahají s sebou vlastní verze knihoven se nenápadně (volitelně) prodrala do linuxu?
pavlix avatar 27.1.2015 14:56 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Ani ne tak nenápadně a ani ne tak do Linuxu.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
27.1.2015 15:06 tomvec | skóre: 24 | Kojetín
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Tak tedy se vztyčenou hlavou a multiplatformně.
27.1.2015 16:39 Ivan
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Tohle je deje i jinde. Treba na OSX ale hlavne v Jave. Pro JEE a maven je to de-facto standard. Programator sam urci se kterou verzi knihovny se to ma kompilovat, maven to vsechno postahuje, zkompiluje, udela z toho balik a ten se nahraje na aplikacni server. Pokud funguji kontejnery jak maji tak nikomu nevadi ze pouzivate najednou vic verzi jedne knihovny.

ok wokna maji svuj dll-hell (pozdeji nahrazeny tzv. "manifest hell"), ale v podstate jde to kdo rozhodne s jakou verzi knihovny se bude program kompilovat/linkovat. Programator anebo spravce baliku? Odpoved ale neni jednoznacna a hodne zavisi na typu projektu.
27.1.2015 16:36 R
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Cize na serveri je potom plno deravych neaktualizovanych sraciek a neda sa to nijako vyriesit. Krasa...
mirec avatar 27.1.2015 18:21 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++

Ako by ste to chceli riešiť?

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
25.1.2015 21:59 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Odpovědět | Sbalit | Link | Blokovat | Admin
To nám tu ještě chybělo… :-(
1.2.2015 15:04 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Biicode, balíčkovací systém pro C a C++
Odpovědět | Sbalit | Link | Blokovat | Admin
Tohle má dnes kdejaký jazyk, Golang to dokonce integruje přímo v kompilátoru, Rust má Cargo, JavaScript má npm atd. atd. Pokud se to dá rozumně ovládat a může to spolupracovat s distribučním balíčkovacím systémem, nemám nic proti... (Což ale, mam pocit, u toho Go zrovna moc neplatí...)
What Big Oil knew about climate change

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.