如何恢复 /etc/udev/rules.d 文件结构?

如何恢复 /etc/udev/rules.d 文件结构?

为了解决驱动程序问题,我决定重命名

/etc/udev/rules.d

进入

/etc/udev/rules.d.gold

这是一个绝妙的主意,因为现在我无法撤销我的更改:

mkdir: cannot create directory rules.d : file exists

原始状态

ls -la
total 32
drwxr-xr-x   4 root root  4096 Fev  8 12:50 .
drwxr-xr-x 150 root root 12288 Fev  8 11:15 ..
drwxr-xr-x   2 root root  4096 Abr 12  2016 hwdb.d
-rw-r--r--   1 user user   435 Dez 14  2017 rules.d        <- A FILE
drwxr-xr-x   2 root root  4096 Fev  5 18:59 rules.d        <- A FOLDER
-rw-r--r--   1 root root   153 Abr 12  2016 udev.conf

当前状态

ls -la
total 32
drwxr-xr-x   4 root root  4096 Fev  8 12:50 .
drwxr-xr-x 150 root root 12288 Fev  8 11:15 ..
drwxr-xr-x   2 root root  4096 Abr 12  2016 hwdb.d
-rw-r--r--   1 user user   435 Dez 14  2017 rules.d        <- A FILE
drwxr-xr-x   2 root root  4096 Fev  5 18:59 rules.d.gold   <- A FOLDER
-rw-r--r--   1 root root   153 Abr 12  2016 udev.conf

最初有一个同名的文件和文件夹。我无法重新创建它因为不可能创建同名的文件和文件夹

现在怎么办?我的操作系统是 Ubuntu 16.04。


编辑:

查看我的 Ubuntu 18.4 虚拟安装,该文件rules.d不存在。

我不确定这个文件在我的主机系统中起什么作用,也许它不应该在那里。文件的内容是:

# version 0002
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0007", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0009", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000d", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0013", MODE="666"
ATTR{idVendor}=="03fd", ATTR{idProduct}=="0015", MODE="666"

答案1

在 /etc 文件夹中有一个命名约定 -.d目录名称表示文件目录。
例如 - 将/etc/apt/sources.list(文件) 与/etc/apt/sources.list.d/(包含*.list文件的目录) 进行比较。这种命名也用于 udev:

$ ls /etc/udev/ -d
/etc/udev/

$ ls /etc/udev/rules.d/ -d
/etc/udev/rules.d/

然后关于恢复 - 我们可以检查哪个包安装文件/etc/udev/rules*

$ dpkg -S /etc/udev/rules*
udev: /etc/udev/rules.d

因此我们需要重新安装udev指定特殊选项的软件包--force-confmiss(请参阅man dpkg):

--force-things...
确认:如果缺少 conffile 并且软件包中的版本确实发生了变化,请始终在不提示的情况下安装缺少的 conffile。这很危险,因为这意味着不保留对文件所做的更改(删除)。

sudo mv /etc/udev /etc/udev.old
apt-get download udev
sudo dpkg --force-confmiss -i udev_*.deb 

注意:你可以阅读有关 Udev 规则的更多信息ArchLinux 维基

相关内容