Misgendering Debian: Trying to install Xlibre on Debian

  • 🇵🇦 Nuestro primer dominio localizado está en español en kiwifarms.pa. Our first localized domain is on Spanish on kiwifarms.pa.
  • Want to keep track of this thread?
    Accounts can bookmark posts, watch threads for updates, and jump back to where you stopped reading.
    Create account

Betonhaus

Irrefutable Rationality
kiwifarms.net
Registrado
30 de Mar, 2023
Ever since Xlibre was announced I've been slowly trying to get it running on Linux Mint. That has been hampered by two things (three if you count that nobody else has already done it): the fact that I don't know the fuck what i'm doing, and the fact that Linux Mint is not able to pull new enough packages to meet the requirements, either from Debian 12 or Ubuntu 24.04. Since Debian 13 has new enough packages I'll be trying to install Xibre on it. (technically Ubuntu 25.04 also does but I don't use it and the next Ubuntu based version of mint won't be until 2026).

So far I haven't gotten far, but I did manage to make a list of all of the packages needed to compile and install Xlibre:

Bash:
git build-essential meson autoconf sudo xtrans-dev libpixman-1-dev libxkbcommon-x11-dev libxfont-dev libxcvt-dev libdrm-dev libepoxy-dev x11proto-present-dev x11proto-dev libxkbfile-dev libudev-dev libxshmfence-dev libbsd-dev x11proto-xf86dri-dev libgl1-mesa-dev libglu1-mesa-dev libgl-dev libdrm-dev xutils-dev libx11-dev libxcb1-dev libxrandr-dev libxrender-dev libxinerama-dev libxext-dev xutils-dev libpciaccess-dev libxpresent-dev cmake ninja-build pkg-config libx11-dev libxcb1-dev libxrandr-dev libxrender-dev libxinerama-dev libxext-dev xutils-dev libxcb-util-dev libxcb-shape0-dev libxcb-icccm4-dev libpciaccess-dev libxpresent-dev mesa-common-dev x11proto-input-dev automake libtool cmake

This list is from trial and error and might have some redundant packages. After this it's possible to follow the guide directly from the wiki page: (seems someone else found the list of needed packages)

Bash:
git clone https://github.com/X11Libre/xserver.git xlibre
cd xlibre
meson setup builddir
ninja -C builddir
sudo ninja -C builddir install
you do have to purge xserver-xorg-core and xserver-xorg, which seems to want to remove cinnamon and basically everything. I'm still trying to get the input and video drivers to install, but I ran out of time to work on this. I'll leave what little progress i've made here for when i get back to it

And i still don't really understand how metapackages work, which is apparently needed for everything to see xlibre as xserver-xorg
 
Última edición:
You don't purge packages before, that would obviously uninstall everything that depends on them. You tell apt-get to install a different version of an already installed package and it will install and replace the currently installed package, all dependencies stay satisfied during this so it won't uninstall anything.

Virtual packages (not metapackages - for that, see the link below) are used where multiple different packages can satisfy the same dependency of another package, say if package a depends on package virtual-b that can be provided by either package c or d, either c or d being installed will satisfy the dependency.
And I don't think you need a metapackage to install xlibre. Just name it the same as the xserver package that everything else depends on, that will satisfy the dependency. Just make it a different version, like a version that's always higher than the debian xserver version. There's a way to do that with the version part after the +, but I can't remember how, debian package versioning rules are complicated.


You can see, xserver-xorg is likely a metapackage, it only depends on other packages that actually install stuff.
Código:
$ apt-cache show xserver-xorg
Package: xserver-xorg
Source: xorg
Version: 1:7.7+23
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Description-en: X.Org X server
 This package depends on the full suite of the server and drivers for the
 X.Org X server.  It does not provide the actual server itself.
Description-md5: b02760f9637ea7fd8e02a7e0afedccb0
Homepage: https://www.x.org/
Architecture: amd64
Section: x11
Priority: optional
Depends: xserver-xorg-core (>= 2:1.17.2-2), xserver-xorg-video-all | xorg-driver-video, xserver-xorg-input-all | xorg-driver-input, xkb-data (>= 1.4), x11-xkb-utils
Provides: xserver
Recommends: libgl1-mesa-dri, xserver-xorg-legacy
Installed-Size: 238
Size: 94216
Filename: pool/main/x/xorg/xserver-xorg_7.7+23_amd64.deb
SHA256: dd76ed278dfe10f46cc4c7073ebb8f2395ab6c65b9c2e2d5724be8be5dd3782c

