ソースからインストールされたソフトウェアを管理する方法は?


14

さまざまな理由により、ソースから何かをインストールする必要がある場合があります。適切な依存関係が与えられたソフトウェアをインストールする方法はかなり標準的ですが、将来の利便性のためにそのようなインストールを管理する方法は明確ではありません。

すなわち:

  1. アンインストールを簡単かつクリーンにするために何ができますか(ソースからインストールされたソフトウェアの直前にインストールされた依存関係を含む)。

  2. ソースから再度インストールされる可能性が高い同じソフトウェアを簡単かつクリーンにアップグレードするには、どうすればよいでしょうか?

  3. (apt-getを使用してインストールされた)デフォルトパッケージと(ソースからインストールされた)パッケージの(新しい)バージョンがある場合、潜在的な競合を最小限に抑えるために何ができますか?

回答:


8

を使用checkinstall make installすると、一時パッケージが作成され、インストールされます。これは、パッケージマネージャーに記録され、アンインストールできることを意味します。


7

最善の方法は、新しいバージョンのDebianパッケージを自分で作成することです。dpkgそして、aptツールはあなたが言及し、その目的のために意図されている3つのことすべてを行います。車輪を再発明する代わりにそれらを使用してください。利用可能なパッケージングに関するガイドがたくさんあります。リポジトリにソフトウェアがすでに存在する場合、おそらくソースパッケージ(apt-get src)を取得できます。このソースパッケージを使用して、独自のパッケージを調査および開始できます。

/ubuntu//a/485230/158442へのこの回答は、一般的なガイドラインとして役立つ場合があります。

一方でcheckinstall、迅速かつ汚いソリューションのための素晴らしいですが、長期的には、あなたは適切なパッケージを使用する必要があります。


提案をありがとう。「ソフトウェアは既にリポジトリに存在します」と言ったとき、私はあなたがUbuntuによって維持されている公式リポジトリを意味していると思います。その場合、多くの場合、これらのリポジトリは、特に古いUbuntuリリースで新しいバージョンを提供しません。そのapt-get srcため、おそらくそのような場合には役に立たないでしょう。
skyork 14年

@skyorkはそうではないかもしれません。ただし、古いバージョンのパッケージを使用して学習できます。パッケージャーが行ったカスタマイズや、カスタムメンテナンススクリプトがあるかもしれません。それをすべて無視して、ゼロから始めるべき理由はありません。ここでは、車輪の再発明がテーマのようです。
ムル14年

4

まず、ソースコードの管理方法に大きく依存します。のような~/sourcesディレクトリを作成し、すべてのプログラムをそのサブディレクトリに配置しますが、他の人はすべてのプログラムに対して新しいディレクトリを作成します。

同様に、私のような人は、新しいバージョンごとに新しいサブサブディレクトリを作成し、古いバージョンを削除するのは、新しいバージョンに作業を停止させる重大なバグがないことが確認された場合のみです。

これを行うための単一の方法はありませんが、どちらを選択するにしても、管理が最も簡単な方法を選択してください

  1. クリーンアンインストール

    • rem_dep.shこのようなスクリプトを作成することをお勧めします。

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      dep1, dep2, depn依存関係はどこにあります。

  2. クリーンで簡単なアップグレード

    • あなたのような自動化されたバージョン管理システムからソースコードを取得する場合gitbazaar、またはリンクが予測されている場合は、その意志シェルスクリプトを作成することができます

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • その他の場合でも、ある程度の手作業でこのようなスクリプトを作成できます。

  3. 紛争管理

    • 最適な方法は、--prefixソフトウェアとそこに依存関係をインストールするときにオプションを使用することです。
    • 他の重要なことは、競合を最小限に抑えるためにシステムを最新の状態に保つことです。

注:必要以上のソフトウェアをコンパイルしている場合(max_limit5または10または100のように設定してください)、Ubuntuを離れてArch Linuxに移行するのが最善です。


3

ビルドの依存関係:

  • 彼らは手動で記録する必要があります。READMEなどのファイルを作成して、手動でインストールされた依存関係のリストを保持できます。

  • そのソフトウェアがすでにUbuntuまたはPPAリポジトリにビルドされたバイナリを持っている場合。インストール中の依存関係の追跡が簡単になります。

    sudo apt-get build-dep target_package
    

クリーンアンインストール:

構成済みのインストール済みソースフォルダーを保持します。インストールされた依存関係のファイルを使用して、特定のフォルダー内のすべてのソースを収集する場合に適しています。

クリーンアップグレードとインストールされたファイルの分離:

特定の--prefix(できれば--prefix=/opt/software_name-version/)インストールします。

これにより、多くの問題が解決されます。リポジトリのバージョンと同時バージョン。クリーンアップグレード。ソースが削除された場合のダーティアンインストールが容易になりました。

@muruの答え、Debianパッケージのビルド(Ubuntu / PPAリポジトリで利用可能なパッケージの場合)として、より洗練された、または最良の方法

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