как содержать Linux в чистоте

Автор su16, 06 июня 2014, 21:21:03

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

su16

Доброго времени!

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

то есть сделать гигантский apt-get install [million packages] , а затем выполнить ту же команду с параметром unistall, purge далеко не всегда возможно. Очевидно, что это приводит к раздуванию системы ненужным шлаком.

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

Лично я для этого держу копию ОСи на виртуалке и все пакеты собираю на ней. Но это ж не серьёзно! ???
Если вам дают бесплатное, то, скорее всего, товар - это вы.
https://occupyflash.org/

Malaheenee

Цитата: su16 от 06 июня 2014, 21:21:03Лично я для этого держу копию ОСи на виртуалке и все пакеты собираю на ней. Но это ж не серьёзно!
Очень полезная привычка. Мы тоже так делали. Можно еще использовать cowbuilder на основной системе.

А вообще, в логах всегда отражается, что устанавливали. Кроме того, deborphan выведет Вам "осиротевшие" пакеты (т.е. никому не требующиеся по зависимостям) - но он иногда также включает и вполне себе нужные. И вот здесь гляньте.
Все мы где-то, когда-то и в чем-то были новичками.

sandaksatru

а не обязательно на виртуалке. Достаточно иметь копию системы в отдельной директории. И при нужде туда чрутиться и собирать что нужно. Двух зайцев убъёте. И бэкапы будут и площадка для экспериментов.

su16

спасибо за идеи.

Цитата: Malaheenee от 07 июня 2014, 02:04:59Очень полезная привычка.
очень отвратительная, я бы сказал, привычка! лишь подчёркивает непригодность операционной системы к существованию на основе открытых исходных кодов. Линукс сообщество всегда выступало за активное использование исходников вместо бинарников, но удобного инвентаря для этого я не встречал. обычно всё очень громоздко и печально.
Цитата: Malaheenee от 07 июня 2014, 02:04:59Кроме того, deborphan
знаю о такой. очень опасная штука. с учётом этого, не многим выгодней ручной чистки из синаптика.

Цитата: Malaheenee от 07 июня 2014, 02:04:59Можно еще использовать cowbuilder на основной системе.
много слышал, но не пробовал. Три вопроса по нему:

- у меня нет инета, но на диске есть локальная репа, в которую вкючены 3 DVD дебиана. он их подцепит для создания образа и подкачки зависимостей, или будет в сеть ломиться? дело в том, что у меня apt-file мою локальную репу из sources.list в упор не видит...

- конфигураторы сборок (./configure, cmake, ant) бывают разные и запускать их надо с разными параметрами. make тоже хотелось бы запускать как минимум с флагом -j8... там это как-то делается? ну например boost или gcc с нужными зависимостями и параметрами собрать можно?

- многие исходники не собираются в пакеты, нет таргета install, что cowbuilder делает в этом случае? у него ж вроде как на выходе пакет должен вываливаться?

sandaksatru, а как потом чистить копию? вот cowbuilder каждый раз долго и мучительно распаковывает свежий образ системы из бэкапа, а в вашем варианте как?  ???
Если вам дают бесплатное, то, скорее всего, товар - это вы.
https://occupyflash.org/

su16

на самом деле, с cowbuilder распаковка образа из архива займёт примерно столько же времени, как копирование и запуск виртуалки, мне кажется... кроме того виртуалка как-то более доступна в плане, если понадобится что-то вручную подправить при сборке... а по уродству оба варианта друг друга стоют.
Если вам дают бесплатное, то, скорее всего, товар - это вы.
https://occupyflash.org/

Malaheenee

su16, нам виртуалки вполне хватало. Ежели все из исходников собирать - это уже добро пожаловать в LFS :)
По cowbuilder не подскажем, попользоваться все времени нет :) Теоретические статейки только читали.
Все мы где-то, когда-то и в чем-то были новичками.

Alexey_F

[ot]
Цитата: Malaheenee от 09 июня 2014, 07:30:46Ежели все из исходников собирать - это уже добро пожаловать в LFS :)
Ну это прям сурово, тогда уж Gentoo сначала :)[/ot]

su16

#7
не, ну стандартные системные программы-то из реп конечно  ;D, а то что нуждается в топовых версиях - из исподников. в моём случае это приличный объём.
но вопрос то не в моих потребностях, а в целом... в подходе к сборке.

Цитата: Malaheenee от 09 июня 2014, 07:30:46нам виртуалки вполне хватало.
да, а владелец слабой машины, которая не тянет виртуалку, обречён на бинарники?

Malaheenee, Alexey_F, а чо, в LFS и генте совсем нет проблем с лишними пакетами, оставшимися от сборки?
как они там рассасываются?
Если вам дают бесплатное, то, скорее всего, товар - это вы.
https://occupyflash.org/

yura_n

