web-dev-qa-db-ja.com

ソースからインストールされたソフトウェアをアップグレードする方法は?

Ubuntuリポジトリのパッケージはかなり古いので、ソースからNGinxをインストールします。これらのタイプのインストールをアップグレードするための最良の方法は何でしょうか?

私の現在のワークフローにはが含まれます。

  • 新しいソースをダウンロードする
  • 同じパスでソフトウェアをインストールします。
  • ソフトウェアを再起動します。

これは最善のルートではないということです。

提案?

10

これが最善のルートではないと考えるのは正しいことです。このルートは多くの手動手順を必要とし、エラーが発生しやすく、拡張性が高くありません。

Linuxディストリビューションを使用する場合は、可能な限りパッケージ管理に固執する必要があります。

パッケージ管理を使用する利点:

  • 依存関係のサポート
  • 簡単な取り付け/取り外し
  • ソフトウェアインベントリ
  • 構成ファイルの処理を含む、アップグレード/ダウングレードのサポート
  • ソースパッケージは基本的にビルドプロセスを文書化し、作成されると自動化されます。
  • パッケージ署名
  • もっと。

ソースのみから作業を開始すると、これらの優れた機能がすべて失われ、物事がすぐに乱雑になり始めます。

あなたの特定の問題を解決するために、あなたは buntu backportsリポジトリ をチェックするべきです、多分彼らはあなたが使うことができるNGinxのための更新されたバージョンを持っています。

適切なバージョンがない場合、最善の解決策は、バックポートされたubuntuパッケージを自分で作成することです。それほど難しいことではなく、毎回ソースから手動でコンパイルするよりも作業が少なくて済みます。バックポーティングでは、基本的に、ubuntuからソースパッケージを取得し、古いupsteam tar.gzファイルを必要な最新のファイルに置き換え、パッケージを再構築する必要があります。

このガイド を使用して、パッケージをバックポートすることができます。

9
Tom Feiner

別の場所に異なるバージョンをインストールし、次のように、使用するバージョンにシンボリックリンクするだけで非常に便利であることがわかりました。

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

利点は次のとおりです。

  • アップグレード中のサービスのダウンタイムを最小限に抑える
  • 簡単なロールバック
  • /usr/local/foo/bin/barのように同じo 'パスを引き続き使用できます

もちろん、以前のバージョンに行った構成変更を再適用する必要がありますが、そのためには、バージョン管理システム(RCS/SVN/GIT)または Bcfg2 などの構成管理ツールを使用できます。 。

そしてもちろん、これはほんの一握り以下のホストにのみ適しています。

8
therek

次回...それを* .rpmまたは* .debにコンパイルするのはどうですか?

2
elcuco

これを単一のマシンにインストールする場合は、毎回ソースからインストールするのが最善の方法です。これを複数のマシンにインストールする予定で、一貫性を確保したい場合は、Debianパッケージの作成方法を学ぶ価値があります。おそらくUbuntuのパッケージをベースとして使用できます。

1
David Pashley

素晴らしい方法はありません。効果的なパッケージ管理が作成された理由は、まさにこの問題を解決するためでした。ソースでコンパイルされたもののアップグレードとアンインストールは困難です。

私はトムとデビッドに同意します。

これが1回限りのケースである場合は、ソースからの再コンパイルがおそらく最善の策です。一連のマシン上にある場合は、サポートされているパッケージ管理に移行する時期です。

1
Matt Simmons

これが唯一の方法だと思います。維持するサーバーがさらにある場合は、コンパイルする別のテスト環境を用意し、場合によってはコンパイル結果をパッケージ化することを検討してください。

これにより、セットアップがわずかに標準化され、多くのサーバーへの展開が容易になります。また、本番マシンではgccは必要ありません[多くの人がセキュリティ上の利点と見なします]。

0
pQd