• nap,
  • Óra,
  • Perc,
  • Másodperc

FreeBSD Csomagok és Portok Kezelése

FreeBSD Csomagok és Portok Kezelése

Bevezetés

A FreeBSD két fő módszert kínál szoftverek telepítésére és kezelésére: a bináris csomagokat és a ports rendszert. Mindkét megközelítésnek megvannak a maga előnyei és hátrányai. Ebben a cikkben részletesen bemutatjuk mindkét módszert, segítve a rendszergazdákat abban, hogy kiválasszák a számukra legmegfelelőbb megoldást.

Csomagkezelés (pkg)

A pkg a FreeBSD modern bináris csomagkezelő rendszere, amely lehetővé teszi előre fordított szoftverek egyszerű telepítését és kezelését.

A pkg előnyei

  • Gyors telepítés (nincs szükség fordításra)
  • Minimális függőségek a telepítéshez
  • Egyszerű használat
  • Kisebb erőforrásigény

A pkg alapjai

Inicializálás

Az első használat előtt inicializálni kell a pkg rendszert:

pkg bootstrap

Csomagtárak konfigurálása

A csomagtárak beállításai a /etc/pkg/ könyvtárban találhatók. Az alapértelmezett konfigurációs fájl a /etc/pkg/FreeBSD.conf. Saját konfigurációs fájlokat is létrehozhatunk a /usr/local/etc/pkg/repos/ könyvtárban.

Példa egy egyéni csomagtár konfigurációjára:

# /usr/local/etc/pkg/repos/custom.conf
custom: {
  url: "http://pkg.example.com/${ABI}",
  mirror_type: "http",
  signature_type: "none",
  enabled: yes
}

Alapvető parancsok

  1. Csomaglista frissítése:

    pkg update
    
  2. Csomag keresése:

    pkg search nginx
    
  3. Csomag információk megjelenítése:

    pkg info nginx
    
  4. Csomag telepítése:

    pkg install nginx
    
  5. Összes csomag frissítése:

    pkg upgrade
    
  6. Csomag eltávolítása:

    pkg delete nginx
    
  7. Nem használt függőségek eltávolítása:

    pkg autoremove
    
  8. Telepített csomagok listázása:

    pkg info
    

Csomagok automatikus frissítése

A csomagok automatikus frissítéséhez adjuk hozzá a következő sorokat a cron feladatokhoz:

echo '#!/bin/sh
pkg update -f
pkg upgrade -y
pkg autoremove -y
pkg clean -y' > /usr/local/sbin/pkg-update.sh

chmod +x /usr/local/sbin/pkg-update.sh

echo '@daily root /usr/local/sbin/pkg-update.sh' >> /etc/crontab

Csomagok lekérdezése

A pkg segítségével lekérdezhetjük a telepített csomagokat:

# Melyek a legrégebben frissített csomagok?
pkg query -a "%m %n-%v" | sort | head -20

# Melyek a legnagyobb csomagok?
pkg query "%sb %n-%v" | sort -n | tail -20

Ports rendszer

A ports rendszer lehetővé teszi a szoftverek forráskódból történő fordítását és telepítését egyéni beállításokkal.

A ports előnyei

  • Testreszabható fordítási beállítások
  • A legfrissebb szoftververziók
  • Egyedi patch-ek alkalmazhatósága
  • Optimalizálási lehetőségek

A ports rendszer telepítése

A ports gyűjtemény telepítéséhez két módszer áll rendelkezésre:

1. Git segítségével (ajánlott)

pkg install git
git clone https://git.freebsd.org/ports.git /usr/ports

A ports gyűjtemény frissítése:

cd /usr/ports
git pull

2. Portsnap segítségével

# Első telepítés esetén:
portsnap fetch extract

# Frissítés esetén:
portsnap fetch update

Port telepítése

cd /usr/ports/www/nginx
make install clean

A telepítés előtt testreszabhatjuk a fordítási opciókat:

make config

Függőségek kezelése

# Csak függőségek telepítése
make fetch-recursive

# Függőségek ellenőrzése
make check-plist

Port frissítése

# Egy port frissítése
portmaster www/nginx

# Összes port frissítése
portmaster -a

Port eltávolítása

cd /usr/ports/www/nginx
make deinstall

# vagy a pkg segítségével:
pkg delete nginx

Poudriere: Egyedi csomagtár építése

A Poudriere egy eszköz, amely lehetővé teszi saját bináris csomagok és csomagtárak építését FreeBSD portokból.

Előnyök

  • Saját egyedi csomagok
  • Testre szabott build beállítások
  • Automatizált építés
  • Konzisztens környezet

Telepítés

pkg install poudriere

Konfigurálás

A konfigurációs fájl másolása és szerkesztése:

cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf

Alapvető beállítások:

ZPOOL=zroot
ZROOTFS=/poudriere
FREEBSD_HOST=https://download.freebsd.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=${BASEFS}/data
USE_PORTLINT=no
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles

Jail létrehozása

poudriere jail -c -j 132amd64 -v 13.2-RELEASE -a amd64

Ports fa beállítása

poudriere ports -c -p main

Egyedi portok listájának létrehozása