#8
Цитата: su16 от 09 июня 2014, 22:12:49как они там рассасываются?
Сами по себе никак. Но в Gentoo файлы для сборки кучкуются в каталогах /usr/portage/distfiles и /var/tmp/portage. Не считая исходников ядра, они в /usr/src. И вычистить при желании можно вручную. А с другой стороны, пока места достаточно, какой смысл с этим заморачиваться? Ну будут исходники занимать лишних 5GB, так на производительность это все равно никак не влияет. Это ведь не Windows...
P.S. Написал пост раньше, чем вы отредактировали свой, добавив юзеров, к которым обращаетесь. ;D

sandaksatru

Цитата: su16 от 08 июня 2014, 22:48:20sandaksatru, а как потом чистить копию? вот cowbuilder каждый раз долго и мучительно распаковывает свежий образ системы из бэкапа, а в вашем варианте как?  ???
Никак  ;D Но если есть потребность в очистке копии, то можно всё равно обойтись без виртуальной машины. ОС в ВМ в вашем случае будет развиваться параллельно с основной ОС, а значит возможны различия, к тому же она в ВМ работает с другим железом, соответственно будут загружены другие модули, разные конфиги...

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

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

Malaheenee

Цитата: su16 от 09 июня 2014, 22:12:49да, а владелец слабой машины, которая не тянет виртуалку, обречён на бинарники?
Тогда способ sandaksatru.
Все мы где-то, когда-то и в чем-то были новичками.

su16

#11
в предложении sandaksatru есть доля истины - локализация вспомогательных пакетов в подчищаемом рабочем окружении... более-менее нативном.
но разве система направленная всей своей сутью на сырцы не должна решать это из коробки? Как я понимаю, Гента из коробки имеет специальные сборочные директории (что на самом деле не магия и при установке системы я и в дебиане могу создать такие разделы). Однако Гента ничего не говорит о чистке временных пакетов.
Цитата: yura_n от 09 июня 2014, 22:24:45Ну будут исходники занимать лишних 5GB
не, ну давайте грязюху разведём только потому что она мало места занимает!

вот мой теоретический вариан:
когра что-то собираешь - нужно все устанавлевыемые пакеты добавлять в метапакет "TemporaryPackageForBuilding-dev". после сборки - удалить его (с начинкой конечно). если удалось закатать результат сборки в пакет или установить, то удалить папку сборки.
можно как-то на лету аппендить метапакеты?  ???

опять же, мой вариант не решает проблему того что слинковалось при сборке статически, а что динамически. Это важно, IMHO.
Например, при сборке wine библиотека libfreetype6 линкуется динамически, в бинарник и самопальный пакет она не попадает, если не знать эту нигде не описанную тонкость. соответственно после установки самопального пакета с вином у соседа - выскочит сообщение при запуске winecfg, типа "не могу найти либу". к счастью вайн говорит какую, но многие приложения тупо падают. кроме того есть необязательные либы, об отсутствии которых программа может ничего не сказать, а просто не выполнит что-то (возможно, важное для юзера). аналогично, если после сборки я удалю эту либу у себя, то и у меня он не стартанёт. то есть неизвестно, что можно удалять, а что нет.
Если вам дают бесплатное, то, скорее всего, товар - это вы.
https://occupyflash.org/

Malaheenee

Цитата: su16 от 11 июня 2014, 04:08:56нужно все устанавлевыемые пакеты добавлять в метапакет "TemporaryPackageForBuilding-dev"
apt-get build-dep
Все мы где-то, когда-то и в чем-то были новичками.

su16

Malaheenee, подтянуть депенденсы - не проблема, а проблема их удалить. что ж ты не написал тот аццкай скрипт с кучей непонятных палочек и крючочков чтобы выполнить деинсталяцию того, что было установлено apt-get build-dep ? ;D
sudo aptitude markauto $(apt-cache showsrc PACKAGE_NAME | sed -e '/Build-Depends/!d;s/Build-Depends: \|,\|([^)]*),*\|\[[^]]*\]//g')
sudo apt-get autoremove

кривизна ж... :-[
кроме того, поправьте если не прав, эта команда ставит известные зависимости для сборки устаревшей версии из репы, а не для свежих исходников?
Если вам дают бесплатное, то, скорее всего, товар - это вы.
https://occupyflash.org/

Malaheenee

Зачем так сложно? Заглянули grep-ом в лог apt, удалили :) Сейчас точную команду не напишем, рабочий Windows  :D
Цитата: su16 от 11 июня 2014, 22:33:28известные зависимости для сборки устаревшей версии из репы
Да, но хотя бы точно ничего не забудете. Да и многие программы спокойно собираются со старыми библиотеками, если прямо не указано, что мол от такой версии и выше.


Все мы где-то, когда-то и в чем-то были новичками.