Good Morning(or good afternoon, depending on when i post this, or your time-zone). i'm hoping to finish up with all this installing libs and tools this morning. basically, to sumarize the current situation, i've come to discover, as i've brushed up on linux, that while some of the dependencies i have installed over the past 2 days were genuinely out of date or non-existant on my system, there appear to be multiple that were already present on the system(probably in a sufficiently updated form for my purposes), but which existed in a special folder outside of PATH, and were consequently not referenced accordingly during build, thus requiring me to install them again. that folder is '/usr/lib/x86_64-linux-gnu/'(perhaps also '/usr/lib/' for that matter - idk, i'm sort of a newb). At this point, i don't expect i'm going to do everything perfectly, but i'm thinking it might be easier just to finish installing what i need manually, rather than trying to go back and uninstall things, and address the path variable issues. I expect if i ever get around to actualy writing software in linux, i'll learn a whole bunch then about path variables and setting up build environments. for now, i just want to get this working, and i can't see how installing some slightly updated libs should harm anything, since the ones for the system itself all seem to be in a separate location, and i'm hoping these duplicates wont affect anything with that. i guess a real potential problem could be that if i try to write and publish a linux app, i could end up with some issues with portability, but that should be fixable by noting which dependencies i have installed now, and then writing an installer. ...so it seems like the mission is clear. here i go now - hopefully there is not too much more to do this morning(i got lots of other stuff waiting for me when i finish this). ...so i think i left off with freetype. ...btw $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin $ find /usr -name "freetype*" /usr/share/doc/libcairo-perl/examples/freetype-font.pl /usr/lib/x86_64-linux-gnu/girepository-1.0/freetype2-2.0.typelib ...so it is there in the system, but i don't care at this point. i will try and install a duplicate/new-version $ apt search freetype2 ...do i choose freetype2-doc? i'm just looking for freetype itself at this point. check here: http://freetype.org/download.html https://download.savannah.gnu.org/releases/freetype/ ...it looks like freetyp-2.10.1 is from 2019. perhaps i should get the doc as well. $ cd /home/trygve/Documents/2025/blu-ray-stuff/freetype-2.10.1/ $ ./configure ... checking for zlib.h... yes checking for BZIP2... no checking for BZ2_bzDecompress in -lbz2... no checking for LIBPNG... no checking for libpng-config... no checking for HARFBUZZ... no checking for library containing clock_gettime... none required checking for python3... python3 checking for pip3... no checking for pip2... no checking for pip... no configure: creating ./config.status config.status: creating ftoption.h config.status: creating unix-cc.mk config.status: creating unix-def.mk config.status: creating ftconfig.h config.status: executing libtool commands configure: Library configuration: external zlib: yes (autoconf test) bzip2: no libpng: no harfbuzz: no configure: Warning: `make refdoc' will fail since pip package `docwriter' is not installed. To install, run `missing install docwriter', or to use a python virtual environment, run `make refdoc-venv' (requires pip package `virtualenv'). ...in dif window: $ find /usr -name "pip*" /usr/src/linux-headers-4.19.0-16-common/include/linux/pipe_fs_i.h /usr/share/man/man2/pipe.2.gz /usr/share/man/man2/pipe2.2.gz /usr/share/man/man7/pipe.7.gz /usr/share/icons/ePapirus/16x16/actions/pipe.svg /usr/share/icons/ePapirus/22x22/actions/pipe.svg /usr/share/icons/ePapirus/24x24/actions/pipe.svg /usr/share/icons/Papirus/16x16/apps/pipal.svg /usr/share/icons/Papirus/16x16/actions/pipe.svg /usr/share/icons/Papirus/48x48/apps/pipal.svg /usr/share/icons/Papirus/22x22/apps/pipal.svg /usr/share/icons/Papirus/22x22/actions/pipe.svg /usr/share/icons/Papirus/24x24/apps/pipal.svg /usr/share/icons/Papirus/24x24/actions/pipe.svg /usr/share/icons/Papirus/32x32/apps/pipal.svg /usr/share/icons/Papirus/64x64/apps/pipal.svg /usr/share/icons/Papirus-Dark/16x16/actions/pipe.svg /usr/share/icons/Papirus-Dark/22x22/actions/pipe.svg /usr/share/icons/Papirus-Dark/24x24/actions/pipe.svg /usr/lib/python3/dist-packages/pyudev/_os/pipe.py /usr/lib/python2.7/pipes.py /usr/lib/python3.7/pipes.py $ find /usr -name "docwriter*" [no results] ...i guess it is not there. still this wasn't actually an error. will it make? ...back to my build window $ make ...success??? $ make check ...There is no validation suite for this package. make: Nothing to be done for 'check'. $ sudo make install ...done """ ... Libraries have been installed in: /usr/local/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages .... """ $ find /usr -name "freetype*" /usr/local/include/freetype2 /usr/local/include/freetype2/freetype /usr/local/include/freetype2/freetype/freetype.h /usr/local/share/aclocal/freetype2.m4 /usr/local/lib/pkgconfig/freetype2.pc /usr/share/doc/libcairo-perl/examples/freetype-font.pl /usr/lib/x86_64-linux-gnu/girepository-1.0/freetype2-2.0.typelib ...that is a few more entries. it is possible the previouse ones were just references from other libs. also, it's funny to note that i already have entires for libaacs.pc, libgcrypt.pc, and gpg-error.pc in my "/usr/local/lib/pkgconfig/" directory from installing them 2 days ago. so i already had a version of pkgconfig, which seemed sufficient for installing libaacs. libbluray however seemed to want a new version, so now supposedly i should have 2 versions on file. i think the old version used the old name - let me check: $ find /usr -name "pkgconfig*" /usr/local/lib/pkgconfig /usr/share/pkgconfig /usr/lib/x86_64-linux-gnu/pkgconfig /usr/lib/rpm/pkgconfigdeps.sh /usr/lib/rpm/fileattrs/pkgconfig.attr /usr/lib/pkgconfig $ find /usr -name "pkg-config*" /usr/local/share/doc/pkg-config /usr/local/share/doc/pkg-config/pkg-config-guide.html /usr/local/share/man/man1/pkg-config.1 /usr/local/bin/pkg-config /usr/share/lintian/data/files/pkg-config-bad-regex /usr/share/bash-completion/completions/pkg-config ...interesting, '/usr/local/bin/pkg-config' is a shared library, but i can't seem to find the actually library for the old version that must have already been installed. perhaps the name is different? $ find /usr -name "pkgcfg*" [no results] $ find /usr -name "pkg-cfg*" [no results] ...idk, i guess it will remain a mystery. Onwards! ...now that i should have freetype(note, no man-page for freetype), lets give it another go at libbluray: in /libbluray-1.3.1/ window - actually let me open a new window and $ cd /home/trygve/Documents/2025/blu-ray-stuff/libbluray-1.3.1/ ...and let me check everything is vanilla again $ echo $PKG_CONFIG_PATH [blank] $ ./configure ... checking pkg-config is at least version 0.9.0... yes checking for LIBXML2... yes checking for FT2... yes checking for FONTCONFIG... no configure: error: Package requirements (fontconfig) were not met: No package 'fontconfig' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables FONTCONFIG_CFLAGS and FONTCONFIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. $ find /usr -name "fontconfig*" /usr/share/doc/fontconfig-config /usr/share/doc/fontconfig /usr/share/doc/fontconfig/fontconfig-user.html /usr/share/doc-base/fontconfig-user /usr/share/lintian/overrides/fontconfig /usr/share/xml/fontconfig /usr/share/fontconfig /usr/lib/x86_64-linux-gnu/girepository-1.0/fontconfig-2.0.typelib /usr/lib/rpm/fontconfig.prov ...that appears to be a few entries there. ...funny, "/usr/lib/rpm/" - that is for redhat. i thought MX was on debian. interesting, i didn't realize i had rpm($ man rpm). ...about "/usr/lib/x86_64-linux-gnu/girepository-1.0/" girpository is related to gtk: "GIRepository is used to manage repositories of namespaces. Namespaces are represented on disk by type libraries (.typelib files)". "Lintian is a comprehensive package checker for Debian packages". ...from debian wiki:"The doc-base package implements a flexible mechanism for handling and presenting documentation". ...there are some docs, and a "conf.avail" inside "/usr/share/fontconfig/", and a "fonts.dtd" inside "/usr/share/xml/fontconfig/". ...but where is the actual fontconfig sharedlibrary? this is why i like dylibs on mac(just search "*.dylib"). where is the library? did i try the wrong name? $ find /usr -name "font-config*" [blank] ...i guess i have no choice but to install fontconfig now. $ apt search fontconfig Sorting... Done Full Text Search... Done fbterm/stable 1.7-4+b1 amd64 fast framebuffer based terminal emulator for Linux fontconfig/stable,now 2.13.1-2 amd64 [installed] generic font configuration library - support binaries fontconfig-config/stable,stable,now 2.13.1-2 all [installed] generic font configuration library - configuration ...it is already installed? $ find / \( -path "/proc" -o -path "/home" -o -path "/usr" \) -prune -o -name "fontconfig*" /var/cache/fontconfig /var/lib/dpkg/info/fontconfig.postrm /var/lib/dpkg/info/fontconfig-config.postinst /var/lib/dpkg/info/fontconfig-config.config /var/lib/dpkg/info/fontconfig.list /var/lib/dpkg/info/fontconfig-config.prerm /var/lib/dpkg/info/fontconfig.postinst /var/lib/dpkg/info/fontconfig.triggers /var/lib/dpkg/info/fontconfig-config.postrm /var/lib/dpkg/info/fontconfig-config.templates /var/lib/dpkg/info/fontconfig-config.list /var/lib/dpkg/info/fontconfig-config.md5sums /var/lib/dpkg/info/fontconfig-config.preinst /var/lib/dpkg/info/fontconfig.md5sums /var/lib/dpkg/info/fontconfig-config.conffiles /etc/skel/.cache/fontconfig $ find /proc -name "fontconfig*" [i suspect i wont find it here] ...i should read the man pages for dpkg and aptitue($ man dpkg, $ man aptitude). not sure what all the files in '/var/lib/dpkg/info/' are about. this is good website(terminal window is so small): https://man7.org/linux/man-pages/man1/dpkg.1.html. note there is not page for "aptitude" on that site(huh?). ...i found this about '/etc/skel'(https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/etc.html): "/etc/ - This is the nerve center of your system, it contains all system related configuration files in here or in its sub-directories. A "configuration file" is defined as a local file used to control the operation of a program; it must be static and cannot be an executable binary. For this reason, it's a good idea to backup this directory regularly. It will definitely save you a lot of re-configuration later if you re-install or lose your current installation. Normally, no binaries should be or are located here.... .../etc/skel/ - The default files for each new user are stored in this directory. Each time a new user is added, these skeleton files are copied into their home directory. An average system would have: .alias, .bash_profile, .bashrc and .cshrc files. Other files are left up to the system administrator.". i should probably read more of this some time: https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/c23.html. ...perhaps i should start here: https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html. "/var - Contains variable data like system logging files, mail and printer spool directories, and transient and temporary files. Some portions of /var are not shareable between different systems. For instance, /var/log, /var/lock, and /var/run. Other portions may be shared, notably /var/mail, /var/cache/man, /var/cache/fonts, and /var/spool/news. Why not put it into /usr? Because there might be circumstances when you may want to mount /usr as read-only, e.g. if it is on a CD or on another computer. '/var' contains variable data, i.e. files and directories the system must be able to write to during operation, whereas /usr should only contain static data. Some directories can be put onto separate partitions or systems, e.g. for easier backups, due to network topology or security concerns. Other directories have to be on the root partition, because they are vital for the boot process. 'Mountable' directories are: '/home', '/mnt', '/tmp', '/usr' and '/var'. Essential for booting are: '/bin', '/boot', '/dev', '/etc', '/lib', '/proc' and '/sbin'... .../var/lib/ - Holds dynamic data libraries/files like the rpm/dpkg database and game scores. Furthermore, this hierarchy holds state information pertaining to an application or the system. State information is data that programs modify while they run, and that pertains to one specific host. Users shouldn't ever need to modify files in /var/lib to configure a package's operation. State information is generally used to preserve the condition of an application (or a group of inter-related applications) between invocations and between different instances of the same application. An application (or a group of inter-related applications) use a subdirectory of /var/lib for their data. There is one subdirectory, /var/lib/misc, which is intended for state files that don't need a subdirectory; the other subdirectories should only be present if the application in question is included in the distribution. /var/lib/'name' is the location that must be used for all distribution packaging support. Different distributions may use different names, of course... .../var/cache/ - Is intended for cached data from applications. Such data is locally generated as a result of time-consuming I/O or calculation. This data can generally be regenerated or be restored. Unlike /var/spool, files here can be deleted without data loss. This data remains valid between invocations of the application and rebooting of the system. The existence of a separate directory for cached data allows system administrators to set different disk and backup policies from other directories in /var." ...after skimming through all this, i think it is safe to assume that find did not return any actual shared library for fontconfig. but where is it installed? $ apt-cache policy fontconfig fontconfig: Installed: 2.13.1-2 Candidate: 2.13.1-2 Version table: *** 2.13.1-2 500 500 http://deb.debian.org/debian buster/main amd64 Packages 100 /var/lib/dpkg/status ...doesn't tell me anything useful. is it packaged up in some blob? why cant i find it. i guess i have to install it manually again. https://www.freedesktop.org/wiki/Software/fontconfig/ https://www.freedesktop.org/software/fontconfig/release/ ...there are he old releases. which number should i try. 2019 seems to be my special number right now, and i think the version of libbluray im trying is from 2022(perhaps a mistake). perhaps i should just stick with 2019. note, the current supposed installed fontconfig(2.13.1) is from 2018. configure did not give a recomendation on version number in the error. 2.13.92 is from 2019 - i will use that. ...new window and $ ./configure $ cd /home/trygve/Documents/2025/blu-ray-stuff/fontconfig-2.13.92/ ...checking for xmlparse.h... no configure: error: *** expat is required. or try to use --enable-libxml2 $ ./configure --enable-libxml2 ...worked this time $ make .../home/trygve/Documents/2025/blu-ray-stuff/fontconfig-2.13.92/missing: line 81: gperf: command not found WARNING: 'gperf' is missing on your system. You might have modified some files without having the proper tools for further handling them. Check the 'README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package contains this missing 'gperf' program. make[2]: *** [Makefile:1018: fcobjshash.h] Error 1 make[2]: Leaving directory '/home/trygve/Documents/2025/blu-ray-stuff/fontconfig-2.13.92/src' make[1]: *** [Makefile:599: all-recursive] Error 1 make[1]: Leaving directory '/home/trygve/Documents/2025/blu-ray-stuff/fontconfig-2.13.92' make: *** [Makefile:483: all] Error 2 ...new window $ find /usr -name "gperf*" [no results] $ apt search gperf ...gperf/stable 3.1-1 amd64 Perfect hash function generator $ sudo apt install gperf successs! wow, apt actually installed something! $ find /usr -name "gperf*" /usr/share/doc/gperf /usr/share/doc/gperf/gperf.html /usr/share/man/man1/gperf.1.gz /usr/share/doc-base/gperf /usr/share/info/gperf.info.gz /usr/bin/gperf ...looks like it is there now. and there is a manfile($ man gperf). ...back to /fontconfig-2.13.92/ $ make ...success? $ make check ...pass $ sudo make install ...done ...now what? right, back to /libbluray-1.3.1/ $ ./configure ...checking for ant... no configure: error: BD-J requires ANT, but ant was not found. Install ant or disable jar file building (--disable-bdjava-jar) ...do i want ant? ...BREAK(LUNCHTIME) ...im back(fyi, i'm possible missing cake for this now). ...so the question is do i want appache ant? i don't think it is installed. $ find / \( -path "/proc" -o -path "/home" \) -prune -o -name "ant*" ...this obviously returned alot of hits for antix(since i'm on MX), but i dont see much in the way of "ant" - pretty sure it is not installed. do i want to install it? there is an option to "--disable-bdjava-jar". i can always install ant later. will libbluray work iwthout it? what should i do? $ ./configure --disable-bdjava-jar ... Summary: -------- BD-J type: j2se build JAR: no Font support (freetype2): yes Use system fonts (fontconfig): yes Metadata support (libxml2): yes External libudfread: no Build examples: yes $ make ...a couple warnings and done. $ make check ...nothing $ sudo make install ...that was quick ...i guess is should test out vlc now. Blu-ray error: Missing AACS configuration file! Your input can't be opened: VLC is unable to open the MRL 'bluray:///dev/sr1'. Check the log for details. from the log: libbluray: First play: 0, Top menu: 0 HDMV Titles: 8, BD-J Titles: 3, Other: 3 ...that looks like the same error from after i install libaacs. actually it is a little different than before. before it said "This Blu-ray Disc needs a library for AACS decoding, and your system does not have it.". now it appears to be complaining about config file, which is not really surprising since i installed a new version of pkg-config after installing libaacs. ...actually it might be referring to the keydb.cfg file, not anything related to pkg-config: https://askubuntu.com/questions/1325752/missing-aacs-configuration-file-error-when-playing-blueray-movies ...this is strange because i put it in the correct spot. ...well, funny thing i just renamed "keydb.cfg" to "KEYDB.cfg" in my ~/.config/aacs/ folder and it is now working. menus don't work because i had to disable java, but the it goes right into the feature now. Happy! Java required: This Blu-ray disc requires Java for menus support. The disc will be played without menus. ...maybe i will install apache ant later, and rebuild libbluray with java enabled. for now i am calling this done, and movign on to my other very important things i need to do now. thanks for your attention. that's it for now! did this whole thing take me 2.5 days? $ ./configure $ make $ make check $ sudo make install $ ./configure $ make $ make check $ sudo make install $ ./configure $ make $ make check $ sudo make install $ ./configure $ make $ make check $ sudo make install $ ./configure $ make $ make check $ sudo make install $ ./configure $ make $ make check $ sudo make install ...some extra junk https://www.gnu.org/software/gperf/ decided not ot install apache ant(dissabled bd-java instead) https://ant.apache.org/ https://ant.apache.org/manual/install.html perhaps i should install ant??? https://forum.doom9.org/showthread.php?p=1932548 related? https://aur.archlinux.org/packages/lib32-libbluray further reading https://en.wikipedia.org/wiki/Advanced_Access_Content_System