Я думаю, что можно получить то, от чего Вы хотите перекрестными ссылками вывод lshw -c disk
и эта команда, udevadm info -q all -n <device>
.
Мой /dev/sda
устройство показывает следующий вывод для lshw
:
$ sudo lshw -c disk
*-disk
description: ATA Disk
product: ST9500420AS
vendor: Seagate
physical id: 0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 0003
serial: 5XA1A2CZ
size: 465GiB (500GB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=5 signature=ebc57757
Если я опрашиваю то же использование устройства devadm
Я могу узнать, каково это DEVPATH
:
$ sudo udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda
Эта строка имеет всю информацию, которую Вы ищете относительно этого устройства. Адрес PCI, "0000:00:1f.2"
, наряду с адресом SCSI, "0:0:0:0"
. Адрес SCSI является данными в 6-м положении при разбивании этих данных на наклонные черты вправо (" / ").
Обычно вы создаете файл libfoo.so.0.4.2 и symlink libfoo.so.0 -> libfoo.so.0.4.2
. Если версия api - 0.4
, и она несовместима с другими версиями 0. *
, тогда вам следует установить soname равным libfoo.so.0.4
. На самом деле soname может быть любой строкой, это нужно только для того, чтобы найти подходящую разделяемую библиотеку в вашей системе при загрузке исполняемого файла.
Многие пакеты (или дистрибутивы) используют схему именования, отличную от вашей. Например, версия libfoo 0.4.2
с api 0.4
станет libfoo.so.4.2
с soname libfoo.4
.
И при внесении существенных изменений в интерфейс, требующих не просто перекомпиляции и незначительных исправлений здесь и там, но и перезаписи большого количества кода в коде с использованием библиотеки - увеличьте «основную» основную версию путем переименования библиотеки.
Затем libfoo.4.2
превращается в libfoo-1.so.0.1
при изменении версии с 0.4.2
на 1.0.1
.
Такая схема упрощает установку нескольких версий вашей библиотеки, если какое-то старое программное обеспечение еще не было переписано на совершенно новый api.