Guacamole – Day 2.5

Ok, back at it. I’m starting at the dependencies section in the Guacamole manual here. I think I’ll just use this page to build the command to make things easy. I probably already have a bunch of these installed, but apt will sort that out for me. Much quicker than stare and compare. I’m pretty much installing all required and optional dependencies. The optional ones I know I need are for RDP, VNC, and SSH support. I’m not sure if I’ll ever use telenet, session recording, or audio over VNC, but it’s nice to have the option.

$ sudo apt install libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin \
uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev \
libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev

And this is what I got. The dependencies have dependencies, which also have dependencies, and those dependencies also have dependencies… I should have just gone with docker, but I’m only working with 100 GB of space, and I need that extra ~1 ms of speed I get from bare metal.

cweb@thecweb:~$ sudo apt install libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin \
uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev \
libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev
[sudo] password for cweb:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done

The following packages were automatically installed and are no longer required:
  libasn1-8-heimdal libcommon-sense-perl libffi7 libgssapi3-heimdal libhcrypto4-heimdal
  libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libicu66 libjson-perl libjson-xs-perl
  libkrb5-26-heimdal libldap-2.4-2 libllvm10 libllvm14 libroken18-heimdal libtypes-serialiser-perl
  libwind0-heimdal sysstat
Use 'sudo apt autoremove' to remove them.

The following additional packages will be installed:
  autoconf automake autotools-dev cpp cpp-11 gcc gcc-11 gcc-11-base gir1.2-freedesktop
  gir1.2-harfbuzz-0.0 gir1.2-pango-1.0 i965-va-driver icu-devtools intel-media-va-driver libaacs0
  libasan6 libasyncns0 libatomic1 libavcodec58 libavformat58 libavutil56 libbdplus0 libblkid-dev
  libbluray2 libbrotli-dev libc-dev-bin libc-devtools libc6-dev libcairo-gobject2
  libcairo-script-interpreter2 libcairo2 libcap-dev libcc1-0 libchromaprint1 libcodec2-1.0
  libcrypt-dev libdatrie-dev libdatrie1 libev-dev libev4 libevent-2.1-7 libexpat1-dev libffi-dev
  libflac8 libfontconfig-dev libfontconfig1-dev libfreerdp-client2-2 libfreerdp-server2-2
  libfreerdp-shadow-subsystem2-2 libfreerdp-shadow2-2 libfreerdp2-2 libfreetype-dev libfreetype6-dev
  libfribidi-dev libgcc-11-dev libgcrypt20-dev libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin
  libgdk-pixbuf2.0-common libglib2.0-dev libglib2.0-dev-bin libgme0 libgmp-dev libgmpxx4ldbl
  libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28 libgpg-error-dev libgraphite2-dev
  libgsm1 libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libice-dev libicu-dev libidn2-dev
  libigdgmm12 libisl23 libitm1 liblsan0 libltdl-dev liblzo2-dev libmfx1 libmount-dev libmp3lame0
  libmpc3 libmpg123-0 libnorm1 libnsl-dev libogg-dev libogg0 libopenmpt0 libopus0 libp11-kit-dev
  libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpangoxft-1.0-0 libpcre16-3 libpcre2-16-0
  libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpgm-5.3-0
  libpixman-1-0 libpixman-1-dev libpng-tools libpthread-stubs0-dev libpulse-mainloop-glib0 libpulse0
  libquadmath0 librabbitmq4 librsvg2-2 librsvg2-common libsasl2-dev libselinux1-dev libsepol-dev
  libshine3 libsm-dev libsnappy1v5 libsndfile1 libsoxr0 libspeex1 libsrt1.4-gnutls libssh-gcrypt-4
  libssh2-1 libswresample-dev libswresample3 libswscale5 libtasn1-6-dev libtasn1-doc libtelnet2
  libthai-data libthai-dev libthai0 libtheora0 libtirpc-dev libtool libtsan0 libtwolame0 libubsan1
  libudfread0 libunbound8 libuv1 libuv1-dev libva-drm2 libva-x11-2 libva2 libvdpau1 libvncclient1
  libvncserver1 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx7 libwebsockets16 libwinpr-tools2-2
  libwinpr2-2 libwinpr2-dev libx11-dev libx264-163 libxau-dev libxcb-render0 libxcb-render0-dev
  libxcb-shm0-dev libxcb1-dev libxdamage1 libxdmcp-dev libxext-dev libxft-dev libxrender-dev
  libxvidcore4 libzmq5 libzvbi-common libzvbi0 linux-libc-dev m4 manpages-dev mesa-va-drivers
  mesa-vdpau-drivers nettle-dev ocl-icd-libopencl1 pango1.0-tools pkg-config rpcsvc-proto
  va-driver-all vdpau-driver-all winpr-utils x11proto-dev xorg-sgml-doctools xtrans-dev zlib1g-dev

