Это старая версия документа!
# настройка варианта update-alternatives --config java # перечень update-java-alternatives --list # добавление нового варианта (последние цифры не сильно важны) update-alternatives --install /usr/bin/java java /usr/lib/jvm/bellsoft-java17/bin/java 333 # тут какая то инфа update-alternatives --display java # расположение jvm /usr/lib/jvm/
# Добавить репозиторий add-apt-repository "deb https://target-site stable main" echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list # или просто в файле **/etc/apt/sources.list** # Импорт gpg-ключей # Актуальный вариант curl -s <url-адрес_ключа> | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/<новое-имя>.gpg --import # Затем sudo chmod 644 /etc/apt/trusted.gpg.d/<новое-имя>.gpg # Старый вариант (может потребоваться установка gnupg2) wget -q -O - https://target-site/gpg.key | apt-key add -
Main – свободное ПО, официально поддерживаемое компанией Canonical
Restricted – проприетарное ПО (в основном — драйверы устройств), официально поддерживаемое компанией Canonical
Universe – свободное ПО, официально не поддерживаемое компанией Canonical (но поддерживаемое сообществом пользователей)
Multiverse – проприетарное ПО, не поддерживаемое компанией Canonical
# Ubuntu example deb http://ru.archive.ubuntu.com/ubuntu/ focal main universe multiverse deb-src http://ru.archive.ubuntu.com/ubuntu/ focal main universe multiverse
dnf autoremove - авточистка dnf info - инфо о пакете dnf search [-C] - поиск пакетов (отказ от обновления метаданных) dnf list [installed/available] - перечень пакетов dnf repolist - перечень репозиториев dnf clean all - очистка метаданных dnf update/upgrade - обновление пакетов dnf makecache - пересоздать кеш пакетов заново dnf remove/erase httpd dnf -v repolist dnf list installed | cat -n # Распаковать пакет sudo rpm2cpio ha_wrapper-1.0.0-20.noarch.rpm | cpio -idmv
# Установка snap install <name> --classic(?) --stable(канал) snap info <name> # Вроде установить версию в режиме разработки чтобы не обновлялась автоматом snap refresh --devmode --channel 2022.3/stable intellij-idea-community # Доступные обнвления snap refresh --list # Обновить пакет snap refresh opera # Удалить пакет snap revert opera # Список пакетов (версий пакета) snap list snap list --all opera # Внесенные изменения в систему snap changes # Создать снимок snap save # Список снимков snap saved snap saved --id=2 # Проверить целостность снимка snap check-snapshot 2 # Восстановить снимок snap restore 2 # Удалить снимок snap forget 2
При установке deb пакета, в случае отсутствующих зависимостей, можно выполнить команду # apt-get install -f, которая установит все зависимости, после повторить установку # dpkg -i file-name.deb.
Так же, можно скопировать deb-файл в папку /var/cache/apt/archives/ и установить как обычную программу # apt install file-name
rpmbuild урезанная версия rpm, только для сборки, вторая может работать так же, с теми же командами
mock делает сборку в чистой среде, чрутит систему и может разом собирать для нескольких систем/архитектур, настраивается конфигом
Резы в рабочей директории («/var/lib/mock» или «/jenkins_slave/mock»), там как минимум чрутовая система, для резов можно указать отдельные пути, в параметрах «–resultdir» для первого этапа (сборка SRPMS, файлы *.src.rpm) и «–localrepo» для второго, когда генерятся уже готовые rpm
Для сборки src.rpm нужны spec файлы, с описанием параметров сборки из исходников, далее, из этих файлов генерятся готовые rpm пакеты, эти хранятся в «RPMS»
Name: hello-world Version: 1 Release: 1 Summary: Most simple RPM package License: FIXME %description This is my first RPM package, which does nothing. %prep # we have no source, so nothing here %build cat > hello-world.sh <<EOF #!/usr/bin/bash echo Hello world EOF %install mkdir -p %{buildroot}/usr/bin/ install -m 755 hello-world.sh %{buildroot}/usr/bin/hello-world.sh %files /usr/bin/hello-world.sh %changelog # let's skip this for now
Сборка будет так
# Создание рабочих директорий rpmdev-setuptree # или так mkdir -p my_build_dir/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} # Вторым аргументом регулируется уровень сборки, до сурсов, до бинарников и тд rpmbuild -ba hello-world.spec
Cборка моком, оба этапа
# Генерация файлов с исходниками (*.src.rpm) mock -r /my_build_dir/m.cfg --buildsrpm --spec=hello.spec --sources=/my_build_dir/SOURCES # для указания пути сохранения резов mock -r /my_build_dir/m.cfg --buildsrpm --spec=hello.spec --sources=/my_build_dir/SOURCES --resultdir=/my_build_dir/SRPMS # Генерация пакетов (chain для списка файлов) mock -r /my_build_dir/m.cfg --chain $(ls *.src.rpm) # для указания пути сохранения резов, пар-р "localrepo" mock -r /my_build_dir/m.cfg --chain $(ls *.src.rpm) --localrepo /my_build_dir/RPMS/x86_64
★ Параллельно запустить сборки с одним конфигом нельзя (одно и тоже название для chroot-папки), блокируется чрут-директория
★ Можно создавать отдельные чруты для каждой сборки, для этого есть пар-р «–uniqueext», добавляет соль в название
★ Нужно передавать на обоих этапах (исходники и пакеты)
mock -r /my_build_dir/m.cfg --uniqueext=123
★ Mock создает chroot-окружения ОС, в «/var/lib/mock», создается даже два, второй «bootstrap» служебный, для раскатки туда сначала целевых менеджеров пакетов, чтобы потом этими менеджерами ставить все в итоговую (а не хостовым менеджером)
★ Основная папка удаляется (и то только после первого этапа, после второго тоже остается) а bootstrap остается всегда, для удаления можно использовать пар-р «–scrube», на вход дается имя конфига и соль (если применялась)
★ Так же кеш создается еще в «/var/cache/mock», но тут неясно, папки называются без соли и не удаляются, возможно в случае параллельных сборок он не распухает
mock -r /my_build_dir/m.cfg --uniqueext=123 --scrub=all