yum встановити пакет, не оновлюючи інші пакунки або помилка…?


10

Чи є спосіб сказати, yumщоб встановити пакет, вибравши версію цього пакета, яку б задовольнили встановлені в даний час залежності?

Наприклад, якщо я встановлюю пакет pecl, і в даний момент я встановив, php-5.4.11але php-5.4.14доступний новий . Замість того, щоб встановити новий пакет (і оновити всі пакети PHP до 5.4.14), я просто хочу, щоб він вибрав старішу версію пакету, який я просив встановити, не оновлюючи всі інші (або не вдалося, якщо цього не вдається зробити).

Це конкретний випадок, коли я знаю, що міг би виключити або виправити пакет php, але я шукаю загальний варіант, який застосовуватиметься до будь-якої інсталяції.

Щось на зразок:

yum install php-pecl-xxxx --no-updates

Відповіді:


10

Тимчасове рішення:

Використовувати -Cпрапор:

sudo yum install foobar -C

Постійне рішення:

Використовуйте metadata_expireпрапор у своєму yum.conf, щоб керувати цим.

Відредагуйте /etc/yum.confта встановіть

metadata_expire=15d

Ви можете використовувати d, h або m для налаштування часу в днях, годинах або хвилинах .

Бонус: ось документація:

metadata_expire - час (у секундах), після якого метадані закінчуються. Таким чином, якщо поточні завантажені метадані менше, ніж це багато секунд, yum не буде оновлювати метадані щодо сховища. Якщо ви виявите, що yum не завантажує інформацію про оновлення так часто, як ви хотіли б знизити значення цієї опції. Ви також можете змінити за замовчуванням використання секунд на використання днів, годин або хвилин, додавши оголошення, год або м відповідно. За замовчуванням - 6 годин, щоб комплімент yum-updatesd працював раз на годину. Можна також використовувати слово "ніколи", тобто метадані ніколи не закінчуються. Зауважте, що при використанні файлу Metalink металінка завжди має бути новішою, ніж метадані для сховища, завдяки валідації, тому цей тайм-аут також застосовується до файлу metalink. Також зауважте, що "ніколи" не замінює "yum clean expire-cache"


0

Не зустрічав жодного такого варіанту, як зараз. Однак якщо ви хочете встановити пакет без оновлення, рекомендую завантажити rpm тієї ж версії, а потім встановити його.


0

У yum-utilsпакеті є інструмент під назвою yumdownloader. Ви можете використовувати його для завантаження з репостів, не встановлюючи. Всі стандартні вимикачі, як --disablerepoзастосовуються. Щоб отримати докладнішу інформацію, перегляньте сторінку чоловіка .

Я думаю, ви можете завантажити RPM, а потім робити те, що ви хочете, використовуючи RPM безпосередньо.


1
Це частина автоматичної системи встановлення пакунків, проблема полягає в тому, що ми не хочемо, щоб yum "встановив останню версію" та "оновив усе необхідне". Ми дуже хочемо, щоб він встановив версію пакета, сумісну з уже встановленою. В основному варіант установки, або встановлення xxx -no-update.
Клінт-священик

0

Якщо старша версія пакета все ще знаходиться у ваших сховищах yum, ви можете просто запустити, yum install packagename-version-release.archі вона встановить старішу версію, не намагаючись оновити до останнього випуску. Вам потрібно буде використовувати повне ім’я, версію, версію та арку, якщо у вашому yum repo є кілька версій та архітектури. Ви можете отримати всю цю інформацію, запустивши yum list available 'packagename*'пошук усіх пакетів, починаючи з "ім'я пакета". Якщо вам вдалося оновити ваші пакети і хочете перейти на старіший випуск, можете запустити yum downgrade packagename1 packagename2. Вам потрібно буде включити список усіх пакунків, які ви хочете знизити, оскільки це, ймовірно, буде мати багато залежностей.

Якщо старіший реліз не знаходиться у вашому сховищі yum, просто завантажте його звідки б ви не знайшли старий пакунок і встановіть його yum install /path/to/package.rpm, хоча я б застеріг від встановлення пакунків із недовірених джерел.


Але було б набагато корисніше, якби yumможна було просто вибрати останню доступну сумісну версію.
forcefsck

Це може, але пакувальник повинен визначити відповідні вимоги.
jsbillings

Іноді вимоги поширюються на більш старий пакет, але ви ж наполягаєте на виборі лише останнього. Напр. у вищеописаному випадку yum повинен мати можливість автоматичного вибору php-pecl-5.4.11, якщо система заблокована до php-5.4.11. Це може бути проблемою для автоматизації.
forcefsck

Yum оновиться лише до останньої версії, якщо немає залежностей від старої версії. У вищезазначеному випадку вимога версії ніколи не вимагала пакет pecl. Так, ви не можете прочитати свою думку та вибрати довільну версію, якщо ви не вкажете, яку версію вимагає або блокуючи версію пакетів pecl та php.
jsbillings

У цьому прикладі конкретно, за умови, що php не може бути оновлений (або заблокований версією, або немає нових пакетів, доступних для repos), yum може вибрати останню версію pecl, яка не потребує оновлення php. Це не зовсім розум читання, я вважаю, що apt-get це вже робить. Знову ж таки, це проблема автоматизації, коли вам потрібно встановити додатковий пакет, не оновлюючи половину вашої системи, і вам потрібно yum, щоб бути достатньо розумним, щоб обробляти запит, тобто, якщо існує кілька версій, виберіть останню сумісну з уже встановленими пакетами що з будь-якої причини не можна модернізувати.
forcefsck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.