Записки IT специалиста
Linux — начинающим. Часть 5. Управление пакетами в Debian и Ubuntu
- Автор: Уваров А.С.
- 20.09.2019
Умение устанавливать, обновлять и удалять программное обеспечение относится к важнейшим навыкам работы с любой операционной системой. Поэтому изучение данного вопроса первостепенная задача для любого начинающего пользователя Linux, сразу после того, как он немного осмотрелся в системе. К сожалению, нет единого способа управления ПО, подходящего для всех дистрибутивов, разные семейства предполагают различные подходы, хотя общие принципы во многом совпадают. В данном материале мы будем разбирать вопрос применительно к системам основанным на Debian и Ubuntu.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Пакеты и репозитории
Слова, вынесенные в подзаголовок, знакомы любому пользователю Linux, но не все знают, что именно за ними кроется. Начнем с пакетов. Пакет — это архив специального формата, который содержит все необходимые приложению бинарные и конфигурационные файлы, информацию о том, как их следует разместить в файловой системе, данные о зависимостях пакета, а также список действий которые необходимо выполнить в процессе установки. Вы можете сами открыть любой пакет при помощи архиватора и посмотреть, что у него внутри.
![]()
Существуют различные форматы пакетов, наиболее распространенными из которых являются RPM (рекурсивный акроним RPM Package Manager, ранее Red Hat Package Manager) и DEB (сокращение от Debian). Первый используется в основанных на Red Hat/Fedora дистрибутивах, а также некоторых иных, например, OpenSUSE, второй — во всем многочисленном семействе систем на базе Debian и его производных, включая один из самых популярных дистрибутивов — Ubuntu.
Несмотря на разные форматы, общие принципы построения и управления пакетами в различных Linux системах совпадают, поэтому если вы овладеете приемами работы с одним форматом пакетов, то переучиться на другой не составит особого труда.
Еще одна особенность пакетов Linux вытекает из следования некоторым постулатам философии Unix, а именно каждый пакет содержит только необходимый минимум файлов и библиотек, все остальные необходимые ему компоненты указываются в качестве зависимостей. Причем разделение на небольшие пакеты присутствует даже у одного продукта: в один пакет могут быть включены бинарные файлы, во второй — общие библиотеки, в третий — документация и т.д. и т.п. Это позволяет достаточно гибко управлять процессом разработки и поддержки, если разработчики внесли изменения в какую-то библиотеку, то вам не нужно снова скачивать продукт целиком, достаточно обновить только пакет с библиотекой.
Кроме того, при разработке свободного ПО широко используются наработки других проектов, действительно, зачем повторно изобретать велосипед, если нужные функции уже есть в библиотеке другого проекта. Достаточно просто указать нужный пакет в зависимостях, при этом скачивать весь сторонний проект также будет не нужно, достаточно только необходимых пакетов.
Все это хорошо, скажет иной читатель, только как мне узнать какие именно пакеты мне нужно установить, чтобы получить на выходе полноценный продукт, как разобраться во всем этом обилии непривычных названий? Для этой цели существуют метапакеты. По сути — это пакет пустышка, который в своих зависимостях имеет нужный перечень пакетов для установки готового продукта. Например, если нужен офисный пакет, то достаточно просто установить libreoffice, этот метапакет по зависимостям подтянет и установит все необходимые компоненты для полного набора офиса, каким вы его привыкли видеть. Хотя никто не мешает установить самому только нужные компоненты, скажем только LibreOffice Calc.
![]()
Следующий вопрос — где брать пакеты? Windows опыт подсказывает — на сайте разработчика или производителя ПО. Но этот подход в Linux не работает, точнее работает частично. Почему? Ну вот скачали мы нужный пакет и выясняется, что у него еще 10 пакетов в зависимостях, где их брать? На сайтах их разработчиков, а у них окажутся свои зависимости. Поэтому в Linux были созданы и поддерживаются централизованные хранилища пакетов — репозитории. Каждый крупный дистрибутив имеет собственные репозитории для всех поддерживаемых выпусков и архитектур, которые содержат огромное количество ПО и поэтому вам не следует волноваться о том, где искать пакеты.
Кроме того, установка пакетов в обход репозитория может быть небезопасна и считается правилом дурного тона, хотя и применяется, в основном для коммерческого ПО. Наличие репозиториев также позволяет централизованно обновлять пакеты, достаточно сравнить текущие версии пакетов с версиями в репозитории и скачать нужные обновления. Это удобно, так как одновременно обновляется и система и все установленное в нее ПО.
Кроме того, собственные репозитории существуют и у разработчиков. Поэтому, если вы хотите получать самую свежую версию нужного вам продукта, не дожидаясь пока ее включат в дистрибутив, то можете подключить репозиторий разработчика и обновлять его оттуда.
Как правило типичный дистрибутив на базе Debian имеет четыре основных репозитория:
- Base repository — основное хранилище, содержит все пакеты, но обновляется достаточно редко, обычно одновременно с выходом минорной версии дистрибутива, например, Debian 9.6, Debian 9.7 и т.д.
- Security updates — обновления безопасности, являются критически важными для функционирования системы и крайне желательны к установке.
- Stable updates — стабильные обновления, не являющиеся обновлениями безопасности, могут исправлять некритические ошибки в ПО или незначительно расширять его функционал в рамках текущей версии.
- Stable backports — стабильное ПО с обратной совместимостью, содержит прекомпилированные для текущего дистрибутива самые свежие версии ПО, которые разрабатываются в рамках новой версии, позволяет использовать более новые версии программ, не подвергая стабильность дистрибутива угрозам при использовании пакетов тестируемой или нестабильной ветки.
Каждый репозиторий состоит из нескольких разделов, в Debian это:
- main — содержит пакеты, которые полностью совместимы с «Критериями Debian по определению Свободного ПО»
- non-free — распространяемое без ограничений ПО, которое не соответствует или не полностью соответствует принципам свободного ПО по версии FSF (Free Software Foundation, Фонд свободного ПО)
- contrib — свободное ПО, которое требует для работы несвободные компоненты, например, бинарные модули драйверов, прошивок ROM и т.д., либо требует ПО, имеющее собственника, скажем несвободную версию Java от Oracle.
В Ubuntu разделы немного иные:
- main — также, как и в Debian содержит свободные пакеты, поддерживаемые компанией Canonical
- restricted — несвободное ПО, поддерживаемое Canonical
- universe — свободное ПО, поддерживаемое сообществом
- multiverse — несвободное ПО, поддерживаемое сообществом.
Список подключенных репозиториев хранится в /etc/apt/sources.list, ниже показано содержимое этих файлов в Debian 10 (слева) и Ubuntu 18.04 (справа).
![]()
В Debian все достаточно лаконично, подключен только раздел main трех репозиториев Base, Security updates и Stable updates, если вам нужны иные разделы, то их следует подключить самостоятельно, добавив через пробел в нужную строку.
В Ubuntu более развернутый список репозиториев, он полностью не уместился на скриншот, но для понимания структуры записей приведенного фрагмента хватает. Сверху вниз подключены Base и Security updates для поддерживаемых компанией разделов, затем они же вместе для свободного и несвободного ПО поддерживаемого сообществом, а вот Stable backports прописан для всех веток одновременно, еще ниже (за пределами экрана на скриншоте) подключены Security updates и специальный партнерский репозиторий для пакетов партнеров компании Canonical.
Типичная запись репозитория выглядит как строка со следующей структурой:
Строка начинается с deb, который обозначает репозиторий с двоичными пакетами или deb-src для репозиториев с исходным кодом, если вы не собираетесь самостоятельно собирать пакеты, то вам они не нужны. Далее идет адрес репозитория и имя выпуска, для Debian это buster, для Ubuntu — bionic, затем следует перечисление подключенных разделов, в указанном примере подключены все три.
Адреса репозиториев сохраняются постоянными, отличаясь только именами выпуска, поэтому если вам нужно обновить выпуск, скажем с Debian 9 на Debian 10, то вам просто потребуется заменить везде stretch (имя девятого выпуска) на buster.
Также в Debian можно использовать вместо имен классы выпусков:
- stable — текущий выпуск дистрибутива,
- oldstable — предыдущий выпуск,
- testing — разрабатываемый выпуск,
- unstable — нестабильный выпуск, он же имеет собственное имя sid.
Но на практике это не используется, так как при выходе нового релиза вы получите его автоматическое обновление, что в большинстве случаев неприемлемо. Хотя если вы энтузиаст и хотите всегда быть на переднем крае прогресса, то можете везде прописать testing, получив аналог популярных ныне rolling release дистрибутивов, которые не имеют закрепленной версии и всегда предоставляют наиболее свежий срез пакетов, зачастую ценой стабильности.
Для добавления собственных источников пакетов предназначена директория /etc/apt/sources.list.d/ в которой следует располагать файлы с адресами источников и обязательным расширением .list. Хотя их можно прописать и в основной файл, но это считается дурным тоном.
Низкоуровневый менеджер пакетов Dpkg
Все это время мы говорили о пакетах и не касались вопроса каким образом происходит их установка. В Windows все просто, инсталлятор является исполняемым файлом и сам производит все необходимые действия, в Linux это не так и для работы с пакетами нам потребуется специальная утилита — пакетный менеджер.
Основой системы управления пакетами в Debian является dpkg — достаточно низкоуровневая утилита, предназначенная для получения информации, установки и удаления пакетов. Назвать ее менеджером пакетов в современном смысле этого слова достаточно затруднительно, dpkg не умеет работать с репозиториями и разрешать зависимости. Но тем не менее этот инструмент достаточно широко используется по сей день и навыки работы с ним необходимо иметь каждому администратору.
Данная утилита обычно используется для установки пакетов, скачанных вручную, например, коммерческого ПО. Синтаксис ее довольно прост и легко запоминается. Прежде всего полезно получить информацию о пакете, чтобы узнать его зависимости и возможные конфликты, для этого выполните:
![]()
Для установки просто выполните:
Но помните, что dpkg не умеет разрешать зависимости и вы должны будете сделать это вручную, либо скачать все необходимые пакеты и установить их в нужном порядке, это можно поручить dpkg, запустив его с маской в имени пакетов:
Такая конструкция установит все находящиеся в данном расположении deb-пакеты, так что будьте внимательны, либо используйте более узкие маски.
Чтобы получить сведения о всех доступных и установленных пакетах используется ключ -l, но он выведет список всех пакетов, поэтому следует использовать его с маской, например, так:
![]()
Так как мы задали имя пакета без подстановочных символов, то информация будет выведена только при полном совпадении заданного имени с именем пакета. Если мы хотим получить больше информации, то можем сделать так:
![]()
Теперь мы видим больше пакетов, как установленных в системе, так и доступных в репозитории. Но это не все пакеты, относящиеся к gimp, так как наша маска предписывает искать пакеты, которые начинаются на gimp и игнорирует иные варианты. Поэтому, если вы не уверены, что правильно задали маску, можно пойти другим путем, отдав вывод dpkg команде grep, которая найдет все нужные вхождения.
![]()
В этом случае вы получите список только установленных, либо удаленных, но имеющих оставшиеся части (например, конфигурационные файлы) пакетов, но при этом будут найдены все вхождения указанной строки, даже в середине имени, в данном случае мы обнаружили ранее не найденную библиотеку libgimp2.0
Для удаления пакета используйте:
Обратите внимание, что здесь мы указываем не имя deb-файла, а имя установленного пакета, узнать его можно способом, представленным выше. Часто после удаления пакета от него остаются конфигурационные файлы и иные данные, полностью очистить их можно командой:
Но будьте внимательны, при этой операции могут быть удалены пользовательские данные, хранившиеся в стандартных расположениях. Это актуально для таких видов программ, как веб-сервера или СУБД.
На этом мы закончим знакомство с dpkg, ограничившись наиболее часто необходимыми в повседневной деятельности командами, а сами перейдем к более высокоуровневым инструментам.
Улучшенный инструмент для работы с пакетами APT и команды apt и apt-get
Настоящим пакетным менеджером в Debain является APT (Advanced Package Tool, Улучшенный инструмент для работы с пакетами), который умеет работать с репозиториями, разрешать зависимости и взаимодействовать с dpkg, которая, собственно, и занимается установкой пакетов.
APT имеет два интерфейса командной строки: apt-get и более новый apt. Их синтаксис и возможности во многом схожи, и мы будем практически всегда использовать последний, кроме отдельных случаев, когда требуемые возможности поддерживает только apt-get.
Как мы уже говорили, списки репозиториев хранятся в /etc/apt/sources.list, но они не содержат сведений о пакетах, чтобы их получить нужно скачать из репозитория список находящихся в нем пакетов. Понятно, что каждый раз скачивать списки — плохая идея, поэтому APT хранит локальный кеш пакетов в /var/lib/apt/lists, также копии всех скачанных пакетов сохраняются в /var/cache/apt/archives, что позволяет предотвратить их скачивание в случае повторной установки.
![]()
Списки пакетов представляют собой простые текстовые файлы с перечнем пакетов в репозитории, данными о пакете, его зависимостях и его расположении в структуре репозитория, один из таких списков открыт на скриншоте выше.
APT всегда работает с локальным кешем списков, поэтому перед любыми действиями с пакетным менеджером следует обновить списки в кеше. Это можно сделать командой, которая должна быть широко известна нашим читателям:
Команда проверяет версии списков в репозитории и при необходимости скачивает их новые версии, после чего анализирует список установленных пакетов и сообщает о доступных обновлениях, увидеть список пакетов, для которых доступны обновления можно командой:
![]()
Установить обновления можно командой:
Это безопасный способ обновления, при котором обновляются только установленные пакеты и не происходит установки новых пакетов, если они затрагивают текущие версии, также не удаляются убранные из репозитория пакеты. Если же вы хотите установить самые последние версии пакетов, то следует воспользоваться иной командой:
Следует понимать разницу в работе этих команд, потому что во многих случаях результат их работы оказывается одинаковым и кажется, что разницы между ними нет. Например, в ситуации, показанной на скриншоте выше обе команды отработают одинаково.
Обычные обновления следует выполнять командой upgrade, тогда как dist-upgrade следует использовать для обновления дистрибутива, в том числе и на минорные версии в составе текущего выпуска.
Для установки пакетов следует использовать команду:
Если нужно установить несколько пакетов, то их следует перечислить через пробел. Система проанализирует изменения и либо выполнит установку, либо попросит дополнительного подтверждения, особенно если нужно установить большое количество новых пакетов по зависимостям.
![]()
В целом APT хорошо знает свое дело, но мы все равно советуем обращать внимание на состав добавляемых и, особенно, удаляемых пакетов. Также не будет лишним изучить список предлагаемых пакетов, там вы можете найти много интересного и полезного, что позволит расширить возможности устанавливаемого ПО и о чем вы могли даже не догадываться.
Для удаления пакета используйте:
Это удалит сам пакет, но оставит его конфигурационные файлы (если они были изменены) и прочие данные. Для полного удаления пакета со всеми его данными используйте другую команду:
Но будьте внимательны, так как эта команда удалит все данные пакета, в том числе и добавленные пользователем в стандартные расположения, данные, находящиеся в домашних директориях пользователей при этом удалены не будут.
Дополнительно остановимся на таком виде пакетов, как пакеты установленные автоматически. Это пакеты, которые были установлены по зависимостям иных пакетов и после удаления или обновления последних могут более никем не использоваться. APT отслеживает такие пакеты и сообщает о них пользователю.
![]()
Удалить их можно командой:
Как можно заметить, APT достаточно дружелюбен к пользователю, постоянно подсказывая ему необходимые команды, что в очередной раз развеивает миф о сложности администрирования Linux, особенно в режиме командной строки.
Также иногда может потребоваться возможность очистить кеш скачанных пакетов, скажем при недостатке места на диске, это можно сделать, введя:
Эта команда полностью очистит кеш, также можно использовать более мягкую очистку с помощью apt-get, который дает возможность удалить из кеша только те пакеты, которые на текущий момент отсутствуют в репозитории (были заменены новыми версиями или удалены):
Затронем еще один интересный момент, допустим вы в своих экспериментах удалили или еще как-либо повредили входящие в состав пакета файлы, но система считает, что пакет установлен и отказывается устанавливать его повторно. Но можно всегда переустановить пакет:
Еще одна важная возможность APT — это восстановление нарушенных зависимостей и автоматическое исправление ошибок при установке пакетов, например, когда процесс обновления или установки был аварийно прерван. Либо когда вы установили некоторый пакет при помощи dpkg и при этом у него оказались неудовлетворенные зависимости. Все это в большинстве случаев отлично исправляется одной простой командой:
Также иногда бывает нужно проверить что произойдет при установке пакета без его установки, особенно если у нас есть подозрения, что мы можем что-то сломать в системе. Для этого запустите команду установки с ключом -s:
Система смоделирует все необходимые действия и покажет вам результат, после чего вы сможете принять верное решение без опасных экспериментов над ней.
![]()
Если вы не знаете точного названия нужного вам пакета, то можно выполнить его поиск командой:
При этом поиск производится не только по имени пакета, но и по его описанию. Это удобно и позволяет быстро найти все связанные с указанной строкой поиска пакеты, даже если они имеют отличное наименование.
![]()
Для получения информации о пакете просто введите:
![]()
Еще одна задача, с которой может столкнуться администратор — это фиксация версии пакета, допустим вы собрали и установили собственный пакет с нужными вам функциями и не хотите чтобы при обновлении системы он был заменен стандартным из репозитория. Не проблема, отметьте пакет как зафиксированный:
Чтобы отменить фиксацию выполните:
Объем данной статьи не позволяет рассмотреть все возможности apt, поэтому мы ограничились наиболее необходимыми в повседневной деятельности, ну и в завершение небольшая порция юмора. Если запустить команду apt без параметров, то вы увидите краткую справку в самом конце которой будет строка: В APT есть коровья СУПЕРСИЛА. Что это значит? Просто наберите:
И вы увидите старую пасхалку от разработчиков, которая была еще в apt-get, а затем ее заботливо перенесли в apt.
![]()
Графические оболочки Aptitude и Synaptic
Кроме родных для APT консольных интерфейсов apt-get и apt существуют и более высокоуровневые оболочки. Одна из них aptitude, которая может работать как в псевдографическом режиме, так и в режиме командной строки, имея синтаксис во многом повторяющий синтаксис apt. Благодаря этому многие воспринимают эту утилиту как еще один интерфейс к APT, хотя основной задачей разработчиков было именно создание псевдографической интерактивной оболочки.
![]()
В современных дистрибутивах Debian и Ubuntu aptitude отсутствует в основной поставке и вам потребуется установить этот пакет отдельно.
Если вы используете настольную версию Linux, то вам будет доступен графический менеджер пакетов Synaptic, он также отсутствует в основной поставке основных дистрибутивов и может быть установлен вручную. Данный пакет представляет собой опрятный и удобный графический интерфейс над APT, в тоже время дающий администратору все возможности по тонкой настройке процесса.
![]()
Однако не смотря на то, что Aptitude и Synaptic являются зрелыми и эффективными инструментами, мы бы не рекомендовали их использование по крайней мере до тех пор, пока вы не освоите работу с базовым интерфейсом apt.
Магазины приложений
Если мы говорим о настольных системах, то нельзя обойти вниманием магазины приложений. Это модный тренд, пришедший из мира мобильных устройств, но быстро завоевавший популярность и в настольной среде. Действительно, системой могут пользоваться разные люди, они могут являться хорошими специалистами в своей отрасли, но им совершенно не хочется разбираться в устройстве системы, а нужно просто включить компьютер в розетку и работать с ним.
Такой подход может вызвать возмущение у продвинутых пользователей и энтузиастов, но он имеет право на жизнь. Компьютер давно перестал быть уделом избранных и стал неотъемлемой частью нашей жизни. Проведем простую аналогию: сев за руль автомобиля многие из нас просто заводят его, нажимают педали, переключают рычаг коробки передач, не задумываясь о том, какие процессы происходят внутри, а в случае каких-либо неполадок отгоняют машину на сервис.
Так и в современном Linux, если раньше эта ОС ассоциировалась преимущественно с энтузиастами и «хакерами», то сейчас это система открыта для всех. Магазины приложений — это простой и надежный способ управления программным обеспечением для обычных пользователей, не имеющих специальных технических знаний. А опытный администратор, скорее всего, предпочтет работу в привычной ему командной строке.
Ниже показан магазин для актуальной версии Debian
![]()
или Ubuntu
Заключение
Как видим, Debian и основанные на нем системы предоставляют широкий выбор инструментов для управления пакетами, начиная от утилит командной строки и заканчивая магазинами приложений. Каждый найдет инструмент себе по душе. Но для начинающих администраторов мы бы рекомендовали в обязательном порядке осваивать базовые инструменты, такие как dpkg и apt, потому что ситуации бывают разные, а базовые инструменты, в отличие от графической оболочки или псевдографических утилит, доступны всегда.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
Или подпишись на наш Телеграм-канал: ![]()
Шпаргалка по пакетному менеджеру NPM
Есть несколько способов чтобы обновить npm. Я предпочитаю:
Поиск пакетов в npm
Подсказка: Можно также использовать search.npmjs.org
Вторая подсказка: Для поиска необходимо знать имя нужного пакета (всё прекрасно ищет по любому слову как в имени пакета, так и в его описании, может неправильно перевёл?)
Просмотр информации о пакете
Локальная установка пакетов
Для демонстрации возьмём пакет http-server.
http-server is a package we’ve written which provides an easy to use wrapper around node’s core http.Server class. This module makes for a good example, since it’s API provides both a CLI binary and a requirable node.js module.
http-server — пакет, который мы написали, предоставляет более простой интерфейс в использовании базового модуля http.Server из node.js. Этот модуль хороший пример использования API как для бинарного CLI, так и для подключаемого модуля node.js.
Так мы установим http-server в нашей рабочей директории.
Вы увидите новую папку в node_modules. Сейчас можете не обращать на это внимание.
Установка пакета в наше приложение
test.js
Обратите внимание, как мы делаем: require(‘http-server’)? Что это за магия? (автор молодец)
http-server не является базовым модулем node.js. Этот пакет мы только что установили из npm. Node.js и npm взаимодействуют и автоматически подключают наши локальные модули из node_modules директории.
Понимание разницы между глобальной и локальной установкой
test.js
теперь запустим наш скрипт
мы получим эту ошибку:
Это вполне логично, мы установили http-server локально в «/mynewapp/», а не в «/anotherapp/».
Есть два решения в этой ситуации:
а) Установить ещё раз пакет, но локально в наше новое приложение
б) Установить пакет глобально
Глобальная установка пакетов
Если вы хотите чтобы пакет был доступен всем приложениям, его нужно установить глобально:
Флаг -g означает, что http-server должен быть установлен глобально и быть доступными для всех приложений.
Теперь мы можем вызывать его require(‘http-server’) в любом нашем приложении.
Кроме того, поскольку http-server пакет имеет свой исполняемый файл, то этот файл также будет установлен как исполняемый http-server и доступен в командах.
Теперь вы можете просто запустить команду:
Удаление локально установленного пакета
Удаление глобально установленного пакета
Установка определённой версии пакета
Установка модуля с Github
Важно. В некоторых случаях будут патчи, форки или ветви, которые вы хотите использовать, но которые еще не были опубликованы в npm. К счастью исходные коды для большинства npm модулей также доступна на www.github.com
Теперь наша клонированная версия http-server связана локально.
Связи любых пакетов локально
Если у вас есть отдельный каталог содержащий пакет npm, то можно создать локальную связь для него. Это удобно в ситуациях, когда мы не хотим опубликовать наш пакет в хранилище npm.
На нашу локальную версию http-server создана «связана» для нашей локальной машины. (связь создаётся как «copy-paste», с начало нужно перейти в нужный катало и сделать «copy», потом перейти в нужный каталог и сделать «paste». Так вот сейчас мы изучили как делается «copy», а ниже будет про «paste» этого модуля)
Связи локальных пакетов для нескольких приложений
Как мы видели ранее npm устанавливает пакеты в локальный каталог по умолчанию. Так вот npm ссылка(связь) работает почти так же.
Мы указываем, что теперь создали связь из http-server в наше новое приложение newapp. Если бы мы не выполнили npm link http-server, то получили бы ошибку об отсутствующем модуле. (а вот наш и «paste» о чём я писал выше, теперь вам должна быть понятна логика создания связей)
Отмена связи между пакетами приложения
(здесь мы просто отменяем наш «paste» для этого приложения)
Отмена связи пакета в системе
(здесь мы отменяем наш «copy» для этого пакета)
Создание нового пакета
(от себя хочу лишь заметить, что создание пакета не такая простая задача в одну команду, подробнее можно почитать в другой статье)
Добавление нового пользователя
Публикация пакета в репозиторий npm
Удаление пакета из репозитория npm
Управление правами доступа к пакетам в репозитории npm
Вы можете задать права доступа других пользователей к опубликованному пакету:
Система управления пакетами APT
Для автоматизации процесса установки, удаления и обновления пакетов программ в ряде дистрибутивов Linux применяется Усовершенствованная система управления программными пакетамиAPT (Advanced Packaging Tool). Автоматизация достигается созданием одного или нескольких внешних репозитариев, в которых хранятся пакеты программ и относительно которых производится сверка пакетов, установленных в системе. Репозитории могут содержать как официальную версию дистрибутива, обновляемую его разработчиками по мере выхода новых версий программ, так и локальные наработки.
Таким образом, в распоряжении APT находятся две базы данных: одна описывает установленные в системе пакеты, вторая — внешний репозитарий. APT отслеживает целостность установленной системы и, в случае обнаружения противоречий в зависимостях пакетов, руководствуется сведениями о внешнем репозитарии для разрешения конфликтов и поиска корректного пути их устранения.
APT изначально проектировался как не зависящий от конкретного метода работы с установленными в системе пакетами, что позволило разработчикам из бразильской компании Connectiva реализовать в нём поддержку менеджера пакетов RPM. Таким образом, пользователи основанных на RPM дистрибутивов (Ubuntu, Fedora, Mandriva, ALT Linux) получили возможность использовать этот мощный инструмент.
Графический интерфейс для APT
Графической оболочкой для APT является synaptic, основанный на мощной системе фильтрации пакетов. Это значительно упрощает интерфейс и вместе с тем предоставляет значительную гибкость при навигации по очень длинным спискам пакетов.

