Как установить несколько RPM-пакетов, используя сценарий оболочки и взяв его из входного файла, разделенного запятыми? [закрыто]

Un mount -t nfsfalla con Stale file handlesi el servidor tiene algunas entradas de exportación obsoletas para ese cliente.

Escenario de ejemplo :esto podría suceder cuando el servidor se reinicia sin que el cliente desmonte primero los volúmenes nfs. Cuando el servidor está de vuelta y el cliente desmonta e intenta montar el volumen nfs, el servidor puede responder con:

mount.nfs: Stale file handle

Puede verificar esto mirando /proc/fs/nfs/exportso /proc/fs/nfsd/exports. Si hay una entrada para el cliente, podría ser una obsoleta.

Puede arreglar esto explícitamente no exportando -y reexportando -las exportaciones relevantes en el servidor. Por ejemplo, para hacer esto con todas las exportaciones:

# exportfs -ua
# cat /proc/fs/nfs/exports
# exportfs -a

Después de esto, el mount -t nfs...del cliente debería tener éxito.

Tenga en cuenta que montar el rendimiento ESTALEes bastante diferente de alguna otra llamada del sistema (como open/readdir/unlink/chdir... )que devuelve ESTALE. La exportación está obsoleta frente a un identificador de archivo obsoleto. Un identificador de archivo obsoleto ocurre fácilmente con NFS (, p. un cliente tiene un identificador de archivo pero el archivo se eliminó en el servidor ).

1
13.01.2020, 12:02
3 ответа

Вы можете использовать:

yum install $(awk -F ',' 'BEGIN {ORS=" "} {for(i=1;i<=NF;i++) {print $i}}' filename)
Команда

awkдаст имена пакетов, разделенные пробелом, в качестве входных данных для yum.

2
27.01.2020, 23:18

У меня нет под рукой системы на основе rpm, чтобы проверить это, но предположим, что ваш список называется rpmlist.txt и вы хотите установить его с помощью rpm, а не yum.

Сначала сделай:

for i in `cat rpmlist.txt | tr ',' '\n'`; do echo $i ; done

если выходные данные показывают пакеты построчно, это должно работать с:

for i in `cat rpmlist.txt | tr ',' '\n'`; do rpm -i $i ; done

Примечание:вы можете заменить rpm -i на yum -y(-y гарантирует, что вам не нужно соглашаться на установку пакетов он просто устанавливает их, не спрашивая.)

1
27.01.2020, 23:18

Вы можете использовать xargsдля подачи значений, разделенных запятыми, в команду:

xargs -d',' yum install < inputfile.csv

Если вы хотите установить пакеты один за другим, вы можете передать флаг -n 1в xargs:

xargs -n1 -d',' yum install < inputfile.csv
  • <отправляет входной файл в xargs
  • xargs -d','принимает ',' в качестве разделителя для создания списка аргументов из входного файла для передачи их в yum.

Вы можете найти и разделить строки, начинающиеся с packagelistс помощьюawk:

</mstr/mstr_input_file.txt awk -F'=' '/packagelist=/{print $2}' | xargs -n1 -d',' yum install
1
27.01.2020, 23:18

Теги

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