【忘備録】anyenv, pyenv環境構築

 

本日のゴール

  • VMware workstation pro 17
  • Ubuntu 22.04 LTS Desktop
  • VMware仮想マシン(Ubutnu)の作成
  • Ubuntuのインストールと設定
  • anyenv構築
  • pyenv構築
  • python 3.11.インストール
  • VScodeインストール
  • Gitにアカウント作成
  • 新規プロジェクト作成
  • 作成したプロジェクトをローカルにクローン
  • 成果物(テスト)をリモートリポジトリへpush

本記事では下記項目を取り扱い

  • anyenv構築
  • pyenv構築
  • python 3.11.インストール

anyenv構築

anyenv公式gitからインストール

GitHub - anyenv/anyenv: All in one for **env

$ git clone https://github.com/anyenv/anyenv ~/.anyenv

$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc

$ ~/.anyenv/bin/anyenv init

$ echo 'eval "$(anyenv init -)"' >> ~/.bashrc

$ exec $SHELL -l

$ anyenv install --init

anyevnの設定完了

※後日anyenv update pluginをインストール

 

pyenv構築

anyenv公式のusageにあるようにpyenvインストール

$ anyenv install pyenv

 

pyenvにパスを通す

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

 

設定ファイル読み込み

$ source ~/.bashrc

エラー発生

command not found(以下省略)

 

pyenvのパスが通ってないっぽい、下記のコマンド実施後エラー解消

$ echo 'eval "$(anyenv init -)"' >> ~/.bashrc

実はこのコマンド、anyenv編であたかも順番通りに実施したような流れで書いてあるが(そっちの方が後で見返すときに便利なので)、実際は結構後に行った。

 

pyenvを無事パスに通せたので、pythonのインストール実施

 

Python 3.11.8インストール

 

今回は3.11.8をインストールする

$ pyenv install 3.11.8

make: *** [install] Error 1

ここでまたエラー発生

改めて調べてみたら、やはりpyenvをインストールするのに必要なパッケージをインストールしてなかった(前日に気づいていた原因だったが、この時点で実際にそれが直接的原因かわからなかったのであえて実行せずにインストールを試みた。)

ということで下記コマンド実施

$ sudo apt update
$ sudo apt install build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev  libreadline-dev libsqlite3-dev libopencv-dev tk-dev

これを実施した上でもう一度トライ

 

pyenv install 3.11.8

エラーが起きずにpythonインストール完了

 

やったー!!!

いかに自分が初心者か思い知らされたが、諦めずに問題解決できたのでよかった(根性が取り柄)

 

3.11.8をインストールしたのでカレントディレクトリのpython versionを切り替えたが、それはまた別の記事で

 

参考にした記事

Ubuntuにpyenvをインストール

 

次回、Git編に続く...................

VScodeは特に書くことないので割愛)

【忘備録】anyenv, pyenvの環境構築(先日の続き)

本日のゴール

  • VMware workstation pro 17
  • Ubuntu 22.04 LTS Desktop
  • VMware仮想マシン(Ubutnu)の作成
  • Ubuntuのインストールと設定
  • anyenv構築
  • pyenv構築
  • python 3.11.インストール
  • VScodeインストール
  • Gitにアカウント作成
  • 新規プロジェクト作成
  • 作成したプロジェクトをローカルにクローン
  • 成果物(テスト)をリモートリポジトリへpush

こんな感じでてんこ盛りなので、各項目毎に分けて書く

ということで、この記事のゴールは下記に絞る

ちなみに、昨日途中まで完了していた?pythonの開発環境、途中でエラーとか発生してごちゃごちゃになりよくわからない状態になっていたこともあり、最初からインストールし直した方が早くね?的な精神(投げやり)になってしまったのでubuntu 22.04 LTSのダウンロードからやり直し。ついでにVMwareも。

VMware workstation proのライセンスを貰えたので、proをダウンロードして使うことにした。

 

環境

Windows 11 home

 

VMware Workstation Pro 17のダウンロード

VMwareのアカウントを持っていないので、登録せずにダウンロードしたい

このリンクだと、登録もしくはサインインを求められた

 

https://customerconnect.vmware.com/jp/downloads/details?downloadGroup=WKST-1751-WIN&productId=1376&rPId=116869

このリンクだと、30日フリートライアル版なので登録やログインは不要でダウンロードできた