Использование APT
Система APT состоит из нескольких утилит. Главной и наиболее часто используемой является утилита управления пакетами apt-get, которая автоматически определяет зависимости между пакетами и строго следит за их соблюдением при выполнении любой из следующих операций: установка, удаление или обновление пакетов.
apt-get позволяет устанавливать в систему пакеты, требующие для своей работы другие, пока ещё не установленные. В этом случае он определяет, какие пакеты необходимо установить, и устанавливает их, пользуясь всеми доступными репозитариями. Для того, чтобы apt-get мог использовать тот или иной репозитарий, информацию о нем необходимо поместить в файл /etc/apt/sources.list и выполнить команду
Эту команду необходимо также выполнять каждый раз, когда вы собираетесь работать с репозитарием после длительного перерыва, так как при поиске пакетов APT должен руководствоваться базой данных, отражающей актуальное состояние репозитария. Такая база данных создаётся заново каждый раз, когда в репозитарии происходит изменение: добавление, удаление или переименование пакета. Для ускорения работы apt-get хранит локальную копию базы данных, которая через некоторое время может уже не соответствовать реальному состоянию репозитария.
В качестве источника пакетов можно использовать и компакт-диски дистрибутива, поскольку на каждом диске присутствует вся необходимая для APT информация о содержащихся на нём пакетах. Для этого необходимо использовать утилиту apt-cdrom с единственным параметром add. Операцию следует повторить для CD из набора. После этого в /etc/apt/sources.list появится запись о подключённом диске.
При отсутствии подключения к сети строки в /etc/apt/sources.list, где говорится о ресурсах, доступных по сети, следует закомментировать.
Поиск пакетов
При отсутствии точного названия пакета для его поиска можно воспользоваться утилитой apt-cache, позволяющей искать не только по имени пакета, но и по его описанию:
Для того, чтобы подробнее узнать о каждом из найденных пакетов и прочитать его описание, можно воспользоваться командой apt-cache show, которая покажет информацию о пакете из репозитария:
Получение зависимостей пакета:
Показывает зависимости не только на файлы, но и на результирующие пакеты, в состав которых входят эти файлы, что очень удобно для анализа возможных трудностей с установкой.
Установка или обновление пакета
Установка пакета с помощью APT выполняется командой:
Если результате операций с пакетами без использования APT целостность системы нарушится, то apt-get откажется выполнять операции установки, удаления или обновления. В такой ситуации следует повторить операцию, задав опцию -f, заставляющую apt-get исправить нарушенные зависимости (если это возможно), следя при этом за сообщениями, выдаваемыми apt-get, анализируя их и чётко следуя рекомендациям программы.
Полезный режим позволяюший исправить ошибки администратора и сборщика пакета.
Если вы не уверены в том, что в результате выполнения операции система останется работоспособной, запустите apt-get с опцией -s.
В этом случае будет показан отчёт о выполнении операции обновления, но само обновление произведено не будет:
Удаление установленного пакета
Для удаления пакета используется команда
Для сохранения целостности системы будут удалены и все пакеты, зависящие от удаляемого: если отсутствует необходимый для работы приложения компонент (например, библиотека), то само приложение становится бесполезным. В случае удаления пакета, относящегося к базовым компонентам системы, apt-get потребует дополнительного подтверждения производимой операции с целью предотвратить возможную случайную ошибку.
Обновление всех установленных пакетов
Для обновления всех установленных пакетов используется команда
Она позволяет обновить только те пакеты, для которых в репозитариях, перечисленных в /etc/apt/sources.list, имеются новые версии; при этом из системы не будут удалены никакие другие пакеты.
Этот способ полезен при работе со стабильными пакетами приложений, относительно которых известно, что они при смене версии изменяются несущественно.
Изменения в именовании пакетов или изменения их зависимостей командой apt-get upgrade не обрабатываются. Такие ситуации разрешаются в режиме обновления в масштабе дистрибутива:
В случае обновления всего дистрибутива APT проведёт сравнение системы с репозитарием и удалит устаревшие пакеты, установит новые версии присутствующих в системе пакетов, а также отследит ситуации с переименованиями пакетов или изменения зависимостей между старыми и новыми версиями программ. Всё, что потребуется поставить (или удалить) дополнительно к уже имеющемуся в системе, будет указано в отчёте apt-get, которым APT предварит само обновление.
Настройка APT
APT позволяет взаимодействовать с репозитарием с помощью различных протоколов доступа. Наиболее популярными из них являются HTTP и FTP.
Работа с локальным репозитарием и удаленными подробно описана в разделе Обновление.
25 полезных базовых команд APT-GET и APT-CACHE для управления пакетами
В этой статье объясняется, как быстро вы можете научиться устанавливать, удалять, обновлять и искать программные пакеты с помощью команд apt-get и apt-cache из командной строки. В этой статье представлены некоторые полезные команды, которые помогут вам справиться с управлением пакетами в системах на основе Debian/Ubuntu.

