yum-buliddep
управляйте устанавливает зависимости для создания пакета из источника, не устанавливая его. При использовании конфетки для установки об/мин, она установит зависимости из удаленных источников, если пакеты будут доступны.
yum install /root/x86_64/asterisk-1.8.12.2-1.fc15.x86_64.rpm
На более старых версиях конфетки Вы, возможно, должны использовать localinstall
для локального файла:
yum localinstall /root/x86_64/asterisk-1.8.12.2-1.fc15.x86_64.rpm
Вы, кажется, смазываете список имён файлов, а не самих файлов. <(cat files.txt)
просто перечисляет файлы. Попробуйте <(cat $(cat files.txt))
, чтобы на самом деле скомкатентовать их и найти их как один поток, или
grep -i 'foo' $(cat files.txt)
, чтобы дать grep всем файлам.
Однако, если в списке слишком много файлов, у вас могут возникнуть проблемы с количеством аргументов. В таком случае я бы просто написал
while read filename; do grep -Hi 'foo' "$filename"; done < files.txt
Вы также можете сделать, чтобы пример Ориона был самым простым:
for i in $(cat files.txt); do grep -i 'foo' $i ; done
(для каждого файла, указанного в файлах. Atxt Выполните команду grep на нем.)
Посмотрите на http://mirror.centos.org/centos/6/os/x86_64/Packages/ , и вы узнаете, что можно установить (если вы, конечно, не добавили больше репозиториев).
Теперь
java-1.7.0-openjdk.x86 _ 64
- это пакет, содержащий JRE
java-1.7.0-openjdk-devel
, содержащий материал для разработки (в основном, это не нужно, если вы хотите запустить Java приложений).
java-1.7.0
может быть метапакетом (это мое предположение, по крайней мере), который тянет в первый и, вероятно, некоторые другие вещи, которые часто используются вместе с ним. Это обычно способ убедиться, что пользователи получают то, что они обычно хотят, если единственное, что они знают, это то, что они хотят «установить Java 7».
Похоже, вы пополняете список имен файлов, а не сами файлы. < (cat files.txt)
просто перечисляет файлы. Попробуйте < (cat $ (cat files.txt))
фактически объединить их и выполнить их поиск в виде одного потока, или
grep -i 'foo' $(cat files.txt)
, чтобы передать все файлы.
Однако, если в списке слишком много файлов, могут возникнуть проблемы с количеством аргументов. В этом случае я бы просто написал
while read filename; do grep -Hi 'foo' "$filename"; done < files.txt
-121--29679- xargs grep -i -- foo /dev/null < files.txt
предполагая, что файлы пусты или ограничены новой строкой (где кавычки или обратные косые черты могут быть использованы, чтобы избежать этих разделителей). С помощью GNU xargs
можно указать разделитель с помощью команды -d
(которая затем отключает обработку кавычек).
(unset -v IFS; set -f; grep -i -- foo $(cat files.txt))
при условии, что файлы разделены космосом, табуляцией или новой строкой (нет пути избежать их, хотя можно выбрать другой разделитель, присвоив его IFS
). Если список файлов слишком велик в большинстве систем, то это приведет к сбою.
Предполагается, что ни один из файлов не называется -
.
XARGS
может читать элементы из файла (например, ваш список файлов.txt
с его опцией:
--arg-file=file
-a file
Read items from file instead of standard input. If you use this
option, stdin remains unchanged when commands are run. Other‐
wise, stdin is redirected from /dev/null.
Так что это должно работать тоже:
xargs -a files.txt grep -i 'foo'
или для пробелов в имена файлов
xargs -d'\n' -a files.txt grep -i 'foo'
xargs -I{} -a files.txt grep -i 'foo' {}
Посмотрите на http://mirror.centos.org/centos/6/os/x86_64/Packages/ , и вы узнаете, что можно установить (если вы, конечно, не добавили больше репозиториев).
Теперь
java-1.7.0-openjdk.x86 _ 64
- это пакет, содержащий JRE
java-1.7.0-openjdk-devel
, содержащий материал для разработки (в основном, это не нужно, если вы хотите запустить Java приложений).
java-1.7.0
может быть метапакетом (это мое предположение, по крайней мере), который тянет в первый и, вероятно, некоторые другие вещи, которые часто используются вместе с ним. Это обычно способ убедиться, что пользователи получают то, что они обычно хотят, если единственное, что они знают, это то, что они хотят «установить Java 7».
Похоже, вы пополняете список имен файлов, а не сами файлы. < (cat files.txt)
просто перечисляет файлы. Попробуйте < (cat $ (cat files.txt))
фактически объединить их и выполнить их поиск в виде одного потока, или
grep -i 'foo' $(cat files.txt)
, чтобы передать все файлы.
Однако, если в списке слишком много файлов, могут возникнуть проблемы с количеством аргументов. В этом случае я бы просто написал
while read filename; do grep -Hi 'foo' "$filename"; done < files.txt
-121--29679- Для чтения списка имен файлов из stdin можно использовать xargs
. Например,
cat files.txt | xargs -d'\n' grep -i -- 'foo'
По умолчанию xargs
считывает предметы из стандартного ввода, разделенного пробелами. -d '\n '
сообщает ему использовать новую строку в качестве разделителя аргументов, чтобы он мог обрабатывать имена файлов, содержащие пробелы. (Как указывает Стефан Шазелас, это расширение GNU). Однако он не справится с именами файлов, содержащих новые строки; Нам нужен более сложный подход, чтобы справиться с этим.
FWIW, этот подход несколько быстрее, чем во время цикла чтения
, так как команда bash read
очень медленная - она считывает свои данные по символам, в то время как xargs
считывает свои входные данные более эффективно. Кроме того, xargs
вызывает команду grep
столько раз, сколько требуется, причем каждый вызов получает несколько имен файлов, и это более эффективно, чем вызов grep
отдельно для каждого имени файла.
Для получения дополнительной информации см. справочную страницу xargs и информационную страницу xargs.