2019年12月3日火曜日

ORA-12518: TNS: リスナーはクライアント接続をハンドオフできませんでした

Oracle12cでリスナー経由で接続しようとしたところ以下のメッセージが出力されて接続できないとの質問された時の備忘録

ORA-12518: TNS: リスナーはクライアント接続をハンドオフできませんでした

リスナー(listener)は正常に動作しているようなのでlistener.logを確認してみると上記メッセージ以外に

TNS-12560: TNS: プロトコル・アダプタ・エラー
TNS-00534: 接続所有権の子への権限付与に失敗しました。
64-bit Windows Error: 10022: Unknown error

ORA-12518で調べるとメモリやらセッション数等に係わる情報があるものの今回の事象に該当しなさそう、他のエラーで気になった所有権・権限付与が気になりOracle関連の実行ユーザグループを稼働中の別のサーバを確認してみると実行ユーザにはORA_INSTALLとORA_OraDB12home1_DBAセキュリティグループのメンバーになっているのに今回のサーバにはORA_OraDB12home1_DBAセキュリティグループにしか属していない・・・。

ORA_INSTALLグループにも属した上でサービスを再起動(実際はOSごと再起動)させて接続してみたところ見事解決!!

Oracleサービスの実行ユーザはインストール途中の画面で作成することも出来るはずだが今回はインストールした人が事前に手動で作成した際に属するグループが不足していたのかな???

2019年11月14日木曜日

SCHEDULER-320 Could not send mail

とりあえずJobScheduler1.13の基本的な使い方が分かってきたので特定のジョブ実行時にメールを送信するように設定してみたところ送信エラー

「SCHEDULER-320 Could not send mail」

メールサーバ側の問題かと思いTELNETで接続してメール送信テストも問題なく行えたのでJobSchedulerの問題は確定。

一番気になったのメールの設定情報が記述されてているfactory.ini

一通り確認しても原因となりそうな設定はない・・・ただ一カ所を除いて

「mail_queue_dir = ${SCHEDULER_DATA}/mail」

メールのキューが保存されると思われる上記設定のフォルダーがない??

フォルダーを手動で作ってみると無事送信成功!!インストールでは作成されないうえに送信時になければ自動的にフォルダーを作成もしてくれないらしい。

もしかするとインストール時はメールを送信する設定にしなかったからかな・・・。


2019年11月12日火曜日

JobSchedulerジョブ作成備忘録


  • jobschedulerは基本ISO-8859-1 Latin-1しか対応していなさそう、UTF-8やSJIS等のマルチバイトは使えなさそう。ジョブのtitleなどに日本語を使うと保存する時にエラーになるがエラーにならない項目もある、その場合は実行させた場合やJOCの画面でエラーメッセージが表示する。
  • リモート実行させる場合、Process Classを作成しジョブ定義で先のProcess Classを指定する。
  • コマンドやbatファイルはLanguageでshellを指定
  • ジョブの終了ステータスはスクリプトの戻り値が0で正常、0以外は異常終了、JP1のように警告終了はないのかな。
  • リモートジョブのbatファイルの保存先となるベースフォルダは[Agentインストールパス]¥agentになる、Agent実行ファイル(例 jobscheduler_agent_[ポート番号].cmd)にSCHEDULER_HOMEパラメータで変更可能
  • サーバ(jobscheduler engineが実行しているサーバ)のbatファイルのデフォルト保存フォルダは[インストールフォルダ]¥[データフォルダ]¥jobscheduler_1.13
  • scriptタブでbatファイルを複数行記述しても1つ目しか実行されない
  • Includesタブから複数のbatファイルを指定することで複数実行可能、ただしscriptに記述コマンドより先に実行される。
  • scriptタブでcmd.exe /c xxx.batとしして複数記述することでbatファイルを複数起動させることは可能、ただしbatファイルのリターンコードをジョブで判定できないかも。
  • JP1のジョブユニットがjobschedulerのジョブに対応する感じ、JP1のジョブネットのように複数のジョブを実行させる場合はjob chainで実現できそう。
  • job chainを実行させる際は、job chain orderを定義しorderから実行するらしい。
  • 祝日、祭日の設定はジョブ毎にも可能だが共通的なファイルを作成して参照させることが可能、ファイル名は[任意].holiday.xmlの必要があるらしい。
  • ジョブを曜日でスケジュール実行させる場合に曜日をグルーピング設定しないと各曜日毎に実行時刻や休日の動作指定をする必要がある。

