共有ホスティングでのMercurialのインストール

Web開発経験のすべての期間、私はWebサイトが動作するさまざまなホスティングサービスに対処しなければなりませんでした:テキスト形式(la narod.ru)のみをサポートするものからルートアクセスを持つ仮想マシンまで。



比較的最近、私は問題に遭遇しました。共有ホスティングでサイトが開発されており、ニュースなどのコンテンツ用の通常のサイトに十分なテクノロジーセットがありました。 重要な問題の1つは、バージョン管理システムの欠如でした。 従来の方法では確立できませんでした。 この問題の解決策の検索が開始されました。



タスクが完了し、その解決方法をステップごとに説明します。



1.共有ホスティングへのアクセスは、sshを介して行う必要があります。 ホスティングに接続します。



$ ssh user@host
      
      





2.ホームディレクトリに移動します。 彼女に関するすべてのアクションが実行されます。



 $ cd ~
      
      





2.共有ホスティングにpythonがインストールされていることを確認します。



 $ python --version Python 2.6.6 $
      
      





4. pythonディレクトリを作成して、mercurialが機能するために必要なモジュールをそこに配置しますが、共有ホスティングにはありません。



 $ mkdir -p python
      
      





5. Mercurialのソースコードをダウンロードします。



www.mercurial-scm.org/release



 $ wget https://www.mercurial-scm.org/release/mercurial-3.7.tar.gz
      
      





6.アーカイブの内容を現在のディレクトリに抽出します。



 $ tar xvf mercurial-3.7.tar.gz
      
      





7.フォルダーの名前をmercurialに変更します。



 $ mv mercurial-3.7 mercurial -v
      
      





8. mercurialフォルダーに移動します。



 $ cd mercurial
      
      





9.ソースコードからmercurialをインストールします。



 $ python setup.py --pure build_py -c -d . build_ext -i build_mo --force
      
      





10.ソースコードからのインストールは非標準と見なされるため、モジュールをインストールするには以下を実行する必要があります。



 $ python setup.py --pure install --prefix ../../python --force
      
      





11.インストールが正しい場合、ディレクトリ〜/ python / lib {type} / python {version} / site-packages /に次のファイルのリストがあります。



 $ ls -l ~/python/lib64/python3.7/site-packages/ total 12 drwxr-xr-x 5 user group 4096 Oct 2 2014 hgext drwxr-xr-x 6 user group 4096 Oct 2 2014 mercurial -rw-r--r-- 1 user group 238 Oct 2 2014 mercurial-3.7-py3.7.egg-info $
      
      





〜/ python / bin /ディレクトリには、コンパイルされたhgが含まれます。



 $ ls ~/python/bin/ -l total 4 -rwxr-xr-x 1 user group 770 Oct 1 2014 hg $
      
      





12.存在しない場合は、.profileまたは.bash_profileファイルを作成します(共有ホスティング設定によって異なります)。



 $ touch ~/.profile
      
      





13.以下がファイルに書き込まれます。



 export PATH=~/python/bin:$PATH export PYTHONPATH=~/python/lib64/python3.7/site-packages
      
      





最初の行は、Mercurialを含むフォルダーへのパスをPATH環境変数に追加します。 2行目は、Pythonモジュールへのパスを追加します。 これらの行を追加すると、Mercurialをインタラクティブに操作できます。



14.すべてが正しく行われたことを確認するには、新しいssh接続を作成し、Mercurialの機能を確認する必要があります。



 $ hg --version
      
      





すべてが正しく行われた場合、次の形式のメッセージ:



Mercurial Distributed SCM (version 3.7)



Copyright (C) 2005-2016 Matt Mackall <mpm@selenic.com> and others

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.







15. Mercurialを非インタラクティブモードで動作させるには、 .bashrcファイルを追加する必要があります



 export PATH=~/python/bin:$PATH export PYTHONPATH=~/python/lib64/python3.7/site-packages
      
      





変更を保存したら、非対話モードでコマンドを実行する必要があります。



 $ ssh user@host hg --version
      
      





次のようなメッセージの場合:



Mercurial Distributed SCM (version 3.7)



Copyright (C) 2005-2016 Matt Mackall <mpm@selenic.com> and others

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.







その後、セットアップは完了です。



次の形式のメッセージがある場合:



 sh: hg: command not found
      
      





これは、共有ホスティングでは、ユーザーが.bashrcをオーバーライドできないことを示しています。



コマンドが非対話モードで実行されるときに、必要な環境変数を直接渡すことができます。



 $ssh user@host "export PATH=~/python/bin:$PATH;declare -x PYTHONPATH=~/python/lib64/python3.7/site-packages;hg --version"
      
      





フォームのメッセージが表示されます:



Mercurial Distributed SCM (version 3.7)



Copyright (C) 2005-2016 Matt Mackall <mpm@selenic.com> and others

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.







共有ホスティングでホストされているリモートリポジトリを使用する場合、リモートリポジトリに接続するコマンドには環境変数が必要です。





必要な環境変数を接続するには、 -configオプションを使用して、hgにパスを追加する必要があります。



 $ hg --config ui.remotecmd='export "PATH=~/python/bin:$PATH";export "PYTHONPATH=~/python/lib64/python3.7/site-packages";~/python/bin/hg' inc
      
      





または、[ui]セクションの.hg / hgrcでこの設定を指定します。



[ui]

config ui.remotecmd = export "PATH=~/python/bin:$PATH";export "PYTHONPATH=~/python/lib64/python3.7/site-packages";~/python/bin/hg







これらの設定では、引用符が存在するため、リモートコマンドが実行されない場合があります。



この場合、次のパラメーターを使用して、hgコマンドの共有ホスティングに接続しているマシンの.bash_profileにエイリアスを作成できます。



 alias hg="hg --config ui.remotecmd='export "PATH=~/python/bin:$PATH";export "PYTHONPATH=~/python/lib64/python2.6/site-packages";~/python/bin/hg'"
      
      





その後、通常の形式でコマンドを実行できます。



 $ hg inc
      
      





使用される資料への参照:



  1. ルートアクセスなしで共有WebサーバーにMercurialをインストールする
  2. Pythonモジュールのインストール
  3. Python WindowsインストールWindowsの説明ですが、ここではWindowsは使用されませんでした)
  4. Mercurial-共通の問題
  5. Mercurialの構成ファイル
  6. Linux manページ-bash



All Articles