Эффект компиляции из источника на уже установленных приложениях

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

DEFAULT="$HOME/Maildir"
MAIL = "$HOME/Maildir"
DAY = `date +%d`
MONTH = `date +%m`
YEAR = `date +%y`
ARCHIVEFOLDER = $YEAR$MONTH$DATE
`test -d $MAIL/.$ARCHIVEFOLDER`
if ( $RETURNCODE != 0 )
{
`maildirmake -f $ARCHIVEFOLDER $MAIL`
}
# logfile "/tmp/maildrop"
# log $MAIL/.$SPAMORDNER
to $MAIL/.$ARCHIVEFOLDER
}

Я надеюсь, что можно расти на этом.

8
01.05.2013, 18:24
3 ответа

Подавляющее большинство .deb пакеты, предоставляют ли им официальные репозитории, установка с префиксом /usr.

То, что это означает, - то, что исполняемые файлы, предназначенные, чтобы быть выполненными пользователем, входят /usr/bin или /usr/sbin (или /usr/games если это - игра), совместно использованные библиотеки входят /usr/lib, платформенно независимые совместно используемые данные входят /usr/share, заголовочные файлы входят /usr/include, и исходный код, установленный автоматически, входит /usr/src.

Небольшой процент использования пакетов / как префикс. Например, bash пакет помещает bash исполняемый файл в /bin, нет /usr/bin. Это для пакетов, которые обеспечивают предметы первой необходимости, чтобы работать в однопользовательском режиме (таком как режим восстановления) и запустить многопользовательский режим (но помнить, который часто включает функциональность для монтирования некоторых видов сетевых ресурсов... в случае, если /usr удаленная файловая система).

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

В отличие от все это, когда Вы загружаете исходный архив (или получаете исходный код от системы управления версиями, такой как Базар или мерзавец), создайте его и установите его, это обычно устанавливает на префиксе /usr/local (если Вы не говорите этому делать иначе). Это означает, что Ваши исполняемые файлы входят /usr/local/bin, /usr/local/lib, или /usr/local/games, Ваши библиотеки в /usr/local/lib, и т.д.

Существуют некоторые исключения к этому - некоторые программы, по умолчанию, устанавливают на /usr префикс и таким образом перезаписал бы установки тех же программ от .deb пакеты. Обычно можно предотвратить это путем выполнения ./configure --prefix=/usr/local вместо ./configure когда Вы создаете их. Я снова подчеркиваю, что обычно это не необходимо.

(Именно по этой причине это проявляет очень здравый смысл для Вас поместить исходный код, который Вы создаете и установите для использования в масштабе всей системы в /usr/local/src, который существует с этой целью.)

Принятие упакованной версии установлено в /usr и версия, которую Вы установили из источника, находится в /usr/local:

  • Файлы от установленного пакета не будут перезаписаны.

    Обычно более новая версия будет работать при ручном вызове программы от командной строки (принятие /usr/local/bin или везде, где исполняемые файлы установлены, находится в Вашем PATH переменная среды и появляется перед соответствием /usr- снабженный префиксом каталог, такой как /usr/bin).

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

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

Однако, если по какой-либо причине файлы перезаписываются (например, если исходный код установлен в /usr вместо /usr/local):

  • Диспетчер пакетов ничего не будет знать о том, как программное обеспечение, которое он установил, было изменено. Это будет думать, что старая версия установлена. Могут закончиться плохие проблемы. Необходимо избежать этого. При создании этой ситуации необходимо удалить программное обеспечение, которое Вы установили из источника (обычно с sudo make uninstall в /usr/local/src/program-or-library-name каталог), и затем удаляют пакет или пакеты, которые обеспечивают файлы, которые были перезаписаны (поскольку они не будут восстановлены путем удаления версии, установленной из источника). Затем переустановите любую версию, которую Вы хотите иметь.

Что касается выполнения зависимостей:

  • Если существует a .deb пакет, который зависит от программного обеспечения, которое Вы установили из источника, и требует версии, которую Вы установили из источника (или выше), тот пакет успешно не установит. (Или, чтобы быть более точными, Вы можете "устанавливать" его, но это никогда не будет "настраиваться" так, Вы не сможете использовать его.) Зависимости разрешены тем, какие версии пакетов установлены, не тем, какое программное обеспечение Вы на самом деле имеете.

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

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

12
27.01.2020, 20:09
  • 1
    Спасибо за Ваш подробный ответ, это сделало много понятий ясным –  Philip D'Rozario 30.08.2012, 15:00

Что Вы устанавливаете от центра программного обеспечения или с командой APT (apt-get, aptitude) или с dpkg известен системе управления пакета. dpkg инструмент управления пакетом низкого уровня, APT и друзья являются высокоуровневыми инструментами, которые вызывают dpkg выполнить фактическую установку и также обработать загрузки пакета и зависимости.

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

  • /bin, /lib, /sbin, /usr резервируются к диспетчеру пакетов;
  • за исключением того, что /usr/local для системного администратора — уважают иерархию каталогов там, но необходимо самостоятельно управлять файлами.

Видеть Лучший способ обновить vim/gvim до 7,3 в Ubuntu 10.04? для списка способов получить более поздние версии программного обеспечения. Самый легкий путь получает PPA, если существует тот. Если Вы получаете двоичный пакет или компиляцию из источника, я рекомендую использовать, убирают для управления вручную установленным программным обеспечением. С другой стороны, сделайте свое собственное .deb пакет — это - больше работы, но это окупается, если Вы часто обновляете (обычно восстанавливающий пакет для следующей вспомогательной версии, очень быстро), или если Вы развертываетесь ко многим машинам, выполняющим то же распределение.

С большинством программ, если Вы работаете ./configure && make && sudo make install, программа установлена под /usr/local. Действительно проверьте документацию, которой предоставляют источник (обычно в названном файле README или INSTALL) или выполненный ./configure --help проверять это дело обстоит так. Если программа установлена под /usr/local, это не вмешается в версию, обеспеченную диспетчером пакетов. /usr/local/bin на первом месте в системе PATH. Обратите внимание, что необходимо будет работать make install как администратор (корень); не компилируйте как корень. Как отмечено выше, я рекомендую использовать, убирают вместо того, чтобы установить непосредственно в /usr/local.

5
27.01.2020, 20:09

Это зависит от пакета и большого количества других вещей

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

Длинная короткая история:
Нет никакого универсального ответа. Это - высоко зависимый пакета. Необходимо использовать официальный +1 PPAs, если это возможно, в противоположность компиляции из источника.

1
27.01.2020, 20:09
  • 1
    Для программ или библиотек, скомпилированных из источника на самом деле довольно необычно быть установленным в /opt. /usr/local стандартный префикс, и даже /usr более общий префикс по умолчанию, чем /opt. /opt обычно используется для программного обеспечения, которое устанавливает в специализированном каталоге, названном по имени конкретного приложения (так, например, приложение по имени Foo могло бы быть установлено со всеми его файлами внутри /opt/foo). –  Eliah Kagan 30.08.2012, 02:34

Теги

Похожие вопросы