Почему лучше компилировать, чем устанавливать из репозиториев

В этом небольшом руководстве я собираюсь объяснить (и научить вас), почему лучше скомпилировать программу (скажем, Firefox, Vlc и т. Д.) Из ее исходного кода, чем загружать ее (из Центра программного обеспечения, Yumex, Pacman и т. Д.) ) и установите.

Сначала рассмотрим теорию:

Что такое "компилировать"?

Компиляция - это преобразование исходного кода (кода, написанного на определенном языке программирования, например C, C ++ и т. Д.) В исполняемую программу для его работы с использованием процессора для преобразования языка, используемого для генерации кода, в двоичный и ассемблерный. Его также часто называют упаковкой.

Почему лучше "компилировать"?

Сначала вы должны знать следующее, чтобы понять, почему. Говоря «грубо» (просто, не очень профессионально и т. Д.), Каждая раса (Pentium, Core, Atom и т. Д.) И ее разновидности (Intel, AMD, ARM и т. Д.) Имеют инструкции (программное обеспечение, написанное на ассемблере). который обрабатывает код) своей модели (Core i7, Core i5, Atom x2, Phantom x8, Arm и т. д.), а также имеют общие инструкции, которые есть у всех подобных.

При загрузке из репозиториев через Software Center / apt-get / Yumex / Yum / Pacman / etc программа, которая устанавливается автоматически, сообщает, что это предкомпилированного для его работы на всех возможных процессорах (Intel и Amd). Поскольку это предварительно скомпилированная программа, те инструкции, типичные для этой конкретной модели процессора, теряются (подумайте, что если такая программа, как Firefox или Chrome, которая имеет более 7 или 8 миллионов строк кода, они должны были поместить все конкретные инструкции для каждого процессор на рынке, объем кода будет настолько велик, что эта программа больше не будет эффективной), не останется ничего, кроме общих кодов бренда ее создателя (Intel, Amd, Arm).

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

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

Вы были бы удивлены той мощью, которую Амд Атом x2 или ты Intel Core внутри, 2 Core Duo, i3и т. д. со старого компьютера. Теперь вы понимаете, почему в мире Linux много говорят о компиляции знаменитого ядра (сердца каждой операционной системы)? Представьте, что если вы скомпилируете всю систему (графическое окружение (Gnome, Kde и т. Д.), Ядро, часто используемые программы (Firefox, VLC, Chrome, Wine и т. Д.), Особенно для вашего ПК), то весь уровень скорости и оптимизации, который у вас будет. .

Этот принцип компиляции для получения кода, оптимизированного специально для вашей машины, используется такими дистрибутивами, как Gentoo и производные (о котором я не собираюсь сейчас говорить, я использую Fedora Minimal с компиляцией Gnome 3, ядра и других программ), где система , ваши обновления и ваши программы всегда компилируются.

Минусы компиляции:

Я уже объяснил все преимущества, но, как и все во вселенной, у этого есть один против.

В случае компиляции они есть;

  • Время, необходимое для этого (Firefox с i7 4790K (без разгона, так как я очень плохо разбираюсь с напряжениями), занимает 3 минуты, Gnome Shell (панель не более) с Gnome-Control-Center заняла у меня около 2 минут, оба компилируются в то же время в Fedora, но на машине с менее мощным процессором это время может быть непропорционально большим).
  • Процессор использует 100% своей мощности со всеми ядрами на максимум, поэтому потребление и тепло резко возрастают (учтите это, если у вас разгон или это особенно ноутбук), поэтому вам удобно подготовить помощника или кофе по случаю.
  • Возможно, вам не хватает библиотеки (инструмента), в которой используется программа, поэтому при компиляции не возникает ошибок. В общем, все дистрибутивы имеют пакеты или наборы, чтобы избежать этого (они поставляются с различными библиотеками и другими вещами, которые позволяют ядру как следует взаимодействовать с процессором во время процесса).

Как я могу скомпилировать?

