[Ubuntu][git] git 2.13.0から1.9.1へのダウングレード

仕事の関係でgitのバージョンを最新の2.13.0から1.9.1へダウングレードする必要がでてきてハマったので、そのメモ。

環境はUbuntu 14.04.5です。

gitのバージョンを確認。

$ git --version
git version 2.13.0

 

apt-getでgit 1.9.1に更新できないかやってみる。

$ sudo apt-get update
...
$ sudo apt-get install git=1.9.1
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: 'git' のバージョン '1.9.1' が見つかりませんでした

aptではなさそうなので、下記より、git 1.9.1のイメージをダウンロード。
http://packages.ubuntu.com/ja/trusty/amd64/git/download

dpkgコマンドでインストールを試みる。

$ sudo dpkg -i git_1.9.1-1ubuntu0.3_amd64.deb
dpkg: 警告: git を 1:2.13.0-0ppa1~ubuntu14.04.1 から 1:1.9.1-1ubuntu0.3 にダウングレードしています
(データベースを読み込んでいます ... 現在 251482 個のファイルとディレクトリがインストールされています。)
Preparing to unpack git_1.9.1-1ubuntu0.3_amd64.deb ...
Unpacking git (1:1.9.1-1ubuntu0.3) over (1:2.13.0-0ppa1~ubuntu14.04.1) ...
dpkg: 依存関係の問題により git の設定ができません:
 git は以下に依存 (depends) します: git-man (<< 1:1.9.1-.) ...しかし:
システム上の git-man のバージョン は 1:2.13.0-0ppa1~ubuntu14.04.1 です。

dpkg: error processing package git (--install):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 git

git-manのバージョンがあっていないため、インストールが失敗。

一度、gitをアンインストールしてから、dpkgでインストールを試みてみる。

$ sudo apt-get autoremove git
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  git git-man liberror-perl
アップグレード: 0 個、新規インストール: 0 個、削除: 3 個、保留: 116 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に 22.5 MB のディスク容量が解放されます。
続行しますか? [Y/n]
(データベースを読み込んでいます ... 現在 251368 個のファイルとディレクトリがインストールされています。)
Removing git (1:1.9.1-1ubuntu0.3) ...
Removing git-man (1:2.13.0-0ppa1~ubuntu14.04.1) ...
Removing liberror-perl (0.17-1.1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
$ sudo dpkg -i git_1.9.1-1ubuntu0.3_amd64.deb
以前に未選択のパッケージ git を選択しています。
(データベースを読み込んでいます ... 現在 250610 個のファイルとディレクトリがインストールされています。)
Preparing to unpack git_1.9.1-1ubuntu0.3_amd64.deb ...
Unpacking git (1:1.9.1-1ubuntu0.3) ...
dpkg: 依存関係の問題により git の設定ができません:
 git は以下に依存 (depends) します: liberror-perl ...しかし:
  パッケージ liberror-perl はまだインストールされていません。
 git は以下に依存 (depends) します: git-man (>> 1:1.9.1) ...しかし:
  パッケージ git-man はまだインストールされていません。
 git は以下に依存 (depends) します: git-man (<< 1:1.9.1-.) ...しかし:
  パッケージ git-man はまだインストールされていません。

dpkg: error processing package git (--install):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 git

autoremoveにより削除された依存関係が問題になって、インストール出来ないようだ。

それぞれを手動インストールしてみる。

$ sudo apt-get install liberror-perl
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
 git : 依存: git-man (> 1:1.9.1) しかし、インストールされようとしていません
       依存: git-man (< 1:1.9.1-.) しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。

ん?なんでgitの依存関係が表示されてる?
試しにgitのバージョンを調べてみる。

$ git --version
git version 1.9.1-openssl

なんでや/(^o^)\
もう一度gitをインストールしなおしてから原因を探る。

$ which git
/usr/bin/git
$ sudo apt-get -f install
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
依存関係を解決しています ... 完了
以下の特別パッケージがインストールされます:
  git git-man liberror-perl
提案パッケージ:
  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk
  gitweb git-arch git-cvs git-mediawiki git-svn
以下のパッケージが新たにインストールされます:
  git-man liberror-perl
以下のパッケージはアップグレードされます:
  git
アップグレード: 1 個、新規インストール: 2 個、削除: 0 個、保留: 116 個。
1 個のパッケージが完全にインストールまたは削除されていません。
6,115 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 10.4 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
以前に未選択のパッケージ liberror-perl を選択しています。
(データベースを読み込んでいます ... 現在 251195 個のファイルとディレクトリがインストールされています。)
Preparing to unpack .../liberror-perl_0.17-1.1_all.deb ...
Unpacking liberror-perl (0.17-1.1) ...
Preparing to unpack .../git_1%3a2.13.0-0ppa1~ubuntu14.04.1_amd64.deb ...
Unpacking git (1:2.13.0-0ppa1~ubuntu14.04.1) over (1:1.9.1-1ubuntu0.3) ...
以前に未選択のパッケージ git-man を選択しています。
Preparing to unpack .../git-man_1%3a2.13.0-0ppa1~ubuntu14.04.1_all.deb ...
Unpacking git-man (1:2.13.0-0ppa1~ubuntu14.04.1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
liberror-perl (0.17-1.1) を設定しています ...
git-man (1:2.13.0-0ppa1~ubuntu14.04.1) を設定しています ...
git (1:2.13.0-0ppa1~ubuntu14.04.1) を設定しています ...
$ git --version
git version 2.13.0
$ which git
/usr/bin/git
$ sudo apt-get autoremove git
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  git git-man liberror-perl
アップグレード: 0 個、新規インストール: 0 個、削除: 3 個、保留: 116 個。
この操作後に 31.3 MB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 251479 個のファイルとディレクトリがインストールされています。)
Removing git (1:2.13.0-0ppa1~ubuntu14.04.1) ...
Removing git-man (1:2.13.0-0ppa1~ubuntu14.04.1) ...
Removing liberror-perl (0.17-1.1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
$ which git
$ git
-bash: /usr/bin/git: No such file or directory
$ sudo dpkg -i git_1.9.1-1ubuntu0.3_amd64.deb
以前に未選択のパッケージ git を選択しています。
(データベースを読み込んでいます ... 現在 250610 個のファイルとディレクトリがインストールされています。)
Preparing to unpack git_1.9.1-1ubuntu0.3_amd64.deb ...
Unpacking git (1:1.9.1-1ubuntu0.3) ...
dpkg: 依存関係の問題により git の設定ができません:
 git は以下に依存 (depends) します: liberror-perl ...しかし:
  パッケージ liberror-perl はまだインストールされていません。
 git は以下に依存 (depends) します: git-man (>> 1:1.9.1) ...しかし:
  パッケージ git-man はまだインストールされていません。
 git は以下に依存 (depends) します: git-man (<< 1:1.9.1-.) ...しかし:
  パッケージ git-man はまだインストールされていません。

dpkg: error processing package git (--install):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 git
$ which git
/usr/bin/git
$ git --version
git version 1.9.1-openssl

git 2.13.0を削除した後にdpkgでgit 1.9.1をインストールすると、インストールが完了していないようにみえるけど、
実はインストールされていて、使えるようになっているようだ。
なんでdpkgでインストールしたところで使えるようになっているかはわからないまま。
ひとまずは問題解決。