Download VMware Workstation Pro

今回は、会社でライセンスを使わせてもらえるので30日フリートライアルをダウンロードしてそこからライセンス登録した

 

昨日と全く同じ手順なので割愛

 

 

anyenv構築に続く.....

 

 

 

 

【忘備録】Ubuntu 22.04 LTSにanyenvとpyenvをインストール

今回も忘備録として自分用にメモ

 

目的:仮想マシン上でPythonを使って開発したい

開発環境構築のためのTO DO

  • VMwareインストール
  • Ubuntu 22.04 LTSインストール
  • 仮想マシンの作成
  • anyenvインストール
  • pyenvインストール
  • python 3.11.xをpyenvを使ってインストール
  • VScodeインストール
  • Githubへアカウント登録

一番大事なこと項目を書き忘れていたので追加した

  • python 3.11.xをpyenvを使ってインストール

 

前提知識

anyenvについて

なんちゃらenv(pyenv,Renv,nodenv etc...)と名の付くバージョン管理をするやつを、管理してくれる便利そうなやつ

つまり、今回はanyenvを使ってpyenvをインストールする

 

pyenvについて

pythonのバージョン管理をしてくれる

プロジェクト毎にバージョンを切り替えられたり同じバージョンを使えたり色々便利らしい(やったことないので具体的には知らない)

 

anyenv環境構築

まずはgithubからリポジトリをクローン..........

しようと思ったら、そもそもgitコマンドがインストールされていないので

下記コマンドでインストール

sudo apt-get install git

インストールされたか確認

which git

/usr/bin/git

と出てきたので無事完了

 

本題のanyenv環境構築へ戻る

anyenvがないことを確認

anyenv -v

何も表示されないので未インストール

 

anyenv公式のリポジトリからクローン

git clone http://github.com/anyenv/anyenv ~/.anyenv

~/でホームディレクトリにclone

doneと出たので一応確認

ls

.anyenvあり

 

次は.bashrcにパスを通したいが、一旦.bashrcにany_envがないか確認(絶対ないけど)

grep anyenv .bashrc

何も出てこないので現状は通ってないということで新たにパスを通していく

echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(anyenv init -)"' >> ~/.bashrc

ここでも念の為確認

grep anyenv .bashrc

export PATH="$HOME/.anyenv/bin:$PATH"

eval "$(anyenv init -)"

と出力されたのでOK

 

確認できたのでシェルを再起動を試みるも.....

exec $SHELL -l