cat > /usr/local/etc/poudriere.d/pkglist <<EOF
editors/vim
shells/bash
security/sudo
net/rsync
security/openssh-portable
EOF

Egyedi beállítások hozzáadása

mkdir -p /usr/local/etc/poudriere.d/132amd64-main-options

Példa egy nginx konfigurációra:

# /usr/local/etc/poudriere.d/132amd64-main-options/www_nginx/options
OPTIONS_FILE_SET+=HTTP_SSL
OPTIONS_FILE_SET+=HTTP_V2
OPTIONS_FILE_UNSET+=NJS

Csomagok építése

poudriere bulk -j 132amd64 -p main -f /usr/local/etc/poudriere.d/pkglist

Webszerver konfigurálása a csomagtárhoz

pkg install nginx

# Nginx konfiguráció:
cat > /usr/local/etc/nginx/conf.d/packages.conf <<EOF
server {
    listen 80;
    server_name packages.example.com;
    root /usr/local/poudriere/data/packages/132amd64-main;
    autoindex on;
}
EOF

# Nginx újraindítása:
service nginx restart

Kliens oldali konfiguráció

mkdir -p /usr/local/etc/pkg/repos
cat > /usr/local/etc/pkg/repos/local.conf <<EOF
local: {
  url: "http://packages.example.com/132amd64-main",
  mirror_type: "http",
  enabled: yes
}

FreeBSD: {
  enabled: no
}
EOF

Csomagok vs. Ports összehasonlítása

Szempontok Bináris csomagok (pkg) Ports rendszer
Telepítési sebesség Gyors Lassú (fordítás szükséges)
Testreszabhatóság Korlátozott Teljes körű
Erőforrásigény Alacsony Magas (fordítás során)
Frissítési gyakoriság Néhány naponta Naponta
Optimalizálás Általános Egyedi lehetőségek
Alkalmasság Általános használat, deszktopok Speciális szerverek, egyedi igények

Gyakori problémák és megoldásaik

A pkg adatbázis sérült

# A pkg adatbázis javítása
pkg update -f

Portok build hibák

  1. Ellenőrizzük a port Makefile-ját:

    cd /usr/ports/problemas/port
    make -V MAINTAINER
    
  2. Ellenőrizzük a hibanaplót:

    make showconfig
    
  3. Tisztítsuk meg a félkész telepítést:

    make clean
    

Dependency konfliktusok

# Függőségi gráf vizualizálása
pkg install graphviz
pkg info -d nginx | dot -Tpng > dependencies.png

# Konfliktusok ellenőrzése
pkg check -d -a

A ports frissítés nem működik

# Git clone használata helyett:
rm -rf /usr/ports
git clone https://git.freebsd.org/ports.git /usr/ports

Bevált gyakorlatok

  1. Dokumentáljuk a telepített csomagokat:

    pkg info > /root/installed-packages.txt
    
  2. Használjunk verziókontrollt a konfigurációs fájlokhoz:

    git init /usr/local/etc
    cd /usr/local/etc
    git add .
    git commit -m "Initial configuration"
    
  3. Rendszeres biztonsági frissítések:

    pkg audit -F
    
  4. Preferáljuk a pkg-t általános használatra és csak akkor használjuk a ports rendszert, ha egyedi beállításokra van szükségünk.

  5. Saját csomagtár esetén automatizáljuk az építési folyamatot Jenkins vagy más CI rendszer segítségével.

Összefoglalás

A FreeBSD csomagkezelési rendszere rugalmas lehetőségeket kínál a szoftverek telepítésére és kezelésére. A pkg rendszer egyszerű és gyors megoldást nyújt az előre fordított csomagok kezelésére, míg a ports rendszer lehetővé teszi a szoftverek testreszabott fordítását. A Poudriere segítségével pedig saját bináris csomagtárakat hozhatunk létre, kombinálva mindkét megközelítés előnyeit.

A csomagkezelési stratégia kiválasztásakor vegyük figyelembe a rendszer típusát, az erőforráskorlátokat és a testreszabási igényeket. Általános célú rendszerekhez elegendő lehet a pkg használata, míg speciális igények esetén érdemes a ports rendszert vagy a Poudriere-t választani.

További források

  • 0 A felhasználók hasznosnak találták ezt
  • freebsd, csomagkezelés, pkg, ports, szoftvertelepítés, portsnap
Hasznosnak találta ezt a választ?

Kapcsolódó cikkek

FreeBSD Frissítési Eljárások

FreeBSD Frissítési Eljárások Bevezetés A FreeBSD biztonságos és hatékony működtetésének egyik...

FreeBSD Hálózati Beállítások Részletesen

FreeBSD Hálózati Beállítások Részletesen Bevezetés A FreeBSD robusztus és rugalmas hálózati...

FreeBSD Rendszertelepítés és Alapkonfiguráció

FreeBSD Rendszertelepítés és Alapkonfiguráció Bevezetés A FreeBSD egy erőteljes, megbízható és...

Apache2, PHP és MySQL telepítése

FAMP telepítése a kezdetektőlBevezetőA FAMP nem más, mint a LAMP megfelelője FreeBSD operációs...