Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:overall:apt [2023/05/05 06:00] admin [Менеджеры пакетов] |
linux:overall:apt [2025/02/20 09:41] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Менеджеры пакетов ====== | ====== Менеджеры пакетов ====== | ||
<code bash> | <code bash> | ||
- | # предложит | + | # настройка |
- | sudo update-alternatives --config java | + | update-alternatives --config java |
- | # или | + | |
+ | # перечень | ||
update-java-alternatives --list | update-java-alternatives --list | ||
+ | |||
+ | # добавление нового варианта (последние цифры не сильно важны) | ||
+ | update-alternatives --install / | ||
+ | |||
+ | # тут какая то инфа | ||
+ | update-alternatives --display java | ||
+ | |||
+ | # установка в неинтерактивном режиме | ||
+ | update-alternatives --set java / | ||
+ | |||
+ | # расположение jvm | ||
+ | / | ||
</ | </ | ||
+ | |||
+ | |||
===== apt ===== | ===== apt ===== | ||
Строка 16: | Строка 31: | ||
* **list** - список установленных пакетов | * **list** - список установленных пакетов | ||
* **download (source)** - скачать пакет (исходный код пакета) в текущую директорию | * **download (source)** - скачать пакет (исходный код пакета) в текущую директорию | ||
+ | * **apt-get install --only-upgrade < | ||
==== Репозитории ==== | ==== Репозитории ==== | ||
+ | < | ||
+ | < | ||
<code bash> | <code bash> | ||
# Добавить репозиторий | # Добавить репозиторий | ||
Строка 23: | Строка 41: | ||
echo "deb http:// | echo "deb http:// | ||
# или просто в файле **/ | # или просто в файле **/ | ||
+ | | ||
# Импорт gpg-ключей | # Импорт gpg-ключей | ||
# Актуальный вариант | # Актуальный вариант | ||
Строка 32: | Строка 50: | ||
wget -q -O - https:// | wget -q -O - https:// | ||
</ | </ | ||
+ | |||
+ | |||
+ | **Main** – свободное ПО, официально поддерживаемое компанией Canonical\\ | ||
+ | **Restricted** – проприетарное ПО (в основном — драйверы устройств), | ||
+ | **Universe** – свободное ПО, официально не поддерживаемое компанией Canonical (но поддерживаемое сообществом пользователей)\\ | ||
+ | **Multiverse** – проприетарное ПО, не поддерживаемое компанией Canonical\\ | ||
+ | |||
+ | <code bash> | ||
+ | # Ubuntu example | ||
+ | deb http:// | ||
+ | deb-src http:// | ||
+ | </ | ||
+ | </ | ||
Строка 43: | Строка 74: | ||
<code bash> | <code bash> | ||
- | sudo dnf remove/ | + | dnf autoremove - авточистка |
+ | dnf info - инфо о пакете | ||
+ | dnf search [-C] - поиск пакетов (отказ от обновления метаданных) | ||
+ | dnf list [installed/ | ||
+ | dnf repolist - перечень репозиториев | ||
+ | dnf clean all - очистка метаданных | ||
+ | dnf update/ | ||
+ | dnf makecache - пересоздать кеш пакетов заново | ||
+ | |||
+ | dnf remove/ | ||
dnf -v repolist | dnf -v repolist | ||
- | sudo dnf list installed | cat -n | + | dnf list installed | cat -n |
+ | |||
+ | # Распаковать пакет | ||
+ | sudo rpm2cpio ha_wrapper-1.0.0-20.noarch.rpm | cpio -idmv | ||
+ | |||
+ | # Локальный пакет | ||
+ | sudo dnf install app.rpm | ||
</ | </ | ||
+ | |||
+ | Добавить репозиторий из адреса\\ | ||
+ | В директории **/ | ||
+ | Но могут еще понадобиться gpg ключи, он их не добавляет и не задаем параметры для них\\ | ||
+ | <code bash> | ||
+ | dnf config-manager --add-repo http:// | ||
+ | |||
+ | cat / | ||
+ | ``` | ||
+ | [local.ru] | ||
+ | name=created by yum config-manager from http:// | ||
+ | baseurl=http:// | ||
+ | enabled=1 | ||
+ | ``` | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
===== snap ===== | ===== snap ===== | ||
+ | < | ||
+ | < | ||
<code bash> | <code bash> | ||
# Установка | # Установка | ||
Строка 78: | Строка 145: | ||
snap forget 2 | snap forget 2 | ||
</ | </ | ||
+ | </ | ||
Строка 89: | Строка 157: | ||
При установке **deb** пакета, | При установке **deb** пакета, | ||
Так же, можно скопировать deb-файл в папку **/ | Так же, можно скопировать deb-файл в папку **/ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== RPM Build ===== | ||
+ | **rpmbuild** урезанная версия rpm, только для сборки, | ||
+ | |||
+ | **mock** делает сборку в чистой среде, чрутит систему и может разом собирать для нескольких систем/ | ||
+ | Резы в рабочей директории ("/ | ||
+ | |||
+ | Для сборки src.rpm нужны spec файлы, с описанием параметров сборки из исходников, | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | Name: | ||
+ | Version: | ||
+ | Release: | ||
+ | Summary: | ||
+ | License: | ||
+ | |||
+ | %description | ||
+ | This is my first RPM package, which does nothing. | ||
+ | |||
+ | %prep | ||
+ | # we have no source, so nothing here | ||
+ | |||
+ | %build | ||
+ | cat > hello-world.sh <<EOF | ||
+ | # | ||
+ | echo Hello world | ||
+ | EOF | ||
+ | |||
+ | %install | ||
+ | mkdir -p %{buildroot}/ | ||
+ | install -m 755 hello-world.sh %{buildroot}/ | ||
+ | |||
+ | %files | ||
+ | / | ||
+ | |||
+ | %changelog | ||
+ | # let's skip this for now | ||
+ | </ | ||
+ | |||
+ | |||
+ | Сборка будет так | ||
+ | <code bash> | ||
+ | # Создание рабочих директорий | ||
+ | rpmdev-setuptree | ||
+ | # или так | ||
+ | mkdir -p my_build_dir/ | ||
+ | |||
+ | # Вторым аргументом регулируется уровень сборки, | ||
+ | rpmbuild -ba hello-world.spec | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Cборка моком, оба этапа | ||
+ | <code bash> | ||
+ | # Генерация файлов с исходниками (*.src.rpm) | ||
+ | mock -r / | ||
+ | |||
+ | # для указания пути сохранения резов | ||
+ | mock -r / | ||
+ | |||
+ | |||
+ | # Генерация пакетов (chain для списка файлов) | ||
+ | mock -r / | ||
+ | |||
+ | # для указания пути сохранения резов, пар-р " | ||
+ | mock -r / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | ★ Параллельно запустить сборки с одним конфигом нельзя (одно и тоже название для chroot-папки), | ||
+ | |||
+ | ★ Можно создавать отдельные чруты для каждой сборки, | ||
+ | UPD: Есть проблема при очистке, | ||
+ | Выход это использовать полную изоляцию, | ||
+ | |||
+ | ★ Нужно передавать на обоих этапах (исходники и пакеты) и при очистке тоже нужно передавать этот индекс | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | mock -r / | ||
+ | |||
+ | # Сборка --buildsrpm | ||
+ | mock -r / | ||
+ | |||
+ | |||
+ | # Сборка --chain | ||
+ | mock -r / | ||
+ | |||
+ | |||
+ | # Очистка | ||
+ | mock -r / | ||
+ | </ | ||
+ | При таком подходе " | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | ★ Mock создает chroot-окружения ОС, в "/ | ||
+ | |||
+ | ★ Параметр конфига " | ||
+ | |||
+ | ★ Команда "mock --clean" | ||
+ | |||
+ | ★ Команда "mock --scrub" | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * есть еще варианты " | ||
+ | |||
+ | ★ Если каждая сборка будет с уникальным названием то чистить нужно обязательно, | ||
+ | ★ Чистить руками не удается т.к права на папки рутовые, | ||
+ | |||
+ | <code bash> | ||
+ | mock -r / | ||
+ | </ | ||
+ | |||
+ | |||
+ | Запуск с изоляцией в указанной папке | ||
+ | <code bash> | ||
+ | mock -r / | ||
+ | </ | ||
+ | |||
+ | Как выглядят папки | ||
+ | <code bash> | ||
+ | / | ||
+ | drwxr-xr-x 2 root root 4096 Dec 13 06:53 dnf_cache | ||
+ | drwxr-xr-x 2 root root 4096 Dec 13 06:53 yum_cache | ||
+ | -rw-r--r-- 1 root root 0 Dec 13 06:53 yumcache.lock | ||
+ | |||
+ | / | ||
+ | drwxrwxr-x 2 root root 4096 Dec 13 06:53 root | ||
+ | |||
+ | / | ||
+ | drwxr-xr-x 6 root root 4096 Dec 13 06:53 dnf_cache | ||
+ | drwxrwxr-x 2 root root 4096 Dec 13 06:53 root_cache | ||
+ | drwxr-xr-x 2 root root 4096 Dec 13 06:53 yum_cache | ||
+ | -rw-r--r-- 1 root root 0 Dec 13 06:53 yumcache.lock | ||
+ | |||
+ | / | ||
+ | -rw-rw-r-- | ||
+ | drwxrwsr-x | ||
+ | drwxrwsr-x 12 root mock 4096 Dec 13 06:53 root | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | При использовании " | ||
+ | <code bash> | ||
+ | mock -r / | ||
+ | </ | ||
+ | |||
+ | Если запустить с пустыми параметрами то будут проблемы с очисткой, | ||
+ | <code bash> | ||
+ | mock -r / | ||
+ | </ | ||
+ | |||
+ | Спасает только указать фактический путь в параметре конфига " | ||
+ | <code bash> | ||
+ | config_opts[' | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||