But everything else has a dependency on xserver-xorg, not on the individual components. That way every package that depends on xserver-xorg can only specify one dependency instead of several components of it.
Código:
$ apt-cache rdepends xserver-xorg
xserver-xorg
Reverse Depends:
  xserver-xorg-core
  gdm3
  xserver-xorg-core
  xserver-xorg-core
  parl-desktop
  lxde
  keyboards-rg
  design-desktop
  cinnamon-core
  xserver-xspice
  xserver-xorg-core
  xorg
  gdm3
 |xinit
 |wdm
 |sddm
  lightdm
  kde-plasma-desktop

cinnamon depends on xserver-xorg via its component cinnamon-core
Código:
$ apt-cache show cinnamon-core
Package: cinnamon-core
Source: cinnamon-desktop-environment
Version: 5.6.0
Maintainer: Debian Cinnamon Team <debian-cinnamon@lists.debian.org>
Description-en: Cinnamon desktop environment - essential components
 These are the core components of Cinnamon, a desktop environment which
 provides advanced innovative features and a traditional user experience.
 .
 This metapackage depends on basic components needed to use the desktop
 environment. Install this if you want a minimal cinnamon desktop.
Description-md5: 106db4a3649a0806bcccd3383bcf2396
Homepage: http://cinnamon.linuxmint.com/
Architecture: all
Section: metapackages
Priority: optional
Depends: cinnamon (>= 5.6), cinnamon-control-center (>= 5.6), cinnamon-screensaver (>= 5.6), cinnamon-session (>= 5.6), cinnamon-settings-daemon (>= 5.6), desktop-base, gnome-terminal | x-terminal-emulator, lightdm | gdm3 | x-display-manager, muffin (>= 5.6), nemo (>= 5.6), xserver-xorg, dconf-gsettings-backend | gsettings-backend
Recommends: alsa-utils, anacron, cinnamon-l10n (>= 5.6), gnome-themes-extra, gstreamer1.0-plugins-good, gvfs-fuse, sudo
Suggests: cinnamon-desktop-environment
Installed-Size: 13
Size: 3788
Filename: pool/main/c/cinnamon-desktop-environment/cinnamon-core_5.6.0_all.deb
SHA256: 359136efda7db08dd0413859fa21204d9eeca5b91a468dbe29ca7b3125691d0c

so your xlibre package will have to be named the same, or else you'll also have to repackage cinnamon-core just to change the name of xserver-xorg it depends on, which is not necessary imo

So what you could do is name your xlibre packages the same as xorg (if you'll have the same component parts that the debian xserver has), you could take the debian directory from the xorg package and copy it into your xlibre package (editing any necessary fields, removing the changelog, and so on), set its version to one that'll rank higher than the xorg package, then use debian tools to make a release deb. Since xserver-xorg will depend on your packages too, and your package will have a higher version, you can install it with apt-get and it will replace the debian xorg package.

Or the 2nd thing you could do (which now that I think of it, is probably better) is name your xlibre packages xlibre, then create a metapackage that's named xserver-xorg but that depends on xlibre packages. This might be clearer and you only need to make the xserver-xorg metapackage version rank higher than xorg, not every one of its component packages.
You could just copy the source of the xserver-xorg package and edit the contents of the 'debian' directory, then make a release deb of it.
You can get a source package with apt-get source, which will place it iin CWD.
(edit: pressed post button too soon)
(edit2: added part about xlibre metapackage)
 
Última edición:
Another way would be to mark xlibre packages with `Provides:` for corresponding xorg packages to fullfill dependencies, and symlink xorg paths to xlibre for linking.
Also, there's a repo with packages for Sid and Trixie here. Looking at the source packages, I don't see them doing anything to replace xorg, but I am not really familiar with APT. Worth trying or at least taking a look at either way.
 
Also, there's a repo with packages for Sid and Trixie here. Looking at the source packages, I don't see them doing anything to replace xorg, but I am not really familiar with APT. Worth trying or at least taking a look at either way.
I have no idea why I couldnt find this. I guess all that's needed is to make the metapackage?
 
Última edición:
well never mind then. it was as easy as running the bash code block and rebooting.
Bash:
sudo apt-get update
sudo apt-get install ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://xlibre-deb.github.io/key.asc | sudo tee /etc/apt/keyrings/xlibre-deb.asc
sudo chmod a+r /etc/apt/keyrings/xlibre-deb.asc

cat <<EOF | sudo tee /etc/apt/sources.list.d/xlibre-deb.sources
Types: deb deb-src
URIs: https://xlibre-deb.github.io/debian/
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/xlibre-deb.asc
EOF

sudo apt-get update
sudo apt-get install -y xlibre

works perfectly in a VM, aside from the curser being squished and some icons not showing up properly

i created a new thread dedicated to the ordeal of me trying to figure out what the fuck i was doing and it turns out someone else did actually get around to doing it.
 
Última edición:
Atrás
Top Abajo