Yum игнорировать ошибки

Yum is a package manager used on Red Hat, CentOS, and other Linux distributions that use RPM Package Manager. Yum is used to install, update, delete, or otherwise manipulate the packages installed on these Linux systems.

In this tutorial, we will cover the yum update command – what it is, how to use it, and all the different commands you may need to know when you wish to upgrade the installed packages on your system.

  • 1
    How does yum update work?

  • 2
    Update without gpg checking

  • 3
    Update from a local repo

  • 4
    Show patches

  • 5
    Update a single package

  • 6
    Update all but one package

  • 7
    Exclude multiple packages

  • 8
    Check when last yum update ran

  • 9
    Rollback (revert) update

  • 10
    Clean up a failed yum update (Troubleshooting)

  • 11
    Skip errors

  • 12
    Get a list of packages that need an update

  • 13
    Difference between yum check updates and list update

  • 14
    Notify when updates are available

  • 15
    What port does yum update use

  • 16
    Yum update vs. upgrade

How does yum update work?

You can use the yum update command to update applications installed on a system. If you run the command without any package names specified, it will update all packages on the system.

$ yum update

When running this command, yum will begin by checking its repositories for an updated version of the software your system currently has installed. The screenshot below shows the type of output you’ll typically see when first issuing the yum update command.

yum update command

As you can see, the output from yum first lists the repositories it’s querying, which are the default ones for CentOS: AppStream, Base, and Extras. Below that, yum lists the various packages which it has found updates for.

At the tail end of this output, yum will display the “Transaction Summary,” which shows the total number of packages that are to be installed and upgraded.

yum update summary

In this example, 166 packages are being upgraded, and 6 new packages are being installed.

In case you’re wondering why new packages are being installed when we are only supposed to be upgrading applications, some new software packages may have become part of this Linux distribution, or some upgraded applications may rely on extra packages that are not yet installed.

Once you review the list of software that yum plans to upgrade, you can confirm these changes by typing “y” and hitting enter.

Yum will then perform the upgrades, which may take some time depending on the speed of your connection and the system itself.

Once it has finished, you’ll get a final summary, which will list all the packages that were successfully upgraded, as well as any errors that may have been encountered.

yum update complete

Update without gpg checking

You can use the GPG keys to verify the authenticity of an RPM package. The –nogpgcheck option in yum will instruct it to skip checking GPG signatures on packages. This is useful in cases where you have an unsigned package, or you just don’t have the GPG key.

$ yum update --nogpgcheck

This is a quick solution if you encounter an error like “Package NameOfPackage.rpm is not signed .. install failed!” when running the normal yum update command. The –nogpgcheck option will ignore this warning and proceed with upgrading the package anyway.

Update from a local repo

It’s possible to set up local repositories for yum to query when it does an update. This is often done if you want to use yum to update packages that aren’t included in the default repos, or if you need to upgrade an offline system.

First, place all your updated RPM files in a new folder. In this example, we’ll use /root/rpms.

Next, navigate to the following directory where you can see all the repo files for yum:

$ cd /etc/yum.repos.d

Local repo files

To set up a local repo, create a new file in this directory.

$ vi MyRepo.repo

Inside your repo file, configure it in this format, changing the lines as necessary:

[MyRepo]
name=My Local Repo
baseurl=file:///root/rpms
enabled=1
gpgcheck=0

The big difference between a local repo and a remote repo is in the “baseurl” line, where the file:// protocol is specifying a local file, as opposed to the remote protocols http:// or ftp://

After saving the file, set the correct permissions:

$ chmod 644 MyRepo.repo

The repository should now be ready to use. Be sure clear yum’s cache before attempting a yum update command:

$ yum clean all

Show patches

Yum can display available security patches, without installing them, with this command:

$ yum updateinfo list security

List specific patches

If it doesn’t return any output, like in the screenshot above, this means there are no security patches available for any software on your system.

Update a single package

If you need to update a certain package without running an update for every application installed, just specify the name of the package in your yum update command.

$ yum update name-of-package

Multiple packages can be specified, separated by a space. You need to have the name of the package typed perfectly in order for yum to find it in its repositories; if you’re not sure of a package name, first check what packages are currently eligible for updates:

$ yum check-update

Update all but one package

If you need to run the yum update command to update all packages but you wish to exclude a package, you can specify the –exclude option.

A common situation where administrators may find this necessary is with kernel updates since these are major updates that could cause unpredictable errors on a production server. However, they may still want to run the command to update less sensitive applications.

To exclude a package (in this example, those related to the kernel):

$ yum update --exclude=kernel*

The asterisk acts as a wildcard, in case there are multiple related packages, or you don’t know the full name of the package.

Alternatively:

$ yum update -x 'kernel*'

Exclude multiple packages

You can exclude multiple packages with more –exclude flags.

$ yum update --exclude=kernel* --exclude=httpd

Use this flag as in the example above, or the -x flag, as many times as needed.

Check when last yum update ran

To see a list of yum transactions, with the date and time they were running, use the yum history command.

