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


10

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

私の現在のワークフローは含まれています。

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

何かが私にこれが最良のルートではないことを教えてくれます。

提案?

回答:


9

これは最善のルートではないと考えるのは当然です。このルートは多くの手動ステップを必要とし、非常にエラーが発生しやすく、適切にスケーリングされません。

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

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

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

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

特定の問題を解決するには、ubuntuバックポートレポジトリを確認する必要があります。おそらく、使用できるNGinxの更新バージョンが含まれています。

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

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


8

別の場所に別のバージョンをインストールし、使用するバージョンへのシンボリックリンクを付けると、次のように非常に便利です。

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

利点は次のとおりです。

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

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

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


これは、/ usr / localの代わりに/ optを通常使用する場合を除いて、パッケージのビルドが適切な答えではないいくつかのケースで私が行うことです。
フライハイト2009年


1

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


1

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

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

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


0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.