Как собрать все мои установленные пакеты из исходников?


26

Я читал о том, как исходные дистрибутивы Linux, такие как Gentoo, могут значительно повысить производительность по сравнению с предварительно созданными дистрибутивами, такими как Ubuntu, поскольку они устанавливаются из исходного кода с оптимизацией для вашей конкретной системы. Можно ли собрать Ubuntu из исходного кода, чтобы получить такую ​​же выгоду?


3
Для этого установите Gentoo, а не Ubuntu. Серьезно, зачем использовать дистрибутив, который полностью терпит неудачу при управлении зависимостями на основе источника, вместо того, чтобы качать его?
Mathepic

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

1
Одним из ярких примеров плохого сравнения является эта статья в Linux Magazine (требуется бесплатная регистрация), где они используют разные ядра, разные драйверы Nvidia, разные версии X и разные окружения рабочего стола. Вы также можете сравнить две разные версии Ubuntu. Они покажут похожие масштабы различий.
Оли

4
Повышение производительности чего? Пропускная способность сети, скорость диска, переключение процессов, математические вычисления, 3D-графика, время загрузки?
пользователь неизвестен

1
Я бы посоветовал только компилировать программное обеспечение, которое требует высокой производительности ЦП (на ум приходит кодирование видео) и которое часто используется пользователем и выигрывает от оптимизации ЦП, например, FMA3 или AVX2.
Кейки

Ответы:


42

Is is possible to build Ubuntu from source to get the same kind of benefit?

Я не уверен в преимуществах, если у вас есть довольно новые аппаратные компоненты, но для вопроса «Ubuntu из исходного кода» ответ «ДА», вы можете создавать не только ваши любимые приложения из исходного кода, но и всю операционную систему.

Вот как:

Вам необходимо установить apt-build . Это инструмент командной строки, такой как apt-get, но вместо загрузки и установки бинарного пакета apt-build загружает исходный код пакета, компилирует его и затем устанавливает его в вашу систему.

После того, как вы установите его с

sudo apt-get install apt-build

Вас спросят об уровне оптимизации (средний - нормально), хотите ли вы создать репозиторий apt-build для APT (да) и вопрос об архитектуре процессора (мой intel i7 считается core2). Конечно, все параметры могут быть перенастроены следующим образом:

dpkg-reconfigure apt-build

Приведенная выше команда предлагает две дополнительные опции для компилятора gcc и make builder. Их описания можно найти в системных руководствах: man gcc и man make.

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

man apt-build

Но наиболее полезными являются:

  • apt-build update - обновляет список репо (как apt-get update)
  • apt-build upgrade - обновляет операционную систему (например, apt-get upgrade)
  • apt-build install program - устанавливает приложение (например, apt-get install)
  • Мир apt-build - что-то для опытных пользователей, он перекомпилирует всю систему!

Например:

Допустим, вы хотите скомпилировать / установить Gedit. Вместо apt-get install вы просто делаете

sudo apt-build install gedit

Apt-build использует записи deb-src, содержащиеся в файле /etc/apt/sources.list, поэтому процессы компиляции и установки полностью автоматизированы (аналогично emerge, найденному в Gentoo). Apt-build загружает исходные файлы основного приложения и его зависимостей, компилирует их, создает пакет deb и, наконец, устанавливает пакет.

Некоторые заметки о мире apt-build.

На мой взгляд, не пытайтесь, если у вас есть 24 или более часов!

Если вам это необходимо, удалите / отключите / удалите все сторонние приложения (это лучше сделать в новой установке Ubuntu), а затем выполните:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

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

sudo gedit /etc/apt/apt-build.list

и удалите любую запись GCC / G ++

Тогда вы можете сделать:

sudo apt-build world

Я предлагаю добавить две опции --yes и --force-yes, чтобы сделать процесс перестройки полностью автоматическим.


10
+1 за конкретный ответ, по сравнению с "зачем строить?" ответы. Я бы предпочел также прочитать более обширное мнение (даже если оно субъективное) о преимуществах, которые вы могли (или не могли) получить, используя apt-build.
энзотиб

1
Есть в настоящее время +17 для этого ответа. Но кто-нибудь успешно сделал это?
Кейки

1
@ otakun85 Я использовал apt-build для успешной компиляции некоторых пакетов в Ubuntu (не помню, какой выпуск, один из 12.04 | 12.10 | 13.04), я попытался сделать мир apt-build беспорядочным. Страница man для apt-build имеет это в конце BUGS Many., так что ждите неприятностей.
Фазы

Я считаю, что вместо использования apt-build worldлучше скачать книгу «Linux from Scratch» и делать apt-buildдля каждого из перечисленных в ней пакетов. Он определяет правильный порядок и т. Д. Например, я не уверен, если apt-build worldзнает, что он должен сначала перекомпилировать binutils, затем gcc, binutilsснова, gccснова, затем языки программирования gzipи т. Д. Кажется, он просто компилирует все по алфавиту.
Сергей Виноградов

@SerhyiVynohradov: Это не имеет значения. LFS делает это, чтобы не оставлять каких-либо зависимостей от библиотек в хост-системе, но здесь он просто заменяет все на месте скомпилированными версиями; они все еще будут в том же месте, будут иметь тот же ABI и т. д.
Ник Маттео

3

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

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

Я часто меняю дистрибутивы, оставаясь с Arch, но разве Arch быстрее Ubuntu? Нет.

Gnome с compiz на Ubuntu 10.10 использует около 300ram, на Arch 200ram, у меня 4 ГБ ОЗУ, я не чувствую разницы, но если вы сравните Ubuntu с gnome с Arch с удивительным, то будет огромный прирост отзывчивости и ресурсов использование (300рам против 50рам), но это имеет значение, только если вы выбираете дистрибутив для нетбука.

Так что если у вас быстрый рабочий стол и вы не хотите тратить время на работу с вашей системой, просто используйте Ubuntu, но если у вас нетбук, подумайте об использовании облегченного WM на Arch :)


Ну, в какой-то момент вы можете столкнуться с ситуацией, когда у вас установлено новейшее оборудование, но вам все равно нужно выполнять часовые операции. И вместо того, чтобы настроить группу серверов для распределения нагрузки, вы не возражаете потратить некоторое время на работу, чтобы получить дополнительные 20% прироста. Я никогда не использовал Arch, но я попробовал Gentoo. И я видел, что много раз не существует такой вещи, как «более быстрый дистрибутив». Вместо этого есть «дистрибутив с меньшим количеством программного обеспечения». У вас может быть быстрая, но небезопасная система. И когда вы устанавливаете другие пакеты, скорость становится такой же, как у Ubuntu + apt-build.
Сергей Виноградов

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.