Как отслеживать установленное программное обеспечение

8

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

Его можно было установить с помощью apt или вручную, клонировав github-проект и собрав его самостоятельно или через менеджер пакетов nodejs npm. После того, как я боролся с этим и вручную выбросил все связанные с coffeescript файлы и директории, мне удалось сделать новую установку. Но затем я хотел использовать команду coffeescript, которая требует, чтобы были установлены nodejs 0.6 и 0.4.

Итак, пусть игры начнутся снова!

Был ли установлен nodejs вручную? Или как пакет? Или это было положено там богом? Я не знаю.

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

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

Ответы:

7

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

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

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

Вы должны придерживаться пакетов, предоставляемых вашим дистрибутивом, когда это возможно. Устанавливайте сторонние пакеты только в том случае, если у вас есть задокументированная потребность в функциональности, не предоставляемой дистрибутивом. «Я хочу иметь последнюю версию» не является обоснованным оправданием. Если вы устанавливаете сторонние пакеты, сохраняйте записи о том, где вы их получили, и где-нибудь архивируйте пакеты ( .rpmили .debфайлы). Привилегируйте apt или yum источники по случайным сетевым загрузкам.

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

Используйте etckeeper , чтобы держать /etcпод контролем версий . Фиксируйте всякий раз, когда вы вносите изменения, с осмысленным сообщением.


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

  • Установите чистую версию этого программного обеспечения в правильном месте, следуя приведенным выше советам.
  • Проверьте, что новая установка работает для ваших целей.
  • Переключите свои услуги, чтобы использовать новую установку.
  • Очистите старую установку как можно лучше.
Жиль "ТАК - перестань быть злым"
источник
1

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

Puppet, автоматизированный механизм администрирования для ваших * nix систем, выполняет административные задачи (такие как добавление пользователей, установка пакетов и обновление конфигураций сервера) на основе централизованной спецификации.

Вы можете сослаться на ссылку

Mughil
источник
Спасибо за ссылку! Но мне нужно что-то в командной строке. На первый взгляд, puppet работает только в настольной системе.
акме
1

Если вы устанавливаете какой-либо пакет с помощью apt-get, все зависимые пакеты будут установлены самостоятельно, потому что apt-get разрешает все зависимости.

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

pradeepchhetri
источник