Как стать автором
Обновить

Комментарии 44

Есть вариант с apt-get и rpm пакетами (успешно используется в Alt Linux).


Еще есть такая игрушка, как pkcon (вроде из убунты, но реально встречал только на Sailfish).


Программа Synaptic с графическим интерфейсом решает 90% задач управления пакетами.

спрашивал на opennet у евангелиста Alt Linux (М.Шигорина) зачем надо было это делать? Для чего? Мне не ответили и я так и не понял. Может вы в курсе? Это чисто эстетика?

Могу ошибаться, но вроде придумали apt для rpm не они. Они только прикрутили и доработали под свой дистрибутив.
Зачем оно было придумано, достоверно, наверное, знает только автор.
Могу только предположить, что из-за популярности apt-get и прочих apt для пакетов .deb и наличия некоторого числа оберток вокруг apt-get.

На тот момент команде ALT Linux понравилась эстетика apt, а вся автоматизация сборки пакетов была заточена под rpm. Вот и совместили. Результат вполне не плох.

В то время значительная часть софта для Linux была готова для сборки rpm, но пакетные менеджеры для rpm были не слишком хороши. Зато был готовый хороший пакетный менеджер apt. Сложно скажать, съэкономили они усилия на написание собственного пакетного менеджера или потратили их больше, перепиливая apt под неродной формат, но логика решения понятна.

В debian-based со всеми задачами также успешно справляется и apt.

apt install package  # установить/обновить пакет
apt remove package   # удалить пакет
apt purge package    # удалить с данными/конфигами
apt update           # обновить информацию о пакетах
apt upgrade          # обновить пакеты
apt dist-upgrade     # обновить систему
apt search package   # найти пакет
apt depends package  # зависимсости пакета
apt rdepends package # обратные зависимости
apt list --installed # список установленных пакетов
apt show package     # сведения о пакете


Аналогом dpkg -L может быть apt-file.

Не со всеми. В отличие от apt-get, не умеет --no-install-recommens и --purge.

Может и не со всеми, но с указанными вами задачами точно справится.
apt install package --install-recommends=no
И apt remove package --purge тоже умеет.

Полезно, буду знать. А как вы это нашли? apt help про эти опции молчит и man apt тоже.

Насколько помню, на эти опции наткнулся благодаря автодополнению:


$ apt install --
--allow-change-held-packages   --ignore-missing
--allow-downgrades             --install-recommends
--allow-insecure-repositories  --install-suggests
--allow-remove-essential       --only-upgrade
--allow-unauthenticated        --print-uris
--arch-only                    --purge
--assume-no                    --reinstall
--assume-yes                   --remove
--auto-remove                  --show-progress
--download                     --show-upgraded
--download-only                --simulate
--dry-run                      --solver
--fix-broken                   --target-release
--fix-missing                  --trivial-only
--fix-policy                   --upgrade
--force-yes                    --verbose-versions
--ignore-hold                  

Всё ок с документацией:


   DESCRIPTION
   apt provides a high-level commandline interface for the package management system. It is intended as an end user interface and enables some options better suited for interactive usage by default compared to more specialized APT tools like apt-get(8) and apt-cache(8).

   Much like apt itself, its manpage is intended as an end user interface and as such only mentions the most used commands and options partly to not duplicate information in multiple places and partly to avoid overwhelming readers with a cornucopia of options and details.

То есть: тут обзор основных режимов, конкретные флаги смотри в манам к другим утилитам.


Абзац про install начинается с


install, remove, purge (apt-get(8))


Ну то есть см man 8 apt-get. apt install поддерживает все ключи, поддерживаемые apt-get install

Да, невнимательно смотрел, (apt-get(8)) не заметил. Спасибо.

Мне казалось, что, во всяком случае в Убунте, apt считается теперь более предпочтительным, чем apt-get

В документации и handbook-е Debian упоминается, что apt предпочтителнее именно для интерактивного использования (присутствует цветной вывод, индикатор выполения).


Инструмент apt совмещает функциональность apt-get и apt-cache, а также по умолчанию использует красивый цветной формат вывода, что очень удобно. Для использования в сценариях или для продвинутого использования предпочтительнее использовать apt-get (а иногда он просто необходим). link

Да и при попытке использования в неинтерактивном режиме он выдаст warning:


WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
закидайте меня тряпками :) но интерактивность есть в apt кот наплакал :) если уж говорить про интерактивность, то уж aptitude, тут тебе и красивая интерактивная псевдографика и прочий обмен мыслями между пользователем и программной оболочкой…
$ sudo emerge -pvuDN -1 #(aka --oneshot) Обычная установка, но пакеты не будут добавлены в файл world и, следовательно, не будут в дальнейшем обновляться.
$ sudo emerge -pvuDN --backtrack=COUNT #где COUNT целое значение, обозначает количество обращений к системе контроля ошибок, в случае если определение зависимостей завершается ошибкой по причине конфликта или неразрешенной зависимости (значение по умолчанию: 10).
$ sudo emerge -pvuDN --keep-going=y # Если "у", то продолжает установку после ошибки настолько, насколько это возможно. При возникновении ошибки зависимости для остальных пакетов автоматически пересчитываются, все пакеты с неудовлетворенными зависимостями автоматически исключаются.
$ sudo emerge -pvuDN --load-average=LOAD # При выставленной опции новая сборка не будет начата, пока не завершится предыдущая установка, а среднее число процессов на исполнение не ниже LOAD (число с плавающей точкой). Данную опцию рекомендуется использовать в связке с --jobs, чтобы избежать чрезмерной нагрузки.
$ sudo emerge -pvuDN --jobs=JOBS # Указывает, сколько(JOBS) пакетов будет собираться одновременно. Если задать эту опцию без аргумента, одновременно может выполняться неограниченное количество заданий.
Вообще, в emerge много интересных параметров. Например:
--buildpkg [ y | n ] (сокращенно -b) Указывает emerge собирать бинарные пакеты для всех обработанных ебилдов, а не только разворачивать.
--usepkg [ y | n ] (сокращенно -k) Указывает emerge использовать бинарные пакеты (из каталога $PKGDIR), если они доступны, тем самым по возможности избегая продолжительных компиляций.
--prune (-P) Удаляет из системы все версии пакетов, кроме последних установленных релизов. Для отображения обратных зависимостей используйте с --prune ключ --verbose.
Ну и --fetchonly (сокращенно -f) для скачивания без установки и --buildpkgonly (сокращенно -B) создает бинарные пакеты для всех обработанных ебилдов без установки — при условии, что все зависимости времени построения уже установлены в системе.
Весьма гибкая система. Если внимательно прочесть man(русскую версию для gentoo никак «до ума» довести не могу. Есть от calculate, но она весьма скудна), то проблем с зависимостями и обновлением не возникает(кроме случаев «кривой» сборки package мантейнерами. Бывает, да).

Ещё из достаточно популярных есть apk — используется в Alpine Linux, который часто встречается в контейнерах докера.


Но польза от описанного списка команд практически нулевая — примерно то же самое становится очевидно из вывода --help любого менеджера пакетов. Что было бы полезным, так это описание типовых задач с указанием особенностей каждого дистрибутива — например какие есть варианты полного обновления системы (только безопасность, все пакеты, все с удалением устаревших, автоматическое обновление не требующее ручного вмешательства) и чем они отличаются (например какие дополнительные операции вроде ручного обновления изменённых конфигов, разрешения конфликтов, ручного перезапуска сервисов, etc. требуются после обновлений), как выбрать нужную версию устанавливаемого пакета (включая доступные варианты и способы подключения других репозиториев), как найти доступные версии нужного пакета (в т.ч. зная какой бинарник нужно установить но не зная как называется пакет в этом дистрибутиве), etc.

Про dnf забыли.
Не увидел ответа на вопрос:
чьих этот файл, откуда вообще взялась эта библиотека?

dpkg -S
rpm -q -f
не увидел yaourt для арча.
Работает ещё и для сборки пакетов из aur с repo.archlinux.fr
там ещё есть powerprill, но я ниасилил :)
Или pacaur))

И для debian указали update, а для арча нет:
pacman -Sy

Ну и
pacman -Su
pacman -Syu

0install? :D

Есть еще urpm/rpmdrake на чем работают Mandriva/Rosa/Mageia
Так же хотел бы добавить такие менеджеры пакетов как opkg/apkg, котрые используются в OpenWRT(LEDE) и alpinelinux
а Альпины просто чудовищно быстрый пакетный менеджер, я поражен. Apt в несколько раз медленнее.

By the way… Pacman используется в msys2 для Windows.

$ aptitude update #проверить и установить обновления;

Не-а, не установить. Только обновить список. И apt update еще предупреждает об обновлениях, (apt-get и aptitude — нет). Ubuntu16.04, если что.

А также XBPS для Void Linux. И eopkg для Solus OS.

