Portál AbcLinuxu, 8. května 2025 14:05
Paludis je konkurenční balíčkovací systém pro Gentoo (i jiné distribuce). Dozvíte se o výhodách Paludisu oproti Portage, o rozdílech mezi těmito systémy a o přechodu z Portage na Paludis.
Paludis je, jak bylo řečeno, balíčkovací systém (motto: Paludis, the Other Package Mangler). Primárně je určený pro distribuci Gentoo, ale použít jej lze na jakékoliv distribuci. Obdobně jako Portage používá repozitáře s ebuildy. Na rozdíl od Portage (Python) je Paludis napsaný v C++, což je jeden z důvodů, proč je často rychlejší.
Mezi nejdůležitější patří:
Paludis vypisuje rovnou všechny balíčky, které je třeba odmaskovat, místo odmaskovávání po jednom, které jste možná zažili s Portage. Umožňuje automaticky přeinstalovat "živé" balíčky (SCM, jako je CVS, SVN, Git atp.) po daném časovém úseku (denně, týdně, atd.). Zajímavá je také možnost filtrování balíčků dle licencí – můžete například povolit instalaci pouze balíčků licencovaných pod GPL a BSD (a přidávat výjimky).
Klient (samotný program) paludis
používá C++ knihovnu libpaludis
a je neinteraktivní, tzn. například nemá alternativu k přepínači -a
u emerge
, který nejdřív vypíše, co se bude dít a pak se zeptá, zda to chcete skutečně provést – je třeba použít přepínač -p
(tj. stejné jako u emerge
), který vypíše, co se bude dít, a pak to spustit znovu bez něj. Jelikož má Paludis C++ API a bindingy pro Ruby a Python, lze si napsat vlastního klienta nebo různé pomocné prográmky v některém z těchto jazyků.
Paludis je striktnější. Například nenainstaluje uzly zařízení, pojmenované roury a podobné zvláštní soubory, kdežto Portage se o to pokouší, ale nainstaluje je špatně. Paludis také odmítne přepsat adresář souborem, zatímco Portage se o to pokusí, nainstaluje balík jen částečně a vypíše zavádějící chybovou hlášku.
Čím víc máte nastavení, tím to bude zdlouhavější, tedy pokud se rozhodnete použít nativní konfiguraci, což nelze než doporučit, protože je to poměrně jednoduché, uděláte to jen jednou a vyplatí se to. Použití skriptu, který automaticky vytvoří konfiguraci Paludisu z konfigurace Portage a nebo použití Paludisu rovnou s konfigurací Portage zde nebudu popisovat. Pokud vás zájímá, přečtěte si dokument Getting Started na paludis.pioto.org. Nainstalujte si Paludis:
emerge paludis
Až se nainstaluje, tak se ještě neradujte, nejdřív je třeba přenést nastavení. Vytvořte adresář /etc/paludis
a přepněte se do něj.
mkdir /etc/paludis cd /etc/paludis
Je třeba nastavit repozitáře. Nejdřív výchozí hodnoty pro všechny, které pak jednotlivé repozitáře mohou obejít a nebo jednoduše používat bez opakovaného definování. Vytvořte tedy soubor repository_defaults.conf
a upravte jeho obsah dle komentářů na hodnoty, které vám vyhovují.
# repozitář s ebuildy, ne žádný speciální
format = ebuild
# dočasný adresář pro rozbalování a kompilaci balíčků (PORTAGE_TMPDIR v make.conf)
builddir = /var/tmp/paludis
# adresář, do kterého se budou stahovat zdrojové soubory (DISTDIR
)
distdir = /usr/portage/distfiles
# nastavení cache (o tom si řekneme později)
names_cache = /var/empty
Vytvořte adresář repositories
a v něm pro každý repozitář zvláštní konfigurační soubor. Nejdřív je třeba vytvořit ten hlavní pro oficiální strom Gentoo gentoo.conf
. Může vypadat následovně:
# lokální umístění repozitáře location = /usr/portage # profil, který se použije; # Portage používá tento symlink, takže to zřejmě nebude třeba měnit profiles = /etc/make.profile names_cache = ${location}/.cache/names # odkud stahovat a synchronizovat? sync = rsync://rsync.gentoo.org/gentoo-portage # zvláštní přepínače, které se předají odpovídajícímu klientovi # dle protokolu, v tomto případě programu rsync #sync_options = --exclude-from=/etc/paludis/rsync_excludes
Další důležitý (povinný) repozitář je VDB. Ten používá i Portage, jde o velmi důležitý adresář /var/db/pkg
, který obsahuje informace o nainstalovaných balících. Vytvořte tedy (v adresáři repositories
) soubor vdb.conf
, který může vypadat následovně:
format = vdb # umístění za žádnou cenu neměňte! location = /var/db/pkg
Pokud používáte overlaye, tak pro každou z nich vytvořte další konfigurák. Lokální overlay může mít následující konfiguraci (název souboru je volitelný):
location = /home/dave/overlay master_repository = gentoo importance = 100
Pro použití vzdálené – v tomto případě mé – overlaye vytvořte soubor overlay-watzke-cz.conf
s obsahem:
location = /usr/local/overlays/overlay-watzke-cz sync = git://repo.or.cz/overlay-watzke-cz.git master_repository = gentoo format = ebuild
Ujistěte se, že máte nainstalovaného klienta, který dovede pracovat s protokolem v sync
, v tomto případě dev-util/git
. Pro první stažení je třeba spustit:
paludis -s x-overlay-watzke-cz
Název x-overlay-watzke-cz je automaticky vygenerovaný z názvu konfiguračního souboru, při synchronizaci už se používá skutečný název repozitáře uložený v souboru ${location}/profiles/repo_name
, tedy v tomto případě overlay-watzke-cz.
Do souboru bashrc
zkopírujte proměnné CHOST
, CFLAGS
, CXXFLAGS
, MAKEOPTS
a WANT_MP
z konfigurace Portage (/etc/make.conf
). Pokud tam některé z těchto proměnných nemáte, vynechte je. Nepatří sem proměnné jako USE, LINGUAS a podobné, vizte níže. Příklad:
CHOST="x86_64-pc-linux-gnu" CFLAGS="-O2 -march=k8 -mtune=k8 -pipe -msse3" CXXFLAGS="${CFLAGS}" MAKEOPTS="-j3" WANT_MP="true"
Můžete tyto proměnné nastavovat i pro jednotlivé balíčky. Pro tyto účely máte k dispozici proměnné CATEGORY
, PN
a PV
(pokud nevíte, co znamenají, vizte článek Gentoo ebuild - 1 (začínáme: názvy ebuildů a proměnné), konkrétně část "Předdefinované proměnné"). Dávejte pozor, aby tento skript nikdy nic nevypisoval na standardní výstup, jinak můžete očekávat různé zvláštní problémy.
# zvláštní nastavení pro Paludis if [[ "${CATEGORY}/${PN}" == "sys-apps/paludis" ]] ; then CXXFLAGS="${CXXFLAGS} -g -ggdb3" MAKEOPTS="-j2" fi
Nastavení USE flagů (včetně globálních) se provádí v souboru use.conf
.
# globální USE, ekvivalent k USE="X" v make.conf */* X # ekvivalenty k LINGUAS="cs" a INPUT_DEVICES="evdev" */* LINGUAS: cs */* INPUT_DEVICES: evdev # ALSA_CARDS="emu10k1" pouze pro relevantní balík media-sound/alsa-driver ALSA_CARDS: emu10k1 -* # klasický záznam net-misc/fatrat bittorrent jabber nls sftp doc webinterface # USE pro celou kategorii kde-base/* xcomposite
Všimněte si, že Paludis na rozdíl od Portage používá různé výchozí nastavení proměnných, jako je ALSA_CARDS
, které nezmizí, ani když proměnné sami definujete – je třeba je ručně zakázat, a to běžně přidáním mínusu, například -emu10k1x
nebo -*
pro zakázání všech, kromě explicitně povolených.
Keywordy se opět nastavují do zvláštního souboru, a to včetně těch globálních. Je to soubor keywords.conf
.
# ekvivalent k ACCEPT_KEYWORDS="amd64" v make.conf */* amd64 # balíky s USE="" se v Portage odmaskovávají pomocí **, # ale Paludis používá pouze jednu hvězdičku ~net-misc/fatrat-9999 * # jinak je syntaxe stejná jako u package.keywords sys-devel/gcc ~amd64
Nastavení maskovaných balíčků stačí zkopírovat z Portage:
cp /etc/portage/package.mask package_mask.conf cp /etc/portage/package.unmask package_unmask.conf
Nebo případně (pokud používáte konfigurační adresáře pro tyto účely):
cp -a /etc/portage/package.mask/ package_mask.conf.d cp -a /etc/portage/package.unmask/ package_unmask.conf.d
Pokud máte preferovaná zrcadla (mirrory), tedy proměnnou GENTOO_MIRRORS
, vytvořte soubor mirrors.conf
, do kterého je zapište následovně:
gentoo ftp://gentoo.mirror.web4u.cz/distfiles/ gentoo ftp://ftp.linux.cz/pub/linux/gentoo/distfiles/
Podobně lze nastavit například preferovaný SourceForge nebo Debian mirror, třeba:
sourceforge http://mesh.dl.sourceforge.net/sourceforge debian ftp://ftp.cz.debian.org/debian
Vytvořte soubor environment.conf
alespoň s klíčem world
, který ukazuje na seznam ručně vyžádaných nainstalovaných balíčků. Pokud chcete použít ten od Portage (doporučuji), obsah by měl vypadat následovně:
world = /var/lib/portage/world
Poslední důležitý soubor je licenses.conf
, ve kterém nastavíte, které licence akceptujete. Většina lidí balíky, s jejichž licencí nesouhlasí, jednoduše neinstaluje, takže tam napíší toto:
*/* *
Pokud jste postupovali správně, struktura adresáře /etc/paludis
by měla vypadat následovně:
./bashrc ./environment.conf ./keywords.conf ./licenses.conf ./mirrors.conf # volitelný ./package_mask.conf # volitelný ./package_unmask.conf # volitelný ./repositories/gentoo.conf ./repositories/vdb.conf ./repository_defaults.conf ./use.conf
Máte nakonfigurováno, tak zkuste synchronizovat všechny repozitáře (tzn. oficiální strom Gentoo a overlaye) pomocí:
paludis -s
A potom si zkuste nechat vypsat dostupné aktualizace:
paludis -pi world
Odstraněním přepínače -p
je pak můžete nainstalovat. Balíky se odinstalovávají následovně:
paludis -u balicek
Jak jsem už psal, Paludis je striktnější a když se k tomu přičte, že Portage obchází spoustu svých vlastních chyb, které jsou třeba už opraveny a projevují se jen v některých verzích (a na balících nainstalovaných tou vadnou verzí), může se stát (resp. je to dost pravděpodobné), že budete muset vyřešit ještě pár problémů, než vám Paludis bude správně fungovat. Pokud má balík například vadný záznam ve VDB (databáze s informacemi o nainstalovaných balících), často jej stačí přeinstalovat Paludisem. Nicméně pokud narazíte na problém, se kterým si nebudete vědět rady, zeptejte se pod článkem a nebo ve zdejší poradně.
Až se vám bude zdát, že se k Portage už nevrátíte, neunáhlete se s jejím vyhozením, protože Paludis zatím nemá ekvivalent k programu ebuild
, který slouží k vytváření Manifestů (vizte článek Gentoo ebuild - 5 (problémy, sandbox, kontrolní součty), dole). Nemá také náhradu za dispatch-conf
nebo etc-update
, fixpackages
atp.
Po zhruba 7 měsících (výhradního) používání Paludisu musím říct, že mi přijde mnohem lepší než Portage, a to (až na drobnosti) ve všech směrech. Další díl bude mj. o používání Paludisu, nastavení a keších, díky kterým je rychlejší.
A pak čekat dvě hodiny než se něco přeloží. To naštve ještě více.znamena to, ze paludis pracuje s repozitarmi, kde ku vsetkym balickom exisutuju aj priamo binarky?
Paludis jsem nikdy nezkoušel. Ta věta byla hodně ironická. Dneska bohužel ironii nikdo nepozná a to ani když je u toho smajlíkno priznavam, ze tu ironiu som v rychlom preleteni prispevkom v tom momente nepostrehol, ale myslim si ze tak ako si to napisal sa to dalo kludne interpretovat aj tak, ako som to najprv pochopil :)Natož bez něj
Rozhodne se nedivam jak se kompilujeJá měl za to, že článek je o Paludis, ne o GCC.Takze mi rychlost nijak nevadi
paludis
je prostě neinteraktivní) a když někdo bude dělat interaktivního klienta, dalo by se to vyřešit o dost líp, než to má emerge. Zatím se k tomu nikdo nemá... osobně je mi to jedno, opravdu jsou mnohem důležitější věci.
Package 'media-sound/test-1.0' NOT merged due to file collisionsale přesto je nainstalovanej. Takže o něm Portage ví, ale píše, že ho nenainstalovala... takže jo, lze ho potom odinstalovat, omlouvám se.
nemusíš nám to dokazovat tím, že budeš o Portage vyloženě lhátLhát? Slovo omyl ti nic neříká?
ale tobě přijde v pořádku tento styl, kdy místo aby se věnoval popisu nového se za každou cenu snaží pomluvit staré?Pomlouvání by mi v pořádku nepřišlo, ale tak jsem ten článek nečetl. Beru to tak, že pokud chceš zdůraznit, proč nějakou - jinak třeba poměrně obyčejnou - vlastnost považuješ za velký přínos, je nutné upozornit na nedostatky řešení, se kterým srovnáváš. Z článku podle mě neplyne, že by Portage stálo za houby - ale to, že i přes dosavadní nedostatky je Paludis v mnoha věcech lepší a dobře použitelný.
třeba s tím C++ ... ono většinou záleží spíše na tom, co a jak se programuje, a už méně na tom v čem, ale ne, podle Davida je Portage pomalé, protože je většina utilit v Pythonu ... hm, ale podle stejného hesla je tedy Paludis pomalý a tudíž špatný, protože není v assembleru, není-liž pravda?Portage je pomalé oproti Paludisu. Oproti čemu je podle tebe pomalý Paludis? Každopádně klasicky spouštěný Python je oproti C++ velmi pomalý; je jen otázka, jak hodně se to projeví.
a tak různě ... vlastně teda ještě oklikou k tomu C++, v threadu níže je dosti kritizována závislost Paludisu na Boostu, ale tak dalece se nehodí rozebírat, v čem a s čím je to napsané, je to prostě lepší a basta!Kolikrát za týden kompilujete Boost a kolikrát použijete emerge/paludis? I když uznávám, že ta zmínka o závislostech by tam být nemusela. Celkově na tom porovnání neshledávám závažné nedostatky.
Portage je pomalé oproti Paludisu.záleží na okolnostech
Oproti čemu je podle tebe pomalý Paludis?proč oproti něčemu? - prostě je pomalý sám o sobě, když je v tom C++ a ne něčem rychlejším
Kolikrát za týden kompilujete Boost a kolikrát použijete emerge/paludis?dle threadu níže se ovšem Boost na některých strojích ani nezkompiluje (možná po týdnu swapování?) (*), takže otázka "kolikrát za týden" ztrácí smysl ... (*) disclaimer: ruku do ohně za to nedám, nezkoušel jsem to, paměťově nejslabší stroj, na kterém jsem kompiloval boost, má 384 MB RAM
Asi jsem exot, ale stroj se 128 MB paměti je pro mně často nejvýkonnější dosažitelný stroj.No to asi fakt jo. Moje nejstarsi masina, ktera jeste jede, je 10 let stara a ma 256MB pameti
app-paludis/paludis-hooks-update-eix
z tý overlaye a databáze eixu se automaticky aktualizuje při synchronizaci.
eix -cu
nevypisovalo úplný kraviny.
... virtual/jdk dev-java/blackdown-jdk dev-java/sun-jdk ...staci obshah tych suborov pripojit na koniec suboru /etc/paludis/keywords.conf ???? treba tam este na koniec riadku dopisat ~amd64 ??? vdaka
# paludis -u pygtk Building unmerge list... done These packages will be uninstalled: * media-gfx/gimp-2.4.6::installed requires <dev-python/pygtk-2.12.1-r2::installed> * media-video/gaupol-0.12.3::installed requires <dev-python/pygtk-2.12.1-r2::installed> * dev-python/pygtk-2.12.1-r2::installed Total: 1 package and 2 errors Use either --with-dependencies or --permit-unsafe-uninstalls Cannot continue with uninstall due to the errors indicated above
revdep-rebuild
nepovažuji za systémové řešení
emerge @preserved-libsTím se rekompilují "rozbité" balíky a pokud vše dobře dopadne, staré knihovny se vymažou. Zatím to je označeno jako experimentální, ale funguje docela dobře. V budoucnu by se to mohlo pouštět automaticky.
paludis -s
proběhla bez problémů. Ale teď: chci instalovat nový balíček, konkrétně paludis -i -p kchmviewer
, paludis pak chviličku přemýšlí a oznámí, že je třeba instalovat 23! balíčků (konkrétně: 3 new, 15 upgrades, 1 downgrade, 4 in new slots), a to věci jako java, python, freetype, timezone_data apod. Přitom emerge --pretend kchmviewer
zahlásí jen ten jeden požadovaný balíček.
Je toto chování způsobeno striktnějším chováním paludise, který se snaží opravit, co před tím emerge "spackalo"? Myslíte si, že se nemám bát paludis poslechou a provést navrhované up/down-grady?
Díky,
Dan
-U
je označena za zastaralou (ve verzi 0.28.0) a místo ní je třeba použít volbu --dl-upgrade as-needed
.
Každopádně spouštění paludis -i -p --dl-upgrade as-needed kchmviewer
sice pomohlo, ale stále by si paludis rád nainstaloval nějaké nové balíčky (konkrétně: 6 packages (2 new, 4 in new slots)):
* dev-java/sun-jdk :1.6 [S 1.6.0.07] Reasons: *virtual/jdk-1.6.0:1.6::gentoo X alsa -doc -examples -jce (-nsplugin) -odbc * virtual/jdk :1.6 [S 1.6.0] Reasons: *virtual/jre-1.6.0:1.6::gentoo * virtual/jre :1.6 [S 1.6.0] Reasons: net-dns/libidn-1.5-r1:0::installed, net-misc/mDNSResponder-107.6-r5:0::installed, 2 more * dev-lang/python :2.5 [S 2.5.2-r6] Reasons: *sys-apps/portage-2.1.4.4:0::installed, dev-java/java-config-2.1.6:2::installed, 4 more berkdb -bootstrap -build -doc -examples gdbm -ipv6 ncurses readline -sqlite+ ssl threads -tk -ucs2 -wininst elibc: (-uclibc) 27.09 kBytes to download * dev-libs/chmlib [N 0.39] Reasons: *app-text/kchmviewer-3.1_p2:0::gentoo "Library for MS CHM (compressed html) file format plus extracting and http server utils" 256.85 kBytes to download * app-text/kchmviewer [N 3.1_p2] <target> "KchmViewer is a feature rich chm file viewer, based on Qt." arts kde 923.48 kBytes to downloadProč to? nemám přece jenom chybu v konfiguraci? python-2.5 i java-1.6 jsou u mě maskované ~amd64. Je to proto, že by portage-2.1.4.4 chtěl python-2.5 a libidn-1.5-r1 chtěl javu 1.6 a emerge to "zpackalo"? Výpis
emerge --pretend kchmviewer
totiž vrátí jen:
These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-libs/chmlib-0.39 [ebuild N ] app-text/kchmviewer-3.1_p2 USE="arts kde"
sys-apps/portage-2.1.4.4
, dev-java/java-config-2.1.6
a net-dns/libidn-1.5-r1
), a u žádného není uvedená striktní závislost na balíčcích, které by rád paludis instaloval. Tady je příklad pro portage-2.1.4.4.ebuild
:
DEPEND=">=dev-lang/python-2.4 !build? ( >=sys-apps/sed-4.0.5 ) doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 ) epydoc? ( >=dev-python/epydoc-2.0 )" RDEPEND=">=dev-lang/python-2.4 !build? ( >=sys-apps/sed-4.0.5 >=app-shells/bash-3.2_p17 ) elibc_FreeBSD? ( sys-freebsd/freebsd-bin ) elibc_glibc? ( >=sys-apps/sandbox-1.2.17 !mips? ( >=sys-apps/sandbox-1.2.18.1-r2 ) ) elibc_uclibc? ( >=sys-apps/sandbox-1.2.17 !mips? ( >=sys-apps/sandbox-1.2.18.1-r2 ) ) >=app-misc/pax-utils-0.1.13 selinux? ( >=dev-python/python-selinux-2.16 )"Ještě podotýkám, že python mám ve verzi 2.4 a java sun-jdk ve verzi 1.5.
--show-reasons full
(nebo tak nějak, viz help, nemám to po ruce), vypíše to důvody
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.