source RPM, похоже, не устанавливается на CentOS без ошибок

Решение - не такое элегантное, как те, которые изменяют переменные *RS, но, возможно, достаточно понятное:

PATH=`awk 'BEGIN {np="";split(ENVIRON["PATH"],p,":"); for(x=0;x<length(p);x++) {  pe=p[x]; if(e[pe] != "") continue; e[pe] = pe; if(np != "") np=np ":"; np=np pe}} END { print np }' /dev/null`

Вся программа работает в блоках BEGIN и END. Он извлекает переменную PATH из среды, разбивая ее на единицы. Затем он переитерирует результирующий массив p (который создается по порядку split()). Массив e является ассоциативным массивом, который используется для определения того, видели ли мы текущий элемент path (например, /usr/local/bin) ранее, а если нет, то добавляется к np, с логикой добавления двоеточия к np, если в np уже есть текст. Блок END просто повторяет np. Это можно было бы еще больше упростить, добавив флаг -F:, исключив третий аргумент в split() (как по умолчанию он используется в FS) и изменив np = np ":" к np = np FS, давая нам:

awk -F: 'BEGIN {np="";split(ENVIRON["PATH"],p); for(x=0;x<length(p);x++) {  pe=p[x]; if(e[pe] != "") continue; e[pe] = pe; if(np != "") np=np FS; np=np pe}} END { print np }' /dev/null

Наивно, я полагал, что for(element in array) сохранит порядок, но это не работает, поэтому мое оригинальное решение не работает, так как люди расстроятся, если кто-то вдруг скремблирует порядок их $PATH:

awk 'BEGIN {np="";split(ENVIRON["PATH"],p,":"); for(x in p) { pe=p[x]; if(e[pe] != "") continue; e[pe] = pe; if(np != "") np=np ":"; np=np pe}} END { print np }' /dev/null
0
23.01.2016, 20:33
1 ответ

Исходный RPM (src.rpm) упакован с использованием формата RPM. Вы можете использовать это для создания двоичного пакета для своего компьютера или использовать его в качестве отправной точки для пользовательских версий. Исходные RPM немного более портативны, чем двоичные, но если вы не осведомлены, я бы не советовал идти по этому пути.

Проверьте страницы CentOS, посмотрите, доступны ли для вашей системы двоичные пакеты в виде официального пакета или в одном из проверенных сторонних репозиториев . Будьте осторожны, еще несколько теневых сторонних репозиториев перезаписывают основные пакеты и могут сломать вашу систему (или затруднить обновление).

0
29.04.2021, 00:18

Теги

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