$ yum history

Check yum update history

In the screenshot above, you can see that the last time yum updated software was on January 4th.

Rollback (revert) update

A great feature of yum is that it allows you to undo a recent update, thus restoring the upgraded packages to their previous versions.

Each yum action (install, update, erase, etc.) is assigned a transaction ID, and this ID must be specified when undoing a yum update. To see a list of transaction IDs for recent yum operations, use this command:

$ yum history

List yum history

In the screenshot above, you can see the last operation run with yum was to install the httpd package. Undoing an installation or an update works the same way, so in this example, we will undo this recent installation of httpd. As shown in the screenshot, this transaction has an ID of 7.

To undo this change and roll back the program to its previous version, issue this command:

$ yum history undo 7

Undo yum update

As usual, yum will summarize the changes to be made and ask if you’d like to proceed with a Y/N prompt. Enter Y, and the specified transaction will be undone.

yum undo report

Clean up a failed yum update (Troubleshooting)

If one or more packages fail to upgrade successfully when you run the yum update command, the system can end up with duplicate packages installed (2 versions of the same program).

Sometimes, following the rollback instructions in the section above can fix the problem. If that doesn’t work, you can remove duplicate packages on your system with this command:

$ package-cleanup --dupes

Yum stores a cache of information for packages, metadata, and headers. If you encounter an error, clearing yum’s cache is a good first step in troubleshooting. Use the following command to do that:

$ yum clean all

yum clean command

Skip errors

When updating or installing a package, that package may require additional software in order to run correctly. Yum is aware of these dependencies and will try to resolve them during updates by installing or upgrading the extra packages that are needed.

If yum has trouble installing the necessary dependencies, it produces an error and doesn’t proceed further. This is a problem if you have other packages that need to be updated.

To instruct yum to proceed with updating other packages and skipping the ones with broken dependencies, you can specify the –skip-broken command in your yum update command.

$ yum update --skip-broken

Get a list of packages that need an update

Running the yum update command as normal, with no additional options, will output a list of available updates.

$ yum update

If you’d like to see some additional information about the package updates available, type this command:

$ yum updateinfo

To see information about security updates that are available for the system, type this command:

$ yum updateinfo security

Difference between yum check updates and list update

Although the two commands sound similar, so there is a difference between checking for updates and listing updates in yum.

$ yum list updates

The command to list updates, shown above, will list all the packages in the repositories that have an update available. Keep in mind that some of the packages in the repositories may not even be installed on your system.

$ yum check-update

The command to check for updates, seen above, is a way to check for updates without prompting for interaction from the user. This is the command you would opt for if you were coding a script to check for updates, for example.

The check-update command will return an exit value of 100 if there are packages that have updates available, and it will return an exit value of 0 if there are no available updates.

A value of 1 is returned if an error is encountered. Use these exit codes to code your script accordingly.

Notify when updates are available

There are a few packages that can help manage yum updates on your system. Some can even notify administrators when yum has updates that are available to be installed. One such service is called yum-cron.

Install yum-cron using yum:

$ yum install yum-cron

Set the yum-cron service to start at boot:

$ systemctl enable yum-cron.service

$ systemctl start yum-cron.service

Configure the settings for yum-cron inside the configuration file using vi or your preferred text editor:

$ vi /etc/yum/yum-cron.conf

In this file, you can specify if the updates should be automatically applied or not. If you’d only like to receive notifications, fill out the email information inside the configuration file. Yum-cron will then send you an email anytime there are updates available for your system.

apply_updates = no #don’t apply updates automatically

email_from = root@localhost

email_to = admin@example.com

email_host = localhost

What port does yum update use

Yum uses port 80 when checking for updates. If you look inside the repository files on your system, you’ll see that all of the links inside begin with http.

If you need to create a rule in your firewall to allow yum to function, you need to allow port 80.

Yum update vs. upgrade

So far, we have only talked about the yum update command in this tutorial, but there’s another very similar command: yum upgrade.

$ yum upgrade

There is a small difference between these two commands. Yum update will update the packages on your system, but skip removing obsolete packages.

Yum upgrade will also update all the packages on your system, but it will also remove the obsolete packages.

This inherently makes yum update the safer option, since you don’t have to worry about accidentally removing a necessary package when updating your software.

Use some discretion when issuing the yum upgrade command, since it may not preserve some packages that you are still using.

At last, I hope you find the tutorial useful.

Keep coming back.

Mokhtar Ebrahim

Mokhtar is the founder of LikeGeeks.com. He is a seasoned technologist and accomplished author, with expertise in Linux system administration and Python development. Since 2010, Mokhtar has built an impressive career, transitioning from system administration to Python development in 2015. His work spans large corporations to freelance clients around the globe. Alongside his technical work, Mokhtar has authored some insightful books in his field. Known for his innovative solutions, meticulous attention to detail, and high-quality work, Mokhtar continually seeks new challenges within the dynamic field of technology.

Yum ExcludeWhen you perform yum update, it will download the latest version of all the packages that are installed on your system, and upgrade them to the latest version.

