Üdvözlünk, Arch Linux felhasználó! Ha már egy ideje használod ezt a rendszert, akkor bizonyára találkoztál az AUR-ral (Arch User Repository), amely egy hihetetlenül gazdag forrása a hivatalos tárolókban nem megtalálható szoftvereknek. Az AUR csomagok telepítése a makepkg eszközzel történik, amely a forráskódból építi fel a bináris csomagot a rendszered számára. Bár ez a folyamat rugalmas és erős, gyakran időigényes lehet, különösen nagyobb szoftverek, például böngészők vagy fordítóprogramok esetében. De mi van, ha azt mondom, hogy jelentősen felgyorsíthatod ezt a folyamatot egyetlen konfigurációs fájl, az /etc/makepkg.conf finomhangolásával? Igen, jól hallottad! Ebben a cikkben részletesen bemutatjuk, hogyan optimalizálhatod ezt a fájlt, hogy a lehető leggyorsabban, mégis stabilan telepíthesd az AUR csomagokat.
Miért fontos az /etc/makepkg.conf optimalizálása?
A makepkg az a parancssori eszköz, amely az Arch Linux PKGBUILD fájljait felhasználva automatikusan létrehozza a telepíthető csomagokat. Amikor egy AUR segédprogramot (például yay
vagy paru
) használsz, az valójában a makepkg
-et hívja meg a háttérben. Az /etc/makepkg.conf fájl tartalmazza azokat a globális beállításokat, amelyeket a makepkg
a csomagok építése során használ. Ezek a beállítások magukban foglalják a fordítóprogramoknak átadott paramétereket, a párhuzamos fordítás mértékét, a tömörítési algoritmusokat és még sok mást.
A fájl alapértelmezett beállításai általában konzervatívak, a legszélesebb körű kompatibilitásra és stabilitásra törekednek. Ez azt jelenti, hogy nem feltétlenül használják ki a modern hardverek, például a többmagos processzorok vagy az NVMe SSD-k teljes potenciálját. Az optimalizálás célja az, hogy a hardvered képességeihez igazítsuk a fordítási folyamatot, ezzel csökkentve az AUR csomagtelepítési időt, miközben fenntartjuk a stabilitást.
Mielőtt belevágnál: A biztonsági mentés fontossága
Mielőtt bármilyen módosítást végeznél az /etc/makepkg.conf fájlban, elengedhetetlen, hogy készíts egy biztonsági másolatot az eredeti konfigurációról. Így bármikor visszaállíthatod az alapértelmezett állapotot, ha valami probléma adódna a fordítások során. Ezt a következő paranccsal teheted meg:
sudo cp /etc/makepkg.conf /etc/makepkg.conf.bak
A fájlt rendszergazdai jogosultságokkal kell szerkesztened, például a nano
vagy a vim
szerkesztővel:
sudo nano /etc/makepkg.conf
Kulcsfontosságú optimalizálási paraméterek
1. MAKEFLAGS: A párhuzamos fordítás ereje
Ez valószínűleg a legfontosabb beállítás, amelyet módosítanod kell a fordítási idő drámai csökkentése érdekében. A MAKEFLAGS
változó határozza meg, hogy a make
program hány párhuzamos feladatot futtasson a fordítás során. Az alapértelmezett beállítás általában nem használja ki a többmagos processzorok előnyeit. Ha többmagos CPU-d van, engedélyezned kell a párhuzamos fordítást.
Keresd meg a #MAKEFLAGS="-j2"
sort, és módosítsd a következőre (vagy ehhez hasonlóra):
MAKEFLAGS="-j$(nproc)"
A $(nproc)
parancs automatikusan lekérdezi a CPU-d logikai magjainak számát. Ez biztosítja, hogy a fordítás során a lehető legtöbb magot használd ki. Néhányan javasolják a -j$(($(nproc)+1))
használatát, ami egy plusz szálat ad hozzá az I/O műveletek kezelésére. Ez különösen előnyös lehet, ha a fordítás során gyakori a lemezművelet, és elkerülhető vele a processzor várakozása az adatokra.
Fontos megjegyzés: Bár a több szál gyorsabb fordítást eredményez, túl sok szál használata (különösen korlátozott RAM esetén) memória-kifogyáshoz vagy instabil fordításokhoz vezethet. Ha problémákat tapasztalsz, próbálj meg eggyel kevesebb szálat használni, pl. -j$(($(nproc)-1))
vagy -j$(nproc)
.
2. BUILDDIR: A fordítási könyvtár áthelyezése
A BUILDDIR
változó határozza meg, hova kerülnek ideiglenesen a forrásfájlok és az építés során keletkező objektumfájlok. Alapértelmezés szerint ez a könyvtár valahol a felhasználó home mappájában, vagy az aktuális könyvtárban található. Ha gyors SSD-vel vagy NVMe meghajtóval rendelkezel, érdemes ezt a könyvtárat áthelyezni oda, ahol a leggyorsabb az I/O sebesség.
Egy nagyon hatékony trükk a RAM disk, azaz a tmpfs
használata. A /tmp
könyvtár az Arch Linuxban alapértelmezetten tmpfs
fájlrendszerre van mountolva, ami azt jelenti, hogy a benne lévő adatok a RAM-ban tárolódnak. Ez hihetetlenül gyors I/O sebességet biztosít. Azonban légy óvatos: a RAM disk véges, és a rendszer memóriájától függ. Ha túl nagy projektet fordítasz le, ami túllépné a rendelkezésre álló RAM-ot, problémák adódhatnak.
Keresd meg a #BUILDDIR=/tmp/makepkg
sort, és vedd ki előle a kommentet, vagy módosítsd:
BUILDDIR="/tmp/makepkg"
Győződj meg róla, hogy a /tmp
elegendő helyet biztosít, vagy hozd létre a saját tmpfs
mountpontodat nagyobb mérettel, ha gyakran fordítasz nagyon nagy csomagokat. Ne feledd, a RAM disk tartalma újraindításkor elveszik.
3. COMPRESSX: A csomagok tömörítése
Miután a szoftver lefordult, a makepkg
tömöríti azt egy telepíthető .pkg.tar.zst
(vagy más kiterjesztésű) fájlba. A tömörítési algoritmus és a hozzá tartozó paraméterek jelentősen befolyásolhatják a csomagkészítés utolsó lépésének sebességét. Az Arch Linux alapértelmezés szerint zstd
-t használ a .pkg.tar.zst
kiterjesztésű csomagokhoz, ami kiváló választás a sebesség és a tömörítési arány egyensúlya miatt.
Keresd meg a PKGEXT='.pkg.tar.zst'
sort, ez valószínűleg már így van beállítva. Utána keresd meg a COMPRESSZST
beállítást. Az alapértelmezett:
COMPRESSZST=(zstd -c -z -q -)
Ezt finomhangolhatod a sebesség növelése érdekében. A -q
(quiet) csendes üzemmódot jelent, a -c
(stdout) és a -z
(compress) az alapvető műveletek. Hozzáadhatsz további paramétereket a tömörítési sebesség szabályozásához. Például, ha a maximális sebességre vágysz (csekély tömörítési arány romlásával):
COMPRESSZST=(zstd -c -z -q -1)
Vagy ha a lemezterület nem kritikus, és a tömörítési sebesség a legfontosabb, akkor a -M
(memory limit) kapcsolóval korlátozhatod a memóriahasználatot, ami gyorsabbá teheti a tömörítést kisebb fájlok esetén (de ez ritkán van hatással a sebességre nagy fájloknál):
COMPRESSZST=(zstd -c -z -q -M 20M)
A zstd
egy rendkívül gyors algoritmus, így a tömörítési fázis már alapból is gyors. A -1
opcióval a leggyorsabb tömörítési szintet állítod be, ami általában alig észrevehetően nagyobb fájlméretet eredményez, cserébe gyorsabb tömörítésért.
Kerüld az xz
használatát, ha a sebesség a prioritás, mivel az a leglassabb, de a legkisebb fájlméretet biztosítja. A gzip
és a bzip2
régebbi algoritmusok, általában lassabbak, mint a zstd
.
4. CARCH, CFLAGS és CXXFLAGS: Fordítóprogram optimalizálás
Ezek a beállítások a fordítóprogramnak (pl. GCC, Clang) átadott paramétereket határozzák meg, amelyek befolyásolják, hogy a bináris fájlok hogyan optimalizálódnak a CPU-d számára. Ez a rész az egyik legkomplexebb, de a legnagyobb teljesítménynövekedést is eredményezheti.
-
CARCH (Architektúra):
A
CARCH
változó határozza meg a célarchitektúrát. Az alapértelmezettx86_64
egy általános, széles körben kompatibilis binárist eredményez. Ha azonban a maximális teljesítményre törekszel a saját gépeden, akkor érdemes anative
(natív) beállítást használni:CARCH="x86_64"
Módosítsd:
CARCH="x86_64-native"
Vagy akár csak:
CARCH="native"
Ez a beállítás azt mondja a fordítóprogramnak, hogy optimalizálja a kódot a pontosan a te CPU-d funkciókészletéhez. Ez magában foglalja az olyan utasításkészleteket, mint az AVX, SSE, FMA, amelyek drámaian felgyorsíthatják bizonyos számításokat. Azonban van egy fontos figyelmeztetés: az így fordított programok valószínűleg nem futnak más, eltérő CPU-architektúrájú gépeken. Ha valaha megosztanád a fordított csomagokat, hagyd az
x86_64
értéket. -
CFLAGS és CXXFLAGS (C és C++ Fordító Flagek):
Ezek a változók tartalmazzák azokat a kapcsolókat, amelyeket a C és C++ fordítóprogramoknak adunk át. Az alapértelmezett Arch beállítások általában:
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection" CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection"
A legfontosabb módosítás itt a
-march=x86-64
és a-mtune=generic
cseréje-march=native
és-mtune=native
-re. Ez biztosítja, hogy a fordítóprogram a lehető legjobban kihasználja a CPU-d specifikus tulajdonságait:CFLAGS="-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection" CXXFLAGS="-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection"
Az
-O2
optimalizációs szint általában jó egyensúlyt teremt a sebesség és a stabilitás között. Néhányan kísérleteznek az-O3
szinttel is, amely agresszívabb optimalizálást végez, de néha instabil programokat vagy hibás fordításokat eredményezhet. Általában az-O2
a javasolt beállítás a stabilitás fenntartásához.A
-pipe
kapcsoló arra utasítja a fordítót, hogy a fordítási fázisok között csöveket használjon ideiglenes fájlok helyett, ami gyorsabbá teheti a fordítást, különösen lassabb lemez I/O esetén. -
LDFLAGS (Linker Flagek):
Ezek a flagek a linkernek adódnak át, amely a fordított objektumfájlokat egyesíti a futtatható programmá. Bár ezek általában kisebb hatással vannak a fordítási sebességre, mint a CFLAGS, néhány beállítás mégis releváns lehet. Az alapértelmezett Arch beállítás:
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
Nincs sok tennivaló itt, mivel az alapértelmezett beállítások már elég jók. A
-Wl,-O1
kapcsoló optimalizálja a linkelést, a--as-needed
pedig csak azokat a könyvtárakat linkeli be, amelyekre valóban szükség van, ami kisebb binárisokat és potenciálisan gyorsabb indulást eredményez.
5. PACKAGER: A személyes érintés
Ez a beállítás nem befolyásolja a teljesítményt, de jó gyakorlat és segít azonosítani, ki készítette a csomagot. Keresd meg a #PACKAGER='John Doe <[email protected]>'
sort és szerkeszd a saját adataidra:
PACKAGER="A Te Neved <[email protected]>"
6. SOURCE_RETRIEVING_COMMANDS: Forrásletöltés optimalizálása (Haladó)
Ez egy fejlettebb terület, de ha gyakran fordítasz AUR csomagokat, és a forrásfájlok letöltése lassúnak tűnik, akkor érdemes megvizsgálni. A makepkg
alapértelmezett parancsokat használ az FTP, HTTP, HTTPS és RSYNC protokollokon keresztül történő letöltéshez. Ezeket módosíthatod, hogy gyorsabb letöltőeszközöket használj. Például, ha az aria2
telepítve van, felgyorsíthatja a letöltéseket több szálon keresztül:
DLAGENTS=('ftp::/usr/bin/curl -fLC- --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'http::/usr/bin/curl -fLC- --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -fLC- --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync -az --no-motd %u %o'
'ssh::/usr/bin/scp -pr %u %o'
'file::/usr/bin/cp -f %u %o'
'git::/usr/bin/git -c pull.ff=only clone --no-hardlinks --depth 1 --shallow-submodules %u %o'
'git+http::/usr/bin/git -c pull.ff=only clone --no-hardlinks --depth 1 --shallow-submodules %u %o'
'git+https::/usr/bin/git -c pull.ff=only clone --no-hardlinks --depth 1 --shallow-submodules %u %o'
'git+ssh::/usr/bin/git -c pull.ff=only clone --no-hardlinks --depth 1 --shallow-submodules %u %o')
Módosíthatod a http::
és https::
beállításokat az aria2c
használatára, ha telepítetted:
DLAGENTS=(
...
'http::/usr/bin/aria2c --allow-overwrite=true -c -q -d $(dirname %o) -o $(basename %o) %u'
'https::/usr/bin/aria2c --allow-overwrite=true -c -q -d $(dirname %o) -o $(basename %o) %u'
...
)
Ez azonban megköveteli az aria2
telepítését és megfelelő konfigurálását. Kezdő felhasználóknak ezt a részt érdemes meghagyniuk az alapértelmezett beállításokon.
Legjobb gyakorlatok és figyelmeztetések
- Mindig készíts biztonsági mentést! Ezt nem lehet eléggé hangsúlyozni.
- Teszeld a változásokat lépésről lépésre: Ne módosíts mindent egyszerre. Végezz el egy változtatást, mentsd el a fájlt, majd próbálj meg lefordítani egy kisebb csomagot (pl.
htop
vagyneofetch
), hogy lásd, működik-e, és ellenőrizd az időt. - Figyeld a rendszer erőforrásait: A fordítás során használd a
htop
,top
vagyiotop
eszközöket, hogy lásd, mennyire terheled a CPU-t, a memóriát és a lemez I/O-t. Ha a rendszer lefagy, vagy hibaüzeneteket kapsz, valószínűleg túl sok erőforrást próbálsz kihasználni. - Instabil fordítások: Az
-O3
optimalizációs szint vagy a túlzottMAKEFLAGS
használata ritkán instabil programokhoz vezethet. Ha egy újonnan telepített program furcsán viselkedik vagy összeomlik, próbáld meg visszaállítani az/etc/makepkg.conf
fájlt, és fordítsd újra a programot. - Ccache használata: Bár nem a
makepkg.conf
része, a ccache egy rendkívül hasznos eszköz, ha gyakran fordítasz programokat, vagy sok függőséggel rendelkező szoftvereket. Accache
gyorsítótárazza a fordítások eredményeit, így a későbbi (részleges) újrafordítások drámaian gyorsabbak lesznek. Telepítése és beállítása egyszerű, és jelentősen csökkentheti az időt, ha már fordítottál egy adott komponenst korábban.
Összefoglalás és további lépések
Az /etc/makepkg.conf fájl optimalizálása egy hatékony módja annak, hogy felgyorsítsd az AUR csomagtelepítést Arch Linux rendszereden. A MAKEFLAGS
beállításával kihasználhatod a többmagos processzorod erejét, a BUILDDIR
áthelyezésével a gyorsabb tárolókra, vagy akár a RAM-ba, csökkentheted az I/O várakozási időt. A CARCH
, CFLAGS
és CXXFLAGS
finomhangolása pedig biztosítja, hogy a lefordított programok a lehető legjobban illeszkedjenek a CPU-dhoz.
Ne feledd, az optimalizálás egy folyamat, nem egyszeri beállítás. A hardvered, a szoftverek, amiket használsz, és a fordítási szokásaid mind befolyásolják, hogy mely beállítások a legideálisabbak számodra. Kísérletezz, tesztelj, és élvezd a gyorsabb, hatékonyabb Arch Linux élményt. A tudás és a kontroll a te kezedben van, használd ki!
Leave a Reply