2019年11月11日月曜日

スマートウォッチデビュー(FOSSIL HYBRID HR)

健康にはそれほど興味はないもののSNSや電話の着信に気づけるようにそろそろスマートウォッチを物色

ただ、以下の条件は除外

  • あからさまなスマートウォッチ、まぁ言ってしまえばAppleWatch
  • 個人的に避けたい製造メーカ
  • GPSや電子決済機能
  • 予算は3万円台が上限

そして希望条件

  • 見た目はなるべくアナログ
  • バッテリーのもちがいいこと
  • 上記の除外条件をクリアしていること

一番の候補はGARMIN vívomove LuxeだったけれどGPSや色々なセンサーもあり高機能で予算オーバーで残念。

次はWithings Steel HR、かなり理想に近かったけれど通知があったことはわかるものの詳細(メッセージ内容や誰からのなのかなど)が分かりづらい。

そんな中、つい先日発売されたFOSSIL HYBRID HR(ハイブリッドHR)、金額はギリギリ3万円におさまり自分にとって必要な機能は全て盛り込まれている。

お気楽にAmazonで購入とは思ったけれどまだ扱っておらず、近くの量販店でもFOSSILを扱っているもののHYBRID HRはまだ未入荷

できれば実物も見たかったので直営店に行くとさすがに各バリエーションが揃っていたので即購入

ここからは使ってみての感想、こういう事はかなり個人差があるのであるのであくまでも参考程度

  • アナログ時計の部分とスマートウォッチの部分で電池が別の時計もあるらしいけれどHYBRID HRは同じバッテリ
  • 家庭用防水ではあるもののプールや海での水泳は問題ないとのこと、ただし水の中でボタン操作はしない方がいいらしい
  • ベルトは切れても修理としてなら入手可能らしいが別のモデルのベルトは別途購入する事はできないらしい
  • 1日使ってみたところバッテリの消費は1%、2週間のバッテリー寿命はだてではないのかも
  • 表示のデザインはデフォルトで6種類
  • 湿度や天気を表示させることが出来るがスマートフォンでGPSを有効にしていてかつアプリケーションを起動させておく必要がある。(スマートフォンのバッテリー消費心配になる)
  • 気温表示が摂氏ではなく華氏で表示※設定変更可能かサポートに問い合わせ中(アプリのプロフィール→単位で設定可能な事が判明)
  • マニュアルがない(WEBサイトにもない)
  • アプリケーションのインストールの時にさらっと表示したが時計を軽く振ると時計の針が回り針が歩数など上で見づらい時に確認できる
  • たぶん2回ほど軽く衝撃を与えるとライトが光り暗い場所でも針の位置を確認出来る
  • たいした機能を求めていないのでOSがGoogleのWear OSではなく独自OSでも気にならない

ここからは不満

  • 某スマートフォンと同じくスタートアップガイドしかない上にWEBサイトにも操作ガイドがないというお粗末さ
  • 仕様について日本のサポートに問い合わせると実機がなく確認できないらしい、ナレッジもないとのこと※窓口の方はとても丁寧で申し訳なさそうでした
  • サポートも不十分なまま販売を開始するのがグローバルスタンダードなのかな

2019年11月9日土曜日

JobScheduler1.13(インストール)

JP1に代わるジョブスケジュールソフトを探していて気になっていたJobSchedulerを試してみることに。

【ダウンロード】


sso-berlin.comサイトから以下のインストーラをダウンロード


  • JobScheduler Master 1.13 Windows 64bit
  • JobScheduler JOC Cockpit (required to control JobScheduler Master) 1.13 Windows 32/64bit
  • JobScheduler Universal Agent 1.13 Windows 64bit
  • JobScheduler Object Editor

【ライセンス】


JobSchedulerはオープンソース(GNU Public License)で利用可能らしいけれどユニバーサル・エージェントの同時複数タスク実行は有償ライセンスが必要らしい

【インストール環境】


・Windows2012Server 64bit
・Windows7 64bit

【JAVA】