You may be in situation where you might not want yum to automatically update one (or more) specific package.

In those situations, use the yum exclude option as shown in the examples below.

1. Exclude a Single Package using option -x

For example, on this system, we are using PHP 5.1, and the custom php application running on this system is not tested with any other new versions of PHP yet.

# rpm -q php
php-5.1.0-27.el6_5.x86_64

So, in this case when we do a update, we want to exclude only one specific package, which is php. As we see below, the following indicates that php package will be updated to ver 5.3.3 when we perform the ‘yum update’ command.

# yum check-update php
php.x86_64    5.3.3-40.el6_6      updates

The following will exclude only one package (php) during the yum update.

# yum -x php update

2. Exclude Multiple Packages using option -x

You can exclude multiple packages by specifying multiple -x options as shown below:

yum -x php -x httpd update

You can also exclude more than one package by specifying the list of packages separated by comma. The following will behave exactly same as above.

yum -x php,httpd update

3. Exclude Multiple Packages (e.g. Kernel packages) using Wildcard

In most situations you might not want yum update to automatically upgrade the kernel.

Before you do the real yum update, you can perform yum check-update, which will display all the packages that it will upgrade during the yum update.

As you see below, in this example, there are three kernel related packages that will be upgraded by yum update.

# yum check-update | grep -i kernel
kernel.x86_64            2.6.32-504.1.3.el6  updates
kernel-firmware.noarch   2.6.32-504.1.3.el6  updates
kernel-headers.x86_64    2.6.32-504.1.3.el6  updates

Instead of specifying all the individual package names in the -x exclude list, we can simply use the shell glob wildcards as shown below. The following will exclude all kernel related packages form begin upgraded during the yum update.

yum -x kernel* update

4. Multiple Wildcard Lists in the -x Option

You can also specify multiple wildcard lists in the -x option.

As you see below, the following indicates that there are multiple php packages that will be upgraded during next yum update.

# yum check-update | grep -i php
php.x86_64         5.3.3-40.el6_6   updates
php-cli.x86_64     5.3.3-40.el6_6   updates
php-common.x86_64  5.3.3-40.el6_6   updates
php-xml.x86_64     5.3.3-40.el6_6   updates

If you want to exclude all php and kernel related packages during the next yum update, you can use the following. Please note that you should use ‘ ‘ in this example.

yum -x 'php*' -x 'kernel*' update

5. Using –exclude instead of -x

You can also use –exclude instead of -x as shown below:

yum --exclude php update
yum --exclude httpd update
yum --exclude kernel update

yum -exclude php*,httpd*,kernel* update

6. Exclude Packages Using yum.conf File

Instead of specifying the packages to be excluded in the command line, you can specify them in the /etc/yum.conf file.

For example, to exclude all the php, httpd and kernel packages to be excluded from the yum update, add the following line:

exclude=php* httpd* kernel*

Or, execute the following command:

echo "exclude=php* httpd* kernel*" >> /etc/yum.conf

7. Use Comma Separated List

You can also exclude more than one package by specifying the list of wildcard packages separated by comma. The following will behave exactly same as above.

yum -x php*,kernel* update

To be consistent with the way how we showed the other examples using the -x option above, you can also use comma (instead of just space) to separate the multiple packages as shown below:

# vi /etc/yum.conf
exclude=php*,httpd*,kernel*

8. Exclude Parameter inside Custom Repo File

Instead of specifying the exclude parameter in the main yum.conf file, you can also specify it in the individual repository file.

For example, if you’ave installed mongodb, you’ll have mongodb.repo under /etc/yum.repos.d directory. You can specify the exclude package list for the mongodb repository inside this mongodb.repo file.

# vi /etc/yum.repos.d/mongodb.repo
exclude=mongo*

9. Simulate Yum Exclude Check using check-update (Dry-run -x)

You can specify the -x option along with check-update also. This helps to you check whether the -x option you’ve specified either in the command line or in the yum.conf file is working as expected.

For example, the following indicates that the kernel will be upgraded during yum update.

# yum check-update | grep -i kernel
kernel.x86_64                        2.6.32-504.1.3.el6                  updates
kernel-firmware.noarch               2.6.32-504.1.3.el6                  updates
kernel-headers.x86_64                2.6.32-504.1.3.el6                  updates

The following indicates that the -x flag will work as expected as it didn’t return anything in the result.

# yum -x kernel* check-update | grep -i kernel

For example, let us say the following exclude line in present in the yum.conf file.

# grep exclude /etc/yum.conf
exclude=php*,httpd*,kernel*

Then, the following indicates that the exclude list specified in the above /etc/yum.conf will work as expected as check-update didn’t show those packages (including kernel) in the following output.

# yum check-update | egrep 'php|httpd|kernel'

10. Ignore the Exclude from yum.conf File

If you like to disable the excludes mentioned in the yum.conf file. i.e If you don’t want yum update to consider the exclude list that is specified in the yum.conf file, you can use the –disableexcludes option from the command line.

