Xorg Biblioteker

Introduksjon til Xorg Biblioteker

Xorg biblioteker tilbyr bibliotekrutiner som brukes i alle X Vindu applikasjoner.

[Notat]

Notat

Dette kan ta litt tid å bygge. Gjør gjerne noe annet mens dette bygges.

Xorg Biblioteker Avhengigheter

Påkrevd

Fontconfig-2.17.0 og libxcb-1.17.0

Valgfri

ncompress (for noen tester) og W3m (for å generere ytterligere PDF eller tekstdokumentasjon for libXfont pakken).

Laste ned Xorg Biblioteker

Først, lag en liste over filer som skal lastes ned:

cat > lib-7-list << "EOF"
xtrans-1.6.0.tar.xz
libX11-1.8.12.tar.xz
libXext-1.3.6.tar.xz
#libFS-1.0.10.tar.xz
libICE-1.1.2.tar.xz
libSM-1.2.6.tar.xz
libXScrnSaver-1.2.4.tar.xz
libXt-1.3.1.tar.xz
libXmu-1.2.1.tar.xz
libXpm-3.5.17.tar.xz
libXaw-1.0.16.tar.xz
libXfixes-6.0.1.tar.xz
libXcomposite-0.4.6.tar.xz
libXrender-0.9.12.tar.xz
libXcursor-1.2.3.tar.xz
libXdamage-1.1.6.tar.xz
libfontenc-1.1.8.tar.xz
libXfont2-2.0.7.tar.xz
libXft-2.3.9.tar.xz
libXi-1.8.2.tar.xz
libXinerama-1.1.5.tar.xz
libXrandr-1.5.4.tar.xz
libXres-1.2.2.tar.xz
libXtst-1.2.5.tar.xz
libXv-1.0.13.tar.xz
libXvMC-1.0.14.tar.xz
libXxf86dga-1.1.6.tar.xz
libXxf86vm-1.1.6.tar.xz
libpciaccess-0.18.1.tar.xz
libxkbfile-1.1.3.tar.xz
libxshmfence-1.3.3.tar.xz
libXpresent-1.0.1.tar.xz
EOF

libFS er kommentert ut og vil ikke bli bygget med mindre du fjerner kommenteringen. Det er ikke nødvendig for noen pakker i LFS bøkene og bare nødvendig for noen Xorg apper.

For å laste ned de nødvendige filene ved hjelp av Wget-1.25.0, bruk følgende kommandoer:

mkdir lib &&
cd lib &&
grep -v '^#' ../lib-7-list | wget -i- -c \
    -B https://www.x.org/pub/individual/lib/

Installasjon av Xorg Biblioteker

[Notat]

Notat

Når du installerer flere pakker i et skript, må installasjonen gjøres som root bruker. Det finnes tre generelle alternativer som kan brukes til å gjøre dette:

  1. Kjør hele skriptet som root bruker (ikke anbefalt).

  2. Bruk sudo kommandoen fra sudo pakken.

  3. Use su -c "command arguments" ((anførselstegn kreves) som vil be om root passordet for hver iterasjon av løkken.

En måte å håndtere denne situasjonen på er å lage en kort bash funksjon som automatisk velger riktig metode. Når kommandoen er satt i miljøet, trenger den ikke å settes på nytt.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root

Noen biblioteker leveres med en testpakke. Hvis du ønsker å kjøre dem, kan du enten kommentere ut rm -rf ... nedenfor, slik at du kan gå tilbake til den tilsvarende mappen etter at alle bibliotekene er installert, og kjøre make check, eller gjør individuelle bygg, og kjør testene for hver av de som er distribuert med fungerende testpakker. Alternativt kan du fjerne kommenteringen fra linjen #make check ..., og til slutt, sjekk testresultatene med:

grep -A9 summary *make_check.log

GLFS utviklerne har bekreftet at libX11, libXt, libXmu, libXpm, og libxshmfence distribueres med fungerende testpakker.

Først starter du et underskall som avsluttes ved feil:

bash -e

Installer alle pakkene ved å kjøre følgende kommandoer:

for package in $(grep -v '^#' ../lib-7-list)
do
  packagedir=${package%.tar.?z*}
  echo "Building $packagedir"

  tar -xf $package
  pushd $packagedir
  docdir="--docdir=/usr/share/doc/$packagedir"
  
  case $packagedir in
    libXfont2-[0-9]* )
      ./configure $XORG_CONFIG $docdir --disable-devel-docs
    ;;

    libXt-[0-9]* )
      ./configure $XORG_CONFIG $docdir \
                  --with-appdefaultdir=/etc/X11/app-defaults
    ;;

    libXpm-[0-9]* )
      ./configure $XORG_CONFIG $docdir --disable-open-zfile
    ;;
  
    libpciaccess* )
      mkdir build
      cd    build
        meson setup --prefix=/usr --buildtype=release ..
        ninja
        #ninja test
        as_root ninja install
      popd     # $packagedir
      rm -rf $packagedir
      continue # for loop
    ;;

    * )
      ./configure $XORG_CONFIG $docdir
    ;;
  esac

  make
  #make check 2>&1 | tee ../$packagedir-make_check.log
  as_root make install
  popd
  rm -rf $packagedir
  as_root /sbin/ldconfig
done

For multilib, installer alle lib32-variantene av pakkene ved å kjøre følgende kommandoer:

