Packages

624 packages, searchable and sortable. Every one of these already exists as a real, built LinuxDoors package.

PackageVersionCategorySizeDownloads
glibc-ch8
LFS ch8, named glibc-ch8 (not plain 'glibc') to avoid colliding with the already-built chapter 5 cross-compiled glibc package, which many other packages' "depends" reference by that name -- an intentional exception to...
LFS ch8, named glibc-ch8 (not plain 'glibc') to avoid colliding with the already-built chapter 5 cross-compiled glibc package, which many other packages' "depends" reference by that name -- an intentional exception to the usual -tmp naming convention, documented in CLAUDE.md. This is a REAL full native rebuild, not a transient bootstrap build. Simplifications from the book: skips the optional test suite, skips the live-system nscd-disable steps (not applicable to a fresh chroot build), skips the early partial-DESTDIR .so install trick (not needed since nothing is live-replacing its own running libc here), uses `make localedata/install-locales` for the full locale set instead of a curated list, and defaults /etc/localtime to UTC instead of the book's interactive tzselect step -- installers/users can reconfigure the timezone later.
2.44 Core System 75.1 MB 31 Download PackageSource Download .tar.gz
glibmmNot in ISO
C++ bindings for glib/gio -- the 2.66 series, which provides the glibmm-2.4 and giomm-2.4 pkg-config modules gtkmm-3.0 / mate-system-monitor require (glibmm-2.68+ is the gtkmm-4 line).
C++ bindings for glib/gio -- the 2.66 series, which provides the glibmm-2.4 and giomm-2.4 pkg-config modules gtkmm-3.0 / mate-system-monitor require (glibmm-2.68+ is the gtkmm-4 line). meson; --libdir=lib. ship_in_iso:false.
2.66.10 Libraries 1.7 MB 22 Download PackageSource Download .tar.gz
glib-networking
BLFS basicnet/glib-networking.html (GIO TLS backend modules).
BLFS basicnet/glib-networking.html (GIO TLS backend modules). Originally scoped OUT of GIMP's dependency chain (see packages/gimp/metadata.json's original notes) on the theory it was only needed for GIMP's optional startup update-check feature -- that theory was wrong. GIMP 3.2.4's meson.build has a real, unconditional 'Test for glib-networking failed. This is required.' check (confirmed directly in the live meson.build, not gated behind -D check-update or any other option), so this whole real GnuTLS chain (libunistring, libtasn1, nettle, p11-kit, gnutls) turned out to be a genuine hard requirement after all, caught by a real build failure. -D libproxy=disabled per the book (this project has no libproxy).
2.90.0 Libraries 196.5 KB 30 Download PackageSource Download .tar.gz
glycinNot in ISO
Glycin -- GNOME's sandboxed image-loading library (Rust, using seccomp to sandbox each format decoder in its own subprocess), a hard requirement of gnome-shell 51.0's own meson.build (glycin-2, >= 2.0, no way to disab...
Glycin -- GNOME's sandboxed image-loading library (Rust, using seccomp to sandbox each format decoder in its own subprocess), a hard requirement of gnome-shell 51.0's own meson.build (glycin-2, >= 2.0, no way to disable). Added 2026-09-18, part of the GNOME 51 push. Isolated to /opt/gnome51 -- see packages/libgnome-desktop/build.sh for the full isolation reasoning; nothing else in this project uses glycin. Real sha256 verified against GNOME's own published sha256sum file. Built via meson+cargo (a Rust project) against this project's existing rustc/cargo toolchain -- not yet build-verified as of this note; real errors (likely around cargo's crates.io fetch needing a CA trust store, matching the same class of gap already hit for pip/curl/npm elsewhere in this project) get fixed against the actual build.sh as they surface.
2.2.2 Libraries 7.0 MB 14 Download PackageSource Download .tar.gz
gmp
LFS ch8.
LFS ch8. Skips make html/install-html (docs) and the (book-recommended but optional for us) make check test suite.
6.3.0 Core System 465.2 KB 27 Download PackageSource Download .tar.gz
gnome51-desktopNot in ISO
One-statement installer for GNOME 51, LinuxDoors' headless-over-VNC GNOME desktop -- 'pkg install gnome51-desktop' resolves gnome-shell (which itself already depends on mutter/gjs/gnome-session/gnome-settings-daemon)...
One-statement installer for GNOME 51, LinuxDoors' headless-over-VNC GNOME desktop -- 'pkg install gnome51-desktop' resolves gnome-shell (which itself already depends on mutter/gjs/gnome-session/gnome-settings-daemon) plus gnome-remote-desktop (the real VNC server). Same marker-metapackage pattern as packages/lxqt-desktop / packages/gnome-desktop (source.url is a label; resolve_source never contacts it -- the tarball is pre-placed in download/ with a matching sha256; ships no binaries of its own, just a README so the captured zip/manifest are non-empty). Unlike every other desktop entry on linuxdoors.com/desktops, GNOME 51 dropped X11 entirely -- there is no local Xorg session and nothing to pick from a login-screen session menu. Reaching it for real needs LinuxDoors' own patched X2GoClientGnome51Vnc.AppImage (x2goclient-gnome51vnc + linuxdoors-vncviewer packages) connecting over x2go's 'GNOME 51 (VNC)' session type, which tunnels a local port to the gnome-remote-desktop VNC server this metapackage's own gnome-remote-desktop dependency provides. Added specifically so linuxdoors.com/desktops lists a GNOME 51 entry with a real, working one-line install command, matching the site's own established pattern for every other desktop, rather than leaving it undocumented while GNOME 48 (a genuinely different, X11-based desktop) has its own entry. || 2026-09-28: `gnome-session-51` added explicitly to `depends` -- the plain `gnome-session` package was split into `gnome-session` (real, /usr, GNOME 48) and `gnome-session-51` (the /opt/gnome51 headless-VNC build this metapackage actually needs) after they'd been silently colliding under one build.sh for a while. `gnome-shell`'s own comment above ("already depends on ... gnome-session") now means the real GNOME 48 gnome-session, NOT this one -- relying on that transitive edge alone would have pulled the wrong package once the split landed, which is why `gnome-session-51` is now listed here directly.
51.0 Libraries 2.4 KB 11 Download PackageSource Download .tar.gz
gnome-backgroundsNot in ISO
gnome-backgrounds -- the default wallpapers gnome-shell references.
gnome-backgrounds -- the default wallpapers gnome-shell references. ship_in_iso=false -- GNOME Shell is a Packages-page / Package Manager install, kept off linuxdoors.iso (XFCE + MATE are the shipped desktops). Built on .101 against the existing rustc/llvm/p11-kit/librsvg/gi/glib2/pango/cairo stack; only the GNOME-specific libraries are new packages. || 48.0 -> 48.2.1 (2026-09-14 real upstream-currency bump, real sha256 computed from the downloaded tarball, archive integrity verified before trusting it). || Bumped 48.2.1 -> 51.0 (2026-09-18, part of the GNOME 51 push). Real sha256 verified against GNOME's own published sha256sum file.
51.0.1 Desktop 40.7 MB 22 Download PackageSource Download .tar.gz
gnome-control-centerNot in ISO
gnome-control-center -- GNOME's real Settings app, added specifically for its Displays panel (user-reported: right-clicking / opening Settings to change resolution did nothing, because this whole app never existed on...
gnome-control-center -- GNOME's real Settings app, added specifically for its Displays panel (user-reported: right-clicking / opening Settings to change resolution did nothing, because this whole app never existed on LinuxDoors -- only gnome-settings-daemon, the background daemon, was ever built). BLFS documents 50.4, but this project deliberately stays on GNOME 48 (GNOME 50 drops X11 entirely -- see memory gnome-50-x11-removed-stay-on-48.md), so 50.4 was tried first and rejected by a real build failure: it requires libadwaita >= 1.8, but this project has 1.7.6 (matching the GNOME 48 stack). Switched to 48.7 (the latest 48.x release), which matches the installed libadwaita/gtk4/gnome-desktop versions with no bump needed. Deliberately scoped down per explicit user choice ('minimal: just the Displays panel') -- panels/meson.build's `panels` list is patched (see build.sh) to keep only `display` (plus `keyboard`, which is a required `dependent_panels` entry other code paths assume exists, not optional). This drops the need for Bluetooth/ModemManager/Samba/Kerberos/gnome-online-accounts/gnome-bluetooth/libnma/libpwquality/Tecla entirely -- confirmed via panels/display/meson.build's own dependency() calls that Displays only needs colord, gnome_rr (from packages/gnome-desktop), upower-glib, and libm, all already built. snap/malcontent/wayland explicitly disabled (irrelevant on this X11-only setup); ibus/accountsservice/polkit/geoclue left enabled since all four were already built and the keyboard panel + shell chrome expect them. || Bumped 48.7 -> 51.0 (2026-09-18, part of the GNOME 51 push). Real sha256 verified against GNOME's own published sha256sum file. || Real build failure hit and fixed here (2026-09-19): 51.0's own meson.build requires gtk4 '>= 4.23.0' -- this project's built gtk4 is 4.22.5, one minor version short -- and with no matching system gtk4, meson fell through to its git-based subproject fallback, which itself then failed needing glib2 '>= 2.89.3' (this project has 2.88.3). Rather than chase that version cascade by upgrading the shared, project-wide gtk4/glib2 packages (real cross-cutting risk to everything else using them), checked 50.4's own real upstream meson.build directly (gitlab.gnome.org raw file view) first: gtk_version '>= 4.15.2', libadwaita_version '>= 1.8.alpha' -- both comfortably satisfied by this project's existing gtk4 4.22.5 / libadwaita 1.8.8, no rebuild of anything else needed. Downgraded to 50.4 (still real GNOME, still Wayland-native, still far newer than the previously-rejected 48.7). The cc-panel-loader.c patch step in build.sh had to be rewritten from exact-line matching to substring-matching-by-function-name, since 50.4's PANEL_TYPE(...) formatting (column-aligned, no space before the paren) differs from 51.0's (space before the paren, no alignment) -- confirmed directly by fetching and diffing both real source trees rather than assumed.
50.4 Libraries 5.7 MB 24 Download PackageSource Download .tar.gz
gnome-desktopNot in ISO
One-statement installer for the GNOME 48 desktop -- 'pkg install gnome' resolves the whole GNOME 48 component set (gnome-shell + gnome-session + gnome-control-center + gnome-keyring + gnome-backgrounds + gnome-menus +...
One-statement installer for the GNOME 48 desktop -- 'pkg install gnome' resolves the whole GNOME 48 component set (gnome-shell + gnome-session + gnome-control-center + gnome-keyring + gnome-backgrounds + gnome-menus + adwaita icon themes) plus their transitive deps (mutter 48, gjs, gnome-settings-daemon, gtk4, libadwaita, gnome-desktop, ...). Ships no binaries -- just /usr/share/doc/gnome/README as a marker so the zip/manifest are non-empty and uninstall works. Same 'local hand-authored asset as a pinned source' pattern as packages/sudo and packages/lxqt-desktop. Named 'gnome-desktop' to match budgie-desktop/lxqt-desktop; the shared library formerly called 'gnome-desktop' is now 'libgnome-desktop'. GNOME 48 is the last X11-capable series -- GNOME 49 disables the X11 session by default, GNOME 50 removed the X11 code entirely (Wayland-only), so this stays pinned to 48 -- x2go's own X11-based remote desktop needs it. Listed on linuxdoors.com/desktops. A parallel GNOME 51 chain (Wayland-only, remoted via gnome-remote-desktop/RDP instead of x2go's nxagent) is a SEPARATE metapackage, gnome51-desktop -- this one is untouched by that work. (2026-09-18: corrected after a real mistake -- an earlier edit this same session briefly, wrongly, overwrote this file's version/source with the real upstream libgnome-desktop-51.0 tarball data, which belongs on packages/libgnome-desktop instead. Reverted here; the 51.0 bump was moved to the correct package.)
48 Desktop 1.9 KB 29 Download PackageSource Download .tar.gz
gnome-keyringNot in ISO
gnome-keyring -- secret/ssh/pkcs11 daemon.
gnome-keyring -- secret/ssh/pkcs11 daemon. Provides the Secret Service for GNOME apps. ship_in_iso=false -- GNOME Shell is a Packages-page / Package Manager install, kept off linuxdoors.iso (XFCE + MATE are the shipped desktops). Built on .101 against the existing rustc/llvm/p11-kit/librsvg/gi/glib2/pango/cairo stack; only the GNOME-specific libraries are new packages. || Bumped 48.0 -> 51.1 (2026-09-18, part of the GNOME 51 push). Real sha256 verified against GNOME's own published sha256sum file.
51.1 Desktop 1.8 MB 24 Download PackageSource Download .tar.gz
gnome-menusNot in ISO
gnome-menus -- the app-menu spec impl gnome-shell's app grid uses.
gnome-menus -- the app-menu spec impl gnome-shell's app grid uses. ship_in_iso=false -- GNOME Shell is a Packages-page / Package Manager install, kept off linuxdoors.iso (XFCE + MATE are the shipped desktops). Built on .101 against the existing rustc/llvm/p11-kit/librsvg/gi/glib2/pango/cairo stack; only the GNOME-specific libraries are new packages. || 3.36.0 -> 3.38.1 (2026-09-14 real upstream-currency bump, real sha256 computed from the downloaded tarball, archive integrity verified before trusting it).
3.38.1 Desktop 353.4 KB 20 Download PackageSource Download .tar.gz
gnome-remote-desktopNot in ISO
gnome-remote-desktop 51.0 -- the actual remote-desktop daemon, wrapping Mutter's org.gnome.Mutter.ScreenCast/RemoteDesktop D-Bus interfaces (see packages/mutter's own notes -- built with -Dremote_desktop=true specific...
gnome-remote-desktop 51.0 -- the actual remote-desktop daemon, wrapping Mutter's org.gnome.Mutter.ScreenCast/RemoteDesktop D-Bus interfaces (see packages/mutter's own notes -- built with -Dremote_desktop=true specifically for this) into a real network protocol. Built with -Drdp=false -Dvnc=true, a deliberate choice confirmed with the user directly: RDP needs a massive chain (FreeRDP, a full TPM2 stack tss2-esys/mu/rc/tctildr, Kerberos, VAAPI/Vulkan hardware encoding) for the same end-user result the VNC backend gets with just packages/libvncserver -- both achieve 'connect from x2goclient to a real remote GNOME 51 desktop', VNC just gets there with a fraction of the new infrastructure. Isolated to /opt/gnome51 -- see packages/libgnome-desktop/build.sh for the full isolation reasoning. krb5 and tpm2-tss are real, confirmed build-time deps too -- gnome-remote-desktop's own meson.build calls dependency('krb5')/dependency('tss2-esys') UNCONDITIONALLY, before the rdp/vnc branch, regardless of which backend is actually selected. build.sh also patches a real upstream gap: grd-enable-service.c (the generic, backend-agnostic systemd-unit-toggle helper grdctl's 'vnc enable'/'headless' commands need) is only built inside `if have_rdp` in src/meson.build even though its own C code has zero RDP-specific logic -- patched to build unconditionally. Also ships a sysusers.d entry for the gnome-remote-desktop system user grdctl's own getpwnam() call requires (a real NULL-deref crash otherwise, root-caused via gdb).
51.0 Libraries 413.3 KB 12 Download PackageSource Download .tar.gz
gnome-sessionNot in ISO
gnome-session -- the REAL /usr session manager behind the 'GNOME' and 'GNOME on Wayland' entries lightdm's own session picker shows.
gnome-session -- the REAL /usr session manager behind the 'GNOME' and 'GNOME on Wayland' entries lightdm's own session picker shows. ship_in_iso=false -- GNOME is a Packages-page / Package Manager install, kept off linuxdoors.iso (XFCE + MATE are the shipped desktops). || 2026-09-28: REWRITTEN FROM SCRATCH for real reproducibility. This package's own build.sh had been silently repurposed to build the completely separate /opt/gnome51 headless-VNC feature for a long time (see the long history below, kept for the record) -- that content has been split out into its own dedicated packages/gnome-session-51 (same real functionality, unchanged, just correctly named so the two stop colliding). This package is now, for the first time since that repurposing, a real, verified, /usr-targeting build of the ACTUAL GNOME 48.0 session manager, built and tested for real (not just written and assumed) via `_drv_mm`-style engine.builder.build_package against a fresh chroot on .101. Real dependency additions verified against the actual upstream meson.build's own dependency() calls: gtk+-3.0 (NOT gtk4 -- gnome-session's own dialogs are GTK3; gnome-shell is the GTK4/libadwaita one), gnome-desktop-3.0 (libgnome-desktop), and ice/sm/x11/xtrans (all bundled in this project's x7lib meta-page, confirmed via the real .pc files already present on .101 before this rebuild). Dropped from the old /opt/gnome51-era depends list (xinit, pygobject3, python -- none referenced by the real gnome-session meson.build's own dependency() calls; harmless to have had them, just not actually needed here). Real fix carried over from the live, hand-patched version already proven working end-to-end (see packages/gnome-shell's own notes for the full diagnostic story, including a real screenshot of a working GNOME Wayland desktop): build.sh patches data/meson.build's `required_components` dict down to an empty list for the plain 'gnome' session (so RequiredComponents= in the generated /usr/share/gnome-session/sessions/gnome.session ends up just 'org.gnome.Shell', exactly matching the hand-made file already confirmed working) rather than shipping upstream's full default of Shell plus 16 org.gnome.SettingsDaemon.* plugin names -- this project's gnome-settings-daemon-48 was deliberately built with several plugins disabled (Smartcard confirmed off via -Dsmartcard=false) and the rest have never been individually verified to register their real D-Bus names at runtime; RequiredComponents= is a HARD requirement gnome-session-binary itself enforces (unlike the sibling gnome-session@gnome.target.d/gnome.session.conf systemd drop-in's Wants= lines, which are soft and were left at their real, full upstream value since a missing Wants= target is harmless). Widen the trimmed list later, one real org.gnome.SettingsDaemon.* entry at a time, only after confirming each one genuinely registers live (e.g. `busctl --user list | grep SettingsDaemon`) -- a listed-but-never-appearing entry reproduces the exact 'session failed'/'Cannot open display' crash this whole investigation started from. Also confirmed for real: upstream's own gnome-wayland.desktop.in.in already outputs literally 'gnome-wayland.desktop' (not 'gnome.desktop') into wayland-sessions/ -- the earlier hand-made file's rename to gnome-wayland.desktop (done to dodge an apparent collision with xsessions/gnome.desktop) turns out to exactly match real upstream naming, not a LinuxDoors-specific workaround; no renaming logic needed in this build.sh at all. Build produces both /usr/share/xsessions/gnome.desktop ('GNOME') and /usr/share/wayland-sessions/gnome-wayland.desktop ('GNOME on Wayland') automatically, plus the real /usr/share/gnome-session/sessions/gnome.session file and the gnome-session@gnome.target.d/gnome.session.conf systemd drop-in, all from one real, ordinary meson build -- no more manual file creation needed on any future fresh install once this package is built and installed via `pkg install gnome-desktop`. Still needed on top
48.0 Desktop 499.3 KB 22 Download PackageSource Download .tar.gz
gnome-session-51Not in ISO
2026-09-28: SPLIT OUT of the old `gnome-session` package -- this is the real, dedicated, isolated-to-/opt/gnome51 build (headless GNOME 51 desktop, reachable over VNC via gnome-remote-desktop).
2026-09-28: SPLIT OUT of the old `gnome-session` package -- this is the real, dedicated, isolated-to-/opt/gnome51 build (headless GNOME 51 desktop, reachable over VNC via gnome-remote-desktop). Renamed to `gnome-session-51` specifically so `gnome-session` (the plain name) is free to go back to being the real, /usr-targeting, GNOME 48 build that the actual login-screen GNOME/GNOME-on-Wayland sessions need -- the two were colliding under one package/build.sh for a long time (this build.sh used to silently repurpose the plain `gnome-session` package's own build.sh to target /opt/gnome51, leaving the real 48.0 /usr build with no reproducible source at all -- see packages/gnome-session's own notes for that whole story and its real fix). Nothing about this package's own actual content changed in the split -- same build.sh, same /opt/gnome51 prefix, same linuxdoors-gnome51-vnc/linuxdoors-gnome51-resolution/linuxdoors-gnome51-sessionmanager tooling, same real, confirmed-working headless-GNOME-51-over-VNC feature. `packages/gnome51-desktop` (the metapackage `pkg install gnome51-desktop` installs) should depend on this package directly by name (`gnome-session-51`) rather than relying on it being pulled in incidentally through `gnome-shell`/`gnome-remote-desktop` -- check and fix that dependency list if it doesn't already list `gnome-session-51` explicitly.
51.0 Libraries 430.2 KB 11 Download PackageSource Download .tar.gz
gnome-settings-daemonNot in ISO
gnome-settings-daemon -- applies GSettings to the running session (keyboard, display, media keys, power).
gnome-settings-daemon -- applies GSettings to the running session (keyboard, display, media keys, power). REWORKED 2026-09-20 into a GNOME 51 build isolated to /opt/gnome51 (same discipline as mutter/gnome-shell/gnome-session/gnome-control-center/libgnome-desktop in this exact stack -- see libgnome-desktop's own build.sh for the full isolation reasoning) -- the OLDER 48.1, --prefix=/usr, GTK4-listed recipe this file used to be is gone; the real GNOME 48 desktop's already-installed /usr copy from that earlier build is untouched by this change, only a FUTURE rebuild of this package now targets /opt/gnome51 instead. || WHY THIS WAS BUILT: a real user request (2026-09-20), after building linuxdoors-gnome51-resolution (a small app to change the headless GNOME 51 session's resolution from inside the session itself) -- the user wanted a keyboard shortcut to open it, and nothing in this isolated stack was actually listening for gsettings-configured custom keybindings at all, since gnome-settings-daemon (whose media-keys plugin does exactly that) had never been built for /opt/gnome51, despite packages/gnome-shell's own depends list already naming it (confirmed: that dependency was bookkeeping-only, no real files had ever landed in /opt/gnome51 for it). || Real dependency differences found reading 51.0's own meson.build directly, not assumed from the 48.1 recipe: no gtk4/libadwaita dependency anywhere in this version; plugins/media-keys and plugins/sound both have a real, completely unconditional hard dependency on libpulse-mainloop-glib, satisfied by a real PulseAudio 17.0 already present system-wide (not built here -- discovered via pkg-config, presumably pulled in as a side effect of some earlier, unrelated deb-bridge install on this exact host); libgeoclue-2.0 is now a real separate hard dependency alongside geocode-glib-2.0 (48.1 only needed the latter); the real pkg-config name wanted is "gweather4", not "libgweather" (same upstream project, different soname/version); gcr3=false (the meson default) wants gcr-4 >= 3.90.0, satisfied by this project's own real gcr-4.3.1 package. The hard `assert(enable_network_manager or not host_is_linux)` is still there, worded identically to 48.1's -- same sed fix carried over. || Wired into linuxdoors-gnome51-vnc (packages/gnome-session): started alongside pipewire/wireplumber at session startup, plus a real custom keybinding (org.gnome.settings-daemon.plugins.media-keys custom-keybindings) bound to launch linuxdoors-gnome51-resolution -- see that script's own notes for the exact key chosen and how it was verified working.
51.0 Libraries 1.9 MB 34 Download PackageSource Download .tar.gz
gnome-settings-daemon-48Not in ISO
Real /usr-targeting gnome-settings-daemon for the GNOME 48 X11/Wayland desktop (gnome-shell 48.8 + gnome-session 48.0), a SEPARATE package name from plain 'gnome-settings-daemon' -- that name was repurposed on 2026-09...
Real /usr-targeting gnome-settings-daemon for the GNOME 48 X11/Wayland desktop (gnome-shell 48.8 + gnome-session 48.0), a SEPARATE package name from plain 'gnome-settings-daemon' -- that name was repurposed on 2026-09-20 into an isolated /opt/gnome51 build for the separate headless-VNC GNOME 51 feature (see its own metadata.json/build.sh). Added 2026-09-28 after a real boot test found the actual desktop had NO working settings daemon at all: gnome-session was launching stale, unowned /usr/libexec/gsd-* binaries left over from an old ISO build (dated 2026-09-03, no package manifest claimed them), which then crashed gnome-shell/gsd-* with real missing-library errors (libnghttp2.so.14 via libsoup, libpulse.so.0 via PulseAudio) since nothing had ever declared or installed those as real dependencies for this desktop. || packages/gnome-shell's own `depends` was repointed from plain 'gnome-settings-daemon' to this package name -- gnome-shell's own build.sh/metadata.json were deliberately NOT touched/rebuilt in this same pass, since they too were silently repurposed for /opt/gnome51 on 2026-09-20 (confirmed: current build.sh targets PREFIX=/opt/gnome51) but the REAL, currently-served download zip for gnome-shell is still the old, working 48.8 /usr build -- rebuilding gnome-shell now would destroy that working zip and break the real desktop. Future session note: don't rebuild packages/gnome-shell or packages/gnome-session without first re-deriving a correct /usr-targeting recipe the same way this package was (real source verification, not reuse of the current /opt/gnome51 build.sh) -- both are in the same silently-stale state as gnome-settings-daemon was. || Real dependency verification against the actual gnome-settings-daemon-48.1 source (not assumed): meson_options.txt has no 'xwayland' or 'systemd-units' option at all (both exist only in the later 51.0 recipe -- passing them here would be a meson 'unknown option' error); real hard deps are gtk+-3.0, gtk+-x11-3.0, gweather4, libcanberra-gtk3, libgeoclue-2.0 (>=2.3.1), libpulse-mainloop-glib (>=2.0), gcr-4 (gcr3=false default) -- all confirmed already satisfied on .101 via pkg-config before writing build.sh. The `assert(enable_network_manager or not host_is_linux, ...)` hard-fails configure unless neutralized (no host_is_linux escape hatch for -Dnetwork_manager=false alone) -- same sed fix already established in the (now /opt/gnome51-targeting) sibling package's own build.sh, reused verbatim here since the assert's exact wording is identical between 48.1 and 51.0.
48.1 Libraries 1.9 MB 12 Download PackageSource Download .tar.gz
gnome-shellNot in ISO
GNOME Shell -- the panel/overview/lock UI.
GNOME Shell -- the panel/overview/lock UI. Built without NetworkManager and without the captive-portal helper for a lean session. ship_in_iso=false -- GNOME Shell is a Packages-page / Package Manager install, kept off linuxdoors.iso (XFCE + MATE are the shipped desktops). Built on .101 against the existing rustc/llvm/p11-kit/librsvg/gi/glib2/pango/cairo stack; only the GNOME-specific libraries are new packages. || 48.5 -> 48.8 (2026-09-14 real upstream-currency bump, real sha256 computed from the downloaded tarball, archive integrity verified before trusting it). || Bumped 48.8 -> 51.0 (2026-09-18, part of the GNOME 51 push). Real sha256 verified against GNOME's own published sha256sum file. || 2026-09-28: real boot test found this package's own build.sh has ALSO been silently repurposed to target PREFIX=/opt/gnome51 (same as gnome-session/gnome-settings-daemon), even though this metadata.json still says version 51.0 -- but the REAL, currently-served download zip is still the OLD, working 48.8 /usr build (confirmed live: gnome-shell --version reports 48.8 after a real pkg install, not 51.0). DO NOT rebuild this package without first writing a correct /usr-targeting build.sh (verified against the real 48.8 source, the same way packages/gnome-settings-daemon-48 was) -- running the current build.sh as-is would destroy the working 48.8 zip and break the real GNOME desktop, leaving only the /opt/gnome51 headless-VNC feature. depends repointed from plain 'gnome-settings-daemon' (now /opt/gnome51-only) to the new 'gnome-settings-daemon-48' package, and 'libnghttp2' added (real crash fix: gnome-shell's own libsoup-3.0 typelib load fails without it, see gnome-settings-daemon-48's own notes for the full story). || 2026-09-28, continued: real end-to-end boot test (on a genuinely fresh install, not .101 which had accumulated these libraries from unrelated earlier work) found FIVE more real missing runtime dependencies, found one at a time as each was fixed and the next 'cannot open shared object file' surfaced -- gjs (was already listed in depends but never actually got pulled by 'pkg install gnome-desktop' -- a real gap in dependency resolution worth investigating separately), graphene, colord, libgudev, libwacom, libei. All added here for real. This was the ACTUAL final blocker for a genuine native-Wayland GNOME session on lightdm -- once every one of these was present, 'ldd /usr/bin/gnome-shell' came back completely clean and the real systemd unit chain (gnome-session-wayland@<name>.target -> gnome-session.target -> graphical-session.target -> org.gnome.Shell@wayland.service) worked correctly end to end. The earlier working theory that this needed an actual lightdm source patch was WRONG -- lightdm's own self-relaunch/StartUnit handling for a GNOME session that hands off to systemd already works correctly; every failure up to this point was purely missing libraries, not a structural lightdm/GNOME incompatibility. || 2026-09-28, REAL WAYLAND SESSION CONFIRMED WORKING END TO END (real screenshot obtained via a genuine seat0 lightdm login, not a manual/synthetic invocation). Two more real fixes were needed after ldd came back clean, both because gnome-shell's own main.js does its own gi.require_version() imports at runtime that ldd can never catch: (1) 'Gdm-1.0.typelib' (Gdm-1.0, from the 'gdm' package) -- gnome-shell's ui/init.js unconditionally imports it even for a Wayland session with no real GDM running; (2) 'IBus-1.0.typelib' (from the 'ibus' package) -- also unconditionally imported by init.js for input-method support. Both added to depends here, and both had ALSO silently regressed on the live test VM mid-investigation because a `virsh reset` on that disposable domain rolls back recent filesystem writes (a real, separately-documented VM behavior) -- worth remembering that a `pkg install` fix applied earlier in the same session can vanish after a `virsh reset` and needs re-verifying, not just re-trusted. || The ACTUAL final structu
51.0 Desktop 3.9 MB 29 Download PackageSource Download .tar.gz
gnutls
BLFS postlfs/gnutls.html (TLS library).
BLFS postlfs/gnutls.html (TLS library). Part of the real GnuTLS chain -- see packages/libunistring/metadata.json for why this exists (GIMP 3.2.4's meson.build unconditionally requires a working glib-networking, which itself needs gnutls as its real TLS backend). Skips the test suite (large and slow). All four recommended deps (nettle, libunistring, libtasn1, p11-kit) built as real required-in-practice dependencies for this project's purposes.
3.8.13 Libraries 6.9 MB 30 Download PackageSource Download .tar.gz
gobject-introspection
BLFS general/glib2.html -- this isn't its own book chapter page; BLFS documents it as a 'Build GObject Introspection' subsection of the GLib page itself, built from its own separately-extracted tarball.
BLFS general/glib2.html -- this isn't its own book chapter page; BLFS documents it as a 'Build GObject Introspection' subsection of the GLib page itself, built from its own separately-extracted tarball. Phase 1.5 installer prerequisite (user chose GTK3+PyGObject over PySide6/Qt6): built against the introspection=disabled glib2 that's already installed (GI's own build doesn't require glib to already have introspection data -- it generates that data for OTHER libraries). After this builds, glib2 and gtk3 get rebuilt in place with introspection enabled (same pattern as the shadow/systemd PAM rebuilds earlier in this project).
1.86.0 Libraries 642.0 KB 30 Download PackageSource Download .tar.gz
gperf
LFS ch8.
LFS ch8. Skips the optional make check.
3.3 Core System 267.8 KB 29 Download PackageSource Download .tar.gz
grapheneNot in ISO
graphene -- SIMD 3D maths types.
graphene -- SIMD 3D maths types. Hard dep of GTK4 and Mutter. ship_in_iso=false -- GNOME Shell is a Packages-page / Package Manager install, kept off linuxdoors.iso (XFCE + MATE are the shipped desktops). Built on .101 against the existing rustc/llvm/p11-kit/librsvg/gi/glib2/pango/cairo stack; only the GNOME-specific libraries are new packages.
1.10.8 Libraries 140.4 KB 34 Download PackageSource Download .tar.gz
grep
LFS ch8, final native build.
LFS ch8, final native build. Skips the optional make check.
3.12 Core System 554.9 KB 30 Download PackageSource Download .tar.gz
grep-tmp
LFS ch6 temporary tools stage.
3.12 Toolchain — 0 not yet builtSource Download .tar.gz
groff
LFS ch8.
LFS ch8. PAGE=letter chosen as a default paper size (book's other option is A4); reconfigurable later. Single-threaded make (-j1) per the book. Skips the optional test suite.
1.24.2 Core System 13.1 MB 35 Download PackageSource Download .tar.gz