・jdk1.8.0._u144 _x64
サーバは既にインストールしていた別のサーバからjdkをコピーしてJAVA_HOMEを設定した状態(インストーラーからインストールしていなかったために色々はまった・・・)

【Database】

別サーバで稼働中のOracle(11.2.0.4)を使用

【JobScheduler Engine(JobScheduler Master)】


JobScheduler本体、インストール自体はそれほど難しくなくインストレーションガイドや紹介サイトを参考にすればそれほど難しくないはずだったけれど・・・

setup.cmdを実行しても実行されない、setup.cmdを見てみると内部で使用している環境変数JRE_HOMEに設定できないのが原因らしい、きっとちゃんとJDK(JRE)をインストールしなかったのが悪い、とりあえずsetup.cmdにJRE_HOMEの設定を追加して無事起動。

インストーラーに従ってインストールは完了したもののサービスが起動せず・・・ログファイルを確認してみるとjvm.dllが見つからないというエラーメッセージ

"loadLibrary, Java Virtul machine jvm.dll"

きっとこれもJAVAのインストールの仕方が原因で偶然見つけた対応方法としてconfig¥sos.iniの[java]セクションのvmパラメータを有効にしてフルパスでjvm.dllを指定して無事起動

【JOC - JobScheduler Operations Center】


JobScheduler Masterは管理画面がなくJOCのインストールすることでWEB経由に管理が可能になるらしい、JOCはJobScheduler Masterと同じサーバにインストールしようはなくhttpプロトコルで通信できるらしい。

setup.cmdを実行するとインストーラー起動せず(またか・・・)、JOCのsetup.cmdはjava.exeに環境変数が使用されていないのでとりあえずシステム環境変数のPATHに追加してjava.exeを実行できるようにしてインストール完了。

ブラウザからJOCにアクセスしてみても表示せず・・・サービスが起動していない、またjvm.dllが見つからないのかと思い色々ファイルを探してみるもののそれらしい設定がない。

JOCはApache Commons Daemonを使用してサービス化しているようなのでレジストリを確認してみるあやしい箇所があり修正してみたところ無事起動


HKEY_LOCAL_MACHINE¥SOFTWARE¥Wow6432¥Node¥Apache Software Foundation¥Procrun 2.0¥sos_joc¥Parameters¥Javaの以下のキーを

(修正前)
JavaHome=JRE
Jvm=auto

(修正後)
JavaHome=明示的にJDKのパスを設定
Jvm=フルパスでjvm.dllを明示的に設定

ブラウザからhttp://localhost:[ポート番号※]/にアクセスすると無事ログイン画面が表示
※ポート番号はインストール中のJettyポート番号として設定した番号

ID:root
Pass:root

デフォルトは英語表記だけれどユーザプロファイルの設定画面から日本語の選択が可能

【JOE - JobScheduler Object Editor】


インストーラーは他と同じく日本語を選べるがJOEを起動してみると英語表記(日本語選択はない)。
JobScheduler MasterをインストールするとJOEも含まれているようでJOEをあらためてインストールする必要はなかったかもしれない

【JobScheduler Universal Agent】


リモートでのジョブ実行を試す予定なのでWindows7端末にAgentをインストールしてみるとサービスが起動しない・・・。
エラーメッセージから127.0.0.1でlistenできないような雰囲気、インストールした端末はLANを2ポート持っていて1つはリンクアップしていない状態。

試しに有効になっているLANのアドレスに変更したところ無事起動できた。

ジョブの作成は別途にメモするとしてJobScheduler EngineからWindows7端末上でジョブを実行させてみるとエラー、端末上のサービスを確認するとAgentサービスが停止している。
Agentサービスは起動はするもののジョブの実行指示を受けるとエラーが発生しサービス停止するらしい。

試しに手動でAgentを起動させてみると無事ジョブ実行出来たのでサービスの実行ユーザ(ローカルシステム:LocalSystem)からAdministratorsグループのユーザに変更してみたところやはり問題なくジョブ実行できるようになりとりあえず完了。(ローカルシステムで動作しない理由は不明のまま)

とりあえず無事インストール完了、JAVAのインストールがいい加減だったおかげで色々苦労してしまった・・・。









2019年10月22日火曜日

JupyterLab(JupyterNotebook)のインストール