In our previous example, we’ve excluded php, httpd and kernel packages to be updated by the yum update.

But, if you want yum to ignore that exclude list (i.e disable the exclude) and continue to upgrade the php, httpd and kernel as part of the regular yum update command, execute the following:

yum --disableexcludes=all update

The following are the three possible values that you can specify to the disableexcludes

  • all Disable all excludes
  • main Disable excludes specified in the main section of the yum.conf file
  • repoid Disable excludes specified for the given repo id

If you want to disable the excludes only for a specific custom repository, you can specify the repo id (which is the 1st column in the yum repolist command as shown below).

# yum repolist
repo id   repo name           status
mongodb   MongoDB Repository    240
base      CentOS-6 - Base     6,518
extras    CentOS-6 - Extras      35
updates   CentOS-6 - Updates    315

The following will disable (ignore) the exclude list specified in the mongodb.repo file under /etc/yum.repos.d directory.

yum --disableexcludes=mongodb update

Yum — менеджер управления пакетами для RedHat-based дистрибутивов

Вывод списка пакетов:

yum list

Для просмотра

установленных пакетов

yum list installed

доступных пакетов

yum list available

пакетов, для которых доступно обновление

yum list updates

пакетов, установленных в системе, но удаленных из репозиториев

yum list obsoletes

пакетов, установленных самостоятельно пользователем

yum list extras

Эти опции могут употребляться с отдельными пакетами или с группой пакетов при пометке пакетов, в которые входит искомая комбинация букв в конце и начале звездочкой (или только в конце или только в начале в зависимости от того, где хотим найти искомую комбинацию букв). Иногда yum может некорректно обрабатывать запрос по звездочкам, но если есть уверенность, что такие пакеты есть, то перед звездочками нужно добавить обратный слэш. Например, yum list *nvidia* у меня выводит, что пакетов не обнаружено, а yum list \*nvidia\* показывает все пакеты, в которых встречается слово nvidia.
 

пакетов, недавно добавленных в репозитории (определяется в /etc/yum.conf, по умолчанию — неделя считается недавним временем)

yum list recent
 

Установка пакетов

yum install <package_name> если пакет устанавливается из интернет-репозитория

yum localinstall <имя_пакета_версия> — если установка производится локально без репозитория

yum groupinstall <имя_группы> — установка всех пакетов, принадлежащих к определенной группе, например, KDE или gnome, взятых в апострофы, получить список групп можно по команде yum grouplist

Обновление пакетов

yum upgrade <имя_пакета> обновление пакета

yum update обновление пакетов с учетом замен

Удаление пакетов

yum remove <имя_пакета>

yum erase <имя_пакета>

yum groupremove <имя_пакета>

Получение информации о пакете

yum info <имя_пакета>

Если yum завис, то процесс можно убить, однако, как правило, после следующего включения будет показываться, что yum используется, поэтому нужно очистить cache: yum clean [ packages | headers | oldheaders | all ] (удалить информацию из кэша)

Дополнительные возможности yum

deplist (выдать список всех зависимостей для указанных пакетов и какие пакеты их обеспечивают)

repolist [all|enabled|disabled] (вывести список репозитариев)

check-update (аналог list update; возвращает код возврата 100, если имеется хотя бы 1 требующий обновления пакет и список пакетов)

Ключи yum (в скобках — имена параметров yum.conf):

  • -y — не спрашивать подтверждения на выполнение (assume=yes)
  • -c URL-конфигурационного-файла
  • -d уровень отладки — лучше начинать с 3; (debuglevel)
  • -e уровень сообщений об ошибках (errorlevel)
  • -q работать без вывода сообщений
  • -v работать с подробным выводом действий
  • -t игнорировать ошибки (tolerant)
  • -R максимальное время ожидания команды, мин
  • -C запуск только из системного кэша, не обновляйте кэш
  • —installroot=корень файловой системы, относительно которого будут установлены пакеты (installroot)
  • —enablerepo=идентификатор репозитария (enabled)
  • —disablerepo=идентификатор репозитария (disabled)
  • —exclude=<имя_пакета> не включать пакеты, соответствующие шаблону (exclude)
  • —disableexcludes=[all|main|имя_репозитария] отменить действие параметров exclude в файлах настройки
  • —download-only только загрузить пакеты в кэш, не устанавливать их
  • —obsoletes включать в расчёт пакеты более старых версий; может пригодиться при переходе к новой версии дистрибутива от обновлённой старой
  • —noplugins запретить выполнение дополнительных модулей (plugins)
  • —nogpgcheck не проверять цифровые подписи пакетов (gpgcheck)

Настройка /etc/yum.conf

[main]

cachedir=/var/cache/yum

keepcache=0

debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3

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

  • cachedir (директория для кеширования метаданных и заголовков, по умолчанию /var/cache/yum)
  • persistdir (для версии 3 и выше; здесь сохраняются данные между запусками; /var/lib/yum)
  • reposdir (версия 2.1; список каталогов через запятую, содержащих описания отдельных репозитариев в файлах имя-репозитария.repo; по умолчанию /etc/yum.repos.d)
  • debuglevel (от 0 до 10)
  • errorlevel (от 0 до 10)
  • logfile (/var/log/yum.log)
  • gpgcheck (0 или 1; проверять ли GPG подписи пакетов)
  • assumeyes (не спрашивать подтверждения, -y)
  • alwaysprompt (спрашивать подтверждения даже, если список пакетов не обновлялся)
  • tolerant (0; «прощать» пользователю yum некоторые ошибки, -t)
  • exclude (список пакетов через пробел, которые не надо устанавливать и обновлять, можно использовать символы шаблонов * и ?)
  • exactarch (строгое соблюдение целевой архитектуры пакета при обновлении)
  • installonlypkgs (kernel, kernel-smp, kernel-bigmem, kernel-enterprise, kernel-debug, kernel-unsupported; список пакетов, которые нельзя обновлять, а можно только устанавливать новые версии в дополнение к старым)
  • installonly_limit (не хранить больше указанного числа пакетов типа installonly)
  • showdupesfromrepos (с версии 2.1; показывать только новые версии пакетов или все)
  • obsoletes (с версии 2.1; —obsoletes; менеджмент удаления пакетов, признанных «устаревшими» при смене версии дистрибутива)
  • overwrite_groups (с версии 2.1; что делать, если в двух репозитариях предлагаются группы пакетов с одинаковым именем: брать описание из последнего репозитария или сливать описания)
  • enable_group_conditionals (можно ли использовать условные пакеты)
  • group_package_types (с версии 3; список из optional, default, mandatory; определяет какого типа пакеты будут установлены при выполнении groupinstall)
  • installroot (с версии 2.1; корень файловой системы для установки; —installroot)
  • distroverpkg (redhat-release; пакет, по которому определяется версия дистрибутива; для fedora это fedora-release)
  • tsflag (список флагов для передачи команде rpm: noscripts, notriggers, nodocs, test, repackage)
  • recent (с версии 2.1; число дней для list recent, по умолчанию 7)
  • retries (0 — бесконечность)
  • keepalive (с версии 2.1; использовать HTTP/1.1 keepalive)
  • timeout (число секунд, по умолчанию 30)
  • http_caching (инструкция для прокси: all (кешировать всё), packages (только пакеты), none)
  • proxy (полный URL, включая номер порта; можно использовать переменную окружения http_proxy; с версии 2.2.2)
  • proxy_username
  • proxy_password
  • throttle (ограничение трафика при загрузке пакетов в байтах/секунду — 5.5k, 2M и т.д. — или в процентах от bandwidth, по умолчанию 0)
  • bandwidth (пропускная способность интерфейса для throttle, по умолчанию 0)
  • commands (команда yum по умолчанию, если не указано явно; в любом случае командная строка не может быть пустой)
  • plugins (разрешить подключаемые модули, по умолчанию 0)
  • pluginpath (/usr/share/yum-plugins, /usr/lib/yum-plugins)
  • pluginconfpath (/etc/yum/pluginconf.d)
  • metadata_expire (не проверять наличие обновлённых метаданных указанное число секунд)
  • mirrorlist_expire (не проверять обновление списка зеркал)

Ядра по умолчанию запрещается обновлять, т.е. даже если прописать yum upgrade kernel, то произойдет только установка нового ядра с сохранением старого

Запрет пакетов для обновления installonlypkgs=pkgname1 pkgname2 … pkgnamen

Запрет пакетов для установки и обновления exclude=pkgname1 pkgname2 … pkgnamen

Параметр recent cубкоманды list устанавливает срок, в течении которого добавленные в репозиторий пакеты считать новыми (в днях).

В отличие от наиболее популярного apt (благодаря убунте) yum не нужно постоянно обновлять, чтобы отображались новые пакеты, это достигается за счет постоянного обращения к репозиториям, что при медленном интернете приводит к некоторому отъему времени. Однако это можно ликвидировать: metadata_expire=never. В этом случае обновление кэша проводится по yum update.

yum также включает дополнительные утилиты в пакете yum-utils. Наиболее выгодно отличающейся утилитой в этом пакете является package-cleanup

Его основные опции:

package-cleanup —problems

список нарушенных зависимостей

package-cleanup --leaves

список пакетов, от которых не зависят никакие другие компоненты

package-cleanup --orphans

установит те пакеты из числа установленных в системе, которые более не имеются в репозиториях

package-cleanup --oldkernels --count #

удалит из каталога старые ядра (файлы вида vmlinuz-2.6.*), начиная с ядра #, считая от текущего, вместе со всеми сопуствующими файлами — System.map-2.6.*, initrd-2.6.*, config-2.6.*, а также соответствующую запись в конфиге загрузчика — /boot/grub/grub.conf; однако подкаталог с модулями — /lib/modules/2.6.* — останется в неприкосновенности.

По умолчанию # = 2, то есть будет удалено ядро третье от текущего и более старые, но можно задать любое разумное значение. Например, команда

