в чем может быть разница?
Основная причина разного количества строк заключается в том, что вывод, производимый yum
, является форматируется так, чтобы каждое поле выстраивалось по вертикали (независимо от длины имени пакета и / или номера версии). Это достигается за счет использования двух строк для перечисления таких пакетов и заполнения второй строки пробелами для правильного выравнивания полей.Следующий вывод (из окна CentOS 6) показывает, что две строки используются для перечисления пакета device-mapper-persistent-data.x86_64
:
device-mapper-libs.x86_64 1.02.95-3.el6_7.4 @clearos-verified-updates
device-mapper-persistent-data.x86_64
0.3.2-1.el6 @clearos
dhclient.x86_64 12:4.1.1-49.P1.v6 @clearos-verified-updates
Однако это не только , и это можно увидеть, проанализировав вывод двух команд перед их сравнением:
Для вывода команды rpm
:
Отсортируйте его так, чтобы пакеты начинались с заглавной буквы появляются перед строчными буквами:
rpm -qa | LC_ALL = C sort
Используйте команду sed
, чтобы удалить номера версий пакетов:
rpm -qa | LC_ALL = C сортировать r | sed 's / - [^ -] * - [^ -] * $ //'> | installed.rpm
Для вывода команды yum
:
Удалите первые две строки заголовка ( Загруженные плагины
и Установленные пакеты
):
Загруженные плагины: etckeeper, fastestmirror
Установленные пакеты
Мы можем использовать sed
для этого:
yum list installed | sed '1,2d;'
Мы также можем использовать sed
, чтобы удалить все строки, которые являются продолжением списка пакетов (эти строки начинаются с некоторого количества пробелов, чтобы все версии пакета совпадают).
установлен список конфет | sed '1,2d; / ^ /d;s/\..*//'> | installed.yum
Теперь мы можем использовать команду diff
для сравнения вывода двух файлов. Вот результаты из окна CentOS 6:
# diff installed.{rpm,yum}
239,243d238
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
Это показывает, что rpm -qa
также включает списки пакетов для открытых ключей, которым доверяют подписывать пакеты, в то время как yum
] исключает эти пакеты.
хочу отметить по поводу этой проблемы:
Сам проект bluez по-прежнему содержит файл rfcomm.c, который можно легко скомпилировать с помощью:
gcc -lbluetooth rfcomm.c -orfcomm -DVERSION=xyz
... всего один файл, нет необходимости компилировать весь проект bluez. где xyz — версия загруженного bluez tar.xz исходного кода (5.46 теперь ). перед загрузкой следует сначала проверить собственный bluetoothd -v
и загрузить соответствующий источник. bluez -libs зависит только от успешной компиляции.
Мне нужен был rfcomm для armv7 (raspberry 2 )а для rfcomm нет пакета aur, и это был единственный способ, но он работает хорошо.
Все еще не уверен, почему rfcomm устарел, без хорошей альтернативы, и как общаться с bluetooth, поскольку это был последовательный порт другим способом. Потому что даже вы являетесь экспертом по python плюс эксперт по DBUS... (, как и вышеупомянутый владелец проекта, вероятно, )... тем не менее таким образом был предоставлен только fifo, а не реальное символьное устройство в /dev/... что все остальные программы (, такие как arduino ), могут видеть и работать.
Я нашел другое возможное решение. Я нашел это, копаясь в чьем-то репозитории git hub. Это использует python3, встроенный в модуль сокета.
Предпосылки:
То есть можно использовать ту же точку, что и rfcomm.
$python3
>>> import socket
>>> sock = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
>>> adapter = '00:11:22:33:44:55' #<adapter address>
>>> device = '55:44:33:22:11:00' #<device address>
>>> sock.bind((adapter, 1))
>>> sock.connect((device, 1))
## If not pinned it will ask you. You can use/adapt the bluez simple-agent for headless pinning
>>> sock.send(b'hello\n')
>>> sock.recv(100)
>>> sock.close()
Недавно я нашел проект bluez -tools , целью которого является реализация утраченной функциональности с помощью Bluez current D -Bus api.
Инструменты Bluez -доступны в ArchLinux из репозитория сообщества. Я не тестировал это, и на странице github указано, что он все еще находится в бета-версии. Но, согласно документации, серийный номер bt -должен быть в состоянии заменить старый bluez rfcomm, а устройство bt -адаптер+bt -агент+bt -имеет функциональность hcitool.
Изменить :Судя по списку проблем и последним коммитам, инструменты bluez -больше не поддерживаются активно.