macOS Mojave(10.14.6)にJupyterLab(JupyterNoteBook後継版)のインストールメモ、既にPython3.7.1をインストールしている状態でAnaconda(データサイエンス向けのPythonパッケージなどを提供するプラットフォーム)を使用せずJupyterLabを単体でインストールすることに。

1.jupyterlabインストール


>pip install jupyterlab

インストールしていたpipのバージョンが古いとのメッセージ

You are using pip version 10.0.1, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

なので先にpipをアップグレード

>pip install --upgrade pip

Collecting pip
  Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 6.5MB/s 
Installing collected packages: pip
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
Successfully installed pip-19.3.1

再度jupyterlabをインストールしてとりあえずエラーなく完了、またJuypyterLabでグラフも表示させたいのでついでにmatplotlibもインストール

>pip install matplotlib

2.準備


作業ディレクトリを変更したく毎回起動オプションに設定するのが面倒なので作業用フォルダの作成と設定ファイルを作成し必要な設定をする

・作業ディレクトリ作成(ホームディレクトリ内作成)
mkdir ~/jupyterlab

・設定ファイルの作成

>jupyter notebook --generate-config

~/.jupyterフォルダ内にjupyter_notebook_config.pyが作成されるので先の下記の箇所を有効(コメント解除)にして作業フォルダを指定
c.NotebookApp.notebook_dir = '[任意フォルダ]'

3.実行


>jupyter lab