Утилита apt-get — это мощная и бесплатная программа командной строки для управления пакетами, которая используется для работы с библиотекой APT (Advanced Packaging Tool) Ubuntu для выполнения установки новых пакетов программного обеспечения, удаления существующих пакетов программного обеспечения, обновления существующих пакетов программного обеспечения и даже используется для обновления всей операционной системы.
Инструмент командной строки apt-cache используется для поиска в кэше программных пакетов apt. Проще говоря, этот инструмент используется для поиска пакетов программного обеспечения, сбора информации о пакетах, а также для поиска доступных пакетов, готовых к установке в системах на основе Debian или Ubuntu.
1. Как мне перечислить все доступные пакеты?
Чтобы вывести список всех доступных пакетов, введите следующую команду.
2. Как узнать название пакета и описание программного обеспечения?
Чтобы узнать название пакета и его описание перед установкой, используйте флаг «поиск». Использование «поиска» с apt-cache отобразит список подходящих пакетов с кратким описанием. Допустим, вы хотите узнать описание пакета vsftpd, тогда команда будет.
Чтобы найти и перечислить все пакеты, начинающиеся с «vsftpd», вы можете использовать следующую команду.
3. Как проверить информацию о пакете?
Например, если вы хотите проверить информацию о пакете вместе с его кратким описанием, скажем (номер версии, контрольные суммы, размер, установленный размер, категория и т. Д.). Используйте подкоманду «показать», как показано ниже.
4. Как проверить зависимости для конкретных пакетов?
Используйте подкоманду «showpkg», чтобы проверить зависимости для определенных пакетов программного обеспечения. установлены ли эти пакеты зависимостей или нет. Например, используйте команду «showpkg» вместе с именем пакета.
5. Как проверить статистику кеша
Подкоманда «stats» отображает общую статистику о кеше. Например, следующая команда отобразит Общее количество имен пакетов — это количество пакетов, найденных в кеше.
6. Как обновить системные пакеты
Команда «update» используется для повторной синхронизации файлов индекса пакетов из их источников, указанных в файле /etc/apt/sources.list. Команда обновления извлекла пакеты из их местоположений и обновила пакеты до более новой версии.
7. Как обновить пакеты программного обеспечения
Команда «обновить» используется для обновления всех установленных в системе пакетов программного обеспечения. Ни при каких обстоятельствах установленные в данный момент пакеты не удаляются, а пакеты, которые еще не установлены, не извлекаются и не устанавливаются для удовлетворения зависимостей обновления.
Однако, если вы хотите выполнить обновление, не заботясь о том, будут ли добавлены или удалены пакеты программного обеспечения для выполнения зависимостей, используйте подкоманду dist-upgrade.
8. Как установить или обновить определенные пакеты?
Подкоманда «install» отслеживается одним или несколькими пакетами, которые желают установить или обновить.
9. Как я могу установить несколько пакетов?
Вы можете добавить более одного имени пакета вместе с командой, чтобы установить несколько пакетов одновременно. Например, следующая команда установит пакеты «goaccess».
10. Как установить несколько пакетов с использованием подстановочного знака
С помощью регулярного выражения вы можете добавить несколько пакетов одной строкой. Например, мы используем подстановочный знак * для установки нескольких пакетов, содержащих строку «* имя *», имя будет «имя-пакета».
11. Как установить пакеты без обновления
Использование подкоманды «–no-upgrade» предотвратит обновление уже установленных пакетов.
12. Как обновить только определенные пакеты
Команда «–only-upgrade» не устанавливает новые пакеты, а только обновляет уже установленные пакеты и отключает новую установку пакетов.
13. Как установить конкретную версию пакета?
Допустим, вы хотите установить только определенную версию пакетов, просто используйте » /cdn-cgi/l/email-protection» data-cfemail=ef8c9b8e9683809daf8b8a8d868e81c1809d88>[email protected]> dpkg-buildpackage: host architecture i386 dpkg-source —before-build goaccess-0.5 dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 9) autotools-dev libncurses5-dev libglib2.0-dev libgeoip-dev autoconf dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting dpkg-buildpackage: warning: (Use -d flag to override.) .
20. Как загрузить пакет без установки
Используя опцию «скачать», вы можете загрузить любой данный пакет, не устанавливая его. Например, следующая команда загрузит только пакет nethogs в текущий рабочий каталог.
21. Как проверить журнал изменений пакета?
Флаг «changelog» загружает журнал изменений пакета и показывает версию установленного пакета.
22. Как проверить неработающие зависимости?
Команда «проверка» — это инструмент диагностики. Он используется для обновления кеша пакетов и проверки неработающих зависимостей.
23. Как мне искать и строить зависимости?
Эта команда build-dep выполняет поиск в локальных репозиториях в системе и устанавливает зависимости сборки для пакета. Если пакет не существует в локальном репозитории, он вернет код ошибки.
24. Как я могу автоматически очистить кэш Apt-Get?
Команда «autoclean» удаляет все файлы .deb из/var/cache/apt/archives, чтобы освободить значительный объем дискового пространства.
25. Как я могу автоматически удалить установленные пакеты?
Подкоманда «autoremove» используется для автоматического удаления пакетов, которые, безусловно, были установлены для удовлетворения зависимостей для других пакетов, но теперь они больше не требуются. Например, следующая команда удалит установленный пакет с его зависимостями.
Я рассмотрел большинство доступных опций с помощью команд apt-get и apt-cache, но все же доступно больше опций, вы можете проверить их с помощью «man apt-get» или «man apt-cache» в терминале. Надеюсь, вам понравилось читать эту статью. Если я что-то пропустил, и вы хотите, чтобы я добавил его в список. Пожалуйста, не стесняйтесь упомянуть в комментарии ниже.