トップ 最新 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2020-06-03 [長年日記]

_ [FreeBSD]python3移行について

手元の環境で、python2依存なportsに関して状況をしらべてみた

  • devel/mercurial
  • devel/cvs2svn
    • upstreamでは、まだPython3に未対応の模様
    • devel/py-subversion経由で devel/subversion-ltsに依存
    • 基本レポジトリ変換時しか出番が無いので、影響は小さいか?
  • devel/py-subversion
    • Python3対応済み
    • Python2時のバックエンドが、devel/subversion-ltsに変更になったためdevel/subversionと共存出来ない
  • devel/viewvc
    • upstreamの開発版 1.3-devはPython3サポート
    • releaseの1.2.1はPython3未対応
      • devel/py-subversion経由で devel/subversion-ltsに依存
  • devel/scons
    • ports-CURRENTでBUILD_DEPENDなPythonベースのビルドツール
    • upstreamでは、3.0からPython3サポート
    • ports-CURRENT r537446で Python3へ切り替わった?
    • scons:python2指定で、python2版にBUILD_DEPENDしているportsがある

まとめ

  • devel/mercurialにパッチを当てて、Python3環境で試験する
    • mercurial 5.4 on Python3は動くが、hgsubversion + py37-subversionは動かない
      • hgsubversion自身のコードが、Python3対応になっていない模様 (setup.pyとかが明らかに、バイト列・文字列の型変更に追従していない)
      • mercurial on Python2だと py27-subversionが subversion-lts-1.10ベースなので、subversion-1.14とコンフリクトする
      • py27-subverion-ltsの代わりに py27-subvertpyを使ってPython2ベースで動かす?
  • devel/viewvc-develを作って、1.3-devでPython3を試す

2020-06-04 [長年日記]

_ [FreeBSD]Python2->3移行作業

  • devel/viewvcを 1.3-devベースに切り替えて、Python 3.7 + Subversion 1.14で動かす (成功)
    • devel/py-subversion@py37 -> devel/subversion
  • mercurialは、hgsubversionを動かすために Python 2.7ベースで維持
    • 依存先がdevel/subversion-ltsに切り替わる py27-subversionの代わりに devel/py-subvertpy@py27 をsubversion binding libraryとして使う
    • hgsubversion -> devel/py-subvertpy@py27 -> devel/subversion
  • cvs2svnに関しては、常時使うものでは無いので uninstall対応

Python2へのRUN_DEPENDが残っているのは

  • devel/scons@py27
    • 他のportsからのBUILD_DEPENDで入る
  • devel/py-subvertpy@py27 -> devel/mercurial@py27
    • 中央のsubversion repositoryに対する分散開発環境用途で hgsubversionを使うため
      • hgsubversionの対応待ちもしくは、別の環境へ移行する
        • gitのsubversionサポート(p5-subversion経由)
        • Subversion 1.14の新機能 (Shelving and Checkpointing)
    • devel/mercurial自体は、bug 242463でPython3へ移行可能

Subversion LTSについて

Subversion 1.14が次のLTSになる模様なので、devel/subversion-ltsが1.10から1.14に更新されれば、devel/subversionとの競合は実質的に解消するが、1.15が出た時点で再度問題になる罠


2020-06-09 [長年日記]

_ [hgsubversion]Mercurial 5.4だとダメっぽい

bug 242463を当ててインストールしたmercurial-py27-5.4だとhgsubversionでrepo moduleが見つからないとのエラーが出る

Mercurial側のmodule配置が変わってる? レポジトリの基底クラスの定義が、mercurial/repository.pyからmercurial/interfaces/repository.pyに移動されている

少なくともimport回りの改修が必要 import回りのパッチ(2020-06-11追記)

diff -r 6a6ce9d9da35 hgsubversion/svnrepo.py
--- a/hgsubversion/svnrepo.py   Fri Apr 19 16:28:39 2019 +0300
+++ b/hgsubversion/svnrepo.py   Thu Jun 11 12:55:44 2020 +0900
@@ -23,10 +23,14 @@
 peerapi = 0
 try:
     try:
-        from mercurial.repository import peer as peerrepository
+        from mercurial.interfaces.repository import peer as peerrepository
         peerapi = 1
     except ImportError:
-        from mercurial.peer import peerrepository
+        try:
+            from mercurial.repository import peer as peerrepository
+            peerapi = 1
+        except ImportError:
+            from mercurial.peer import peerrepository
     from mercurial import httppeer
 except ImportError:
     from mercurial.repo import repository as peerrepository

svn+ssh経由のcloneとpullに関してはmercurial-5.4/python2.7.18での動作を確認


2020-06-25 [長年日記]

_ [FreeBSD][IPv6]OCNのIPv6接続

OCNにてIPoE IPv6インターネット接続を無料提供が始まったようなので、技術情報を集めてみる

技術的には、OCNバーチャルコネクトとよばれるものと同じらしい

接続技術は、IPv6 over EthernetとIPv4 over IPv6トンネルで構成されている

IPv6 over Ethernet

基本的には、境界ルーターからRAが流れてきて、IPv6 stateless configurationでアドレス設定が完了する

Firewallがある場合は、ICMPv6を通過可能にしておかないと自動設定が完了しない点に注意

IPv4 over IPv6

基本的には、境界リレーとIPv6 over Ethernetで構成されたインターフェース間にIPv4パケットをカプセル化したIPv6パケットで中継する

OCNバーチャルコネクトや有償オプションのOCN v6アルファでは、MAP-E方式のトンネリングが採用されている

MAP-Eの特徴

  • Global IPv4へのNAPTは、エンド側で行う必要がある
  • NAPTのために払い出されるGlobal IPv4 addressとport rangeは、IPv6 over Ethernetで設定されるv6 address prefixから自動的に決定される
  • NAPTのために割り当てられるport-rangeは、複数のrangeから構成させる
    • おそらく、port numberの割り当て公平性を重視した設計と思われる
    • Global IPv4 worldからの着信につかえるport番号は、断片的に割り当てられるので、well known portが使える保証が無い
      • HTTPやSMTPを標準portで受け取れないので、Dynamic DNSによるサービスには向いていない
      • したがって、Server Serviceは、PPPoEリンク上に構成する必要がある
        • Serverを構成する場合、IPv4トラフィックのルート選択を行う必要が出てくる
    • 境界リレー等の構成情報は、Web APIから得られる模様だが、Web APIキーは未公開
      • 有志が解析したデータベース有り

したがって、運用的には

  • gifで境界リレーとエッジ側のインターフェース間にIPトンネルを形成する
  • IPv4パケットをNAPTして、gifトンネルに流し込む
    • ポートレンジが断片化しているので、NAPT層にport range構成を設定する必要あり
    • ipfw + natdを使うなら、新規port割り当て部をMAP-E対応に改造する必要あり
    • 改造対象は、libalias/alias_db.c内のGetNewPortおよび設定データベース&構文解析部
      • GetNewPortにて、MAP-E仕様のPort番号を生成する
      • port rangeを決めるPSIDパラメータを設定データベースに格納する

先人たちの情報


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記