В далекие времена установка программного обеспечения под операционные системы семейства Линукс могла серьезно напугать начинающих пользователей этих ОС. Загрузка исходников, борьба с зависимостями, которая зачастую превращалась в нетривиальный квест, ручная правка конфигов и другие “прелести” установка приложений того времени сейчас покажутся глубоким анахронизмом. 

Сейчас любой уважающий себя дистрибутив Линукс имеет в своем составе возможность установки программного обеспечения с помощью менеджеров пакетов.

Системы управления пакетами (которые также иногда «менеджер пакетов» или «пакетный менеджер») — это набор программного обеспечения, позволяющего управлять процессом установки, удаления, настройки и обновления различных компонентов ПО.

В этой статье мы рассмотрим основные менеджеры пакетов, которые используются в различных дистрибутивах Линукс. 

Какие пакеты бывают

Различные дистрибутивы ОС Linux имеют свои форматы пакетов. Вот основные форматы:

  • .deb – Debian и производные (Ubuntu, Mint и т.д.)

  • .rpm – Red Hat и производные (CentOS, Fedora и т.д.), OpenSUSE

  • .apk – Android

  • .ebuild – Gentoo

Каждый формат имеет свои преимущества и недостатки. Так rpm совместим с различными дистрибутивами Linux и обеспечивает более быструю установку и обновление пакетов, но при этом установка и обновление зависимостей может занимать значительное время при установке большого количества пакетов и имеет более сложную систему идентификации версий пакетов, что может привести к проблемам при обновлении или установке.

А deb имеет более простую систему идентификации версий пакетов, что упрощает работу с ними, благодаря чему управление зависимостями происходит быстрее и более эффективно. Но при этом поддерживает ограниченное число дистрибутивов Linux, что может создать проблемы при переходе на другую операционную систему и может потребовать дополнительной настройки для работы с некоторыми пакетами (например, в случае несовместимости с определенной версией ядра).

Из чего состоит пакет

Прежде, чем начать рассмотрение принципов работы с пакетами, поговорим о том, что содержат в себе пакеты. Пакет, как правило, содержит само приложение, в откомпилированном  виде, то есть, по сути в виде бинарного файла.

Также в пакете указывается метаинформация, то есть информация о другой информации, используемая инструментами управления пакетами.

Метаинформация представляет собой составленное по определённым правилам описание, которое содержит имя пакета, номер версии и сборки, сведения о разработчике и его мастер-сайте, список файлов, их положение в файловой иерархии, список зависимостей. Также, здесь могу присутствовать установочные и настроечные сценарии, необходимые для развертывания приложения.

Помимо установочных сценариев, пакет также содержит набор действий, выполняемых после установки (например, пост-инсталляционную конфигурацию). Также пакет содержит сценарий, выполняемый в случае удаления пакета.

Посмотрим пример структуры пакетов для Debian. Зависимости определены в поле Dependents в заголовке пакета. Это список условий, которые должны быть выполнены для корректной работы пакета. Данная информация используется такими инструментами, как apt, для установки необходимых библиотек, утилит, драйверов и т.д. в соответствующих версиях, удовлетворяющих зависимостям устанавливаемого пакета. Для каждой зависимости можно ограничить диапазон версий, удовлетворяющих этому условию. Другими словами, если нам нужен пакет libc6 в версии, равной или превышающей “2.15” ( “libc6 (>= 2.15)”), то операторы сравнения версий следующие:

<=: less than or equal to;

=: equal to (note that “2.6.1” is not equal to “2.6.1-1”);

>=: greater than or equal to;

>>: greater than.

При этом, стоит отметить, что не все пакеты содержат программы, некоторые содержат шрифты, изображения, темы и т.д.

Зависимости и конфликты

Сейчас сложно представить приложение, не использующее в том или ином виде сторонние библиотеки и другие зависимости. То есть любая, сколько-нибудь сложная программа зависит от пакетов, поставляющих библиотеки. При этом возможна ситуация, когда пакет конфликтует с уже установленным в системе. Наиболее распространенные причины этого заключаются в том, что оба пакета включают файл с одинаковым именем и путем, или предоставляют одну и ту же службу на одном и том же сетевом порту, или препятствуют работе друг друга.

Здесь возможны различные варианты реагирования, в общем случае пакетный менеджер откажется устанавливать пакет, если он вызывает конфликт с уже установленным пакетом. Однако возможна ситуация, когда в новом пакете явно указано, что он “заменит” установленный пакет, и в этом случае менеджер предпочтет заменить старый пакет новым. А вот менеджер apt всегда следует вашим инструкциям: если вы решите установить новый пакет, он автоматически предложит удалить пакет, который создает проблему.

Также, в случае конфликта возможен следующий вариант реагирования: пакетный менеджер просигнализирует о том, что установка пакета “сломает” другой пакет (или определенные его версии) и далее уже пользователь должен решать, что делать в подобной ситуации. При этом различные менеджеры по-разному отреагируют на такую ситуацию. Так, dpkg откажется устанавливать пакет, который нарушает работу уже установленного пакета. А вот apt попытается решить проблему, обновив пакет, который был бы нарушен, до более новой версии (предполагается, что она исправлена и, таким образом, снова совместима).

Такого рода ситуация может возникнуть в случае обновлений без обратной совместимости: это тот случай, когда новая сигнализирует о том, что установка пакета “сломает” другой пакет (или определенные его версии).

Некоторые форматы пакетов можно конвертировать. Так, например пакеты .deb можно конвертировать в другие форматы с помощью утилиты alien. В качестве примера преобразуем deb пакет в rpm.

Для этого сначала установим утилиту alien:

sudo apt-get install alien

Далее выполним конвертацию пакета Teamviewer из deb в rpm. Общий формат работы с alien будет следующий:

sudo alien <package_name>.deb

Для нашего примера с teamviewer:

sudo alien --to-rpm teamviewer_amd64.deb

 

Основные операции с пакетами

Установка пакетов во всех менеджерах производится схожим образом. Необходимо сначала скачать пакет (.deb, .rpm ...), далее установить пакет вручную, используя команду данного дистрибутива (dpkg, rpm и т.д.). Например, для dpkg это будет dpkg –i firefox-19.0.deb, а для apt apt-get install firefox.

При этом, все зависимости разрешаются и устанавливаются автоматически.

Обновление списков пакетов и самих пакетов для apt выполняется следующим образом:

apt-get update

Обновление репозитория. Загружает только список пакетов, а не сами пакеты.

apt-get upgrade

Загрузка более новых версий локально установленных пакетов.

И для удаления пакетов в apt используется следующая команда:

apt-get remove [ --purge ] package

Если "--purge" указан, удаляет и конфигурационные файлы.

Где искать пакеты

Для поиска пакетов под различные дистрибутивы можно конечно воспользоваться поисковиками, но лучше использовать проверенные ресурсы, чтобы не столкнуться с сомнительным содержимым. Так, пакеты для Ubuntu можно поискать на следующем ресурсе:

https://packages.ubuntu.com/

А для RPM можно посмотреть здесь:

http://www.rpmseek.com/

Заключение

В этой статье мы рассмотрели основные моменты, связанные с работой с различными пакетами и пакетными менеджерами. А про стандартные потоки ввода/вывода мои коллеги из OTUS расскажут на бесплатном уроке специализации Administrator Linux.

Комментарии (93)


  1. ilitaiksperta
    26.06.2023 14:56
    -5

    Менеджеры пакетов с зависимостями - одна из худших инженерных идей в истории ойти, гдето на одном уровне с electron.

    Вместо того чтобы решать проблемы и упрощать жизнь - эта идея порождает проблемы. Ярчайшие примеры - dependency hell в линуксе, пакеты в npm с 500 вложенным и зависимостями и т.п.

    @markmariner

    Какое решение распространения кода вы предложите?

    Менеджеры пакетов без зависимостей. Apk \ F-Droid идеальный пример.


    1. markmariner
      26.06.2023 14:56
      +7

      Какое решение распространения кода вы предложите?


      1. RolexStrider
        26.06.2023 14:56
        +4

        +1 Я бы даже сформулировал как "какое более эффективное решение для повторного использования бинарного кода предложите?"


        1. swelf
          26.06.2023 14:56
          +4

          Что бы получать правильные ответы, надо задавать правильные вопросы. Акцент в вашем вопросе на слове "повторного" совершенно не верен с моей точки зрения, и абсолютно никак не связан с желанием "упрощать жизнь" из изначального тезиса(хотя и не противоречит в общем случае тоже). Проблема недостатка свободного места из-за бинарников мне кажется уже не актуальна, на фоне разного рода данных. Всякие snap шагающие по планете тому подтверждение. Если посмотреть например на разработку ПО, так там сейчас у каждого проекта свои наборы зависимостей, потому что удобно. Потому я задам вопрос так: "Какую проблему решает повторное использование бинарного кода?" не вижу ни одной причины за него цепляться и искать "удобные" способы рапространения.


          1. khajiit
            26.06.2023 14:56

            Акцент в вашем вопросе на слове "повторного" совершенно не верен с моей точки зрения

            А с точки зрения пакетного менеджера — это то, для чего он создан и чем занимается.
            Вот в чем фикус-то.


            Кстати, с менеджером без зависимостей, упомянутым тредстартером, есть такой забавный нюанс: вот зависит приложение от system webwiew — но где там, оно будет установлено даже в его отсутствие, не говоря уже про вшитые и заброшенные версии от вендора. Просто падать будет, если разработчик не предусмотрел костыль.


            И в рамках дихотомии костыли в каждом проекте vs централизованная проверка зависимостей: и как пользователь, и как писатель, и как администратор — этот предпочтет нормальный пакетный менеджер, который сразу скажет что так оно работать не будет, инфантильному инсталлятору без проверок.


            1. DaemonGloom
              26.06.2023 14:56
              +1

              Кажется, в том комментарии предложили менеджер без зависимостей в виде flatpak/snap. Когда всё нужное ставится каждый раз заново одним пакетом.


              1. khajiit
                26.06.2023 14:56

                Перечитал ветку выше — но там только в корневом комментарии предлагается Apk \ F-Droid идеальный пример.
                На котором очень уж удобно продемонстрировать ошибку)


                Даже если закрыть глаза на проблемы с безопасностью при таком подходе, распухание для krita или браузера на сотню мегабайт — не слишком критично, они и так весят немало.
                Распухание на сотню мегабайт каждого бинаря из /bin — это конец.


                Ну и всегда остаются слабые зависимости: графическая среда и ее утилиты, видеокодек, сеть и прочая и прочая.


      1. ilitaiksperta
        26.06.2023 14:56
        +1

        @RolexStrider

        +1 Я бы даже сформулировал как "какое более эффективное решение для повторного использования бинарного кода предложите?"

        Я бы сформулировал вопрос вообще по-другому: Как называется болезнь, когда человек создает реальные проблемы программистам (распространение и поддержка софта) и юзерам (установка софта), чтобы решить воображаемую (повторное использования бинарного кода)?

        @zlo1

        Как гентушник, в эпоху интернета и git, для меня дикость доверять бинарному Г..

        Охлол, ну доверяй тогда опенсурсу из npm, где сегодня сбилженая аппа с миллионом вложенных зависимостей решает свою задачу, а та же самая аппа, сбилженая через неделю ворует пароли. Потому что у половины пакетов даже версии нефиксированные, и гдето там в глубоких слоях зависимостей ктото закоммитил плохое зло, а отревьюить миллион пакетов нереально.

        Ты можешь доверять софту только потому, что он написан на няшкой сишечке или плюсах, у которых нету пакетных менеджеров и либы берутся либо из сорцами папки third-party, либо из системы. И поэтому разрабу пришлось думать, а не пакет с пакетами из помойки тащить. С npm, pipом и прочими порождениями сверхразумов доверять исходникам у тебя уже не получится.

        @ALexhha

        да нет никаких проблем, на машине с инетом

        Пакетный менеджер - придуман чтобы экономить память. Но никаких проблем нет - просто скачай половину репы. Это просто шиза, создать кучу гемороя, чтобы потом всрать основной поинт этой геморной системы. А юзер всеравно в итоге поставит флетпак, скачает гиг мусора чтобы запустить калькулятор, просто потому что так оно хотябы работает без боли.

        если ты пытаешься ставить пакет с ubuntu на debian то ССЗБ

        Это тоже следствие того что зависимости в пакетах - одной из худших решений ever. Пакеты между двумя deb дистрбутивами даже не совместимы, это лол. Т.е. мейнтейнеры буквально допиливают софт под набор костылей, называемый дистрибутивом, иначе оно вообще нежизнеспособно.

        @khajiit

        Кстати, с менеджером без зависимостей, упомянутым тредстартером, есть такой забавный нюанс

        Ну есть и есть, у тебя все аргмуенты построены на "хитрой" схеме. Я говорю - пакетные менеджеры с зависимостями создают dependency hell и это создает вагон проблем, как разрабам, так и юзерам, буквально by design. Ты в ответ выискиваешь в других подходах какието маргинальные кейсы, типа на винде иногда dllки дебил-автор забудет с прогой положить, или на ведре системный webview кривожопый. И приравниваешь эти проблемы.

        Типа по-твоему системная проблема, которая генерит геморой на ровном месте регулярно и фиксится только отказом от такого подхода - это тоже самое, что решение в котором проблемы возникают в 1-2% случаев и не требуют переделки всей системы для фикса.

        так оно работать не будет

        Вот именно поэтому пакетные менеджеры прижились только на 1% ос и у полоумных джиесеров в npmе. Юзеру надо что аппа ставилась и работала, а с пакетным менеджером оно регулярно работать не будет. Да, да, я знаю у тебя такой же линукс и все работает. Вон у джавистов например джава не тормозит, это же не стало правдой.

        Добавишь в установщик apk зависимости, разрабы начнут туда говнолибы и прочие свои поделки пихать - и проблемы, подобные косякам с системным WebView будут возникать постоянно.

        На ведро уже пытались протащить заивисисмости, когда туда портировали Qt. В итоге эта идея быстро загнулась, юзеры не поняли почему они должны гемором заниматься, вместо того чтобы apk поставить.

        @kovserg

        @saege5b

        Винда тоже смотрится не очень
        В Винде легко какая-нибудь сборка может упереться в какую-нибудь исполняемую среду визуалстудии

        Смотрится не очень, зато работает без боли. Установить иногда vsredist, да даже 10 версий этого vsredist разом куда меньший геморой, чем разруливать зависимости в линуксе.


        1. khajiit
          26.06.2023 14:56
          +1

          все аргмуенты построены на "хитрой" схеме

          Особенно хитрой становится схема, когда начинаешь учить матчасть и — ВНЕЗАПНО! — понимаешь, что начиная с 7 в винде реализовано то же самое: версии, зависимости и вот это вот все, только с мелкомягкой спецификой )


          У вас какие-нибудь пригодные к обсуждению аргументы-то найдутся, кроме бессмысленного и беспощадного вайна?


        1. 0xd34df00d
          26.06.2023 14:56
          +3

          Ты можешь доверять софту только потому, что он написан на няшкой сишечке или плюсах

          «C» in CVE is for the C language.


          Доверять можно только софту, написанному на идрисе. Доверять, что не своруют пароли, ещё можно на хаскеле.


          Но никаких проблем нет — просто скачай половину репы.

          Зачем пловину?


          Да, да, я знаю у тебя такой же линукс и все работает. Вон у джавистов например джава не тормозит, это же не стало правдой.

          Для их задач — не тормозит (точно так же, как человеку сверху не лень фильтровать локально скачанный список писем через сервер). Для моих задач — у меня на линуксе всё работает, а на винде — нет.


        1. ALexhha
          26.06.2023 14:56

          Пакетный менеджер - придуман чтобы экономить память.

          пакетный менеджер рассчитан на наличие интернета, внезапно. А то ты сначала выдумываешь ситуации, а виноват в итоге пакетный менеджер )))

          Это тоже следствие того что зависимости в пакетах - одной из худших решений ever.

          никаких проблем не вижу. Зависимости избавляют от кучи проблем с софтом

          Пакеты между двумя deb дистрбутивами даже не совместимы, это лол.

          а с чего они должны быть совместимы лол ? Поставь поршни от бмв на ауди, внезапно они не совместимы :D

          Т.е. мейнтейнеры буквально допиливают софт под набор костылей называемый дистрибутивом, иначе оно вообще нежизнеспособно.

          никто ничего не допиливает, а выбирают по их мнению самые стабильные версии. Не нравится - Welcome to Linux From Scratch!


          1. Aldrog
            26.06.2023 14:56

            пакетный менеджер рассчитан на наличие интернета, внезапно

            Внезапно нет, как минимум apt(-get) и pacman поддерживают локальные репозитории (например, на дисках или флешках). В yum и прочих наверняка тоже подобные механизмы есть.


            1. ALexhha
              26.06.2023 14:56

              Естественно поддерживают, тогда о чем вообще разговор ? Я показал пример как установить без наличия инета, дисков, флешек и вот этого всего


    1. zlo1
      26.06.2023 14:56
      +9

      Как гентушник, в эпоху интернета и git, для меня дикость доверять бинарному Г.. и не оптимизированному под мое железо (march=native) . Зависимости при установке из исходников - наименьшая из проблем


      1. CherryPah
        26.06.2023 14:56
        +9

        бинарному Г.. и не оптимизированному под мое железо 

        Можете привести какой-нить довод зачем мне нужно оптимизировать под свое железо почтовый клиент. Почта быстрее ходить станет?


        1. 0xd34df00d
          26.06.2023 14:56
          +1

          Полнотекстовый поиск по почтовой базе быстрее станет, например.


          1. Starl1ght
            26.06.2023 14:56
            +3

            на 0.02% ?


            1. 0xd34df00d
              26.06.2023 14:56

              В 10 раз.


              1. c3gdlk
                26.06.2023 14:56

                10 раз от какого времени? я разницу между микросекундами и милисекундами не замечу.


                1. 0xd34df00d
                  26.06.2023 14:56
                  +1

                  10 раз от какого времени?

                  Смотря какая база. Единицы секунд — уже достаточно?


                  я разницу между микросекундами и милисекундами не замечу.

                  А батарея — заметит.


              1. Starl1ght
                26.06.2023 14:56
                +1

                Для интереса качнул такой же греп, что у меня в убунте (3.7), собрал его через make CFLAGS="-O2 -pipe -march=native -floop-interchange -floop-strip-mine -floop-block"

                И запустил по 100 тестов а-ля "grep -ri pogchamp" по ~/ для собранного и системного - системный греп отрабатывает в среднем на пару-тройку процентов быстрее.

                Что я делаю не так? В линуксокопошении не силен.

                i7-13700KF, DDR5-6400, Kingston KC3000 2tb ссд.


                1. 0xd34df00d
                  26.06.2023 14:56

                  Используете для бенчмаркинга непредназначенный для этого grep и делаете непонятно какие выводы, которые вы забыли написать?


                  1. Starl1ght
                    26.06.2023 14:56
                    +2

                    Так давайте проведем бенчмарк и сделаем понятные выводы?

                    Идея грепа в том - что это как раз тот самый полнотекстовый поиск, пакет из репо убунты для всех, и те же сырцы, перекомпилированные ПОД СЕБЯ, ровно так, как вы написали в комменте ниже.

                    На 100 запусках каждого бенча есть повторяемая разница в пару-тройку процентов в пользу пакета из репо.

                    Я просто очень хочу обещанное х10 ускорение увидеть. В идеале, без читерства а-ля #ifdef AVX512_SUPPORTED


                    1. 0xd34df00d
                      26.06.2023 14:56

                      Так давайте проведем бенчмарк и сделаем понятные выводы?
                      Я просто очень хочу обещанное х10 ускорение увидеть.

                      Довольно забавно, что я как раз позавчера обновил один свой древний бенчмарк с очень тупой задачей подсчёта (aka поиска) количества вхождений символа в строке, и там разница между -O2 и -O3 -march=native как раз в 7.5-9 раз.


                      И, кстати, при -march=native с поддерживающим avx512 хостом, например, clang заменяет порнографию из последовательности popcnt над скалярными регистрами в один avx512bw-толстый popcnt (правда, всё равно упираясь в шину памяти, но это другой разговор — на amd'шном железе нет аналогов интеловского vtune с интеловским анализатором потребления энергии).


                      Про верчение-перемножение матриц, которое от компиляции под конкретное железо может ускоряться в те же 10 раз, что я наблюдал на практике, но бенчмарк для чего наваять сходу геморройнее, я уж не говорю.


                      Идея грепа в том — что это как раз тот самый полнотекстовый поиск, пакет из репо убунты для всех, и те же сырцы, перекомпилированные ПОД СЕБЯ, ровно так, как вы написали в комменте ниже.

                      Греп — это комбайн с кучей легаси. Написанный с нуля код может заруливать легаси даже на непредназначенном для этого языке. Что там бородатые мастера C нафигачили, что оно не поддаётся оптимизациям компилятора, я даже разбираться не хочу — мне говнокода в coreutils'ном wc хватило, а grep сложнее.


                      В идеале, без читерства а-ля #ifdef AVX512_SUPPORTED

                      А почему так? Это, особенно с #ifdef, не нацеливание на конкретную машину?


                      1. iig
                        26.06.2023 14:56

                        Греп — это комбайн с кучей легаси.

                        Так и этот ваш linux состоит из легаси чуть более чем полностью. Числодробилку или синтетический тест, или очень правильно написанный код ускорить правильной сборкой наверное можно. А вся система полностью упрется в IO.


                      1. 0xd34df00d
                        26.06.2023 14:56

                        Так и этот ваш linux состоит из легаси чуть более чем полностью.

                        Как и любая современная ОС, имеющая больше трёх с половиной пользователей.


                        А вся система полностью упрется в IO.

                        Немало задач сводится к числодробилкам, так что нет.


          1. M_AJ
            26.06.2023 14:56
            +1

            В эпоху IMAP, когда поиск писем практически всегда выполняется сервером?


            1. 0xd34df00d
              26.06.2023 14:56
              +4

              Хочу выполнить поиск всех писем, содержащих pdf-вложение с текстом «имяпроекта», или поиск всех писем, содержащих близкие в word2vec слова к «досада». Помогите, пожалуйста, сделать это через IMAP. В качестве задачи со звёздочкой помогите это сделать через IMAP, если письма зашифрованы каким-нибудь там GPG (потому что я не доверяю серверу), и ключ есть только локально.


              Кстати, если у вас в папке 100500 писем, то для фильтрования вашей вьюшки с их списокм по заголовку или отправителю вы тоже будете ходить в сеть и делать IMAP-запрос?


              Ну и главное тут — чтобы треды с нытьём о тормозах современного ПО и треды «гагага зачем собирать ПО под свою машину с sse 4.2/avx2/avx512 оптимизаторы хреновы))))» были достаточно разнесены в пространстве-времени, а то иначе вопросы могут возникнуть даже у авторов таких комментариев.


              1. M_AJ
                26.06.2023 14:56
                +2

                или поиск всех писем, содержащих близкие в word2vec слова к «досада» [...] В качестве задачи со звёздочкой помогите это сделать через IMAP, если письма зашифрованы каким-нибудь там GPG

                Это конечно же делается в стандартном почтовом клиенте, который нужно просто пересобрать с нужными флагами, а не с помощью чего-то самописного. И конечно тут главный вклад внесет время самого поиска, а не скачивания pdf-ок, и не чтение их с диска.

                Ну и главное тут — чтобы треды с нытьём о тормозах современного ПО и треды «гагага зачем собирать ПО под свою машину с sse 4.2/avx2/avx512 оптимизаторы хреновы))))» были достаточно разнесены в пространстве-времени, а то иначе вопросы могут возникнуть даже у авторов таких комментариев.

                Современное ПО если тормозит, то явно не от того, что собрано без поддержки AVX512 инструкций, и то что оживить старый комп на 10-летней давности Core i5 помогает вовсе не замена проца и пересборка ПО, а замена диска на SSD очень жирно на это намекает. Есть исключения, в виде задач обработки изображений, рендера видео или рассчетов в CADах, но это явное меньшинство.


                1. 0xd34df00d
                  26.06.2023 14:56

                  Как дела с фильтрацией по теме или отправителю?


                  Это конечно же делается в стандартном почтовом клиенте, который нужно просто пересобрать с нужными флагами, а не с помощью чего-то самописного.

                  Немало известных мне почтовых клиентов вполне умеют в GPG.


                  С word2vec да, я сам себе свои костыли написал. Но на вопрос о том, «зачем», это, надеюсь, отвечает?


                  И конечно тут главный вклад внесет время самого поиска, а не скачивания pdf-ок

                  Качаете их вы в любом случае и один раз.


                  и не чтение их с диска.

                  Вы что-нибудь слышали об индексах?


                  1. M_AJ
                    26.06.2023 14:56

                    Как дела с фильтрацией по теме или отправителю?

                    Сложно сказать без тестов, и уж это то точно без проблем делается на стороне сервера.

                    С word2vec да, я сам себе свои костыли написал. Но на вопрос о том, «зачем», это, надеюсь, отвечает?

                    В контексте обсуждения пакетных менеджеров, обсуждать то, насколько ускорились свои самописные костыли просто не имеет смысла, имеет смысл обсуждать какой прирост даст пересборка популярных пакетов. Впрочем, надо будет просто как нибудь взять, да погонять под Дженту и под Убунтой какие-нибудь популярные вещи типа Chromium/Firefox, парочку СУБД, да какой-нибудь PHP и сравнить.

                    Качаете их вы в любом случае и один раз.

                    Если я не ищу в них потом текст постоянно, то время на сам поиск в любом случае будет мало в сравнении со временем скачивания. То же самое относится и к индексам -- если я не ищу по письмам постоянно, то время на скачивание и индексирование будет многократно превышать время на сам поиск, и даже ускорение его в десять раз не будет играть роли в скорости получения итогового результата, потому что бутылочное горлышко в данном случае совсем в другом месте. В народе это называется "экономией на спичках".


                    1. 0xd34df00d
                      26.06.2023 14:56

                      Сложно сказать без тестов, и уж это то точно без проблем делается на стороне сервера.

                      Ну, то есть, делаем сетевой запрос на сервер, чтобы просто поискать слово в теме. А если интернет недоступен, то фильтровать по заголовкам нельзя. Зато пересобирать ничего не нужно!


                      имеет смысл обсуждать какой прирост даст пересборка популярных пакетов

                      Это уже минимум третий раз, когда в этом треде двигаются гоалпосты.


                      Впрочем, надо будет просто как нибудь взять, да погонять под Дженту и под Убунтой какие-нибудь популярные вещи типа Chromium/Firefox

                      Firefox гоняли, правда, пять лет назад, профит измерим вполне: тыц.


                      Если я не ищу в них потом текст постоянно, то время на сам поиск в любом случае будет мало в сравнении со временем скачивания. То же самое относится и к индексам — если я не ищу по письмам постоянно, то время на скачивание и индексирование будет многократно превышать время на сам поиск

                      Разница в том, что индексировать (и качать) вы можете асинхронно — это подготовительная работа, которую потом, во время поиска, не видно.


        1. Arris
          26.06.2023 14:56
          +1

          Ну так, просто для сведения: синтетические тесты на PHP, поставленном из бинарника отрабатывают примерно на 20-25% дольше, чем те же самые тесты, но выполненные на PHP скомпилированном под конкретную архитектуру.

          Несколько лет назад на генте проверял.

          Сейчас бы проверил с пайтоном и pytorch, но у меня уже нет генты..


          1. randomsimplenumber
            26.06.2023 14:56
            +1

            В debian, например, есть бинарники для кучи архитектур. Можно надеяться, что бинарники для х64 собраны не хуже, чем если руками configure && make && make install ?


            1. 0xd34df00d
              26.06.2023 14:56

              Нельзя, потому что x64 много разных, и core 2 duo из 2006-го и ryzen 9 из 2023-го — это две разные железки, с двумя разными наборами доступных расширений архитектуры, и то, что собрано в дебиане под x64, должно работать и на первой из них, поэтому там берётся наибольший общий делитель всех этих архитектур.


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


            1. Arris
              26.06.2023 14:56

              Я в курсе, спасибо. Но сборка "под процессор" это немного другое, нежели "сборка под архитектуру".

              P.S. Да, моя ошибка. Под "конкретную архитектуру" я понимал именно "конкретный процессор + всё остальное железо, что и составляет архитектуру".


      1. ALexhha
        26.06.2023 14:56
        +5

        Как гентушник, в эпоху интернета и git, для меня дикость доверять бинарному Г.. и не оптимизированному под мое железо (march=native). Зависимости при установке из исходников - наименьшая из проблем

        а вот и оптимизаторы с секретными ключами сборок подъехали. Только они знают секретные ключи сборки, которые позволят собрать пакет и он будет работать на 0,00001% быстрее, но это не точно. Причем, как правило, это оптимизаторы потом ни за что не отвечают и в случае чего, всю вину валят на ментейнеров.

        В k8s тоже предлагаете компилить все из исходников в инит контейнерах, нее ну а чо, удобно же


        1. cat_chi
          26.06.2023 14:56
          -2

          В k8s тоже предлагаете

          Подозреваю, что труЪ гентушник за одно упоминание k8s должен бы предать вас анафеме :)


          1. M_AJ
            26.06.2023 14:56
            +1

            что труЪ гентушник

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


        1. 0xd34df00d
          26.06.2023 14:56
          +3

          а вот и оптимизаторы с секретными ключами сборок подъехали.

          Что секретного в


          -O2 -pipe -march=native -floop-interchange -floop-strip-mine -floop-block

          ?


          Причем, как правило, это оптимизаторы потом ни за что не отвечают и в случае чего, всю вину валят на ментейнеров.

          Подъехали какие-то совсем уже неприкрытые соломенные чучела.


          В k8s тоже предлагаете компилить все из исходников в инит контейнерах

          Не пользуюсь k8s и даже не знаю, зачем он мне был бы нужен.


          1. ALexhha
            26.06.2023 14:56

            Что секретного в
            -O2 -pipe -march=native -floop-interchange -floop-strip-mine -floop-block

            и что оно дает по сравнению со стандартными ключами дистрибутива ?

            Не пользуюсь k8s и даже не знаю, зачем он мне был бы нужен.

            не пользуешься, это не значит что он не нужен другим


            1. 0xd34df00d
              26.06.2023 14:56

              и что оно дает по сравнению со стандартными ключами дистрибутива ?

              Вы знакомы с -march?


              не пользуешься, это не значит что он не нужен другим

              Тред начался с того, что «я не пользуюсь сборкой под своё железо, значит, это глупо и никому не нужно».


              Что вам там даёт k8s, 0.02% удобства?


              1. ALexhha
                26.06.2023 14:56

                Что вам там даёт k8s, 0.02% удобства?

                а с чем сравниваем ? Если с vps/vds - то 1000%. Если взять аналогию - сравните ваз и мерседес

                Вы знакомы с -march?

                в общих чертах.

                Я имел ввиду, вот мы перекомпилировали все утилиты из coreutils c этими ключами, что мы как devops/сисадмин от этого выиграли ? У нас база данных стала быстрее запросы выполнять или rps в nginx вырос в 2-3 раза.

                Ответ очевиден - конечно же нет. Тогда напрашивается вопрос - мы это делали чтобы что ? А теперь умножаем количество серверов на 1000. Все еще хочется пересобирать пакеты ? А обновления уязвимости выходят раз в неделю и поехали перекомпилировать на 1000 серверов

                P.S.

                я не рассматриваю случай, когда мы это делаем на личном ноуте. Там как говорится - играйся на здоровье, если есть время и желание


                1. 0xd34df00d
                  26.06.2023 14:56

                  а с чем сравниваем? Если с vps/vds — то 1000%.

                  Бенчмарки покажете? :]


                  Я имел ввиду, вот мы перекомпилировали все утилиты из coreutils c этими ключами, что мы как devops/сисадмин от этого выиграли ?

                  Но я не девопс и не сисадмин. Дома — вы сами написали, всем пофиг. На работе — я как раз пишу (вернее, раньше писал) эти самые числодробилки, и там всё собирается под конкретное железо.


                  А обновления уязвимости выходят раз в неделю и поехали перекомпилировать на 1000 серверов

                  Чё-то там про бинхосты.


                  1. ALexhha
                    26.06.2023 14:56

                    Бенчмарки покажете? :]

                    бенчмарки удобства ? ))) Ну самое банальное, вам через 5 минут надо поднять 100/200/300/1000 нод на arm и запустить тест.

                    Но я не девопс и не сисадмин. Дома — вы сами написали, всем пофиг. На работе — я как раз пишу (вернее, раньше писал) эти самые числодробилки, и там всё собирается под конкретное железо.

                    ну так это эдж кейс. Конечно для таких случаев оно имеет смысл и место быть. Более того, там и до asm вставок можно скатиться и оно будет иметь смысл


                    1. 0xd34df00d
                      26.06.2023 14:56

                      бенчмарки удобства? )))

                      Ну да. У меня вон сверху требуют же бенчмарки, так почему тут голословных утверждений должно быть достаточно?


                      Ну самое банальное, вам через 5 минут надо поднять 100/200/300/1000 нод на arm и запустить тест.

                      Это какая-то синтетика.


                      ну так это эдж кейс. Конечно для таких случаев оно имеет смысл и место быть. Более того, там и до asm вставок можно скатиться и оно будет иметь смысл

                      Ну а в моей практике 100 нод на чём угодно — эдж кейс (мой код никогда не работал больше чем на то ли 14, то ли 16 нодах, и никаких кубернетесов там не было). А вот низкоуровневой оптимизацией в том числе я лет 10 себе на жизнь зарабатывал. ХЗ, какой тут вывод.


                      1. ALexhha
                        26.06.2023 14:56

                        Это какая-то синтетика.

                        реальный юзкейс из практики


                  1. cat_chi
                    26.06.2023 14:56

                    Бенчмарки покажете? :]

                    Пока не нашли способ бенчмаркать седину админов :)
                    Хотя есть идея. Берём две контрольные группы, поддерживающие идентичные хайлод-сервисы, цепляем каждому умные часы, трекаем качество сна в "чёрную пятницу"...


              1. M_AJ
                26.06.2023 14:56

                Что вам там даёт k8s, 0.02% удобства?

                Предсказуемость работы на различных этапах, автоскейлинг, автоматическая балансировка нагрузки и автоматический перезапуск упавших частей системы, это куда больше чем "0.02% удобства".


              1. cat_chi
                26.06.2023 14:56

                Тред начался с того, что «я не пользуюсь сборкой под своё железо, значит, это глупо и никому не нужно».

                Кому-то нужно, кому-то не нужно. Но это точно история не для всех. Хотя "играться" с гентой всегда было интересно.

                Та же история с кубером.

                А с чего там тред начался, да какое нам дело :) Куда важнее, куда он в итоге придёт


      1. vvpoloskin
        26.06.2023 14:56
        +13

        Это проходит. Я этим 15 лет назад тоже болел.


      1. net_racoon
        26.06.2023 14:56

        В начале 2к кеды + либра опенофис собиралось из исходников 2 дня. Зато оптимизировано под мое железо...


    1. nikhotmsk
      26.06.2023 14:56

      Менеджеры пакетов с зависимостями - одна из худших инженерных идей в истории ойти

      Мне тоже накипело. Пакетные менеджеры - сложная вещь, при желании их легко можно ввести в ступор. Если бы я коллекционировал все ошибки, которые выдает пакетный менеджер, накопилось бы на целую тетрадку.

      Сейчас я уже освоился с ним, но крови он попил прилично в свое время.

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

      Ни один пакетный менеджер еще не научился подгружать библиотеки для бинарника в runtime. Это все по прежнему вручную происходит. И это бесит. Особенно если нужный файлик находится в пакете с совсем другим именем, ничего не напоминающем. В разных дистрах имена одного и того же пакета разные, естественно.

      Если для бинарника нужна библиотека другой версии, то без шансов. Не запустишь. Я так и не смог запустить нужную программу для звукорежиссеров, просто потому что там gtk старый.

      Установка программ на машину без интернета - отдельная очень длинная и сложная история, даже не буду трогать. Винда здесь выигрывает однозначно.


      1. kovserg
        26.06.2023 14:56
        +1

        Винда тоже смотрится не очень особенно в директории winsxs. Да и навязчивые добавления искусственной не совместимости со старыми версиями тоже.


      1. saege5b
        26.06.2023 14:56
        +2

        В Винде легко какая-нибудь сборка может упереться в какую-нибудь исполняемую среду визуалстудии.

        После чего говорит: - прощайте.


      1. ALexhha
        26.06.2023 14:56

        Установка программ на машину без интернета - отдельная очень длинная и сложная история, даже не буду трогать.

        да нет никаких проблем, на машине с инетом

        $ yum install --downloadonly --downloaddir=/mnt/downloads git mc wget curl unzip git

        на машине без инета просто

        $ yum install /mnt/downloads/*

        Винда здесь выигрывает однозначно.

        ну да ну да

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

        зачем ? Чтобы сэкономить 1 мб дискового места ? Если зависимость реально не нужна, то делаешь PR мейнтейнеру и ее удаляют

        Это все по прежнему вручную происходит. И это бесит. Особенно если нужный файлик находится в пакете с совсем другим именем, ничего не напоминающем.

        yum install git ничего в ручную не ставлю

        В разных дистрах имена одного и того же пакета разные, естественно.

        если ты пытаешься ставить пакет с ubuntu на debian то ССЗБ


        1. iig
          26.06.2023 14:56
          +1

          если ты пытаешься ставить пакет с ubuntu на debian то ССЗБ

          Но виноваты Торвальдс и менеджер пакетов ;)


          1. khajiit
            26.06.2023 14:56

            Плохому танцору вечно что-то мешает )


    1. Aldrog
      26.06.2023 14:56

      На самом деле, менеджеры с зависимостями очень эффективно решают ряд проблем:


      • экономия постоянной памяти
      • экономия оперативной памяти
      • оперативное исправление уязвимостей и прочих ошибок в зависимостях.

      При этом они не вносят никаких новых проблем до тех пор, пока используются для популярного, активно развивающегося, открытого софта. А вот если по этим параметрам достаточно далеко уходить (особенно по нескольким сразу), то начинаются проблемы, и в какой-то момент действительно становится проще воспользоваться flatpak/snap/AppImage.


      Но благо никто не заставляет выбирать что-то одно, последние никак не конфликтуют с первыми, и ничего не мешает использовать для части софта условный pacman, а для другой условный flatpak.


      1. ilitaiksperta
        26.06.2023 14:56

        @Aldrog

        На самом деле, менеджеры с зависимостями очень эффективно решают ряд проблем:

        Это я и называю выпиюще дерьмовым инженерным решением.

        Потому что первые 2 проблемы вообще не существуют. А любые бенефиты от экономии на спичках аннулируются как только юзер ставит flatpak.

        А третья решается лишь теоретически, при условии что весь софт установлен через менеджер пакетов, а не через flatpak/snap/AppImage или бинарь без зависимостей, что зависимости системные а не вкомпилены в исходники, что мейнтейнеры не прокекают момент, и что репа не помойка типа aur или npm и т.п. Т.е. в условиях, не существующих в реальной жизни.

        При этом они не вносят никаких новых проблем до тех пор, пока используются для популярного, активно развивающегося, открытого софта

        Т.е. пока юзер пользуется только софтом, специально допиленным мейнтейнером под дистрибутив. Этот подход с репой и мейнтейнерами под каждый дистр вообще не масштабируемый. Миллон разрабов может мейнтейнить по одной аппе, в итоге мейнтейня миллон апп. Миллион апп в каждой репе под каждый дистр отдельно, силой нескольких мейнтейнеров это уже unmaintainable.

        ничего не мешает использовать для части софта условный pacman, а для другой условный flatpak.

        В итоге и профитов никаких нет, а проблемы собрали со всех мест.

        @ALexhha

        пакетный менеджер рассчитан на наличие интернета, внезапно

        Еще один минус пакетных менеджеров.

        Зависимости избавляют от кучи проблем с софтом

        Примеры приводить, вы конечно же не будете.

        @0xd34df00d

        Все правильно пишешь, только гентушники это 1% от одного процента линуксоидов, у других людей есть жизнь за пределами компьютера.

        @khajiit

        когда начинаешь учить матчасть и — ВНЕЗАПНО! — понимаешь, что начиная с 7 в винде реализовано то же самое

        От этого что, установка софта через пакеты с зависимостями стала доминирующим (или хотябы популярным) способом установки софта в винде?

        Это все таже охеренно "хитрая" схема - я говорю что ставить софт черещ пакетный менеджер это геморой потому dependency hell, а ты говоришь что гдето в жопе винды тоже есть пакетные менеджеры. Только в линуксе это дефолтный способ ставить софт часто без особых альтернатив, а в винде маргинальный.

        Если для тебя это одно и тоже, то внеси в свою матчасть учебник логики, может осилишь не такой школьный способ вести спор.

        У вас какие-нибудь пригодные к обсуждению аргументы-то найдутся

        Ты либо контр-аргументы приводи, либо признавай неправоту. А ты троллинг нытьем разводишь, что аргументы не нравятся.


        1. Aldrog
          26.06.2023 14:56

          Потому что первые 2 проблемы вообще не существуют

          Серьёзно? Не, я понимаю, что лишняя сотня Мб на каждую программу при текущих ценах на SSD не критична, но ОЗУ-то не резиновая.

          А любые бенефиты от экономии на спичках аннулируются как только юзер ставит flatpak.

          Поставил flatpak и два приложения из него. Потерял лишних пару сотен Мб на диске, и сотню Мб оперативки, когда их запускаю. На многих десятках программ, установленных из пакетов, сэкономил на порядок больше. ЧЯДНТ?

          А третья решается лишь теоретически, при условии что весь софт установлен через менеджер пакетов

          Во-первых, почему вы считаете, что наличие хоть одной программы с уязвимостью автоматически делает уязвимой всю систему? А если она даже не выходит в сеть? Во-вторых, flatpak и snap имеют механизмы изоляции приложений, поэтому даже если злоумышленник воспользуется уязвимостью в устаревшей библиотеке, ему понадобится ещё и уязвимость в flatpak/snap для того, чтобы проникнуть в систему.


        1. 0xd34df00d
          26.06.2023 14:56

          Все правильно пишешь, только гентушники это 1% от одного процента линуксоидов, у других людей есть жизнь за пределами компьютера.

          ЧСХ на администрирование системы я трачу околонулевое количество времени, и на другие дистрибутивы переходить не хочу отчасти потому, что мне лень их изучать — в генте всё просто работает.


  1. agalakhov
    26.06.2023 14:56
    +8

    Все семейство Arch забыли. А оно крупнее, чем Gentoo.


    1. ohno1052
      26.06.2023 14:56
      +1

      более того, посоперничает с семейством убунты. арч сейчас же самый стильный модный молодежный (есть еще никсось, но про нее знает полтора анонимуса и курва обучения очень крута)


      1. anonymous
        26.06.2023 14:56

        НЛО прилетело и опубликовало эту надпись здесь


  1. nronnie
    26.06.2023 14:56
    +6

    Например, для dpkg это будет dpkg –i firefox-19.0.deb, а для apt apt-get install firefox.

    Я в линуксах не великий эксперт, но и не совсем лох, и тут я что-то совершенно не понял и впал в ступор. Разве apt/apt-get это не надстройка над dpkg, которая просто работает не с локальными файлами .deb, а с сетевыми репозиториями этих же файлов?


    1. LuchS-lynx
      26.06.2023 14:56
      +1

      еще есть apt-rpm через apt-get, в системах отличных от потомков Дебиана


  1. t3n3t
    26.06.2023 14:56
    +1

    Где искать пакеты

    https://pkgs.org/


    1. mastermind88
      26.06.2023 14:56
      +1

      Есть еще https://repology.org


  1. RolexStrider
    26.06.2023 14:56
    +2

    Если .apk - то в контексте именно дистрибутивов Linux - это про Alpine. А ebuild - это вообще не пакет)


  1. nronnie
    26.06.2023 14:56

    Сейчас, вроде бы еще модно-молодежно это snap, тиснул бы кто-нибудь статью тут про него уровня "для самых маленьких", а то самому по мануалам разбираться никак всё руки не дойдут.


    1. kovserg
      26.06.2023 14:56
      +3

      Нафиг нужен snap который для запуска тянет с собой копию половины линукса для небольшой утилиты и при этом загаживает систему (в mount просто жесть). Appimage выглядит в этом ряду значительно привлекательней.


      1. nronnie
        26.06.2023 14:56

        Да я сам им не пользуюсь, за ненадобностью (у меня Линукс стоит, практически, только как запускалка докер-контейнеров), но он существует, и, по-моему в Ubuntu 23 уже даже ставится по умолчанию, так что хотелось бы на всякий случай с ним ознакомиться.


    1. websnow
      26.06.2023 14:56

      Сейчас модно flatpak юзать


      1. kovserg
        26.06.2023 14:56

        Берём первый попавшийся пример: ScummVM
        deb = 90MiB
        flatpak = 215 MB


        1. websnow
          26.06.2023 14:56

          Например у меня Fedora, и проще пожертвовать 125 MB на flatpak, чем собирать из исходников или, как предлагает автор ScummVM, тащить Canonical Snapcraft ради одной программы. Насколько мне известно, вменяемых альтернатив у flatpak в данном сценарии нет, особенно когда речь заходит о скорости запуска программы


          1. ALexhha
            26.06.2023 14:56

            Докер чем не альтернатива


            1. websnow
              26.06.2023 14:56

              Как предлагаете ту же Krita в Docker использовать?)

              Докер чем не альтернатива

              всем, это как вместо колёс на автомобиль ставить спасательные круги (потому что круглые)


              1. ALexhha
                26.06.2023 14:56

                Как предлагаете ту же Krita в Docker использовать?)

                по офф доке - https://docs.krita.org/en/untranslatable_pages/building/build_krita_with_docker_on_linux.html

                P.S.

                ну хоть не фотошоп и не автокад с 3d макс )))


                1. websnow
                  26.06.2023 14:56

                  Ну да, собрать из исходников проще, чем

                  flatpak install krita
                  Hidden text

                  нет


                  1. ALexhha
                    26.06.2023 14:56

                    Ну да, собрать из исходников проще, чем

                    смотря какая цель преследуется при этом


                1. iig
                  26.06.2023 14:56

                  build_krita_with_docker_on_linux.html

                  Сборка в docker - уже привычное зло. Но достаточно удобное ;) А для запуска придумали других инструментов, удобных именно для запуска.


                1. Aldrog
                  26.06.2023 14:56
                  +1

                  Вы сами эту доку читали? Там ни слова нет про запуск Krita в Docker, только про сборку в контроллируемом окружении.


                  1. ALexhha
                    26.06.2023 14:56

                    Там ни слова нет про запуск Krita в Docker

                    а в чем проблема после сборки запустить docker run ?


                    1. Aldrog
                      26.06.2023 14:56
                      +1

                      В том, что крита не запустится с какой-нибудь ошибкой в стиле "не найден дисплей"?


                      1. iig
                        26.06.2023 14:56
                        +1

                        Передать дисплей внутрь docker не очень сложно. Но это из серии "в гамаке и стоя".


                      1. Aldrog
                        26.06.2023 14:56

                        Вот именно. А присланный гайд не только никак не помогает в этом, но и вовсе не имеет отношения к заданному вопросу.


                      1. ALexhha
                        26.06.2023 14:56

                        Если docker run вызывает проблемы, то увы, медицина тут бессильна


                      1. iig
                        26.06.2023 14:56

                        Если docker run вызывает проблемы, то увы, медицина тут бессильна

                        Лично вы запускали эту самую krita в docker-окружении?

                        И вкрутили это в свое DE, во все менюшки.. Правда?


                      1. Aldrog
                        26.06.2023 14:56
                        +3

                        Давайте по порядку.


                        • Вы предложили docker как альтернативу flatpak;
                        • websnow спросил, как использовать docker в совершенно типичном для flatpak сценарии;
                        • в ответ вы скидываете гайд по созданию контейнера для сборки программы с таким видом, будто это отвечает на заданный вопрос;
                        • даже если всё-таки пойти дальше, собрать программу, подобрать правильные опции для её запуска, написать для неё .desktop-файл, вы получите контейнер, занимающий в несколько раз больше места, чем и так раздутый flatpak, и программу с урезанным функционалом (как минимум, не будет подхватываться системная тема, не будет работать drag&drop между приложениями).

                        Вы всё ещё считаете docker адекватной заменой для flatpak? Напомню, что flatpak появился позже докера, и занял нишу, на которую тот никогда не претендовал — распространение изолированных графических приложений для ПК.


  1. mastan
    26.06.2023 14:56
    +1

    Установка пакетов во всех менеджерах производится схожим образом. Необходимо сначала скачать пакет (.deb, .rpm ...), далее установить пакет вручную, используя команду данного дистрибутива (dpkg, rpm и т.д.). Например, для dpkg это будет dpkg –i firefox-19.0.deb, а для apt apt-get install firefox

    dpkg -i firefox-19.0.deb ставит пакет из файла, apt-get install firefox из репозитория. В последнем случае не нужно скачивать файл вручную вообще - apt скачает нужные файлы из репозитория и сам же вызовет dpkg для их установки.


    1. iig
      26.06.2023 14:56

      Пока списки репозиториев никто не правил непрямыми ручками, и не пытался притащить .deb с нерешаемыми зависимостями - прокатит. А потом бывают жалобы, что этот ваш пакетный менеджер плохой, негодный совсем, полсистемы мне снес ;)


      1. khajiit
        26.06.2023 14:56

        Ну, сдуру можно и член сломать, хоть это и гидравлика.