ANYENV_DEFINITION_ROOT(/home/username/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:

> anyenv install --init

エラー発生

 

指示通りコマンドを打ってみる

anyenv install --init

Completed!

 

本来なら次で exec $SHELL -l を再度行わなければいけなかった説

しかし、それをすっ飛ばしてpyenvをインストールしてしまった

(恐らくこれが原因で後のpythonをインストールするときによくわからないエラーが出まくって膨大な時間を費やした)

anyenv install pyenv

exec $SHELL -l

mkdir -p $(anyenv root) /plugins

git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update

pyenv install 3.11.8

上記の手順で実行をしたらエラー大発生

色々やってみて結果的にpyenvのversions配下に3.11.8インストールされたけどその時もmodule not foundエラー発生してたし正しく設定できてるか不安なので、また明日ubuntuのダウンロードからやり直そうかな、、、、

エラー原因一つ一つ探っていくよりそっちの方が早そうだし、今回の目的はpythonの開発環境を構築することであってanyenvやpyenvのスペシャリストになる訳ではないし。。

 

一旦寝て決める

【忘備録】UbuntuをVMwareへインストール

本日は自分が業務で扱ったことを忘れないように忘備録として記録

ゴール:Ubuntu 22.04 LTSをWindowsVMwareへインストールし仮想マシンを作成

分解するとこんな感じ

  1. Ubuntu 22.04 LTSダウンロード
  2. VMware仮想マシン作成
  3. 起動してインストール

 

目的:仮想マシン上でPythonを使って開発したい

開発環境構築のためのTO DO

 

すでにVMwareはインストールしてあるので、

Ubuntu 22.04 LTSのダウンロードから

その前にまずはUbuntuについて(自分用のメモで正確性には欠ける可能性が多いにあり)

Linuxディストリビューションの一つでCanonicalから支援を受けている

Server版とDesktop版があるらしい

今回インストールするのはDesktop版の方

 

1.Ubuntu 22.04 LTSのインストール

ダウンロードをクリック>ページが遷移し自動的にダウンロード始まる*1>ダウンロード完了

インストール先のリンク:

https://jp.ubuntu.com/download

 

2.仮想マシンの作成

VMwareのホーム画面にて

新規仮想マシンの作成 > 後でOSをインストール(よくわかんないけど参考にしたブログはこれを選択してた) > ゲストOSの選択でLinux選択・バージョンはUbuntu64ビット > 仮想マシンの名前を任意のものに・場所はデフォルトのパス > ディスク容量の指定もデフォルト > 完了

環境設定

仮想マシン設定の編集 > ハードウェアのCD/DVD(SATA)を選択 > ISOイメージファイルを使用する > ステップ1でダウンロードしたISOファイルを選択 > OK

参考にしたサイト:

【Linux】VM Playerにubuntu 22.04 LTSをインストール | PC弄り好きの趣味語り

 

3.起動してインストール

仮想マシンの再生 > Try or Install Ubuntu > 数分後、Ubuntu Desktopが起動 > Installのポップアップ出現 > 言語選択(検索時に英語の方がやりやすいのでEnglishにした) > Install Ubuntu > Kyeboard layout(Japanese, Japaneseを選択) > Updates and  other software(デフォルト+wi-fiハードウェアがどうたらこうたら選択) > Installation type (Erase disk and install ubuntu選択)*2 > popupが出てくるのでcontinue > あとは名前とか地域とか設定してインストール完了

参考にしたサイト:

【Linux】VM Playerにubuntu 22.04 LTSをインストール | PC弄り好きの趣味語り

How To Install Ubuntu on a Computer or Virtual Machine | ITPro Today: IT News, How-Tos, Trends, Case Studies, Career Tips, More

 

これでようやく完了

仮想化技術とかUbuntuとか全く知識がないのでビビりながら進めたらめっちゃ時間かかった、、

 

注釈

*1. Chromeだと自動的にダウンロード開始したが、Edgeだと下記手順が必要だった。

release notes>get ubuntu 22.04 LTS>Ubuntu Desktop and Server for 64bit x86(AMD64)>Desktop image

*2. ここで削除されるのはホストマシンの領域ではなく、VMware上の話らしい

なのでホストOSのデータには一切影響がないとのこと

書いてあることが怖かったので(これ選択すると色々消える可能性あるよ的な)Copilot様に聞いた

python:関数

関数とは

関数に”引数”と呼ばれる値を入力すると、特定の処理を実行してくれる

 

は??意味わからん

 

つまりは、A君(関数)にりんご(引数)渡すと6等分にカットしてくれるってこと?

ということは、B君にりんご渡すと輪切りにしてくれたり、Cさんにりんご渡すと絞ってジュースにしてくれるとか色々機能を持った何かがあるってことかな?

 

ってことは、

関数=特定の処理を行うシステム

引数=処理される何か

ってことであってる?

つまり、システムってある特定の処理をする小さなパーツの集合体のことか。

 

おけおけ、お次は、

組み込み関数

通常、関数は自分で作ることが多いらしい

pythonにはあらかじめ関数が用意されてる

例えば、print, sum, などなど

 

fruits = “apple” (引数を指定)

print(fruits)    (関数を実行、または関数を呼び出すともいう)

 

関数の戻り値

入力した値を関数が処理して出力される値(戻り値)

つまり、りんご(入力値)をA君(関数)に渡して、6等分になって帰ってきた(戻り値) 

 

sum関数の場合

list = [1, 2, 3, 4, 5]

sum_var = sum(list)

print(sum_var)

 

list(入力値)が、sum_var(戻り値)として帰ってくる

戻り値のある関数の呼び出し

戻り値を格納する変数 = 関数名(引数)

 

なーんだ。

関数って難しい名前にしてるだけで、機能を持ったもののことか。

ちなみに関数って英語でなんていうんだろう。

関数に相当する英単語を調べたらまさか.. .. .. ..function 

つまるところ関数とは感覚で感じてた通り機能だったのである。

 

演習問題

組み込み関数 len(length?)を用いてリストにある要素数を出力

length = [1,3,5,7,9]

x = len(length)

print(x)

 

length(入力値)が、変数x内でlen関数により処理され、処理結果が代入され戻り値として出力される。

なので、出力値は5

 

今日はここまで

 

python for文:python学習メモ

どうも皆さんごきげんよう

365日後にペンテスターになるエンジニアです。

次の転職先でpythonlinuxを使うみたいなので、基礎の基礎から学習している段階です。

 

さて、今回はpythonのfor文。

 

Break=繰り返し処理を中止

For文の中で使うと、任意の場所で繰り返し処理が中断される

---------------------------------------------------------------------------------------

words = ["Englsih", "French", "Japanese"]

 

for w in words:

  print(w)

  

処理結果:

Englsih

French

Japanese

 

---------------------------------------------------------------------------------------

words = ["Englsih", "French", "Japanese"]

 

for w in words:

  print(w)

  break

 

処理結果:

Englsih

 

---------------------------------------------------------------------------------------

EnglishとFrenchを処理させたい場合はどうする?

→if文を使う

 

for w in words:

  print(w)

  if w == "French"

  break

 

これでいけるだろ!

しかし、そう、皆さんお気づきの通り….

 

  File "/Users/alex/Desktop/for/for.py", line 7

    if w == "French"

                    ^

SyntaxError: invalid syntax

 

あれ、なんでだ?、そうだ!int型とかstr型とかあったよな??

そのせいじゃない?

いや、違うっぽいな。なんとなく違うことが勘でわかる。。

文字列と数値だとやり方が違うのか?(参考にしてた例文は数値を処理していた)

 

for num in range(100):

  print(num)

  if num == 50

  break

 

これでどうだ!!....

  File "/Users/alex/Desktop/for/for.py", line 9

    if num == 

                     ^

SyntaxError: invalid syntax

 

って、なんでだ。

何が違う?

あ、なんか閃いた気がする。そもそもエラーの場所をよくわからん記号でvs codeが教えてくれてる。

~こんな感じの赤色で。

 

for w in words:

  print(w)

  if w == "French":

  break

 

これでいけるだろ:)