package-cleanup --oldkernels --count 1

удалит ядра, начиная с предпоследнего.

Для избавления от предупреждения при удалении ядер добавить к приведённой выше команде опцию -y

Другие утилиты yum-utils

  • debuginfo-install установка дополнений к пакетам, обеспечивающих отладочную информацию к программам
  • repo-graph (построрение графика в формате graphviz (.dot, пакеты graphviz, pydot); документация внутри)
  • repoclosure (получить список неразрешённых зависимостей по совокупности репозитариев; документация внутри)
  • repoquery пакет-или-группа … (запрос информации из репозитария аналогично «rpm -q»), ключи:
    • общие ключи
      • —querytags выдать список тегов queryformat, аналогично rpm
      • —repoid=<имя_репозитария> по умолчанию — все разрешённые в настройках yum
      • —repofrompath=<имя_репозитария> URL-репозитария запрос к дополнительному репозитарию, не описанному в настройках yum
      • —quiet работать без вывода сообщений
      • -C использовать только информацию из кеша yum
      • —tempcache создать и использовать временный кеш; для обычного пользователя — по умолчанию
      • -c <имя_конфигурационного_файла> (/etc/yum.conf)
      • —nvr использовать формат name-version-release
      • —nevra использовать формат name-epoch:version-release.architecture, по умолчанию
      • —envra использовать формат epoch:name-version-release.architecture
    • выбор пакета или группы
      • -g выбирать группы, а не пакеты
      • -a все пакеты или группы
      • {-f | —file} <имя_файла> определить пакет по входящему в него файлу
      • —whatobsoletes <зависимость> по удаляемым зависимостям
      • —whatconflicts <зависимость> по конфликтам с указанной зависимостью
      • —whatprovides <зависимость> по обеспечиваемым зависимостям
      • —whatrequires <зависимость> [—alldeps] по требуемым зависимостям; если —alldeps, то включать ручные и автоматические зависимости
      • —archlist=архитектура[,архитектура] ограничить список пакетов указанной архитектурой
      • —pkgnarrow={installed | available | recent | updates | extras | all | repository} дополнительное ограничение списка пакетов, по умолчанию — repository
      • —grouppkgs={all | mandatory | default | optional} ограничить пакеты по статусу в группе
      • —requires вывести список групп, требуемых ланной группой
      • —show-dupes по умолчанию отбирать только новейшие версии
    • какую информацию выдавать
      • -i | —info краткую информацию о пакете (аналог «rpm -qi») или группе
      • -l | —list список файлов в пакете (аналог «rpm -ql») или пакетов в группе
      • —requires [—resolve] список зависимостей пакета с определением требуемого пакета
      • —provides список зависимостей, обеспечиваемых пакетом
      • —obsoletes список зависимостей, удаляемых пакетом
      • —conflicts список зависимостей, конфликтующих с пакетом
      • —changelog
      • —location откуда можно скачать пакет
      • —source имя исходного пакета
      • —groupmember в какую группу входит)
      • —queryformat=формат
    • -a
  • reposync синхронизация удалённого и локального репозитариев, для скачивания используется yum
    • -c <имя_конфигурационного_файла> (/etc/yum.conf)
    • —arch=<архитектура>
    • —repoid=<имя_репозитария>
    • —tempcache создать и использовать временный кеш; для обычного пользователя — по умолчанию
    • —download_path=<локальный_каталог>
    • —gpgcheck удалять пакеты, не прошедшие проверку
    • —urls не загружать файлы, а только вывести их URL
    • —newest-only только самые новые версии
    • -q
  • repotrack загрузка пакетов и всех его зависимостей из списка репозитариев
  • yum-builddep <имя_пакета> установка пакетов, требуемых для сборки указанного пакет
  • yumdownloader <имя_пакета> загрузка пакетов из репозитория
    • —destdir <имя_каталога> куда сохранять
    • —resolve разрешать зависимости и загружать соответствующие пакеты
    • —urls не загружать файлы, а только вывести их URL
    • —source загружать исходные пакеты
  • repo-rss <имя_репозитария> генерирует RSS поток
  • -f выходной-файл (repo-rss.xml)
  • -l URL
  • -t заголовок
  • -d описание
  • -r дней (за сколько дней считать обновления, по умолчанию 3)

Настройка репозиториев yum

Репозитории хранятся в /etc/yum.repos.d, каждый репозиторий хранится как правило в отдельном файле (хотя можно и все в одном хранить) с расширением .repo.

Его содержимое:

[fedora]

name=Fedora $releasever - $basearch

failovermethod=priority

#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch

enabled=1

metadata_expire=7d

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

