Смешивание репозиториев yum для разных основных версий ОС не работает

Внутри токена, который не заключен в кавычки, раскрытие будет выполнять ваша оболочка, а не команда, которую вы выполняете.

Это означает, что при вводе find. -name "* .txt" -print , тогда find получает литерал *. txt в качестве одного из своих параметров и использует этот шаблон в качестве аргумента на его параметр -name , который будет сопоставлять имена файлов, найденных для него перед применением -print .

С другой стороны, при вводе найти. -name * .txt -print , оболочка передает расширенную версию *. txt для поиска. Возможны несколько случаев :

  1. В текущем каталоге нет файлов, соответствующих *. Txt : find получает литерал *. Txt (предполагая настройки bash по умолчанию);

  2. в текущем каталоге есть ровно один файл, соответствующий *. txt ; допустим, это a.txt : find получает это имя файла, и сопоставляет все файлы с именем a.txt , найденные, начиная с текущего каталога ;

  3. несколько файлов соответствуют *. Txt в текущем каталоге (это похоже на в вашем случае): -name получает первый в качестве параметра, и другие - это дополнительные параметры пути, которые необходимо найти, в котором сообщается о том, что перед выражением не указаны все пути.

Это ожидаемое поведение.


Предположим следующую иерархию файлов:

.
├── a.txt
├── b.txt
├── c.txt
└── foo
    ├── a.txt
    ├── b.txt
    └── c.txt

Фактические параметры, которые find получает в случае eah, можно просмотреть , заменив вызов find на printf '% s \ n' , который напечатает каждый расширенный аргумент в отдельной строке:

$ printf '%s\n' . -name "*.txt" -print
.
-name
*.txt
-print

$ printf '%s\n' . -name *.txt -print
.
-name
a.txt
b.txt
c.txt
-print

Как видите, второй опубликованный вами вызов эквивалентен с учетом существующих файлов find. -name a.txt b.txt c.txt -print .

1
16.06.2016, 13:47
1 ответ

Если вы проверите свой файл репо для CentOS 6 Base в /etc/yum.repo.d/, вы найдете там такие строки:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Переменная $releasever в CentOS 7 всегда равна семи, поэтому если вы хотите установить что-то из этого репо, вам следует изменить эту переменную на 6.

2
27.01.2020, 23:35

Теги

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