Problem with non-existing dir /lib/udev/rules.d/

Recently I have switched to leap 15.4 (from 15.2). Everything works well but I do have a problem with installation of a driver for my BROTHER printer MFCL2700DWR. Namely, when installing the last package for scanning brscan-skey-0.3.1-2.x86_64.rpm the process stops with the message: ls: cannot access ‘/lib/udev/rules.d/*.rules’: No such file or directory.

I have checked that the only existing directories with rules.d inside are /etc/polkit-1/rules.d /etc/udev/rules.d /usr/share/polkit-1/rules.d and /usr/lib/udev/rules.d As the same rpm-package was installed without any problems on my laptop running Leap 15.2 I conclude that in the old version of Leap there was such a directory. I could imagine that creating a sym-link named /lib/udev/rules.d/ and directing to /usr/lib/udev/rules.d would solve the problem.
So I need and advice whether my proposal is good or I should do something else? Would be grateful for any advice.

I’m not familiar with that printer, so my advice might be bad.

You should have a directory “/etc/udev/rules.d” and that would be the appropriate place for any changes. Maybe create the symlink you suggest, but make it a symlink to “/etc/udev/rules.d”.

1 Like

And maybe that having the brand and type of the printer in the title will draw the attention of those who have the same or similar printer. As it now there is a big chance that those people will skip this thread.

1 Like

Just to add to what the others have already posted here, the udev rules are only applicable to USB-connected devices. I know that the proprietary brscan* package will add the requisite udev rules file to /etc/udev/rules.d/ directory (eg I have 55-brother-brscan4-libsane-type1.rules present introduced by the brscan4 package for my DCP7055 multifunction device). The generic /usr/lib/udev/rules.d/70-printers.rules should be sufficient for handling most USB-connected printer devices.

I don’t remember what I did, which was years before upgrading to 15.4, but here’s what I have for my two Brothers used only via ethernet:

# rpm -qa | egrep '5470|8910'
hl5470dwcupswrapper-3.0.0-1.i386
hl5470dwlpr-3.0.0-1.i386
mfc8910dwcupswrapper-3.0.0-1.i386
mfc8910dwlpr-3.0.0-1.i386
# locate brscan | wc -l
79
# locate brscan | grep lib
/etc/udev/rules.d/55-brother-brscan4-libsane-type1.rules

To the op. I am using tumbleweed not leap. Here /lb is link to /usr/lib.
I am using an old multifunction brother printer/scanner and I don’t have the brscan.rules anywhere. This printer/scanner is connected via usb and working fine. Could be symlinking to /usr/lib is the way for you.
In /usr/lib/udev/rules.d the only thing I saw was regarding libsane.rules and printer.rules.

See deano_ferrari post.

Thanks a lot to all. The problem is indeed solved by just adding sym-link named /lib/udev/rules.d/ directing to /usr/lib/udev/rules.d. After it the scanner starts to work even without reinstallation of the package brscan-skey-0.3.1-2.x86_64.rpm! But I should confirm now that the developers of leap 15.4 have indeed somewhat modified the name of /lib/udev/rules.d (in comparison to leap 15.2) by adding an prefix usr and, thus, introducing some compatibility problems.

That’s more of a Brother packaging issue to fix.

The brscan-skey-*** package provides a daemon that listens for a Brother scanner to send a scan job remotely. Something I’ve never felt the need to install.