Хоть сценарий с Gentoo и умозрительный, он все же бедней предыдущих. У emerge исчерпывающий мануал, но поиск eix заслуживает отдельного упоминания, поскольку какой пакетный менеджер без поиска?

Не применяйте предложенные варианты использования emerge для Gentoo. Как автор сам признался, тут оно только для галочки, но лучше б он умолчал о portage, чем написал это. Гентушникам оно без пользы, а новички споткнутся. Уважаемый автор, не делайте так больше, пожалуйста.
Уважаемый, я с оформлением man застопорился. А перевод готов полностью.
Что вы имеете сказать по сути вопроса?
dnf system-upgrade download --refresh --releasever=26
dnf system-upgrade reboot

Действует как
apt-get dist-upgrade
НЛО прилетело и опубликовало эту надпись здесь
wajig это очень грамотная обёртка над хаотичным набором дебиановских тулзов, может не во всём идеальная, но только она и годится на гордое звание пакетного менеджера, остальное это лишь отдельные части системы управления пакетами.
Большой плюс, особенно для новичков, что в одном man'е можно узреть все возможности, получается единая дока по управлению пакетами.
Некоторые функции доступны с дополнительным МП dpkg.
Таки dpkg — это «medium-level» между dpkg-deb, работающий непосредственно с файлами пакетов, и apt/aptitude, предоставляющими полноценный интерфейс для пользователей и активно использующие эту утилиту. В зависимостях у apt отсутствует, поскольку находится в списке базовых системных пакетов.
Как вы думаете, можно ли считать brew пакетным менеджером в macOS? (Хотя бы в том смысле, в котором автор называет emerge пакетным менеджером?)

Сейчас и так малое количество пользователей линукса сильно фагментировано, это печально.


Например, в статье тема сторонних [бинарных] репозиториев не раскрыта. А как бы полезно было, если б придумали универсальный формат пакета, интегрируемый как в Debian, так и в CentOS с Arch и Gentoo, так и соответственно — универсальный пакетный менеджер. Тогда все залежи бинарников в PPA и сторонних портежах смогло активно использоваться всеми линуксоидами.


Трансформеры deb-rpm (типа alien) частично решают проблему, но только для пакетов, имеющих мало зависимостей, да и то: только для отдельных файлов-пакетов — передаваемых без пакетных менеджеров.

универсальный формат — tar-архив дерева файлов комплекта ПО, присутствует что в рпм что в дебе :)

далее начинаются внешние потребности: инсталяционные скрипты и зависимости от других пакетов, вот тут уже бывает сложно и немашиночитаемо, человек обычно погуглив справляется, а вот для машины такие сентенции не доступны.

вообще что красношапку, соотвественно настроив репозиторий, можно поставить из дебов, да и наоборот — без разницы, это всего лишь инструмент, он делает то, на что запрограмирован.
Несколько слов про один из старейших среди ныне поддерживаемых дистрибутивов.

Slackware Linux и pkgtools / slackpkg

# installpkg файл-пакета ... # установить пакеты
upgradepkg файл-пакета ... # обновить установленные пакеты
removepkg имя-пакета ...   # удалить пакеты
removepkg -copy пакет      # создать копию дерева файлов пакета
explodepkg файл-пакета ... # распаковать пакет, не исполнять сценарии
makepkg файл-пакета        # собрать поддерево ./ в пакет
pkgtool                    # dialog-овая установка, удаление, настройка

slackpkg check-updates     # проверить наличие обновлений
slackpkg update [gpg]      # обновить сведения о пакетах / ключ
slackpkg install маски     # установить пакеты
slackpkg reinstall маски   # переустановить пакеты
slackpkg upgrade маски     # обновить пакеты
slackpkg upgrade-all       # обновить всё доступное
slackpkg remove маски      # удалить пакеты
slackpkg generate-template # создать шаблон
slackpkg install-template  # установить набор по шаблону
slackpkg remove-template   # удалить набор по шаблону
slackpkg clean-system      # удалить сторонние пакеты
slackpkg file-search файл  # пакет по файлу
slackpkg search маска      # поиск пакета
slackpkg blacklist маска   # исключить пакеты из обработки
slackpkg info пакет        # сведения о пакете
slackpkg new-config        # выполнить слияние конфигов

Помимо штатных существует также несколько сторонних менеджеров: slapt-get/slapt-src (по мотивам apt), они же в графике: gslapt/sourcery (эта четверка является основным менеджером в Salix, сохраняющем бинарную совместимость со Slackware), sbopkg (автоматизация сборки пакетов по слакбилдам), а также еще некоторое количество, появившихся относительно недавно…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории