Запустите команду перед загрузкой или установкой пакета с помощью RPM/DNF

$ join -t '|' -2 2 file1 file2
23455|abc|xyz|v343v
23455|abc|xyz|z565z
23455|abc|xsd|v343v
23455|abc|xsd|z565z
34433|wer|sad|c9898
45655|fdf|fcd|b2323

Это выполняет реляционную операцию JOIN для двух файлов. -t '|'сообщает join, что |используется в качестве разделителя полей во входных данных, а -2 2указывает использовать второе поле во втором из двух файлов (, а не в первом ). ].

Это предполагает, что столбец соединения отсортирован в двух файлах.

Разве они не рассортированы,затем предварительно -отсортировать файлы с помощью

sort -t '|' -k1 -o file1 file1
sort -t '|' -k2 -o file2 file2

или сортировать одновременно с вызовом join, используя подстановку процесса в оболочке, которая поддерживает это:

join -t '|' -2 2 \
    <( sort -t '|' -k1 file1 ) \
    <( sort -t '|' -k2 file2 )
2
11.05.2020, 00:07
2 ответа

Для yum (RHEL/CentOS 7 и ниже )существуют пакеты yum-plugin-pre-transaction-actionsи yum-plugin-post-transaction-actions. Примеры того, как использовать его для до -транзакции и после -транзакции , а также пример файла:

#action_key:transaction_state:command
# action_key can be: pkgglob, /path/to/file (wildcards allowed)
# transaction_state can be: install,update,remove,any
# command can be: any shell command
#  the following variables are allowed to be passed to any command:
#   $name - package name
#   $arch - package arch
#   $ver - package version
#   $rel - package release
#   $epoch - package epoch
#   $repoid - package repository id
#   $state - text string of state of the package in the transaction set
#
# file matches cannot be used with removes b/c we don't have the info available

*:install:touch /tmp/$name-installed
zsh:remove:touch /tmp/zsh-removed
zsh:install:touch /tmp/zsh-installed-also
/bin/z*h:install:touch /tmp/bin-zsh-installed
z*h:any:touch /tmp/bin-zsh-any

# each action is expanded once for each matching package, and no action is
# executed twice per transaction, for example
*:install:echo $repoid >>/tmp/repos
# will write each repo only once to /tmp/repos, even if multiple packages from
# the same repo were installed

Для dnf (RHEL/CentOS 8 и выше )есть подключаемый модуль по адресуhttps://github.com/rpm-software-management/dnf-plugins-core/blob/master/plugins/post-transaction-actions.pyдля транзакции после -, но нет для транзакции до -.https://bugzilla.redhat.com/show_bug.cgi?id=967264иhttps://bugzilla.redhat.com/show_bug.cgi?id=1788574есть дополнительная информация. Предполагается, что RHEL 8.2 имеет функцию транзакции post -. Если вам действительно нужны предварительные -транзакции, вы можете изменить код транзакции после -, чтобы создать свой собственный плагин для предварительных -транзакций (и отправить его как PR ).

3
28.04.2021, 23:15

В RPM можно определить скриптлет %pretrans , который запускается до установки пакета. Это не совсем то же самое, что упаковка Debian, поскольку она является частью самого пакета, а не внешним.

0
28.04.2021, 23:15

Теги

Похожие вопросы