Suggested packages:
  autoconf-archive gnu-standards autoconf-doc gettext cpp-doc gcc-11-locales gcc-multilib make flex
  bison gdb gcc-doc gcc-11-multilib gcc-11-doc i965-va-driver-shaders libcuda1 libnvcuvid1
  libnvidia-encode1 libbluray-bdj glibc-doc libcairo2-doc libdatrie-doc freerdp2-x11 freetype2-doc
  libgcrypt20-doc libgirepository1.0-dev libglib2.0-doc libxml2-utils gmp-doc libgmp10-doc libmpfr-dev
  dns-root-data gnutls-bin gnutls-doc libgraphite2-utils libice-doc icu-doc libtool-doc opus-tools
  p11-kit-doc libpango1.0-doc pulseaudio librsvg2-bin libsm-doc speex libssl-doc libtelnet-utils
  libthai-doc gfortran | fortran95-compiler gcj-jdk libx11-doc libxcb-doc libxext-doc m4-doc
  opencl-icd graphicsmagick dpkg-dev libvdpau-va-gl1

The following NEW packages will be installed:
  autoconf automake autotools-dev cpp cpp-11 freerdp2-dev gcc gcc-11 gcc-11-base gir1.2-freedesktop
  gir1.2-harfbuzz-0.0 gir1.2-pango-1.0 i965-va-driver icu-devtools intel-media-va-driver libaacs0
  libasan6 libasyncns0 libatomic1 libavcodec-dev libavcodec58 libavformat-dev libavformat58
  libavutil-dev libavutil56 libbdplus0 libblkid-dev libbluray2 libbrotli-dev libc-dev-bin
  libc-devtools libc6-dev libcairo-gobject2 libcairo-script-interpreter2 libcairo2 libcairo2-dev
  libcap-dev libcc1-0 libchromaprint1 libcodec2-1.0 libcrypt-dev libdatrie-dev libdatrie1 libev-dev
  libev4 libevent-2.1-7 libexpat1-dev libffi-dev libflac8 libfontconfig-dev libfontconfig1-dev
  libfreerdp-client2-2 libfreerdp-server2-2 libfreerdp-shadow-subsystem2-2 libfreerdp-shadow2-2
  libfreerdp2-2 libfreetype-dev libfreetype6-dev libfribidi-dev libgcc-11-dev libgcrypt20-dev
  libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libglib2.0-dev libglib2.0-dev-bin
  libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28
  libgpg-error-dev libgraphite2-dev libgsm1 libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0
  libice-dev libicu-dev libidn2-dev libigdgmm12 libisl23 libitm1 libjpeg-turbo8-dev liblsan0
  libltdl-dev liblzo2-dev libmfx1 libmount-dev libmp3lame0 libmpc3 libmpg123-0 libnorm1 libnsl-dev
  libogg-dev libogg0 libopenmpt0 libopus0 libp11-kit-dev libpango-1.0-0 libpango1.0-dev
  libpangocairo-1.0-0 libpangoft2-1.0-0 libpangoxft-1.0-0 libpcre16-3 libpcre2-16-0 libpcre2-32-0
  libpcre2-dev libpcre2-posix3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpgm-5.3-0 libpixman-1-0
  libpixman-1-dev libpng-dev libpng-tools libpthread-stubs0-dev libpulse-dev libpulse-mainloop-glib0
  libpulse0 libquadmath0 librabbitmq4 librsvg2-2 librsvg2-common libsasl2-dev libselinux1-dev
  libsepol-dev libshine3 libsm-dev libsnappy1v5 libsndfile1 libsoxr0 libspeex1 libsrt1.4-gnutls
  libssh-gcrypt-4 libssh2-1 libssh2-1-dev libssl-dev libswresample-dev libswresample3 libswscale-dev
  libswscale5 libtasn1-6-dev libtasn1-doc libtelnet-dev libtelnet2 libthai-data libthai-dev libthai0
  libtheora0 libtirpc-dev libtool libtool-bin libtsan0 libtwolame0 libubsan1 libudfread0 libunbound8
  libuv1 libuv1-dev libva-drm2 libva-x11-2 libva2 libvdpau1 libvncclient1 libvncserver-dev
  libvncserver1 libvorbis-dev libvorbis0a libvorbisenc2 libvorbisfile3 libvpx7 libwebp-dev
  libwebsockets-dev libwebsockets16 libwinpr-tools2-2 libwinpr2-2 libwinpr2-dev libx11-dev libx264-163
  libxau-dev libxcb-render0 libxcb-render0-dev libxcb-shm0-dev libxcb1-dev libxdamage1 libxdmcp-dev
  libxext-dev libxft-dev libxrender-dev libxvidcore4 libzmq5 libzvbi-common libzvbi0 linux-libc-dev m4
  manpages-dev mesa-va-drivers mesa-vdpau-drivers nettle-dev ocl-icd-libopencl1 pango1.0-tools
  pkg-config rpcsvc-proto uuid-dev va-driver-all vdpau-driver-all winpr-utils x11proto-dev
  xorg-sgml-doctools xtrans-dev zlib1g-dev