где

  • repositoryid (уникальное имя репозитария в квадратных скобках в качестве имени секции)
  • name (описательное имя репозитария)
  • baseurl (список альтернативных URL (http/ftp/file, базовая аутентификация) репозитария через пробел и/или nl; прописывается вплоть до каталога, в котором находится каталог repo (каталог repo в путь не включается)
  • mirrorlist (URL файла, содержащего список baseurl)
  • enabled (подключает =1 или отключает =0 репозиторий)
  • gpgcheck (проверкак GPG подписи пакетов, проверять =1, не проверять =0)
  • gpgkey (список URL открытого GPG ключа в текстовом формате; необходим, если ключ не импортирован в БД rpm)
  • exclude (список пакетов через пробел, которые не надо устанавливать, можно использовать символы шаблонов * и ? и переменные)
  • includepkgs (работать только с пакетами из этого списка; можно использовать те же символы и переменные, как и в exclude)
  • enablegroups (можно использовать группы пакетов)
  • failovermethod (roundrobin (перебор в случайном порядке) или priority (последовательный перебор))
  • keepalive (использовать HTTP/1.1 keepalive)
  • timeout (30; число секунд)
  • http_caching (инструкция для прокси: all (кешировать всё), packages (только пакеты), none)
  • retries (0 — бесконечность)
  • throttle (ограничение трафика при загрузке пакетов в байтах/секунду — 5.5k, 2M и т.д. — или в процентах от bandwidth)
  • bandwidth (пропускная способность интерфейса для throttle)
  • metadata_expire (не проверять наличие обновлённых метаданных указанное число секунд)
  • mirrorlist_expire (не проверять обновление списка зеркал)
  • proxy (полный URL, включая номер порта; можно использовать переменную окружения http_proxy; c версии yum 2.2.2; _none_ для отключения глобального параметра)
  • proxy_username
  • proxy_password
  • cost (1000; «стоимость» обращения к репозиторию, позволяет ранжировать репозитории)

Внутри значений параметров name, baseurl и commands можно использовать значения переменных:

  • $releasever (значение извлекается из пакета, указанного в distroverpkg)
  • $arch («uname -p» или os.uname()[4])
  • $basearch (uname -i)
  • от $YUM0 до $YUM9 (значения берутся из переменных окружения)

Плагины yum

  • yum-installonlyn добавляет новое ядро вместо замены и удаление более старых ядер (/etc/yum/pluginconf.d/installonlyn.conf), встроен в yum
  • yum-NetworkManager-dispatcher учёт действий NetworkManager при проверке кеша
  • yum-allowdowngrade добавляет к команде yum флаг —allow-downgrade, который позволяет откатить пакет к указанной старой версии
  • yum-basearchonly если при установке нет уточнения архитектуры будет устанавливать только пакеты основной архитектуры)
  • yum-changelog позволяет показывать changelog (yum —changelog) перед или после обновления — указывается в /etc/yum/pluginconf.d/changelog.conf
  • yum-cron периодическое автоматическое обновление пакетов; до FC6 был встроен в пакет yum
  • yum-downloadonly добавляет к команде yum флаг —downloadonly, который позволяет загружать требуемые пакеты без установки или обновления
  • yum-fastestmirror сортирует список зеркал по скорости соединения перед загрузкой пакетов
  • yum-fedorakmod специальная обработка пакетов «kmod-…» (модули ядра) при установке новых пакетов ядра
  • yum-kernel-module специальная обработка пакетов «kernel-module-…» (модули ядра) при установке новых пакетов ядра
  • yum-filter-data добавляет к команде yum флаги —filter-(vendors, groups, packagers, licenses, arches и др.)
  • yum-keys добавляет команды работы с ключами подписей пакетов: keys, keys-info, keys-data, keys-remove
  • yum-merge-conf добавляет к команде yum флаг —merge-conf, при использовании которого yum будет запрашивать о судьбе конфигурационных файлов при обновлении
  • yum-list-data добавляет команды: list-(vendors, groups, packagers, licenses, arches, committers, buildhosts, baseurls, package-sizes, archive-sizes, installed-sizes); необходимо LANG=
  • yum-post-transaction-actions позволяет задать действие, выполняемое при изменении пакета
  • yum-presto позволяет загружать только изменения (deltarpms) при обновлении пакетов; требуется пакет deltarpm
  • yum-priorities позволяет назначить приоритеты пакетам из различных репозиториев; пакеты из репозитория с более низким значением приоритета не могут быть обновлены из репозитория с высоким значением приоритета; настройки в /etc/yum/pluginconf.d/priorities.conf (enabled=; check_obsoletes=; only_samearch=) и в описаниях репозитариев (priority=99)
  • yum-protect-packages позволяет защитить указанные пакеты от удаления; по умолчанию защищён сам yum и его цепочка зависимости
  • yum-protectbase позволяет защитить пакеты из указанного репозитария от обновления из незащищённых репозитариев
  • yum-refresh-updatesd при завершении работы yum будет запрашивать yum-updatesd о наличии обновлённых пакетов
  • yum-security добавляет команды list-security (для каждого пакета выводится идентификатор в базе изготовителя репозитария и причина обновления (security, bugfix, enhancement)) и info-security (более подробная информация — статус, описание, дата, ссылки на идентификаторы ошибок и сообщений об уязвимостях CVE)), а также флаги —security, —cve=номер, —bz=номер и —advisory=номер, которые позволяют ограничить список пакетов; основывается на новом типе метаданных updateinfo в репозитариях)
  • yum-skip-broken добавляет к команде yum флаг —skip-broken, который позволяет пропускать пакеты с проблемами в зависимостях вместо аварийного завершения всей программы
  • yum-tmprepo добавляет к команде yum флаг —tmprepo, который позволяет одноразово использовать репозитарий, описанный в .repo файле
  • yum-tsflags позволяет добавлять tsflags в командной строке
  • yum-updateonboot при загрузке системы запускается «yum update»
  • yum-updatesd проверяет наличие обновлений и информирует через email, syslog или dbus
  • yum-upgrade-helper облегчает переход к следующей версии, удаляя устаревшие пакеты на основании специальной метаинформации
  • yum-verify добавляет команду verify, verify-all и verify-rpm для проверки установленных пакетов, умеет бороться с издержками multilib и изменениями в файлах конфигурации; команда verify-rpm является аналогом «rpm -V»; команда verify-all ещё более придирчива; настраивается в /etc/yum/pluginconf.d/verify.conf и ключами —verify-filenames (указывается список проверяемых файлов) и —verify-configuration-files
  • yum-versionlock (блокирует указанные в /etc/yum/pluginconf.d/versionlock.list пакеты от обновления; формат EPOCH:NAME-VERSION-RELEASE.ARCH; модуль выключен по умолчанию)