……

 

  File "/Users/alex/Desktop/for/for.py", line 8

    break

    ^

IndentationError: expected an indented block

 

何っ?!

いや、答えはもうすぐそこだ。今度こそわかったぞ。

for w in words:

  print(w)

  if w == "French":

    break

 

……

処理結果:

Englsih

French

 

!!!!!!

気持ち良い〜〜!!

Googleに頼らないで気付けたから倍気持ち良い!!

 

エラーの問題は解決できて何より。

次回へ続く。

 

365日後にペンテスターになるエンジニア

どうも初めまして。

365日後にペンテスターになるエンジニアです。

 

このブログでは、経験浅NWエンジニアから某大手ISPのセキュリティエンジニアになり、そこからペネトレーションテスターとして活躍するまでの軌跡を日々残していくためのものです。

業界の先輩方、これから参入してくる方々、Hello world

 

さて、このブログでは

python, Linux, OSCP, CEH,

・多言語学

・仕事で学んだこと

などなど、主に忘備録として綴っていこうと思います。

 

以上が本ブログの目的で、ここからは私の現職について書きます。

 

私は新卒で就職してから紆余曲折あり、何社か渡り歩いた上で現在はNWエンジニアとして客先に常駐し働いています。(NWエンジニアとは名ばかりで、実際はカスタマーサービス)ですが、夜勤もあるくせに給料が安すぎることに加えて、他の現場と比べてめちゃくちゃ高稼働(笑)(職場の先輩は皆んな体と心を壊しながら働いている激ヤバ現場)

そこで、元々セキュリティ分野に進みたかったので先日、転職を決意しました。

そこで、なんと、、、、

某大手のISPのセキュリティ部門に採用されることができました!!

しかも、ゆくゆくはペンテスターは目指せるポジションで。

しかもしかも、給料アップにも成功!

しかし、自分には第一線で活躍できるほどのスキルは現状持ち合わせてないし、生き残るためには最速で第一線にいかなければ、待っているのは死。

というわけで、学習の定着率、効率を上げるためにも本ブログを忘備録として活用することにしました。

 

ただ、忘備録だけではなく、学習の過程で起きるあるある・業界で起きるあるあるなども書き留め、くすくすと笑って読んで貰えるようなブログにしていきたいと思います。

 

それでは皆さん have a good engineer life :)