Инструменты пользователя

Инструменты сайта


linux:overall:apt

Это старая версия документа!


Менеджеры пакетов

  # настройка варианта
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/

apt

  • install - установка
  • remove - удаление
  • purge - полностью удалит пакет и все конфиги
  • autoremove - тоже очистка ненужного
  • show - информация о пакете
  • reinstall - переустановить пакет
  • list - список установленных пакетов
  • download (source) - скачать пакет (исходный код пакета) в текущую директорию

Репозитории

:!: Репозитории
  # Добавить репозиторий
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 (yum)

  • -qi - получить информацию об установленном пакете
  • -qip - посмотреть файлы документации определенного пакета
  • -qpR - Проверить зависимости rpm пакета перед установкой
  • -ivh - установка
  • -e - удаление (–nodeps)
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

:!: Examples
  # Установка
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

dpkg

  • -i имя_файла - установка указанного deb пакета
  • -s пакет - информация о пакете, статус установки, версия, зависимости и т.д.
  • –list - все установленные пакеты
  • –configure -a - очистка от ненужного

При установке deb пакета, в случае отсутствующих зависимостей, можно выполнить команду # apt-get install -f, которая установит все зависимости, после повторить установку # dpkg -i file-name.deb.
Так же, можно скопировать deb-файл в папку /var/cache/apt/archives/ и установить как обычную программу # apt install file-name

RPM Build

rpmbuild урезанная версия rpm, только для сборки, вторая может работать так же, с теми же командами

mock делает сборку в чистой среде, чрутит систему и может разом собирать для нескольких систем/архитектур, настраивается конфигом
Резы в рабочей директории («/var/lib/mock» или «/jenkins_slave/mock»), там как минимум чрутовая система, для резов можно указать отдельные пути, в параметрах «–resultdir» для первого этапа (сборка SRPMS, файлы *.src.rpm) и «–localrepo» для второго, когда генерятся уже готовые rpm

Для сборки src.rpm нужны spec файлы, с описанием параметров сборки из исходников, далее, из этих файлов генерятся готовые rpm пакеты, эти хранятся в «RPMS»

:!: Пример минимального spec, не требующего доп исходников
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
:!: Mock

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», на вход дается имя конфига и соль (если применялась)

mock -r /my_build_dir/m.cfg --uniqueext=123 --scrub=all
linux/overall/apt.1729325089.txt.gz · Последнее изменение: 2024/10/19 08:04 — admin