102.5 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
102 Установка Linux та керування пакунками |
Тема: |
102.5 Менеджери пакунків RPM та YUM |
Урок: |
1 з 1 |
Вступ
З самого початку, коли Linux ще тільки зароджувався, найпоширенішим способом розповсюдження програмного забезпечення був стиснутий файл (зазвичай архів .tar.gz
) з вихідним кодом, який ви розпаковували та компілювали самостійно.
Однак у міру зростання кількості та складності програмного забезпечення потреба в способі поширення попередньо скомпільованого програмного забезпечення стала очевидною. Зрештою, не у всіх були ресурси, як за часом, так і за обчислювальною потужністю, щоб зібрати великі проекти, такі як ядро Linux або X Server.
Незабаром зусилля щодо стандартизації способу розповсюдження цих програмних “пакунків” зросли, і з’явилися перші менеджери пакунків. Ці інструменти значно полегшили встановлення, налаштування або видалення програмного забезпечення з системи.
Одним із них був RPM Package Manager та відповідний йому інструмент (rpm
), розроблений Red Hat. Сьогодні він широко використовуються не тільки в самому Red Hat Enterprise Linux (RHEL), але і в його нащадках, таких як Fedora, CentOS і Oracle Linux, інших дистрибутивах, таких як openSUSE, і навіть інших операційних системах, таких як IBM AIX.
Інші інструменти керування пакунками, які популярні в дистрибутивах, сумісних з Red Hat, цє yum
(YellowDog Updater Modified), dnf
(Dandified YUM) та zypper
. Вони можуть спростити багато аспектів встановлення, обслуговування та видалення пакунків, роблять керування пакунками набагато простіше.
У цьому уроці ми навчимося використовувати rpm
, yum
, dnf
і zypper
для отримання, встановлення, керування та видалення програмного забезпечення в системі Linux.
Note
|
Незважаючи на використання однакового формату пакунку, між дистрибутивами існують внутрішні відмінності, тому пакунок, створений спеціально для openSUSE, може не працювати в системі RHEL, і навпаки. Під час пошуку пакунків завжди перевіряйте сумісність і, якщо можливо, намагайтеся знайти пакунок, пристосований для вашого конкретного дистрибутива. |
RPM Package Manager (rpm)
Менеджер пакунків RPM (rpm
) є основним інструментом для керування програмними пакунками в системах на основі Red Hat (або похідних).
Встановлення, оновлення та видалення пакунків
Найпростішою операцією є встановлення пакунку, яке можна виконати за допомогою:
# rpm -i PACKAGENAME
Де PACKAGENAME
– це назва пакунку .rpm
, який ви бажаєте встановити.
Якщо в системі є попередня версія пакунку, ви можете оновити його до новішої версії за допомогою параметру -U
:
# rpm -U PACKAGENAME
Якщо попередня версія PACKAGENAME
не встановлена, буде встановлено нову копію. Щоб уникнути цього і лише оновити встановлений пакунок, використовуйте параметр -F
.
В обох операціях ви можете додати параметр -v
, щоб отримати детальну вихідну інформацію (додаткова інформація відображається під час встановлення), і -h
, щоб отримати хеш-знаки (#
) для візуалізації відстеження прогресу встановлення. Кілька параметрів можна об’єднати в один, тому rpm -i -v -h
те саме, що rpm -ivh
.
Щоб видалити встановлений пакунок, передайте параметр -e
(від «erase») у rpm
, а потім ім’я пакунку, який потрібно видалити:
# rpm -e wget
Якщо встановлений пакунок залежить від пакунку, який видаляється, ви отримаєте повідомлення про помилку:
# rpm -e unzip error: Failed dependencies: /usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
Щоб завершити операцію, спочатку вам потрібно буде видалити пакунки, які залежать від того, який ви хочете видалити (у прикладі вище, file-roller
). Ви можете передати декілька імен пакунків у rpm -e
, щоб видалити декілька пакунків одночасно.
Виправлення порушених залежностей
Найчастіше пакунок може залежати від інших, щоб працювати як належить. Наприклад, редактору зображень можуть знадобитися бібліотеки для відкриття файлів JPEG, або іншій утиліті може знадобитися набір інструментів віджетів, наприклад Qt або GTK, для інтерфейсу користувача.
rpm
перевірить, чи ці залежності встановлені у вашій системі, і не зможе встановити пакунок, якщо це не так. У цьому випадку rpm
покаже, чого не вистачає. Однак він сам по собі не може вирішувати залежності.
У наведеному нижче прикладі користувач намагався встановити пакунок для редактора зображень GIMP, але деякі залежності були відсутні:
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm error: Failed dependencies: babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64 gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64 gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64 libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
Користувач повинен знайти пакунки .rpm
з відповідними залежностями та встановити їх. Менеджери пакунків, такі як yum
, zypper
і dnf
, мають інструменти, які можуть визначити, який пакунок містить певний файл. Про них піде мова далі в цьому уроці.
Виведення списку встановлених пакунків
Щоб отримати список усіх встановлених пакунків у вашій системі, скористайтеся командою rpm -qa
(«query all» — запит усіх).
# rpm -qa selinux-policy-3.13.1-229.el7.noarch pciutils-libs-3.5.1-3.el7.x86_64 redhat-menus-12.0.2-8.el7.noarch grubby-8.28-25.el7.x86_64 hunspell-en-0.20121024-6.el7.noarch dejavu-fonts-common-2.33-6.el7.noarch xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 libevdev-1.5.6-1.el7.x86_64 [...]
Отримання інформації про пакунок
Щоб отримати інформацію про встановлений пакунок, номер його версії, архітектуру, дату встановлення, пакувальник, підсумок тощо, використовуйте rpm
з параметрами -qi
(«query info» — запит інформації), а потім назву пакунку. Наприклад:
# rpm -qi unzip Name : unzip Version : 6.0 Release : 19.el7 Architecture: x86_64 Install Date: Sun 25 Aug 2019 05:14:39 PM EDT Group : Applications/Archiving Size : 373986 License : BSD Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : unzip-6.0-19.el7.src.rpm Build Date : Wed 11 Apr 2018 01:24:53 AM EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.info-zip.org/UnZip.html Summary : A utility for unpacking zip files Description : The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects. Install the unzip package if you need to list, test or extract files from a zip archive.
Щоб отримати список файлів у встановленому пакунку, використовуйте параметри -ql
(«query list» — список запитів), за якими слідує ім’я пакунку:
# rpm -ql unzip /usr/bin/funzip /usr/bin/unzip /usr/bin/unzipsfx /usr/bin/zipgrep /usr/bin/zipinfo /usr/share/doc/unzip-6.0 /usr/share/doc/unzip-6.0/BUGS /usr/share/doc/unzip-6.0/LICENSE /usr/share/doc/unzip-6.0/README /usr/share/man/man1/funzip.1.gz /usr/share/man/man1/unzip.1.gz /usr/share/man/man1/unzipsfx.1.gz /usr/share/man/man1/zipgrep.1.gz /usr/share/man/man1/zipinfo.1.gz
Якщо ви бажаєте отримати інформацію або список файлів із пакунку, який ще не інстальовано, просто додайте параметр -p
до команд вище, а потім ім’я файлу RPM (FILENAME
). Отже, rpm -qi PACKAGENAME
стає rpm -qip FILENAME
, а rpm -ql PACKAGENAME
стає rpm -qlp FILENAME
, як показано нижче.
# rpm -qip atom.x86_64.rpm Name : atom Version : 1.40.0 Release : 0.1 Architecture: x86_64 Install Date: (not installed) Group : Unspecified Size : 570783704 License : MIT Signature : (none) Source RPM : atom-1.40.0-0.1.src.rpm Build Date : sex 09 ago 2019 12:36:31 -03 Build Host : b01bbeaf3a88 Relocations : /usr URL : https://atom.io/ Summary : A hackable text editor for the 21st Century. Description : A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm /usr/bin/apm /usr/bin/atom /usr/share/applications/atom.desktop /usr/share/atom /usr/share/atom/LICENSE /usr/share/atom/LICENSES.chromium.html /usr/share/atom/atom /usr/share/atom/atom.png /usr/share/atom/blink_image_resources_200_percent.pak /usr/share/atom/content_resources_200_percent.pak /usr/share/atom/content_shell.pak (listing goes on)
Як дізнатися, до якого пакунку належить певний файл
Щоб дізнатися, до якого інстальованого пакунку належить файл, використайте -qf
(«query file» — запит файлу), за яким слід вказати повний шлях до файлу:
# rpm -qf /usr/bin/unzip unzip-6.0-19.el7.x86_64
У наведеному вище прикладі файл /usr/bin/unzip
належить до пакунку unzip-6.0-19.el7.x86_64
.
YellowDog Updater Modified (YUM)
yum
спочатку був розроблений як Yellow Dog Updater (YUP), інструмент для керування пакунками в дистрибутиві Yellow Dog Linux. З часом його стали використовувати для керування пакунками в інших системах на основі RPM, таких як Fedora, CentOS, Red Hat Enterprise Linux та Oracle Linux.
Функціонально він подібний до утиліти apt
у системах на базі Debian, яка може шукати, встановлювати, оновлювати та видаляти пакунки та автоматично обробляти залежності. yum
можна використовувати для встановлення окремого пакунку або для оновлення всієї системи одночасно.
Пошук пакунків
Щоб встановити пакунок, вам потрібно знати його назву. Для цього ви можете виконати пошук за допомогою yum search PATTERN
, де PATTERN
– це назва пакунку, який ви шукаєте. Результатом є список пакунків, чия назва або підсумок містять вказаний шаблон пошуку. Наприклад, якщо вам потрібна утиліта для обробки стиснених файлів 7Zip (з розширенням .7z
), ви можете використати:
# yum search 7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br =========================== N/S matchyutr54ed: 7zip ============================ p7zip-plugins.x86_64 : Additional plugins for p7zip p7zip.x86_64 : Very high compression ratio file archiver p7zip-doc.noarch : Manual documentation and contrib directory p7zip-gui.x86_64 : 7zG - 7-Zip GUI version Name and summary matches only, use "search all" for everything.
Встановлення, оновлення та видалення пакунків
Щоб інсталювати пакунок за допомогою yum
, скористайтеся командою yum install PACKAGENAME
, де PACKAGENAME
– ім’я пакунка. yum
витягне пакунок і відповідні залежності з онлайн-репозиторію і встановить все у вашій системі.
# yum install p7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package p7zip.x86_64 0:16.02-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: p7zip x86_64 16.02-10.el7 epel 604 k Transaction Summary ========================================================================== Install 1 Package Total download size: 604 k Installed size: 1.7 M Is this ok [y/d/N]:
Щоб оновити встановлений пакунок, використайте yum update PACKAGENAME
, де PACKAGENAME
– це ім’я пакунку, який потрібно оновити. Наприклад:
# yum update wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be updated ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Updating: wget x86_64 1.14-18.el7_6.1 updates 547 k Transaction Summary ========================================================================== Upgrade 1 Package Total download size: 547 k Is this ok [y/d/N]:
Якщо ви пропустите назву пакунку, ви можете оновити кожен пакунок у системі, для якого доступне оновлення.
Щоб перевірити, чи доступне оновлення для певного пакунку, використайте yum check-update PACKAGENAME
. Як і раніше, якщо ви пропустите ім’я пакунку, yum
перевірить наявність оновлень для кожного встановленого пакунка в системі.
Щоб видалити встановлений пакунок використайте yum remove PACKAGENAME
, де PACKAGENAME
- це ім’я пакунку, який ви хочете видалити.
Пошук, до якого пакунку належить певний файл
У попередньому прикладі ми показали спробу встановити редактор зображень gimp
, яка завершилася невдачею через незадоволені залежності. rpm
показує, які файли відсутні, але не виводить назви пакунків, які їх надають.
Наприклад, однією з відсутніх залежностей був libgimpui-2.0.so.0
. Щоб побачити, який пакунок пов’язаний з цим файлом, ви можете використати yum whatprovides
, а потім надати ім’я файлу, який ви шукаєте:
# yum whatprovides libgimpui-2.0.so.0 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br 2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries Repo : base Matched from: Provides : libgimpui-2.0.so.0
Відповідь: gimp-libs-2.8.22-1.el7.i686
. Потім ви можете встановити пакунок за допомогою команди yum install gimp-libs
.
Це також працює для файлів, які вже є у вашій системі. Наприклад, якщо ви хочете дізнатися, звідки взявся файл /etc/hosts
, ви можете використати:
# yum whatprovides /etc/hosts Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br setup-2.8.71-10.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/hosts
Відповідь: setup-2.8.71-10.el7.noarch
.
Отримання інформації про пакунок
Щоб отримати інформацію про пакунок, його версію, архітектуру, опис, розмір тощо, використовуйте yum info PACKAGENAME
, де PACKAGENAME
– це назва пакунку, про який потрібно отримати інформацію:
# yum info firefox Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03. Installed Packages Name : firefox Version : 69.0.1 Release : 3.fc30 Architecture : x86_64 Size : 268 M Source : firefox-69.0.1-3.fc30.src.rpm Repository : @System From repo : updates Summary : Mozilla Firefox Web browser URL : https://www.mozilla.org/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Mozilla Firefox is an open-source web browser, designed : for standards compliance, performance and portability.
Керування репозиторіями програмного забезпечення
Для yum
«repos» перелічені в каталозі /etc/yum.repos.d/
. Кожен репозиторій представлений файлом .repo
, таким як CentOS-Base.repo
.
Користувач може додати додаткові репозиторії, додавши файл .repo
до каталогу, згаданого вище, або в кінці /etc/yum.conf
. Проте, рекомендований спосіб додавати репозиторії чи керувати ними – це інструмент yum-config-manager
.
Щоб додати репозиторій, використайте параметр --add-repo
, а потім додайте URL-адресу до файлу .repo
.
# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://rpms.remirepo.net/enterprise/remi.repo grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo repo saved to /etc/yum.repos.d/remi.repo
Щоб отримати список усіх доступних репозиторіїв, використайте yum repolist all
. Ви отримаєте результат, подібний до цього:
# yum repolist all Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br repo id repo name status updates/7/x86_64 CentOS-7 - Updates enabled: 2,500 updates-source/7 CentOS-7 - Updates Sources disabled
disabled
(вимкнені) репозиторії будуть ігноруватися під час встановлення або оновлення програмного забезпечення. Щоб увімкнути або вимкнути репозиторій, скористайтеся утилітою yum-config-manager
та ідентифікатором репозиторію.
У наведених вище результатах ідентифікатор сховища відображається в першому стовпці (repo id
) кожного рядка. Використовується лише частина перед першим /
, тому ідентифікатором для репозиторію CentOS-7 - Updates
є updates
, а не updates/7/x86_64
.
# yum-config-manager --disable updates
Команда вище вимкне репозиторій updates
. Щоб знову ввімкнути його, скористайтеся:
# yum-config-manager --enable updates
Note
|
Yum зберігає завантажені пакунки та пов’язані з ними метадані в каталозі кешу (зазвичай |
DNF
dnf
— це інструмент керування пакунками, який використовується у Fedora, і є форком yum
. Таким чином, багато команд і параметрів схожі. Цей розділ дасть вам лише короткий огляд dnf
.
- Пошук пакунків
-
dnf search PATTERN
, деPATTERN
– це те, що ви шукаєте. Наприклад,dnf search unzip
покаже усі пакунки, які містять словоunzip
у назві чи описі. - Отримання інформації про пакунок
-
dnf info PACKAGENAME
- Встановлення пакунків
-
dnf install PACKAGENAME
, деPACKAGENAME
– це ім’я пакунка, який ви бажаєте встановити. Ви можете знайти назву, виконавши пошук. - Видалення пакунків
-
dnf remove PACKAGENAME
- Оновлення пакунків
-
dnf upgrade PACKAGENAME
, щоб оновити лише один пакунок. Пропустіть ім’я пакунку, щоб оновити всі пакунки в системі. - Дізнатися, який пакунок містить певний файл
-
dnf provides FILENAME
- Отримання списку всіх пакунків, встановлених в системі
-
dnf list --installed
- Перелік вмісту пакунку
-
dnf repoquery -l PACKAGENAME
Note
|
|
Управління репозиторіями програмного забезпечення
Так само, як yum
і zypper
, dnf
працює з репозиторіями програмного забезпечення (repos). Кожен дистрибутив має список репозиторіїв за замовчуванням, і адміністратори можуть додавати або видаляти репозиторії за потреби.
Щоб отримати список усіх доступних репозиторіїв, використовуйте dnf repolist
. Щоб вивести лише увімкнені репозиторії, додайте параметр --enabled
, а щоб вивести лише вимкнені репозиторії, додайте параметр --disabled
.
# dnf repolist Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03. repo id repo name status *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 12,774 *updates-modular Fedora Modular 30 - x86_64 - Updates 145
Щоб додати репозиторій, використовуйте dnf config-manager --add_repo URL
, де URL
є повною URL-адресою репозиторію. Щоб увімкнути репозиторій, використовуйте dnf config-manager --set-enabled REPO_ID
.
Аналогічно, щоб вимкнути репозиторій, використовуйте dnf config-manager --set-disabled REPO_ID
. В обох випадках REPO_ID
є унікальним ідентифікатором репозиторію, який ви можете отримати за допомогою dnf repolist
. Додані репозиторії ввімкнені за замовчуванням.
Репозиторії зберігаються у файлах .repo
у каталозі /etc/yum.repos.d/
з таким самим синтаксисом, що використовується для yum
.
Zypper
zypper
– це інструмент керування пакунками, який використовується в SUSE Linux та OpenSUSE. За функціями він подібний до apt
і yum
, оскільки може встановлювати, оновлювати та видаляти пакунки з системи з автоматичним розв’язанням залежностей.
Оновлення індексу пакунків
Як і інші інструменти керування пакунками, zypper
працює з репозиторіями, що містять пакунки та метадані. Ці метадані потрібно час від часу оновлювати, щоб утиліта знала про останні доступні пакунки. Щоб оновити, просто введіть:
# zypper refresh Repository 'Non-OSS Repository' is up to date. Repository 'Main Repository' is up to date. Repository 'Main Update Repository' is up to date. Repository 'Update Repository (Non-Oss)' is up to date. All repositories have been refreshed.
zypper
має функцію автоматичного оновлення, яку можна ввімкнути для кожного репозиторію. Це означає, що деякі репозиторії можуть оновлюватися автоматично перед запитом але встановленням пакунку, а інші, можливо, потрібно буде оновити вручну. Незабаром ви дізнаєтеся, як керувати цією функцією.
Пошук пакунків
Щоб знайти пакунок, скористайтеся оператором search
(або se
), за яким слідує ім’я пакунку:
# zypper se gnumeric Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------+-------- | gnumeric | Spreadsheet Application | package | gnumeric-devel | Spreadsheet Application | package | gnumeric-doc | Documentation files for Gnumeric | package | gnumeric-lang | Translations for package gnumeric | package
Оператор пошуку також може бути використаний для отримання списку всіх встановлених пакунків у системі. Для цього використовуйте параметр -i
без назви пакунку, як у zypper se -i
.
Щоб перевірити, чи встановлено певний пакунок, додайте назву пакунку до команди вище. Наприклад, наступна команда шукатиме серед встановлених пакунків будь-які, що містять “firefox” у назві:
# zypper se -i firefox Loading repository data... Reading installed packages... S | Name | Summary | Type --+------------------------------------+-------------------------+-------- i | MozillaFirefox | Mozilla Firefox Web B-> | package i | MozillaFirefox-branding-openSUSE | openSUSE branding of -> | package i | MozillaFirefox-translations-common | Common translations f-> | package
Щоб шукати лише серед невстановлених пакунків, додайте параметр -u
до оператора se
.
Встановлення, оновлення та видалення пакунків
Щоб інсталювати пакунок програмного забезпечення, скористайтеся оператором install
(або in
), а потім введіть ім’я пакунку. Таким чином:
# zypper in unrar zypper in unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: unrar 1 new package to install. Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package unrar-5.7.5-lp151.1.1.x86_64 (1/1), 141.2 KiB (301.6 KiB unpacked) Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done] Checking for file conflicts: .......................................[done] (1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]
zypper
також можна використовувати для встановлення пакунка RPM на диск, намагаючись задовольнити його залежності, використовуючи пакунки з репозиторіїв. Для цього просто вкажіть повний шлях до пакунку замість його імені, наприклад zypper in /home/john/newpackage.rpm
.
Щоб оновити пакунки, встановлені в системі, використовуйте zypper update
. Як і в процесі встановлення, перед тим, як запитати, чи хочете ви продовжити, буде показано список пакунків, які потрібно встановити/оновити.
Якщо ви бажаєте лише вивести доступні оновлення, нічого не встановлюючи, ви можете використати zypper list-updates
.
Щоб видалити пакунок, скористайтеся оператором remove
(або rm
), за яким зазначте ім’я пакунку:
# zypper rm unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: unrar 1 package to remove. After the operation, 301.6 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]
Майте на увазі, що видалення пакунку також видаляє будь-які інші пакунки, які залежать від нього. Наприклад:
# zypper rm libgimp-2_0-0 Loading repository data... Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed. Reading installed packages... Resolving package dependencies... The following 6 packages are going to be REMOVED: gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0 libgimpui-2_0-0 6 packages to remove. After the operation, 98.0 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):
Пошук пакунків, які містять певний файл
Щоб побачити, які пакунки містять певний файл, скористайтеся оператором пошуку, за яким слідує параметр --provides
та ім’я файлу (або повний шлях до нього). Наприклад, якщо ви хочете знати, які пакунки містять файл libgimpmodule-2.0.so.0
у /usr/lib64/
, ви можете використати:
# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0 Loading repository data... Reading installed packages... S | Name | Summary | Type --+---------------+----------------------------------------------+-------- i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package
Отримання інформації про пакунок
Щоб побачити метадані, пов’язані з пакунком, скористайтеся оператором info
, а потім введіть ім’я пакунку. Це надасть вам вихідний репозиторій, назву пакунку, версію, архітектуру, постачальника, розмір для встановлення, встановлений чи ні, статус (якщо він оновлений), вихідний пакунок та опис.
# zypper info gimp Loading repository data... Reading installed packages... Information for package gimp: ----------------------------- Repository : Main Repository Name : gimp Version : 2.8.22-lp151.4.6 Arch : x86_64 Vendor : openSUSE Installed Size : 29.1 MiB Installed : Yes (automatically) Status : up-to-date Source package : gimp-2.8.22-lp151.4.6.src Summary : The GNU Image Manipulation Program Description : The GIMP is an image composition and editing program, which can be used for creating logos and other graphics for Web pages. The GIMP offers many tools and filters, and provides a large image manipulation toolbox, including channel operations and layers, effects, subpixel imaging and antialiasing, and conversions, together with multilevel undo. The GIMP offers a scripting facility, but many of the included scripts rely on fonts that we cannot distribute.
Управління репозиторіями програмного забезпечення
zypper
також можна використовувати для керування репозиторіями програмного забезпечення. Щоб переглянути список усіх репозиторіїв, які зараз зареєстровані у вашій системі, скористайтеся zypper repos
:
# zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+------------------------------------+---------+-----------+-------- 1 | openSUSE-Leap-15.1-1 | openSUSE-Leap-15.1-1 | No | ---- | ---- 2 | repo-debug | Debug Repository | No | ---- | ---- 3 | repo-debug-non-oss | Debug Repository (Non-OSS) | No | ---- | ---- 4 | repo-debug-update | Update Repository (Debug) | No | ---- | ---- 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No | ---- | ---- 6 | repo-non-oss | Non-OSS Repository | Yes | (r ) Yes | Yes 7 | repo-oss | Main Repository | Yes | (r ) Yes | Yes 8 | repo-source | Source Repository | No | ---- | ---- 9 | repo-source-non-oss | Source Repository (Non-OSS) | No | ---- | ---- 10 | repo-update | Main Update Repository | Yes | (r ) Yes | Yes 11 | repo-update-non-oss | Update Repository (Non-Oss) | Yes | (r ) Yes | Yes
У стовпці Enabled
видно, що деякі репозиторії увімкнені, а інші ні. Ви можете змінити це за допомогою оператора modifyrepo
, за яким слідує параметр -e
(увімкнути) або -d
(вимкнути) та псевдонім репозиторію (другий стовпець у виведенні вище).
# zypper modifyrepo -d repo-non-oss Repository 'repo-non-oss' has been successfully disabled. # zypper modifyrepo -e repo-non-oss Repository 'repo-non-oss' has been successfully enabled.
Раніше ми згадували, що zypper
має можливість автоматичного оновлення, яку можна ввімкнути для кожного репозиторію. Якщо опція ввімкнена, цей прапор змусить zypper
виконувати операцію оновлення (так само, як запуск zypper refresh
) перед початком роботи з вказаним репозиторієм. Цим можна керувати за допомогою параметрів -f
та -F
оператора modifyrepo
:
# zypper modifyrepo -F repo-non-oss Autorefresh has been disabled for repository 'repo-non-oss'. # zypper modifyrepo -f repo-non-oss Autorefresh has been enabled for repository 'repo-non-oss'.
Додавання та видалення репозиторіїв
Щоб додати новий репозиторій програмного забезпечення для zypper
, використайте оператор addrepo
, а потім додайте URL-адресу репозиторію та його ім’я, як показано нижче:
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman Adding repository 'packman' ........................................[done] Repository 'packman' successfully added URI : http://packman.inode.at/suse/openSUSE_Leap_15.1/ Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.
Під час додавання репозиторію ви можете ввімкнути автоматичне оновлення за допомогою параметра -f
. Додані репозиторії ввімкнені за замовчуванням, але ви можете додавати та вимикати репозиторій одночасно, використовуючи параметр -d
.
Щоб видалити репозиторій, скористайтеся оператором removerepo
, за яким слідує ім’я репозиторію (псевдонім). Щоб видалити репозиторій, доданий у прикладі вище, команда буде виглядати так:
# zypper removerepo packman Removing repository 'packman' ......................................[done] Repository 'packman' has been removed.
Вправи до посібника
-
Використовуючи
rpm
у системі Red Hat Enterprise Linux, як би ви встановили пакунокfile-roller-3.28.1-2.el7.x86_64.rpm
, щоб було відображення індикатору виконання під час встановлення? -
За допомогою
rpm
дізнайтеся, який пакунок містить файл/etc/redhat-release
. -
Як би ви використали
yum
, щоб перевірити наявність оновлень для всіх пакунків у системі? -
Використовуючи
zypper
, як би ви відключили репозиторій, який називається repo-extras? -
Якщо у вас є файл
.repo
, що описує новий репозиторій, куди слід помістити цей файл, щоб він був розпізнаний DNF?
Дослідницькі вправи
-
Як би ви використали
zypper
, щоб дізнатися, якому пакунку належить файл/usr/sbin/swapon
? -
Як за допомогою
dnf
отримати список усіх встановлених пакунків у системі? -
Використовуючи
dnf
, яка команда додасть до системи репозиторій, розташований за адресоюhttps://www.example.url/home:reponame.repo
? -
Як ви можете використовувати
zypper
, щоб перевірити, чи встановлено пакунокunzip
? -
Використовуючи
yum
, дізнайтеся, який пакунок містить файл/bin/wget
.
Підсумки
На цьому уроці ми дізналися:
-
Як використовувати
rpm
для встановлення, оновлення та видалення пакунків. -
Як використовувати
yum
,zypper
таdnf
. -
Як отримати інформацію про пакунок.
-
Як отримати список вмісту пакунку.
-
Як дізнатися, з якого пакунку надійшов файл.
-
Як вивести, додати, видалити, увімкнути або вимкнути репозиторії програмного забезпечення.
На цьому уроці обговорювалися наступні команди:
-
rpm
-
yum
-
dnf
-
zypper
Відповіді на вправи до посібника
-
Використовуючи
rpm
у системі Red Hat Enterprise Linux, як би ви встановили пакунокfile-roller-3.28.1-2.el7.x86_64.rpm
, щоб було відображення індикатору виконання під час встановлення?Використовуйте параметр
-i
, щоб встановити пакунок, і параметр-h
, щоб увімкнути «хеш-мітки», що показують прогрес встановлення. Отже, відповідь:rpm -ih file-roller-3.28.1-2.el7.x86_64.rpm
. -
За допомогою
rpm
дізнайтеся, який пакунок містить файл/etc/redhat-release
.Ви запитуєте інформацію про файл, тому використовуйте параметр
-qf
:rpm -qf /etc/redhat-release
. -
Як би ви використали
yum
, щоб перевірити наявність оновлень для всіх пакунків у системі?Використовуйте операцію
check-update
без імені пакунку:yum check-update
. -
Використовуючи
zypper
, як би ви відключили репозиторій, який називається repo-extras?Використовуйте команду
modifyrepo
, щоб змінити параметри репозиторію, і параметр-d
, щоб вимкнути його:zypper modifyrepo -d repo-extras
. -
Якщо у вас є файл
.repo
, що описує новий репозиторій, куди слід помістити цей файл, щоб він був розпізнаний DNF?Файли
.repo
для DNF слід розмістити в тому самому місці, яке використовується YUM, всередині/etc/yum.repos.d/
.
Відповіді до дослідницьких вправ
-
Як би ви використали
zypper
, щоб дізнатися, якому пакунку належить файл/usr/sbin/swapon
?Використовуйте оператор
se
(search — пошук) і параметр--provides
:zypper se --provides /usr/sbin/swapon
. -
Як за допомогою
dnf
отримати список усіх встановлених пакунків у системі?Використовуйте оператор
list
, за яким слідує параметр--installed
:dnf list --installed
. -
Використовуючи
dnf
, яка команда додасть до системи репозиторій, розташований за адресоюhttps://www.example.url/home:reponame.repo
?Робота з репозиторіями є «зміною конфігурації», тому використовуйте параметр
config-manager
і--add_repo
:dnf config-manager --add_repo https://www.example.url/home: reponame.repo
. -
Як ви можете використовувати
zypper
, щоб перевірити, чи встановлено пакунокunzip
?Вам потрібно виконати пошук (
se
) у встановлених (-i
) пакунках:zypper se -i unzip
. -
Використовуючи
yum
, дізнайтеся, який пакунок містить файл/bin/wget
.Щоб дізнатися, до якого пакунку належить файл, використовуйте
whatprovides
та ім’я файлу:yum whatprovides /bin/wget
.