Для Debian (Ubuntu, Mint, Elementary и т. Д. Все они являются производными от этого, следуйте этому

Здесь я говорю о компиляции программы для нормального использования, а не ядра.

aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

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

Для Fedora:

sudo yum -y установить заголовки ядра
ядро-разработка
sudo yum groupinstall "Инструменты разработки"
sudo yum groupinstall "Библиотеки разработки"

Здесь я должен извиниться за тех, кто использует Arch (я плохо знаю дистрибутив) и OpenSuse, так как я не знаю эти дистрибутивы или соответствующие пакеты для правильной компиляции (и я не подтвердил, что находится в сети, поэтому что для этих двоих я не знаю, работают ли они).

Теперь, когда у вас есть все необходимые требования, вам нужно только загрузить исходный код программы, которую вы хотите скомпилировать, в зависимости от расширения, которое вы распаковываете с помощью терминала (не беспокойтесь, я оставлю вам команды), и когда вы переходите в папку (всегда с терминалом), вы делаете то же самое следующий:

Если у вас есть возможность настроить себя, чтобы выбрать компоненты и другие:

./configure

Затем вы набираете:

make

И, наконец, чтобы установить программу на свой Linux:

make install

Все это всегда с root (su в Fedora, sudo su в Ubuntu и его производных (Mint, Elementary Os и т. Д.)

Команды для распаковки с помощью терминала (файл распаковывается в папку, в которой находится файл):

.Tar файлы (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Пакет | tar cvf file.tar / file / * Распаковать | tar xvf file.tar Просмотреть содержимое | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar с gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Пакет и молния | tar czvf archive.tar.gz / archive / Распаковать и разархивировать | tar xzvf file.tar.gz Просмотреть содержимое (не извлечено) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | gzip -q file (файл сжимается и переименовывает его в "file.gz") Распаковать | gzip -d file.gz (файл распаковывает его и оставляет как "файл" Примечание: gzip сжимает только файлы, а не каталоги
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | bzip2 файл | bunzip2 (файл сжимается и переименовывается в "file.bz2") Распаковать | bzip2 -d file.bz2 | bunzip2 file.bz2 (файл распаковывает его и оставляет как «файл») Примечание: bzip2 сжимает только файлы, а не каталоги.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar с bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | tar -c файлы | bzip2> file.tar.bz2 Распаковать | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (последние версии tar) Просмотреть содержимое | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | zip file.zip / mayo / archives Распаковать | unzip file.zip Просмотреть содержимое | распаковать -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | rar -a file.rar / may / archives Распаковать | rar -x file.rar Просмотреть содержимое | rar -v file.rar | rar -l file.rar

И это все. Привет из Буэнос-Айреса, Аргентина. С праздником и Новым годом! :).


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Гонсало сказал

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

    1.    Cristian сказал

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

      1.    Дэниел сказал

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

      2.    Жоако сказал

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

    2.    Авра сказал

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

  2.   ФерГе сказал

    ¡Muy интересно!

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

    1.    Антонио Кампос сказал

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

    2.    Jlbaena сказал

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

      Привет.

    3.    Жоако сказал

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

    4.    Фермин сказал

      В Gentoo ваш менеджер пакетов, Portage, заботится об обновлениях и зависимостях; Я не знаю о других дистрибутивах. Разумеется, каждое обновление требует перекомпиляции.

  3.   Танракс сказал

    Было время, когда я компилировал все, что мог. Потом я устал, особенно из-за времени, которое мне приходилось посвящать работе машины (45 минут для ядра, 10 минут для хрома…), и из-за времени, которое я тратил на устранение проблем, которые возникали на лету. К тому же лично прироста производительности не обнаружил, такое ощущение, что все как и было. По этим причинам сейчас я использую все предварительно скомпилированное, все происходит мгновенно и без конфликтов. Хотя в то время я многому научился, я хотел использовать gentoo 🙂

  4.   Эммануэль сказал

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

    Привет.

    1.    Жоако сказал

      У него есть функция apt-build, хотя я думаю, что он не компилирует зависимости, но устанавливает предварительно скомпилированные двоичные файлы.

  5.   Xikufrancesc сказал

    С первого момента, когда я увидел заголовок, я не мог не думать о том же, и после прочтения всей превосходной статьи у меня возникла идея, повторяя тысячу раз, Gentoo… Gentoo, где ты?
    компиляция - это замечательно, возможность пользоваться определенными функциями и использовать их бесценна, но время и «текущие потребности» непростительны, поскольку они неприменимы.
    Может быть, нам нужно что-то посередине, где ни библиотеки, ни детали в изменении версии не потратят столько времени. Мы посмотрим, что произойдет тогда, или если мы действительно приложим усилия для компиляции на самом aptitude, uprmi и zypper, которые мы уже установили.

  6.   анонимный сказал

    3 минуты firefox! .. Вы имели ввиду 30?

    Это заняло некоторое время на моем компьютере с 8350G fx4.5, я использую gentoo.
    $ genlop -t firefox | хвост -n3
    Сб 6 дек 20:00:00 2014 >>> www-client / firefox-34.0.5-r1
    время слияния: 16 минут 35 секунд

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

    1.    Shyancore сказал

      Для меня с Intel i7 4790K с 18 ГБ оперативной памяти мне потребовалось то, что я сказал раньше.

      1.    анонимный сказал

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

      2.    Jhonny сказал

        Небольшая деталь, которую вы упустили, говоря, что 18 ГБ оперативной памяти, кроме i7, не у всех есть такая машина, но вы можете провести сравнительный анализ, чтобы разница была заметна, потому что теория хороша, но давайте посмотрим, компенсирует ли она.

      3.    Cristian сказал

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

    2.    Ezequiel сказал

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

      Поздравления из Аргентины!

  7.   Эрик карвахаль сказал

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

    Проблемы с PATH и ФЛАГИ - это то, что до сих пор удерживает меня от желания компилировать все (хотя обычно я делаю это так, как могу). Один из инструментов, к которому я обычно обращаюсь, чтобы скомпилировать зависимости, - это следующий веб-сайт: http://www.linuxfromscratch.org/

    #LinuxFromScratch - это проект, который предоставляет "пошаговые" инструкции по компиляции исходного кода, который вам нужно использовать в системе. (98% того, что мне нужно для компиляции, я достиг, направляя меня отсюда и постепенно обучение).

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

    Это те моменты, о которых в настоящее время очень мало говорят, и только «ученые» справляются с этим, но интересно давать таким вещам необходимые им учебные пособия, чтобы каждый день мы находили все больше людей, которые вносят свой вклад в различные сообщества, в которых они участвуют. и не только Gnu / Linux остается вовремя из-за плохой работы соавторов, хотя до сих пор «это работало таким образом» не очень здорово иметь только конечных пользователей.

  8.   Rabuda Eagle сказал

    Позвольте мне небольшое добавление. Чтобы получить преимущества, представленные здесь, вы должны правильно настроить хорошо известный make.conf. Там указаны семейство процессоров и флаги компиляции. Точно так же вы можете указать количество ядер, которое будет использоваться во время компиляции. Когда вы используете все ядра вашего микрофона, время компиляции резко сокращается.

    приветствия

  9.   Себастьян сказал

    Очень хорошая статья. Мне бы тоже понравился пример или я хотел бы прямо пост о том, как компилировать в archlinux или как использовать AUR. С Новым годом из Мендосы.

  10.   Гиллокс сказал

    Давным-давно ... Я всегда компилировал ядро, но ждать 40 минут очень утомительно: / в любом случае ... Я давно ничего не компилировал, кроме видеодрайверов (только для особых конфигураций).

  11.   Александр сказал

    Статья очень интересная, но нет сударь, упаковка и компиляция не одно и то же;) ..

  12.   c4взрывной сказал

    Очень хороший пост. Я согласен с компилированием определенных программ, но иногда это несколько утомительно, поэтому для выполнения процесса требуется машина. Но помимо этого можно многому научиться, особенно когда нужны библиотеки или пакеты.
    Думаю, для Archlinux для компиляции вам понадобится следующий пакет: base-devel
    pacman -S базовая разработка

  13.   ратакилл сказал

    Информация очень хорошая, но, по правде говоря, ее не нужно компилировать, если вы обычный пользователь и просто хотите, чтобы что-то работало вот так, даже не трогайте это. Компилировать всегда утомительно, я всегда говорю, что вам не хватает библиотеки, вы обнаруживаете ту или иную проблему, скажите мне скомпилировать сервер minecraft, чтобы все было как можно лучше, и я не тороплюсь…. кроме того, что каждый раз, когда выходит обновление, патч или что-то еще, начинайте снова компилировать xd

    1.    кик1н сказал

      Собственно, компиляция предназначена для очень специфических программ, которые вам нужны для оптимального использования, потому что компилирование всего, и, как вы говорите, всегда есть обновления, в основном дистрибутивы с скользящим выпуском, раздражает. Я бы рекомендовал только ядра lts.

  14.   Пользователь Fedora сказал

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

  15.   Хуан Мера сказал

    Хороший вклад, я собираюсь посмотреть, как это будет, пока большую часть времени (почти всегда) я устанавливаю из репозиториев ...
    Небольшое наблюдение: параметры команды rar не зашифрованы, а bunzip2 только распаковывает.

  16.   Сантьяго сказал

    Максимум, что я скомпилировал, был ядром для debian wheezy, и это заняло у меня около 2 часов (у меня двухъядерный процессор amd e450 1.6 ГГц), и именно поэтому я не устанавливаю gentoo, время для компиляции и загрузки всего система займет у меня около 18 часов, и если у меня нет проблем, это правда, что лучше скомпилировать, но в большинстве случаев это занимает слишком много времени, и я думаю, что оно того не стоит. У вас есть прирост скорости, но это не так много, и я думаю, что это не оправдывает все затраченное время. Хотя, если однажды у меня будет компьютер с таким же хорошим процессором, как ваш, я попробую установить gentoo 😛

  17.   Вампи сказал

    Люди:

    Без пламенных намерений или чего-то бездельники считают естественным компилировать, генерировать двоичный файл, устанавливать его с помощью соответствующего диспетчера пакетов (который, очевидно, разрешает зависимости, slapt-get, swaret, slackyd и / или несколько других), причем все оптимизировано для наших команда и как будто ничего, о чем нет ничего особенного или о квантовой физике.

    Просмотр DVD, не наткнувшись на P3 750MHz с 192MB RAM, не является ни невозможным, ни трудным в сравнении со Slackware. Я подтверждаю, и это быстрее, чем компилировать Gentoo. Но это не то, я тоже использую Gentoo.

    Разница между хакером и потребителем заключается в том, что потребитель говорит: «Я бы хотел, чтобы это работало так», а хакер: «У меня есть отвертка и несколько минут» - Раэль Дорнфест

  18.   Пепенрике сказал

    Действительно ли есть заметное улучшение производительности?
    Как вы заметили разницу между скомпилированными пакетами и двоичными файлами с i7 последнего поколения и 18 Гб оперативной памяти?

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

    привет

    1.    Shyancore сказал

      Учитывая, что Gnome 3 только компилирует его (я назову имена грубо, поскольку имена пакетов я не помню): оболочка (панель), gnome-control-center (в комплекте, со своими зависимостями и т. Д.), Апплет на время и примерно 2 или 3 зависимости для работы оболочки. Очевидно, оболочке требовалось больше зависимостей для работы всех ее функций, но это заставило меня, среди прочего, скомпилировать GDM. Я исправил это, изменив его с помощью GConf после компиляции оболочки.
      Теперь, когда я вхожу в систему (через терминал), среда загружается гораздо быстрее, чем когда она была установлена ​​предварительно скомпилированной. Бросив время в эфир, в предварительно скомпилированном виде, я думаю, что для загрузки оболочки потребовалось около 3 или 4 секунд (с примерно 5, на которых показаны обои, я никогда не понимал, почему это заняло так много времени, мне кажется, что это из-за драйвера с GT 630) и скомпилирован, как только я ввел пароль, запускается X org и загружается среда (с предварительной загрузкой и предварительной ссылкой я сделал их намного быстрее, мне кажется, это потому, что они были переданы в кеш; https://www.google.com.ar/search?q=preload+y+prelink+fedora&ie=utf-8&oe=utf-8&gws_rd=cr&ei=iXaqVPykO4qYNpbTgdAP )

    2.    марио сказал

      Тот факт, что в i7 есть инструкции ss4 и ss3, которые игнорируются общими сборками из различных дистрибутивов (компиляция debian для 486, ubuntu для 686), может дать вам представление о том, когда оборудование тратится впустую, пытаясь охватить процессор 20-летней давности. - может быть, спасибо за поддержку моего старого Pentium MMX-. Если вам нужны «проприетарные драйверы», как вы упомянули, ядро ​​предоставляет возможность загружать определенную прошивку во время компиляции. Больше никаких странных проблем с xorg.

  19.   Фабиан Алексис сказал

    Спасибо за информацию, всегда полезно выучить (или переучить) (:

  20.   Ксавье сказал

    Debian с удовольствием Gentoo 🙂
    http://crysol.org/es/node/699

  21.   Шесть юаней сказал

    Другой недостаток заключается в том, что компиляция с помощью терминала предназначена для пользователей, которые знают или уже имеют некоторые знания о Linux. Есть ли графический инструмент, который управляет компиляцией, установкой и обновлением программ, а не графически?

    1.    марио сказал

      Calculate linux делает это, это Gentoo с графическими инструментами, готовыми к компиляции. В Phoronix это обычно рекомендуют.

  22.   Хосе сказал

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

  23.   Джоан сказал

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

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

  24.   НАУТИЛУС сказал

    Я заметил, что наибольшая производительность при компиляции ядра была на ноутбуке с процессором AMD 64. Разница между заводским ядром и скомпилированным ядром была жестокой.

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

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

    Мне просто нужно попробовать этот дистрибутив gentoo и посмотреть, как пойдет производительность.

  25.   НАУТИЛУС сказал

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

    Одна из этих уловок заключается в том, что вам кажется, что скомпилируйте только модули вашего оборудования, максимум, может быть, максимум 70 модулей, и если мы добавим поддержку iptables со всеми его требованиями, я думаю, что она увеличится до 300 модулей. Да ладно, это намного лучше, чем компилировать 3000 с лишним модулей, цифра, которая в настоящее время работает, если модули ядра скомпилированы так, как они идут с завода или, как говорится, ванили.

    Программа, которая поможет вам узнать, какие модули ядро ​​в настоящее время распознает в вашей системе, называется «localmodconfig» или с помощью этого сценария «streamline_config.pl», находящегося внутри исходного каталога ядра по пути «/ scripts / kconfig /»

    Конечно, убедитесь, что у вас подключены все USB-устройства, поскольку, как только ядро ​​распознает все ваши модули, остается только скомпилировать.

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

    Привет.

  26.   Tabris сказал

    Жизнь не так проста! есть программы, которые используют cmake или другие вещи, и для того, чтобы все обновлять и компилировать, нужно время. А с таким процессором какая разница для вас?

  27.   Йойо сказал

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

    1.    анонимный сказал

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

      # сделать удаление

      Конечно, пакеты, скомпилированные вручную по умолчанию в каждом серьезном дистрибутиве, устанавливаются отдельно, то есть в / usr / local / bin, а не в / usr / bin, где менеджер пакетов дистрибутива помещает их по умолчанию, вот так. Ничего переплетается.

  28.   Freebsddick сказал

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

    «В исполняемой программе для ее работы за счет использования ПРОЦЕССОРА для преобразования языка, используемого для генерации кода, в двоичный и ассемблерный. Это также часто называют упаковкой ».

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

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

    «Когда вы загружаете, распаковываете и компилируете исходный код программы самостоятельно, он компилируется с учетом конкретных инструкций ВАШЕГО процессора»

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

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

    Когда вы обратитесь к следующему разделу:

    dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep

    Эти программы не являются необходимыми для компиляции программы. Как вы пытались сказать в начале, количество языков программирования не позволяет вам точно знать, какие инструменты вы должны были установить, чтобы иметь возможность компилировать программы в gnu / linux ... вы можете узнать это, только посоветовавшись с документацию по программе, которую вы хотите выполнить. Упомянутые вами программы используются для ДЕБИАНИЗАЦИИ и упаковки в этот формат программы, которая может быть или не может быть скомпилирована.

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

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

    1.    Пепенрике сказал

      Блин, это тоже не то.

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

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

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

      Моя полная поддержка автору этой статьи

  29.   неименная сказал

    интересная статья

    Любителям свободы всегда полезно использовать unar вместо rar для свободной распаковки rars. ( https://packages.debian.org/jessie/unar )

  30.   Jumi сказал

    Я обнаружил ошибку с этой проблемой ... Я начал искать в Google, но не могу найти учебник по компиляции firefox под ubunto 14.04 amd64 бит ... иначе сегодня вечером я получу ядро ​​со следующим руководством: http://www.redeszone.net/2014/11/28/como-instalar-el-ultimo-kernel-de-linux-en-ubuntu-14-04-lts/

  31.   Карлос Ферра сказал

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

  32.   галдеж сказал

    Между этой статьей и статьей из Gentoo, которую они опубликовали несколько дней назад, они искушали меня установить Gentoo на мой компьютер. Много лет назад я использовал Sabayon, который облегчил весь процесс установки, но сохранил основу для компиляции из исходников. Я, честно говоря, не помню, чтобы заметил какую-либо разницу в производительности моего ноутбука (в то время у меня был круг) с Sabayon или Ubuntu, поэтому я не знаю, бросить ли себе всю работу по удалению моей Arch, которая работает очень хорошо установить его. Я не уверен, что несколько миллисекунд на программу того стоят.

    1.    анонимный сказал

      Из 4-х компьютеров с gentoo, которые я установил и обновил, добавлен ноутбук с archlinux ... Systemd утомил меня, мне уже приходилось использовать его с startx, потому что в последнем обновлении оба ядра были загружены на 85%, ничего не делая, я исследовал и, похоже, что-то изменилось в systemd, заставив slim сойти с ума и съесть микропроцессор.
      Хватит, хватило с аркой ... слишком долго держалась, больше двух лет, сейчас устанавливаю gentoo, иду на тестовое обновление stage3, на сегодня пойдет openbox с картошкой фри.

  33.   Лев сказал

    Хорошая статья, мне хочется скомпилировать Qupzilla, но с семпроном это займет несколько дней, ну, я знаю, не так уж много, но это все равно доставляет неприятные ощущения.

  34.   Мануэль Апонте сказал

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

  35.   Мануэль Апонте сказал

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

  36.   Алекс Поль сказал

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

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

  37.   Хавьер Фернандес сказал

    Вы не объяснили, как оптимизировать компиляцию, например в Gentoo параметры USE используются для оптимизации сгенерированного кода, вы также должны указать процессор и т. Д. Как это делается в UBUNTU / Debian или Arch?, Интересная статья.

  38.   Жозе Мануэл сказал

    Хорошо!

    Из-за того, что я не прочитал комментарии ниже, у меня новичок в Linux:

    Я использую Fedora 20, у меня уже установлено немало вещей, например, браузер Firefox, чтобы скомпилировать его для моей машины, могу я просто сделать это? То есть под кодом и скомпилировать его, или мне сначала нужно удалите программу, которую я уже скачал, чтобы скомпилировать новую ...

    То же самое с ядром Linux и тому подобным….

    Может быть, я спрашиваю что-то абсурдное, но я уже сказал, что я новичок в серьезных вещах о Linux, лол

    Приветик!

    1.    Копротк сказал

      Я думаю, что ядро ​​не нужно, но вы должны создать запись для каждого ядра в GRUB, с firefox я не знаю, рекомендуется ли иметь 2 firefox, лично я предпочитаю иметь только 1 ядро ​​и 1 только firefox

  39.   St-Avapxia сказал

    Единственное, что я скомпилировал в своей жизни, - это разрабатываемая версия Musique, мне очень нравится это приложение, оно стоило того времени, которое потребовалось для этого процесса. Для такого конечного пользователя, как я, когда я закончил, я почувствовал удовлетворение.

    Привет, отличный блог.

  40.   экослэкер сказал

    Здравствуйте, я использую Slackware, и компиляция приложений - это самая нормальная вещь в мире.
    Система устанавливается из уже скомпилированного ISO, а предварительно скомпилированных приложений, которые вы можете использовать из официального репозитория, немного, хотя при желании вы можете загрузить исходный код системы (и исходные сценарии, с помощью которых скомпилирован весь дистрибутив. ) и скомпилируйте его сами, как я себе представляю, как работает Gentoo.
    Однако проект SlackBuilds предоставляет сценарии (аналогичные официальному дистрибутиву) для многих сторонних приложений, в которых вы загружаете исходный код того, что хотите установить, и конвертируете его в пакет tgz или txz, который позже устанавливается вместе с ним. официальный менеджер пакетов дистрибутива. Таким образом, преимущество состоит в том, что вы избегаете использования команд configure, make, make install и можете обновлять, переустанавливать или удалять пакет, как и любой другой, и очень легко.
    Обратной стороной является то, что в Slackware зависимости не разрешаются автоматически, как в других дистрибутивах, поэтому вам нужно сначала скомпилировать необходимые зависимости, а приложение, которое вы хотите установить, - последним. Я использую скомпилированные программы из LibreOffice, Texmaker, Spyder, Qt5, QtCreator, VLC, Wine, GRASS, QGis и других. В зависимости от приложения и его требований компиляция и установка могут занять от 5 минут до нескольких часов. Но при желании вы можете найти и использовать предварительно скомпилированный пакет, чтобы сэкономить время.
    У меня не было времени проверить, есть ли большая разница между скомпилированными и предварительно скомпилированными пакетами, но моя система очень стабильна. Но я думаю, что, по крайней мере, в моем ноутбуке нет большой разницы, потому что он не такой мощный, в нем процессор i3 и 4 ГБ оперативной памяти.
    Привет и удачи.

  41.   Копротк сказал

    В настоящее время я использую Funtoo, честно говоря, я не вижу разницы в производительности между компиляцией программы или установкой предварительно скомпилированной программы, я делаю это исключительно в образовательных целях, но если есть различия между компиляцией ядра и невыполнением этого, да. Когда я использовал debian и хотел что-то скомпилировать, я использовал следующую последовательность:

    . / Настроить
    Make -j3 (количество ядер + 1)
    Alien

    Я использовал alíen, потому что он создает двоичный файл скомпилированной программы и поэтому вы можете установить его в своей системе как любой двоичный файл, поэтому, если вы хотите удалить, вы можете просто использовать синаптический или другой менеджер пакетов, что является преимуществом создания пакет и установка пакета как такового, вместо выполнения "make install"

    1.    Юкитеру сказал

      Я действительно вижу улучшение, по крайней мере, с большими и тяжелыми пакетами, например Libreoffice в Funtoo занимает гораздо меньше времени для загрузки, чем в Debian, то же самое случилось со мной с VLC или с mpv и MKV FullHD и мульти-аудио файлами, загрузка происходит намного быстрее.

      Другой, который также претерпел изменения, - это Firefox, в Debian наличие 10 или 15 вкладок на моем ПК становится пыткой, но с Funtoo мне удалось открыть до 30, и это продолжается, как будто ничего, а потребление оперативной памяти намного ниже и меньше. Имея тенденцию к зависанию для файлов JS, я думаю, что это больше зависит от контекста, от того, как выполняются определенные задачи и программы.

  42.   Марко Сармьенто сказал

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

  43.   Фермин сказал

    Больше, чем в впечатляющем увеличении производительности, я вижу преимущество в возможности компилировать пакеты с теми компонентами, которые вам нужны: например, если у вас нет принтера, вы можете указать, что пакеты с поддержкой CUPS не скомпилированы. -пакеты, которые они используют CUPS, очевидно, если вы компилируете Hunspell с CUPS или без него, это не будет иметь значения - просто - по крайней мере, в Gentoo- указание в файле make.conf, где все параметры для сборки пакетов централизованы » "; если вы используете KDE5 или Plasma 5, как они его сейчас называют, вы можете указать теги «-kde», «-qt4», которые были допустимыми тегами для KDE 4, но ненужными в KDE 5 и приложениях, перенесенных на новый рабочий стол, «-gnome», «-Gtk» и т. д. с любым компонентом, который вам не нужен. Если по какой-то причине определенной программе требуется, скажем, GTK, то вы можете в файле с именем package.use указать, что она действительно использует GTK, например, для Pidgin с той же меткой, но без знака минус, то есть " gtk »:« Net-im / pidgin gtk ».
    Таким образом, система становится на несколько сотен мегабайт легче, меньше и эффективнее двоичных файлов, поскольку в ней нет ненужного кода. Я перешел с Ubuntu на Gentoo через Opensuse, Kubuntu, Debian, Arch, Chakra или KaOS, и Gentoo - самая быстрая система, которая у меня была, и у меня все еще тот же Core 2 Duo, что и 7 лет назад. Конечно, я оставляю компиляции на ночь, потому что, например, компиляция QT5 занимает несколько часов. Если вы установите параметр "nice" для Portage в make.conf, вы можете устанавливать пакеты или обновлять, продолжая работать с машиной, и вы почти не заметите большого замедления, хотя, очевидно, время компиляции увеличивается; но давай, поставив его для установки или обновления, когда я иду на ужин, и, если необходимо, оставив его работать на ночь, мой старый компьютер работает лучше, чем I3 моей девушки с Kubuntu.

    Еще одним все более важным аспектом является то, что при компиляции из исходных файлов безопасность пакета, который мы устанавливаем, является исходным, что он не подвергался манипуляциям со стороны третьих лиц, является почти полной. Я думаю, что Debian реализует систему проверки сборки, которая будет гарантировать немного больше, чем установленный нами прекомпилированный исходный код, но никогда не будет такой уверенности, когда этот пакет будет скомпилирован на нашей машине с нашей установкой.
    На мой взгляд, с современным процессором, а не с храповым механизмом, как у меня, хе-хе, и, если мы хотим ускорить процесс, с 8 ГБ ОЗУ, чтобы можно было смонтировать / var / tmp - временную папку, которую Portage использует для компиляция - в оперативной памяти, которая всегда будет быстрее жесткого диска или SSD, сегодня я не вижу особого смысла использовать предварительно скомпилированные пакеты. Если моему компьютеру Firefox требуется около 40 минут для компиляции, сколько времени может занять I5 или I7, которые в настоящее время находятся на рынке, 5 минут или даже меньше? Я говорю об исходном firefox, а не firefox-bin, который представляет собой предварительно скомпилированный двоичный пакет, который можно установить на Gentoo, если у вас очень медленная машина - по этой причине есть несколько больших пакетов, которые уже предлагаются предварительно скомпилированными, это не обязательно все компилировать -. Я не могу говорить, потому что моя девушка не позволяет мне возиться с ее компьютером, хе-хе, а мой все идет так хорошо, что я не чувствую необходимости его обновлять, но если я прав, я думаю, что стоит тратить зря несколько минут компиляции, чтобы система была настроена на заказ. Более приспособленный и адаптированный к нашей машине, я не думаю, что чего-то можно достичь без использования этих методов Linux с нуля, Linux с нуля, которые, я думаю, уже зарезервированы для компьютерных ученых или очень продвинутых знатоков Linux.

    Привет.

  44.   Пато сказал

    Очень хорошо!
    одно не существует «Amd Atom x2»
    ni existira - торговая марка Intel
    привет