デフォルトは自動的にブラウザも起動する



  • jupyterlabはIE11がサポートされていないためWindowsだと画面はなにも表示しない、Notebookは使用できるのでその場合は「http://localhost:8888/tree」にアクセスする(初回は/?token=・・・が必要かも)
  • 手動でURLを指定する場合は「http://localhost:8888/lab」
  • ターミナルを閉じてもバックグラウンド起動させておく場合は「>nohup jupyter lab &」で実行
  • 手動実行時のURLに認証用トークンを指定する必要がある場合はターミナル画面にURL(http://localhost:8888/?token=d6d62e9f50ee4668e355409590ada3a34ce70658ead9aaf8)が表示されているので「/?token」以降を入力する


4.グラフの表示確認


(テストプログラム)

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
y = np.sin(x)
plt.plot(x,y)




5.Tips


(1)設定ファイル
・起動時に自動的にブラウザ起動させない場合
c.NotebookApp.open_browser = False
・別のPCからアクセスさせる場合
c.NotebookApp.ip = '*'
・ポート番号を変更(8801)する場合
c.NotebookApp.port = 8801
・認証用のトークンをなくす場合
c.NotebookApp.toekn = ''
・rootユーザでの実行を許容する場合(Macでは個人IDでログインしていたので不要)
c.NotebookApp.allow_root = True

(2)起動オプション
・help(MacではLinuxの場合ほどオプションが表示しない)
--help or --help-all
・リモートアクセス許可
--ip=0.0.0.0
・起動時に自動的にブラウザ起動させない
--no-browser
rootユーザでの実行を許容
--allow-root



2019年10月12日土曜日

自動でPCが起動していまう

PCをシャットダウンしても数分後に勝手に起動してしまうようになってしまった。

きっとWake On Lanの設定と思いBIOSの設定を見直しても改善せずなんでかと思っていたらWindowsのLANドライバに設定があることを忘れていた。

使用しているIntel 82579LM Gigabit Network Connectionのプロパティの「電源管理」タブにあるWake on LAN設定にある以下の項目のチェックを外した。

  • Wake On Magic Packet
  • Wake on Link
  • Wake on Pattern Match


最初はWake on Linkだけ外したけれどそれだけでは起動してしまった。

2019年9月18日水曜日

AWSソリューションアーキテクトアソシエイト

どうしてもAWSに係わる可能性が大きくなり、ただ勉強してもつまらないのでAWS認定試験を受けることに。

何種類かある試験でそれほど難しくなさそうなものをと思いソリューションアーキテクトアソシエイトを選択して書店で何種類かる参考書から何となく技術評論社の「AWS認定ソリューションアーキテクトアソシエイト合格教本」(2018年2月リリース対応)を購入
※アフィリエイト目的ではないのでリンクはしません。

・AWSの事前知識

勉強を始める頃はEC2ってなに状態、AWSを使った事もなく実際に管理画面を見たこともなし。
参考書の受験資格を読むと1年以上の実務経験とあるけど・・・

・勉強方法

購入した参考書のみ、模擬試験や無料でのAWS操作やホワイトペーパーは一切未使用

・勉強期間

通勤の行き帰りや週末の休みに参考書を何度も繰り返し読み込み、章ごとの確認問題と付録の模擬テストを実施する感じで概ね2ヶ月、もっとも土日やまとまった時間に集中して読めば2週間でも合格するような気がする。OracleのDBAの参考書に比べればたいしたことはないかも。

・試験の感想

130分(アンケート入力時間含)でゆっくり読んでいたら意外に時間がなくなってしまった、65問あるのでとりあえず気になる所は後で見かえす事にして最後まで終わらせる方がいいのかもしれない。(参考書の模擬試験は実際の問題とかなり雰囲気は似ていてた)

・参考書について

まぁ読んだおかげで合格しているわけですが・・・

  • 参考書は試験範囲を網羅しておらず全く知らない問題が出題された。
  • 付録の模擬試験にすら本文に記載のない問題があった、なので模擬問題の解答の説明を読んでおくのはいいかも。
  • 誤字/脱字は仕方ないものの説明に紛らわし箇所や説明と図例がイマイチあってない箇所があったような。(例えばELBにはSSL Termination機能が用意されているとあるがELBはCLB/ALB/NLBの総称と説明していてこの機能はNLBでは使えないとか、CloudWatchには3種類の機能がありそのひの1つにCloudWatchがあるってなんのこっちゃとか)

なので今回の合格は偶然の可能性があり確実合格するためには参考書だけに頼らず問題集や模擬試験を受けるかちゃんと試験範囲を網羅した参考書を探してみる方がいいのかも。AWSは機能がどんどん変わっていくようなので参考書の情報が正しいとはかぎなそうなのが厄介かも。

3年後に再試験を受けないといけないのが憂鬱、とても上の資格を受ける気もないしどうしたものかな。

2019年8月25日日曜日

ios12.4へのアップデートは後悔でしかない

新しいiosがリリースされては不具合の情報が飛び交い、しつこくAppleの騙すようなアップデート催促画面を無視続けていた。

さすがにios12も何回もバージョンがあがりいいかげん安定したのではと安易にios12.4にアップデートしたのが失敗の始まり。

夜にアップデートしたのち朝起きたらバッテリーがほぼゼロ!!

なんだと思いつつ充電をしていざ使いだすとみるみるバッテリーが消費されていく、確かに古いバッテリーを使用しているので今までも減りは早い方だとは思うけれど尋常じゃない。

使いたい機能も我慢しないと1日もたないって・・・じゃあ何のためのスマフォなのか、待ち受け専用のポケベルみたい。

役にも立たずただただ無駄に電気を消耗するデバイスでしかない・・・・


そしてバッテリーの消費が激しい時は本体も加熱しているのが分かる、触れないほどは熱くならないものの人肌よりは熱く胸ポケットに入れていると接している面が汗ばむ感じ。

インターネットで調べると長持ちになった人もいれば自分と同じ事象の人もいるっぽい。

バッテリーの消費を抑えるためにあれをオフにしてこれをオフにしてという情報もあるけれど使っていない機能ならまだしも使っている機能も使えなくして意味があるのかな。

このバッテリーの消費が早いが仕様なのか不具合なのか不明だけれど、色々とApple製品には不愉快な事が続いている。

今までセキュリティを心配しつつも今回ついついアップデートしたらこの始末、ios12.4へのアップデートは後悔のないにものでもない。

2019年4月26日金曜日

ConfigParserでUnicodeDecodeError

Windows7環境のPython3でConfigParserを使用したら以下のエラーメッセージ

UnicodeDecodeError: 'cp932' codec can't decode byte 0x86 in position 21: illegal multibyte sequence

読み込みファイル(config.ini)にマルチバイトを含めたとたん・・・。

まぁメッセージ的に文字コードの問題となので検索して

普段なら

import configparser

config = configparser.ConfigParser()
config.read('config.ini')



import configparser
import codecs 
config = configparser.ConfigParser()
config.readfp(codecs.open("config.ini", "r", "utf8"))

にして回避

2019年1月14日月曜日

お使いのシステムは3つのウイルスに感染しています


突然こんなページが表示


一瞬ドキッとしたものの、既にインストールしているウィルス対策ソフトが検知しておらず、さらにこのページのURLが怪しすぎる。

ボタンをクリックする前に検索するとやっぱり・・・偽り!!


2019年1月11日金曜日

【Office2007】このインストールパッケージの言語システムはサポートされていません

Windows7にインストールしていたOffice2007アンインストールしようとしたら

「Microsoft Setup Bootstrapperは動作を停止しました」

「このインストールパッケージの言語がシステムでサポートされていません」

のエラーがが・・・

検索して

1.KB975927の適用
→改善せず

2.Microsoft Office IME 2007をデフォルトの言語から外してからアンインストールする。
→そもそもMicrosoft Office IME 2007がデフォルトでになっておらず。

・Fix itで解決する
→正常に動作せず。

3.手動アンインストール
5つぐらいあったOffice2007関連のインストーラー(msi)を選んでアンインストールを行ったけれどアンインストールできないmsiが存在(エラーメッセージも表示せず)

Microsoftサイト

4.Office2007を再度インストールしてからアンインストール
NEC LaVieサポートで紹介している手順で無事解決

結局、Microsoftサイトの情報では解決しなかったというおち。。。


2019年1月3日木曜日

macOS Mojave 10.14.2にPython3.7.1インストール



前回、Homebrewをインストールしたのでやっとpythonをインストール


  • macOS Mojave 10.14.2
  • Python3.7.1

・pyenvのインストール

今のところ複数のバージョンを切り替えて使う予定がないのでpyenvのインストールは不要あったかもしれないけれど今後のために。

(インストールコマンド)
$brew install pyenv

(インストールログ)
brew install pyenv
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
atomist-cli                               jmxterm                                   ruby@2.5
==> Updated Formulae
algernon                       dub                            libcds                         re2
ballerina                      dvm                            libhttpserver                  roswell
bullet                         easyengine                     libjwt                         swi-prolog
checkstyle                     efl                            librealsense                   swiftformat
clojure                        fbi-servefiles                 meson                          syncthing
cointop                        gexiv2                         mono                           tika
dartsim                        global                         neovim                         topgrade
dcd                            gobject-introspection          nnn                            unnethack
dependency-check               grakn                          node-build                     verilator
dfmt                           groovy                         pagmo                          wtf
diamond                        http-parser                    pgbadger                       ydcv
diffutils                      imagemagick                    php-cs-fixer                   youtube-dl
docker-machine-parallels       kops                           picard-tools
dscanner                       ldc                            plantuml
==> Deleted Formulae
pyexiv2

==> Installing dependencies for pyenv: autoconf, openssl, pkg-config and readline
==> Installing pyenv dependency: autoconf
==> Downloading https://homebrew.bintray.com/bottles/autoconf-2.69.mojave.bottle.4.tar.gz
######################################################################## 100.0%
==> Pouring autoconf-2.69.mojave.bottle.4.tar.gz
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/autoconf
==> Summary
瑳  /usr/local/Cellar/autoconf/2.69: 71 files, 3.0MB
==> Installing pyenv dependency: openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2q.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring openssl-1.0.2q.mojave.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.

If you need to have openssl first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ‾/.bash_profile

For compilers to find openssl you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl/include"

==> Summary
瑳  /usr/local/Cellar/openssl/1.0.2q: 1,794 files, 12.1MB
==> Installing pyenv dependency: pkg-config
==> Downloading https://homebrew.bintray.com/bottles/pkg-config-0.29.2.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring pkg-config-0.29.2.mojave.bottle.tar.gz
瑳  /usr/local/Cellar/pkg-config/0.29.2: 11 files, 627.2KB
==> Installing pyenv dependency: readline
==> Downloading https://homebrew.bintray.com/bottles/readline-7.0.5.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring readline-7.0.5.mojave.bottle.tar.gz
==> Caveats
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

For compilers to find readline you may need to set:
  export LDFLAGS="-L/usr/local/opt/readline/lib"
  export CPPFLAGS="-I/usr/local/opt/readline/include"

==> Summary
瑳  /usr/local/Cellar/readline/7.0.5: 46 files, 1.5MB
==> Installing pyenv
==> Downloading https://homebrew.bintray.com/bottles/pyenv-1.2.8_1.mojave.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring pyenv-1.2.8_1.mojave.bottle.1.tar.gz
瑳  /usr/local/Cellar/pyenv/1.2.8_1: 612 files, 2.4MB
==> Caveats
==> autoconf
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/autoconf
==> openssl
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.

If you need to have openssl first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ‾/.bash_profile

For compilers to find openssl you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl/include"

For pkg-config to find openssl you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"

==> readline
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

For compilers to find readline you may need to set:
  export LDFLAGS="-L/usr/local/opt/readline/lib"
  export CPPFLAGS="-I/usr/local/opt/readline/include"


(パス追加)
pyenvのパスを通すために.bash_profileに追加
※自分の環境には.bash_profileは存在しておらず今回新規に作成

・.bash_profile作成
$touch ~/.bash_profile

・パス追加
.bash_profileに以下を追加
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

・.bash_profileの読み込み
パスに追加しても次回のシェル起動時からしか有効にならないので手動で.bash_profileを読み込ませる

$ source ~/.bash_profile

・pythonのインストール


pyenvでインストール出来るバージョンを確認する

$ pyenv install --list

anacondaやjpythonなども表示するけれど数字だけのがpythonのことのようで、今回は現時点で最新の3.7.1をインストールすることに

$ pyenv install 3.7.1

(インストールログ)
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
python-build: use readline from homebrew

BUILD FAILED (OS X 10.14.2 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103125847.9526
Results logged to /var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103125847.9526.log

Last 10 log lines:
rm -f ./pybuilddir.txt ; \
exit 1 ; \
fi
Fatal Python error: init_sys_streams: can't initialize sys standard streams
LookupError: unknown encoding: SJIS

Current thread 0x000000011701a5c0 (most recent call first):
/bin/sh: line 1: 18246 Abort trap: 6           ./python.exe -E -S -m sysconfig --generate-posix-vars
generate-posix-vars failed
make: *** [pybuilddir.txt] Error 1

うーん、とりあえずエンコーディングのSJISを知らないと・・・ターミナルのテキストエンコーディングをUTF-8にしてリトライ
※そもそも~(チルダ)を入力できず問題でエンコーディングをUTF-8に変更はしていたけれどターミナルを開きなおしていなかったのでシェルとしてはSJISのままだった。

(インストールログ)
pyenv install 3.7.1
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
python-build: use readline from homebrew

BUILD FAILED (OS X 10.14.2 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103130926.18567
Results logged to /var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103130926.18567.log

Last 10 log lines:
  File "/private/var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103130926.18567/Python-3.7.1/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/private/var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103130926.18567/Python-3.7.1/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103130926.18567/Python-3.7.1/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/18/0w69zlln2v54_mhnf6s014dc0000gn/T/python-build.20190103130926.18567/Python-3.7.1/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

調べてみるとMojave用のmacOS SDK headerがインストールされていないかららしく手動でインストールしてみることに

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

(インストールログ)
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Password:
installer: Package name is macOS_SDK_headers_for_macOS_10.14
installer: Installing at base path /

installer: The install was successful.

再度python3.7.1をインストールして無事成功
(インストールログ)
$ pyenv install 3.7.1
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.1.tar.xz...
-> https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
Installing Python-3.7.1...
python-build: use readline from homebrew

Installed Python-3.7.1 to /Users/[ユーザid hogehoge]/.pyenv/versions/3.7.1

・pythonバージョンの切り替え

インストールしただけではデフォルトのpythonはもともとインストールされているバージョンが使用されるので切り替える

$ python --version
Python 2.7.10
$ pyenv global 3.7.1
$ pyenv versions
  system

* 3.7.1 (set by /Users/[ユーザid hogehoge]/.pyenv/version)
$ python --version
Python 3.7.1

※選ばれているバージョンの前に*が表示しているっぽい

ちなみにアンインストール時は
$ pyenv uninstall 3.7.1

参考サイト








ターミナルで(~)チルダを入力できない

普段たいして使用しないターミナルでホームディレクトリに移動しようと「~(チルダ)」を入力して表示しない・・・。

調べてみるとターミナル→環境設定→プロファイル→詳細のテキストエンコーディングをSJISからUnicode(UTF-8)に変更すると表示するらしい。


これって常識なのかな。