Как получить дерево зависимостей пакетов для офлайн-загрузки, когда у вас нет доступа к Интернету на linux

Если я правильно понимаю, все ваши данные находятся внутри {} , и вы хотите распечатать те записи, у которых service_description совпадает с Multi Lookup . Если это так, вы можете использовать классную уловку perl .

Perl имеет «режим абзаца», в котором записи (строки) определяются пустыми строками. Итак, если вы добавляете символ новой строки после каждого } , вы можете просто сделать:

sed 's/}/}\n/' file | perl -00ne '/service_description\s*Multi Lookup/ && print'

sed добавляет \ n после каждого } . Perl -00 включит режим абзаца, а -ne заставит его читать каждую строку ввода (здесь строка означает абзац) и применять сценарий, заданный -e к нему. В результате печатаются записи, у которых service_description совпадает с Multi Lookup .

В качестве альтернативы вы можете установить разделитель записей Perl (который определяет «строку»), переменную $ / , в самом скрипте и избежать шага sed

perl -ne 'BEGIN{$/="}\n"}/service_description\s*Multi Lookup/ && print' file
1
11.05.2018, 11:09
1 ответ

Esta información proviene de una publicación de blog que escribí hace algún tiempo.

Primero, cree una máquina virtual y realice una instalación nueva de la misma versión de RHEL en ella. Asegúrese de realizar una instalación mínima para que los paquetes instalados en la máquina se mantengan al mínimo requerido para que la máquina funcione.

Luego, ejecute los siguientes comandos en la máquina:

[vm]# mkdir /root/tmppkg
[vm]# yum --downloadonly --downloaddir=/root/tmppkg install foobar

Yum descargará Foobar y todas sus dependencias de forma recursiva, almacenando los RPM en el directorio mencionado anteriormente.

Cree un repositorio a partir del conjunto de paquetes descargados por Yum.

[vm]# chown -R root:root /root/tmppkg
[vm]# createrepo /root/tmppkg
[vm]# chmod -R 755 /root/tmppkg

Transfiera el directorio tmppkgen el servidor (a través de una memoria USB o CD -ROM )y colóquelo en el directorio /share. Luego cree un archivo /etc/yum.repos.d/local.repocomo tal:

[local]
name=Local repository
baseurl=file:///share/tmppkg
enabled=1
gpgcheck=0
protect=1

Ahora puede instalar el paquete Foobar en el servidor de la forma habitual. El administrador de paquetes obtendrá todo el contenido necesario del repositorio local recién creado:

[server]# yum install foobar

Una vez que haya instalado el paquete, el directorio /share/tmppkgse puede eliminar de forma segura.

3
27.01.2020, 23:23

Теги

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