0 upgraded, 215 newly installed, 0 to remove and 0 not upgraded.
Need to get 130 MB/131 MB of archives.
After this operation, 459 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Huh, guess I didn’t have any of them already installed.

Better get the suggested packages also. I can always remove them later.

$ sudo apt install autoconf-archive gnu-standards autoconf-doc gettext \
cpp-doc gcc-11-locales gcc-multilib make flex bison gdb gcc-doc \
gcc-11-multilib gcc-11-doc i965-va-driver-shaders \
libbluray-bdj glibc-doc libcairo2-doc libdatrie-doc \
freerdp2-x11 freetype2-doc libgcrypt20-doc libgirepository1.0-dev \
libglib2.0-doc libxml2-utils gmp-doc libgmp10-doc libmpfr-dev dns-root-data \
gnutls-bin gnutls-doc libgraphite2-utils libice-doc icu-doc libtool-doc \ 
speex libssl-doc libtelnet-utils libthai-doc gfortran \
libx11-doc libxcb-doc libxext-doc m4-doc graphicsmagick \
dpkg-dev libvdpau-va-gl1

I had to remove like ten packages from the suggested list because apt couldn’t find them. Crap I didn’t need anyway like nvidia and cuda libraires. Wait, did I just fucking install fortran?

Setting up gfortran-11 (11.4.0-1ubuntu1~22.04) ...
Setting up gfortran (4:11.2.0-1ubuntu1) ...
update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode
update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode
Processing triggers for libc-bin (2.35-0ubuntu3.8) ...

Guess so…

It’s quarter past ten at night and I’m tired and hungry. And if installing packages was this much of a pain then I really don’t want to start compiling Guacamole from source right now. Glancing over what I’ve wrote it really doesn’t look like it took that long, but there was a lot of trial and error figuring out which packages Ubuntu didn’t have. Probably would have been quicker to just add the nvidia repository instead of playing wack-a-mole by removing the packages one by one. But that would have messed up my pure FOSS system with that evil closed source nvidia software.

Peace! I’m out!

I truly do love anyone who bothers reading this crap.