Конфигурационные файлы репозиториев в местах их хранения

Эти файлы находятся в каталоге repodata, который содержит файлы в XML формате, общем для yum и apt, и sqlite (в версии yum 3):

  • repomd.xml содержит информацию об остальных файлах: имена, времена, контрольные суммы, версии формата
  • primary.xml[.gz] (тип primary) содержит основную информацию о пакетах (имя, архитектура, версия, релиз, контрольная сумма, описание, ссылка на разработчика, время сборки, время упаковки, размер пакета и занимаемого после установки места, имя файла, формат, лицензия, поставщик, группа, сборщик, имя исходного пакета, что пакет требует и что обеспечивает) и некоторых файлах, используемых в зависимостях других пакетов
  • primary.sqlite.bz2 (тип primary_db) — в формате sqlite
  • filelists.xml.[gz] содержит список файлов, входящих в пакет
  • filelists.sqlite.bz2 (тип filelists_db) — в формате sqlite
  • other.xml.[gz] (тип other) содержит ChangeLog для пакетов в формате XML
  • other.sqlite.bz2 (тип other_db) — в формате sqlite
  • comps[-f8].xml (тип group) содержит описание групп пакетов: имя группы, назначение группы (на всех языках), описание (на всех языках), устанавливать ли группу по умолчанию, показывать ли группу при установке, список пакетов и при каких условиях устанавливать каждый пакет
  • updateinfo.xml.gz (тип updateinfo) — информация о каждом изменении (кто внёс, статус (stable), тип (безопасность, исправление ошибок, добавление функций), версия, имя, ссылка на описание (идентификатор), для какого дистрибутива, время выпуска, описание причины выпуска, откуда можно скачать

Каталог repodata создается утилитой createrepo (пакет createrepo), которой необходимо указать имя каталога с пакетами и можно использовать ключи:

  • -q меньше информации
  • -v больше информации
  • -o <имя_каталога> куда записывать результат
  • -x шаблон шаблоны исключений имён файлов, можно указывать несколько раз
  • -p создавать красочные xml файлы
  • -s sha | md5 тип контрольной суммы
  • -u URL base url, добавляется строка «xml:base=»
  • -c имя-каталога можно кешировать контрольные суммы между запусками createrepo
  • —update если пакет не изменялся, то не пересчитывать метаданные
  • —split позволяет создавать репозитарий из нескольких носителей
  • —database создавать БД в формате sqlite для ускорения работы yum

I am sure those using centos must have encountered the following message

Package 1: something already installed and latest version

I want to make my bash script ignore this message so the user doesn’t see this.

Attempts
I tried

yum -y -q install something

But it is still showing up …..

Arun's user avatar

Arun

5841 gold badge6 silver badges19 bronze badges

asked Aug 13, 2013 at 14:25

user2650277's user avatar

user2650277user2650277

6,32917 gold badges63 silver badges132 bronze badges

Try to redirect output to grep and filter the message:

yum -y -q install something 2>&1 | grep -v "already installed and latest version"

Or just completely redirect all messages to /dev/null:

yum -y -q install something >/dev/null 2>&1

answered Aug 13, 2013 at 15:28

konsolebox's user avatar

konsoleboxkonsolebox

72.3k12 gold badges100 silver badges105 bronze badges

1

Понравилась статья? Поделить с друзьями:
  • Youtube произошла ошибка повторите попытку на телефоне
  • Yum выдает ошибку
  • Yum update ошибка
  • Yii2 ошибка model generator
  • Youtube произошла ошибка повторите попытку что делать