Почему yum пытается установить неправильную версию node.js?

Я использую этот скрипт для рекурсивной установки меток времени папок для последнего содержимого. (Это очень похоже на ответ Жиля):

#! /bin/bash

# Change mtime of directories to that of latest file (or dir) under it, recursively
# Empty leaf directories, or dirs with only symlinks get the $default_timestamp

default_timestamp='1980-01-01 00:00:00'

dir="$1"

[ -d "$dir" ] || { echo "Usage: $0 directory" >&2; exit 1; }

find "$dir" -depth -type d | while read d; do
    latest=$(find "$d" -mindepth 1 -maxdepth 1 \( -type f -o -type d \) -printf '%T@ %p\n' | sort -n | tail -1 | cut -d' ' -f2-)
    if [ -n "$latest" ]; then
        touch -c -m -r "$latest" "$d" \
            || echo "ERROR setting mtime of '$d' using ref='$f'" >&2
    else
        touch -c -m -d "$default_timestamp" "$d" \
            || echo "ERROR setting mtime of '$d' to default '$default_timestamp'" >&2
    fi
done
5
14.04.2016, 02:10
3 ответа

Похоже, это была проблема с кешем, хотя неясно, что пошло не так. После разговора с автором в чате, запуск yum clean all устранил проблему.

Плакат отметил следующее:

[root@localhost yum]# ls /var/cache/yum/x86_64/7/nodesource/packages 
nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm 
[root@localhost yum]# yum clean all
[root@localhost yum]# ls /var/cache/yum/x86_64/7/nodesource/packages 
[root@localhost yum]# yum install -y nodejs
.... much terminal output during successful install
[root@localhost yum]# node --version
v5.6.0

Итак, yum clean all удалил устаревший пакет, который хранился в кэше.

У меня недостаточно знаний или опыта работы с дистрибутивами на основе Red Hat, чтобы сказать, что здесь пошло не так, поэтому я воздержусь от дальнейших комментариев.

6
27.01.2020, 20:35

yum попытается получить версию, доступную в настроенных репозиториях, а не то, что вы хотите установить.

Установка пакетов, заменяющих официально предлагаемые версии, - верный способ, часто весьма хитроумный, исправить вашу систему. Кажется, ваш репозиторий nodejs пытается именно это. Более внимательно посмотрите на то, что доступно, что предлагает этот сторонний репозиторий и какие меры предосторожности существуют, чтобы избежать поломки.

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

1
27.01.2020, 20:35

Вот что мне нужно было сделать ...

Во-первых, удалите пакет nodejs, установленный из EPEL:

sudo yum remove nodejs

Перечислите ваши репозитории yum:

yum repolist

Вот как выглядела моя запись репозитория узла:

 nodesource / x86_64 Пакеты Node.js для Enterprise Linux 7 - x86_64 
 

Если вам интересно, перечислите пакеты в репозитории узлов:

yum --disablerepo="*" --enablerepo="nodesource" list available

Затем выполните установку yum, используя только репозиторий узлов:

yum --disablerepo="*" --enablerepo="nodesource" install nodejs

Я подозреваю, что в схеме нумерации, используемой в репозитории узлов, есть что-то, что не представляет nodejs в качестве замены пакета в репозитории EPEL, но это всего лишь предположение.

6
27.01.2020, 20:35

Теги

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