Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:overall:apt [2024/02/29 08:53] admin [Менеджеры пакетов] |
linux:overall:apt [2025/02/20 09:41] (текущий) admin |
||
---|---|---|---|
Строка 8: | Строка 8: | ||
# добавление нового варианта (последние цифры не сильно важны) | # добавление нового варианта (последние цифры не сильно важны) | ||
- | update-alternatives --install / | + | update-alternatives --install / |
# тут какая то инфа | # тут какая то инфа | ||
update-alternatives --display java | update-alternatives --display java | ||
+ | |||
+ | # установка в неинтерактивном режиме | ||
+ | update-alternatives --set java / | ||
# расположение jvm | # расположение jvm | ||
/ | / | ||
</ | </ | ||
+ | |||
+ | |||
===== apt ===== | ===== apt ===== | ||
Строка 26: | Строка 31: | ||
* **list** - список установленных пакетов | * **list** - список установленных пакетов | ||
* **download (source)** - скачать пакет (исходный код пакета) в текущую директорию | * **download (source)** - скачать пакет (исходный код пакета) в текущую директорию | ||
+ | * **apt-get install --only-upgrade < | ||
==== Репозитории ==== | ==== Репозитории ==== | ||
Строка 83: | Строка 89: | ||
# Распаковать пакет | # Распаковать пакет | ||
sudo rpm2cpio ha_wrapper-1.0.0-20.noarch.rpm | cpio -idmv | 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> | ||
# Установка | # Установка | ||
Строка 116: | Строка 145: | ||
snap forget 2 | snap forget 2 | ||
</ | </ | ||
+ | </ | ||
Строка 127: | Строка 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[' | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||