for package in $(grep -v '^#' ../lib-7-list)
do
  case $package in xtrans* )
    continue
  ;;
  esac
  packagedir=${package%.tar.?z*}
  echo "Building lib32-$packagedir"

  tar -xf $package
  pushd $packagedir
  libdir="--libdir=/usr/lib32"
  docdir="--docdir=/usr/share/doc/$packagedir"
  host="--host=i686-pc-linux-gnu"
  
  case $packagedir in
    libXfont2-[0-9]* )
      CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig  \
      ./configure $XORG_CONFIG $libdir $host $docdir --disable-devel-docs
    ;;

    libXt-[0-9]* )
      CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
      ./configure $XORG_CONFIG $libdir $host $docdir                    \
                  --with-appdefaultdir=/etc/X11/app-defaults
    ;;

    libXpm-[0-9]* )
      CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig  \
      ./configure $XORG_CONFIG $libdir $host $docdir --disable-open-zfile
    ;;
  
    libpciaccess* )
      mkdir build
      cd    build
        CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
        meson setup --prefix=/usr $libdir --buildtype=release ..
        ninja
        #ninja test
        DESTDIR=$PWD/DESTDIR ninja install
        as_root cp -vr DESTDIR/usr/lib32/* /usr/lib32
        rm -rf DESTDIR
        as_root /sbin/ldconfig
      popd     # $packagedir
      rm -rf $packagedir
      continue # for loop
    ;;

    * )
      CC="gcc -m32" CXX="g++ -m32"                   \
      PKG_CONFIG_PATH=/usr/lib32/pkgconfig   \
      ./configure $XORG_CONFIG $libdir $host $docdir
    ;;
  esac

  make
  #make check 2>&1 | tee ../$packagedir-make_check.log
  make DESTDIR=$PWD/DESTDIR install
  as_root cp -vr DESTDIR/usr/lib32/* /usr/lib32
  rm -rf DESTDIR
  popd
  rm -rf $packagedir
  as_root /sbin/ldconfig
done

Til slutt, avslutt skallet som ble startet tidligere:

exit

Parameterforklaringer

--disable-open-zfile: Allow libXpm å bygge uten den valgrie compress kommandoen tilstede.

--disable-devel-docs: Deaktiver generering av tekstdokumentasjon i libXfont2-pakken hvis xmlto er installert uten en tekstleser. Utelat denne parameteren (eller hele case setning) hvis en tekst nettleser er installert.

Innhold

Installerte Programmer: cxpm og sxpm
Installerte Biblioteker: libfontenc, libICE, libpciaccess, libSM, libX11, libX11-xcb, libXaw6, libXaw7, libXaw, libXcomposite, libXcursor, libXdamage, libXext, libXfixes, libXfont2, libXft, libXinerama, libXi, libxkbfile, libXmu, libXmuu, libXpm, libXpresent, libXrandr, libXrender, libXRes, libxshmfence, libXss, libXt, libXtst, libXvMC, libXvMCW, libXv, libXxf86dga og libXxf86vm
Installerte Mapper: /usr/include/X11/fonts, /usr/include/X11/ICE, /usr/include/X11/SM, /usr/include/X11/Xmu, /usr/include/X11/Xtrans, /usr/share/doc/libICE-1.1.2, /usr/share/doc/libSM-1.2.6, /usr/share/doc/libX11-1.8.12, /usr/share/doc/libXaw, /usr/share/doc/libXext, /usr/share/doc/libXi, /usr/share/doc/libXmu-1.2.1, /usr/share/doc/libXrender, /usr/share/doc/libXt, /usr/share/doc/libXtst, /usr/share/doc/libXvMC, /usr/share/doc/xtrans og /usr/share/X11/locale

Korte Beskrivelser

cxpm

sjekker formatet til en XPM fil

sxpm

viser en XPM fil og/eller konverterer XPM 1 eller 2 filer til XPM 3

libfontenc

er X11 fontkodingsbiblioteket

libICE

er X Inter Client Exchange biblioteket

libpciaccess

er det generiske PCI Access biblioteket for X

libSM

er X sesjonsadministrasjonsbiblioteket

libX11

er Xlib biblioteket

libXaw6

er X Athena Widgets biblioteket, versjon 6

libXaw7

er X Athena Widgets biblioteket, versjon 7

libXaw

er symbolske lenker til den nåværende X Athena Widgets biblioteket, version 7

libXcomposite

er X Composite biblioteket

libXcursor

er X markøradministrasjonsbiblioteket

libXdamage

er X skadebiblioteket

libXext

er Misc X utvidelsesbiblioteket

libXfixes

tilbyr utvidede versjoner av kjerneprotokollforespørsler

libXfont2

er X fontbiblioteket

libXft

er X FreeType grensesnittbiblioteket

libXinerama

er Xinerama biblioteket

libXi

er X inndata utvidelsesbiblioteket

libxkbfile

er xkbfile biblioteket

libXmu

er X grensesnittbiblioteket for diverse verktøy ikke en del av Xlib standarden

libXmuu

er Mini Xmu biblioteket

libXpm

er X Pixmap biblioteket

libXpresent

er bibliotekgrensesnittet til X Present Extension

libXrandr

er utvidelsesbiblioteket X Resize, Rotate og Reflection

libXrender

er X Render biblioteket

libXRes

er klientbiblioteket for X-Resource utvidelsen

libxshmfence

eksponerer et hendelses API oppå Linux futexes

libXss

er klientbiblioteket for X11 Screen Saver utvidelsen

libXt

er X Toolkit biblioteket

libXtst

er Xtst biblioteket

libXvMC

er X-Video Motion Compensation biblioteket

libXvMCW

er XvMC Wrapper inkludert den ikke standardiserte VLD utvidelsen

libXv

er X Window System video utvidelse biblioteket

libXxf86dga

er klientbiblioteket for XFree86-DGA utvidelsen

libXxf86vm

er klientbiblioteket for XFree86-VidMode X utvidelsen