Mac に React.js をインストールする方法

  1. Homebrew で node をインストール
  2. ディレクトリを作成して create-react-app をインストール
  3. React プロジェクトの作成
  4. React プロジェクトの実行

1. Homebrew で node をインストール

% brew update
% brew install node
% node --version
v16.10.0

2. ディレクトリを作成して create-react-app をインストール

% mkdir React
% cd React
% 

コマンド「npm install -g create-react-app」を実行します。

% npm install -g create-react-app
npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.

added 67 packages, and audited 68 packages in 4s

4 packages are looking for funding
  run `npm fund` for details

2 high severity vulnerabilities

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

いくつか警告が出ている様ですがとりあえず無視して進みます。

3. React プロジェクトの作成

例として「awesome-project」という React プロジェクトを作成するとします。

コマンド「create-react-app awesome-project」を実行します。

% create-react-app awesome-project

Creating a new React app in /Users/ユーザー名/React/awesome-project.

Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...


added 1934 packages, and audited 1935 packages in 2m

150 packages are looking for funding
  run `npm fund` for details

10 moderate severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

Initialized a git repository.

Installing template dependencies using npm...

added 56 packages, and audited 1991 packages in 7s

151 packages are looking for funding
  run `npm fund` for details

10 moderate severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.
Removing template package using npm...


removed 1 package, and audited 1990 packages in 3s

151 packages are looking for funding
  run `npm fund` for details

10 moderate severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

Created git commit.

Success! Created awesome-project at /Users/ユーザー名/React/awesome-project
Inside that directory, you can run several commands:

  npm start
    Starts the development server.

  npm run build
    Bundles the app into static files for production.

  npm test
    Starts the test runner.

  npm run eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd awesome-project
  npm start

Happy hacking!
% 

4. React プロジェクトの実行

% cd awesome-project
% npm start

「awesome-project」フォルダの中に入り、コマンド「npm start」を実行します。

ターミナルの表示が下記に変わり、ブラウザが起動します。

Compiled successfully!

You can now view awesome-project in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://192.168.3.3:3000

Note that the development build is not optimized.
To create a production build, use npm run build.

ブラウザで上記の表示が出れば無事起動できています。

Control+C でサーバーを停止します。

【Ubuntu】sudo ユーザーを作成する方法

ユーザーの作成

root ユーザーに昇格します。

ubuntu@xx1-234-56789:~$ sudo su -

「adduser ユーザー名」でユーザーを作成します。

root@xx1-234-56789:~# adduser adminvps
Adding user `adminvps' ...
Adding new group `adminvps' (1002) ...
Adding new user `adminvps' (1002) with group `adminvps' ...
Creating home directory `/home/adminvps' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for adminvps
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] Y
root@xx1-234-56789:~#

sudo グループに追加

このユーザーで sudo コマンドが使える様、sudo グループに追加します。

root@xx1-234-56789:~# gpasswd -a adminvps sudo
Adding user adminvps to group sudo
root@xx1-234-56789:~#

「exit」で root から出ます。

root@xx1-234-56789:~# exit
logout
ubuntu@xx1-234-56789:~$

今追加したユーザーで接続してみます。質問に「yes」と回答してパスワードを入力すると無事新ユーザーで接続ができます。

ubuntu@xx1-234-56789:~$ ssh adminvps@xx1-234-56789.vs.sakura.ne.jp
The authenticity of host '@xx1-234-56789 (127.0.1.1)' can't be established.
ECDSA key fingerprint is QWE123:QWERTYUIOPASD+QWERTYUIOP+ZXCVBNM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'xx1-234-56789' (ECDSA) to the list of known hosts.
adminvps@xx1-234-56789's password: 
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-70-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri Apr  9 19:43:32 JST 2021

  System load:  0.0               Processes:             119
  Usage of /:   2.6% of 94.43GB   Users logged in:       1
  Memory usage: 18%               IPv4 address for ens3: 133.125.39.81
  Swap usage:   0%

 * Introducing self-healing high availability clusters in MicroK8s.
   Simple, hardened, Kubernetes for production, from RaspberryPi to DC.

     https://microk8s.io/high-availability

0 updates can be installed immediately.
0 of these updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


SAKURA internet [Virtual Private Server SERVICE]

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

adminvps@xx1-234-56789:~$ 

さくらレンタルサーバーで Python3 を再インストール

さくらのレンタルサーバに一度 Python3 をインストールしたのですが、mysqlclient をインストールするために Python3 を入れ直す必要があったのでそのステップを書きます。

▶︎さくらのレンタルサーバ スタンダードのお申込みはこちら(公式ページ)

また、Python の利用には VPS の方が圧倒的におすすめなので下記の記事も参考にしてみてください。

▶︎レンタルサーバーで Python は茨の道!VPS が楽得でおすすめ

では再インストールのステップを書いていきます。

アンインストール(仮)

まずは既存の Python3 を一旦アンインストールします。インストール先のフォルダを削除する必要があると思いますが、削除は怖いので一旦フォルダ名だけ変えます。

下記の通りパスが通っている状態です。

% which python3
/home/abcabc/local/python/bin/python3
% which pip3
/home/abcabc/local/python/bin/pip3

フォルダ名が変わったため、パスが通っていない状態になりました。

% which python3
python3: Command not found.
% which pip3
pip3: Command not found.

ダウンロード〜インストール

ここから先は基本的に下記の記事でやった内容をなぞるだけですが、進めていきます。

ダウンロード

% mkdir -p ~/work/python3
% cd ~/work/python3
% wget --no-check-certificate https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz

解凍

% tar zxf Python-3.9.0.tgz

インストール

% cd ./Python-3.9.0
% ./configure --prefix=$HOME/local/python/ --with-system-ffi LDFLAGS="-L $HOME/local/lib/" CPPFLAGS="-I $HOME/local/include/"
%  make
%  make install

ここまで完了したら、以前通したパスが生きているので下記の通り which コマンドで既に確認できる状態です。

% which python3
/home/abcabc/local/python/bin/python3
% which pip3
/home/abcabc/local/python/bin/pip3

使い終わったフォルダとファイルの削除

最後にファイルダウンロード用に作ったフォルダと、既存の Python3 が入っていたフォルダ(の名前を変えたもの)を削除します。

% rm -r ~/work/python3
% rm -r ~/local/python_20210103

ついでに

環境変数の追加

初めて Python3 をインストールした時はスルーしていましたが、どうやら下記を .cshrc に追記した方が良いみたいなのでこのタイミングで追記しておきます。

setenv  PYTHON $HOME/local/python/lib
setenv  PYTHONPATH $HOME/local/python/lib/python3.9/site-packages

requests モジュールをインストール

元々インストールしてあった requests モジュールを再度インストールします。

% pip3 install requests

▶︎さくらのレンタルサーバ スタンダードのお申込みはこちら(公式ページ)

▶︎初めから Python3 系を使えるレンタルサーバー 7 選

【Python3】_ctypes と libffi のインストールに苦しんだ記録

経緯

さくらのレンタルサーバ上で MySQL のデータベースを使えるので、それを Python で操作したいと思ったのが始まりです。

mysqlclient を使えば良いらしかったので「pip3 install mysqlclient」を実行するも、エラーが出て成功しない。

なんとかインストールを終えるまでの過程が文系の私には?だいぶややこしかったのでその記録を書き留めます。

  1. 問題発生1(No module named '_ctypes')
  2. 調査と原因1(libffi が無い)
  3. libffi をインストール(sudo は使えない)
  4. 問題発生2(INFO: Could not locate ffi libs and/or headers)
  5. 調査と原因2(./configure 文の修正)
  6. 解決(mysqlclient インストール成功)

問題発生1(No module named '_ctypes')

上記の通り「pip3 install mysqlclient」を実行したところ、下記のエラーが出てインストールが失敗しました。

ModuleNotFoundError: No module named '_ctypes'

直訳すると「_ctypes モジュールがありません」

_ctypes モジュールとはなんぞや。そしてそれはどこにあるのでしょうか。。。

調査と原因1(libffi が無い)

取り敢えず知識ゼロから出来ることは、情報の海に身を投げてなんとなくわかるまで溺れること。。。調べた結果断片的ですが自分の理解できる範囲で下記の情報が得られました。

  • _ctypes と libffi
    • _ctypes は C 言語で書かれたライブラリを Python から利用するためのモジュールであり、libffiに依存している。
    • ソースからPythonをビルドする際、libffiが見つからない場合は _ctypes のビルドはスキップされる。
    • _ctypes がビルドされていない Python から _ctypes を利用しようとすると、当該エラー(ModuleNotFoundError: No module named '_ctypes')が発生する。
  • 原因
    • つまり、libffi がインストールされていない状態で Python をインストールしたため、_ctypes のビルドがされていなかった。
  • 解決方法
    • 当該エラーを解消するには、libffi をインストールした上で Python を再ビルド・再インストールする必要がある。

libffi をインストール(sudo は使えない)

「sudo apt-get install -y libffi-dev」というコマンドが出てきましたが、さくらのレンタルサーバー(スタンダード)では管理者権限が与えられていないので sudo が使えません。

% sudo apt-get install -y libffi-dev
/usr/local/bin/sudo: Permission denied.

この通り、拒否されてしまいます。諸々調べた結果下記の方法でインストール出来ました。

問題発生2(INFO: Could not locate ffi libs and/or headers)

めでたく libffi をインストール出来たので Python をインストールし直しました。が、念のため make のログを確認したところ下記を発見。

INFO: Could not locate ffi libs and/or headers

Failed to build these modules:
_ctypes               _zoneinfo 

直訳すると「ffi libs およびヘッダーが見つからず _ctypes モジュールと _zoneinfo モジュールをビルド出来ませんでした。」とのこと。ショック。

しょうがないのでとりあえず続けて make install しましたが、当然 _ctypes モジュールが無いので「pip3 install mysqlclient」を実行しても前回と全く同じエラーで失敗します。

ModuleNotFoundError: No module named '_ctypes'

調査と原因2(./configure 文の修正)

また海に放り出されました。今回は「INFO: Could not locate ffi libs and/or headers」の文言を頼りに調べました。

こちらのページ(英語)を見たところ、どうやら CPPFLAGS、LDFLAGS、PKG_CONFIG_PATH の設定が必要みたいです。PKG_CONFIG_PATH の設定は libffi のインストールの時に行っていたので、取り敢えず CPPFLAGS と LGFLAGS だけでやってみます。

python-3.9.0.tgz は残して他を消し、再度下記の「./configure」文で Python のインストールを試してみます。

./configure --prefix=$HOME/local/python/ --with-system-ffi LDFLAGS="-L $HOME/local/lib/" CPPFLAGS="-I $HOME/local/include/"
項目雑なメモ
--prefixPython3 をインストールする場所
--with-system-ffilibffi のシステムバージョンへの接続を有効にするスイッチ。
CPPFLAGSCプリプロセッサのオプション
include パスを入れるっぽい?
LDFLAGSリンク用のディレクトリを指定する。
lib フォルダを入れるっぽい?

解決(mysqlclient インストール成功)

上記の「./configure」文のあとで make を実行しました。そしてログを確認すると下記の通り _ctypes のエラーはなくなりました。_zoneinfo は何かよくわかりませんし特に今回必要だとも思ってないので無視します。

Failed to build these modules:
_zoneinfo

今回は「pip3 install mysqlclient」も無事成功しました。

% pip3 install mysqlclient
Collecting mysqlclient
  Using cached mysqlclient-2.0.3.tar.gz (88 kB)
Using legacy 'setup.py install' for mysqlclient, since package 'wheel' is not installed.
Installing collected packages: mysqlclient
    Running setup.py install for mysqlclient ... done
Successfully installed mysqlclient-2.0.3
WARNING: You are using pip version 20.2.3; however, version 20.3.3 is available.
You should consider upgrading via the '/home/xxxxxx/local/python/bin/python3.9 -m pip install --upgrade pip' command.
% 

さくらレンタルサーバーに libffi をインストールする

  1. SSH でサーバーに接続
  2. ファイルのダウンロードと解凍
  3. インストール
  4. インストール後の設定

SSH でサーバーに接続

% ssh abcabc@abcabc.sakura.ne.jp
abcabc@abcabc.sakura.ne.jp's password: 

ファイルのダウンロードと解凍

ダウンロード用のフォルダを作成

ファイルをダウンロードする前に、ダウンロード用のフォルダを作ります。下記のコマンドで「work」フォルダとその配下に「libffi」フォルダを作成します。

% mkdir -p ~/work/libffi

wget でファイルをダウンロード

作成した「libffi」フォルダに移動して、圧縮ファイルをダウンロードします。

% cd work/libffi
% wget ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz

*初めは最新の「libffi-3.3.tar.gz」で進めたのですが後述の make のところで下記のエラーを返され、すぐに原因も分からなかったので一旦全部ファイルを削除して「libffi-3.2.1.tar.gz」で再チャレンジしました。

gcc: warning: '-x assembler-with-cpp' after last input file has no effect
gcc: No input files specified
*** [libffi.map] Error code 1

上記の wget コマンドを実行してから ls を実行すると圧縮ファイルがダウンロードされたのが確認できます。

% ls
libffi-3.2.1.tar.gz
% 

ファイルを解凍する

ダウンロードした圧縮ファイルを解凍します。

% tar xvfz libffi-3.2.1.tar.gz

ファイルが解凍され、元々ダウンロードした圧縮ファイルとは別に「libffi-3.2.1」という名前のフォルダが作成されています。

インストール

「libffi-3.2.1」のフォルダへ移動し ./configure を実行します。prefix でインストール先を指定します。

% cd libffi-3.2.1
% ./configure --prefix=$HOME/local/libffi/3_2_1

実行するとプロセスが走ってドバドバとターミナルに表示されるので入力待ちになるのを待ちます。

make そして make install を順に実行します。

% make
% make install

.configure の prefix で指定した場所にインストールされました。

インストール後の設定

シンボリックリンクの作成

% mkdir -p ~/local/include
% ln -s $HOME/local/libffi/3_2_1/lib/libffi-3.2.1/include/ffi.h $HOME/local/include/
% ln -s $HOME/local/libffi/3_2_1/lib/libffi-3.2.1/include/ffitarget.h $HOME/local/include/

% mkdir -p ~/local/lib
% ln -s $HOME/local/libffi/3_2_1/lib/libffi.a $HOME/local/lib/
% ln -s $HOME/local/libffi/3_2_1/lib/libffi.la $HOME/local/lib/
% ln -s $HOME/local/libffi/3_2_1/lib/libffi.so $HOME/local/lib/
% ln -s $HOME/local/libffi/3_2_1/lib/libffi.so.6 $HOME/local/lib/

% mkdir -p ~/local/lib/pkgconfig/
% ln -s $HOME/local/libffi/3_2_1/lib/pkgconfig/libffi.pc $HOME/local/lib/pkgconfig/

上記を実行すると下記の様に local 配下に include、lib、lib > pkgconfig が作成され、その配下のシンボリックリンクも確認できます。

環境変数の設定

シンボリックリンクを作成したのでそれぞれ LD_LIBRARY_PATH と PKG_CONFIG_PATH に追加します。他のソースをビルドするときやコマンド実行するときに役立ちます。

シェルの種類ユーザプロファイル
Bourne シェル (sh) または Korn シェル (ksh).profile
Bourne Again シェル (bash).bash_profile
C シェル (csh).login と .cshrc
TC シェル (tcsh).tcshrc と .cshrc
Z シェル (zsh).zlogin と .zshrc

今回はサーバーのシェルが csh なので .cshrc を編集して環境変数を設定します。

.cshrc の編集

% cd ~/
% vi .cshrc

.cshrc に下記を追記します。

setenv  LD_LIBRARY_PATH $HOME/local/lib
setenv  PKG_CONFIG_PATH $HOME/local/lib/pkgconfig

.cshrc で追記した内容を反映させます。

% source ~/.cshrc
% rehash

echo コマンドで確認すると、指定したパスが表示されます。

% echo $LD_LIBRARY_PATH
/home/abcabc/local/lib
% echo $PKG_CONFIG_PATH
/home/abcabc/local/lib/pkgconfig

以上で libffi のインストール作業は完了です。

LD_LIBRARY_PATH と PKG_CONFIG_PATH

LD_LIBRARY_PATH 変数

LD_LIBRARY_PATHは、アプリケーションがリンクされている動的共有ライブラリを検索する際の対象ディレクトリを動的リンクローダーに指示します。複数のディレクトリをコロン (:) で区切ったもので、コンパイルされた検索パスと標準の場所(大抵 /lib、/usr/lib 等)の前に検索されます。

PKG_CONFIG_PATH 変数

pkg-config は、プログラムのコンパイルとシステムにインストールされているライブラリとの接続に必要な情報を提供します。
この情報は .pc ファイルに保存されており、pkg-config ツールで認識されている特定の場所にあります。

pkg-config が .pc ファイルを検索する際、デフォルトでは /usr/lib/pkgconfig と /usr/share/pkgconfig を検索します。しかし、一部のローカルモジュールは /usr/local などの別のプレフィックスにインストールされる場合があるため、PKG_CONFIG_PATH 変数で検索対象のパスを追加します。

さくらのレンタルサーバに Python3 をインストールする方法

さくらのレンタルサーバにはデフォルトで Python2 系のみ入っているのですが、残念ながらPython2 は 2020 年にサポートが終了していてもう推奨されていません。

というか Python2 だ Python3 だ以前にレンタルサーバーの Python で色々やろうという考えが半ば間違いみたいな部分もありますが。笑

▶︎【7社比較】レンタルサーバーの大クセ Python は本当は使いづらい!?
▶︎レンタルサーバーで Python は茨の道!VPS が楽得でおすすめ

とはいえいろんな理由でまださくらのレンタルサーバで頑張りたい方のために、Python3 系をインストールする方法を紹介します。

さくらのレンタルサーバに Python3 をインストールする

では本編、さくらのレンタルサーバーに Python3 をインストールする方法を案内します。

ちなみに私が使っているのはさくらのレンタルサーバ スタンダードで、ローカルは Mac で作業します。

▶︎さくらのレンタルサーバ スタンダード

  1. ssh でさくらレンタルサーバにログイン
  2. ダウンロード用のフォルダを作成
  3. wget でファイルをダウンロード
  4. ファイルを解凍する
  5. インストール
  6. パスを通す
  7. 設定を反映
  8. パスが通ったことを確認して完了
  9. さくらのレンタルサーバ以外の選択肢

1. ssh でさくらレンタルサーバにログイン

まずはターミナルを立ち上げ、ssh でさくらレンタルサーバにログインします。

Last login: Sun Oct 11 10:43:12 on ttys000
% ssh XXXXXX@XXXXXX.sakura.ne.jp
XXXXXX@XXXXXX.sakura.ne.jp's password: 

2. ダウンロード用のフォルダを作成

ファイルをダウンロードする前に、ダウンロード用のフォルダを作っておきます。下記のコマンドで「work」フォルダとその配下に「python3」フォルダを作成します。

% mkdir -p ~/work/python3

FTPクライアントで見てみると下記の様に各フォルダが作成されているのが確認できます。

3. wget でファイルをダウンロード

% cd ~/work/python3
% wget --no-check-certificate https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz

ファイルがダウンロードされ、下記の様に入力待ちになれば無事ダウンロード完了です。

% wget --no-check-certificate https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
--2020-10-11 12:39:03--  https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
Resolving www.python.org... 151.101.88.223, 2a04:4e42:15::223
Connecting to www.python.org|151.101.88.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26724009 (25M) [application/octet-stream]
Saving to: 'Python-3.9.0.tgz'

Python-3.9.0.tgz    100%[=====================>]  25.49M  43.9MB/s   in 0.6s   

2020-10-11 12:39:03 (43.9 MB/s) - 'Python-3.9.0.tgz' saved [26724009/26724009]

% 

念のため覗いてみると、先ほど作成した「python3」フォルダのなかに「Python-3.9.0.tgz」のファイルがダウンロードされているのが分かります。

4. ファイルを解凍する

% tar zxf Python-3.9.0.tgz

ファイルが解凍され、元々ダウンロードした圧縮ファイルとは別に「Python-3.9.0」という名前のフォルダが作成されています。

5. インストール

解凍されたフォルダ「Python-3.9.0」に移動します。

% cd ./Python-3.9.0

次に ./configure を実行しますが、その際 prefix を使ってインストールするディレクトリを指定します。

% ./configure --prefix=$HOME/local/python/ --with-system-ffi LDFLAGS="-L $HOME/local/lib/" CPPFLAGS="-I $HOME/local/include/"

*--with-system-ffi 以降の部分は無くても Python3 のインストールはできますが、後々 _ctypes の問題があったので追記しました。

実行するとプロセスが走ってドバドバとターミナルに表示されますが、下記が表示されて入力待ちの状態になったら完了です。

creating Modules/Setup.local
creating Makefile

「make」を実行します。

%  make

しばらくプロセスが走るので入力待ちになるまで待ちます。次に「make install」を実行します。

%  make install

またプロセスが走るので最後下記の様な表示が出て入力待ちになるまで待ちます。

Installing collected packages: setuptools, pip
  WARNING: The script easy_install-3.9 is installed in '/home/XXXXXX/local/python/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip3 and pip3.9 are installed in '/home/XXXXXX/local/python/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-20.2.3 setuptools-49.2.1
% 

実は上のログに2箇所「WARNING」として警告が表示されているのですが、その内容が以下の通り。

WARNING:スクリプトeasy_install-3.9は、「PATH」にない「/home/XXXXXX/local/python/bin」にインストールされています。このディレクトリを「PATH」に追加することを検討してください。
WARNING:スクリプトpip3およびpip3.9は、「PATH」にない「/home/XXXXXX/local/python/bin」にインストールされています。このディレクトリを「PATH」に追加することを検討してください。

これは後ほど .cshrc ファイルを編集して解決します。

local > python というディレクトリが作られ、さらにその配下に様々なフォルダが作られています。

6. パスを通す

python3 と pip3 のインストール自体は完了しましたが、この状態だとまだ python3 や pip3 と言ったコマンドを直接使うことができません。いわゆる「パスが通っていない」状態です。「which」コマンドを実行しても下記の通りエラーが返ってきます。

% which python3
python3: Command not found.
% which pip3
pip3: Command not found.

python3 と pip3 が両方とも「$HOME/local/python/bin」にインストールされている状態です。

.cshrc ファイルを編集することでパスを通しますが、この作業をする前に必ず .cshrc のバックアップをとっておきましょう。

% cd ~/
% vi .cshrc

.cshrc の内容がターミナルに表示されます。

# $FreeBSD: src/share/skel/dot.cshrc,v 1.14.6.1 2008/11/25 02:59:29 kensmith Exp
 $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
#

alias h         history 25
alias j         jobs -l
alias la        ls -a
alias lf        ls -FA
alias ll        ls -lA

# A righteous umask
umask 22

set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)

setenv  EDITOR  vi
setenv  PAGER   more
setenv  BLOCKSIZE       K
setenv  PKG_DBDIR       ~/db/pkg

if ($?prompt) then
        # An interactive shell -- set some stuff up
        set filec
        set history = 100
        set savehist = 100
        set mail = (/var/mail/$USER)
        if ( $?tcsh ) then
                bindkey "^W" backward-delete-word
                bindkey -k up history-search-backward
                bindkey -k down history-search-forward
        endif
endif

このファイルの最後に「set path = ($path $HOME/local/python/bin)」を追記したいのですが、手順が少しややこしいので下記の記事などを参考にしつつ行ってください。

https://www.hpc.co.jp/support/hello_vi_02/

以下の様に、ファイルの一番最後に一行だけ追記しました。

                bindkey "^W" backward-delete-word
                bindkey -k up history-search-backward
                bindkey -k down history-search-forward
        endif
endif
set path = ($path $HOME/local/python/bin)

7. 設定を反映

.cshrc で変更した内容を反映させます。

% source ~/.cshrc
% rehash

8. パスが通ったことを確認して完了

パスを通す前はエラーが返ってきた「which」コマンドですが、今回はきちんと python3、pip3 のパスが表示されます。

% which python3
/home/XXXXXX/local/python/bin/python3
% which pip3
/home/XXXXXX/local/python/bin/pip3
% 

バージョン情報もきちんと表示されます。

% python3 --version
Python 3.9.0
% pip3 --version
pip 20.2.3 from /home/XXXXXX/local/python/lib/python3.9/site-packages/pip (python 3.9)
% 

最後に圧縮ファイルのダウンロードに使ったフォルダとファイルを削除して完了です。

% rm -r ~/work/python3

9. さくらのレンタルサーバ以外の選択肢

冒頭でも触れましたが、Python プログラミングにレンタルサーバーは向いていません

レンタルサーバーと VPS 両方試した上で VPS をお勧めしますので、下記の記事も参考にしていただければと思います。

▶︎【7社比較】レンタルサーバーの大クセ Python は本当は使いづらい!?
▶︎レンタルサーバーで Python は茨の道!VPS が楽得でおすすめ

と同時に、さくらのレンタルサーバーで Python3 をインストールしたみなさんであればもう下記の記事まで突っ走っても良いかもしれないとも思っています。

▶︎さくらレンタルサーバーでスクレイピング定期実行 & DB 保存

熱意に拍手を送ります。

【ターミナル】さくらのレンタルサーバーにSSHでログインする方法

アカウント名、初期ドメイン、パスワードを確認

まずログインに必要な情報を確認しておきます。

  • アカウント名
  • 初期ドメイン
  • パスワード

アカウント名と初期ドメインはさくらのレンタルサーバのコントロールパネルでも確認できます。

▶︎さくらのレンタルサーバ スタンダードのお申込みはこちら(公式ページ)

ターミナルを起動する

ターミナルを起動し、「ssh アカウント名@初期ドメイン」の形式で入力します。

例えば、アカウント名が「abcabc」、初期ドメインが「abcabc.sakura.ne.jp」だった場合、「ssh abcabc@abcabc.sakura.ne.jp」となります。入力して Enter。

% ssh abcabc@abcabc.sakura.ne.jp

初回は下記のようなメッセージが表示され、yes か no を求められますが、yes と入力して Enter で大丈夫です。

The authenticity of host 'アカウント名.sakura.ne.jp (XXX.XX.XXX.XX)' can't be established. ECDSA key fingerprint is XXXXXX:XxXXXxxXX+XXXXXXXXxxxxxxXXxXxxxxXXxXXXX. Are you sure you want to continue connecting (yes/no/[fingerprint])?

yes そして Enterすると下記のメッセージが表示され、続けてパスワードを求められます。

Warning: Permanently added 'アカウント名.sakura.ne.jp,XXX.XX.XXX.XX' (ECDSA) to the list of known hosts.

パスワード入力

下記の様にパスワードを求められるので入力します。(タイプしても表示されないので注意)

abcabc@abcabc.sakura.ne.jp's password: 

ログイン完了

FreeBSD 9.1-RELEASE-p24 (SAKURA17) #0: Thu Feb  5 10:03:29 JST 2015 

Welcome to FreeBSD!

%

上記の様に「%」が表示されたら無事ログイン完了です。

ついでに PHP のバージョンを確認

ログインついでに現在インストールされている PHP のバージョンも確認してみます。コマンド「php --version」を実行します。

% php --version
PHP 7.4.25 (cli) (built: Nov 11 2021 13:56:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.25, Copyright (c), by Zend Technologies
% 

と言うわけで現在は PHP 7.4.25 が入っていますね。

▶︎さくらのレンタルサーバ スタンダードのお申込みはこちら(公式ページ)

Homebrew を使って Macbook に Wget をインストール

OS:Mac OS Catalina バージョン 10.15.4

「brew update」でリスト更新

まずはターミナル上で「brew update」を実行し、Homebrew 自体とインストール可能なソフトウェアのリストを更新します。

~ % brew update
Updated 1 tap (homebrew/core).
==> Updated Formulae
acpica              imagemagick         nss                 solr
atlantis            imagemagick@6       onnxruntime         solr@7.7
efl                 kyma-cli            operator-sdk        stellar-core
evince              lazydocker          pandoc-crossref     terragrunt
exploitdb           lerna               picard-tools        vault
fcct                librsvg             plantuml            vim
firebase-cli        mavsdk              pnpm                vte3
gatsby-cli          mu                  prestosql           watson
helmfile            ncdu                re-flex
hlint               node-sass           redis
~ % 

「brew install wget」で Wget をインストール

ターミナル上で「brew install wget」を実行すると、Wget のインストール処理が始まります。

~ % brew install wget
==> Downloading https://homebrew.bintray.com/bottles/gettext-0.20.2_1.catalina.b
==> Downloading from https://akamai.bintray.com/71/71f4ded03e8258b5e6896eebb00d2
######################################################################## 100.0%
==> Downloading https://homebrew.bintray.com/bottles/libunistring-0.9.10.catalin
==> Downloading from https://akamai.bintray.com/ce/ce746662b98d93511b86920011b5c
######################################################################## 100.0%
==> Downloading https://homebrew.bintray.com/bottles/libidn2-2.3.0.catalina.bott
==> Downloading from https://akamai.bintray.com/09/0908585cca518a83f101b2edc0417
######################################################################## 100.0%
==> Downloading https://homebrew.bintray.com/bottles/openssl%401.1-1.1.1g.catali
==> Downloading from https://akamai.bintray.com/19/1926679569c6af5337de812d86f4d
######################################################################## 100.0%
==> Downloading https://homebrew.bintray.com/bottles/wget-1.20.3_2.catalina.bott
==> Downloading from https://akamai.bintray.com/ef/ef65c759c5097a36323fa9c777564
######################################################################## 100.0%
==> Installing dependencies for wget: gettext, libunistring, libidn2 and openssl@1.1
==> Installing wget dependency: gettext
==> Pouring gettext-0.20.2_1.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/gettext/0.20.2_1: 1,923 files, 18.6MB
==> Installing wget dependency: libunistring
==> Pouring libunistring-0.9.10.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/libunistring/0.9.10: 54 files, 4.4MB
==> Installing wget dependency: libidn2
==> Pouring libidn2-2.3.0.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/libidn2/2.3.0: 70 files, 727.8KB
==> Installing wget dependency: openssl@1.1
==> Pouring openssl@1.1-1.1.1g.catalina.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl@1.1/certs

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

openssl@1.1 is keg-only, which means it was not symlinked into /usr/local,
because macOS provides LibreSSL.

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

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

==> Summary
🍺  /usr/local/Cellar/openssl@1.1/1.1.1g: 8,059 files, 18MB
==> Installing wget
==> Pouring wget-1.20.3_2.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/wget/1.20.3_2: 50 files, 4.0MB
==> Caveats
==> openssl@1.1
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl@1.1/certs

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

openssl@1.1 is keg-only, which means it was not symlinked into /usr/local,
because macOS provides LibreSSL.

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

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

~ % 

入力待ち状態になったら完了です。途中ビールのアイコンが表出されるのかわいいですね。

「wget --version」で確認

インストールが完了した後、ターミナルで「wget --version」を実行すると、Wget のバージョン情報や著作権に関する案内、バグ報告の質問の連絡先が表出されます。

~ % wget --version
GNU Wget 1.20.3 built on darwin19.0.0.

-cares +digest -gpgme +https +ipv6 +iri +large-file -metalink +nls 
+ntlm +opie -psl +ssl/openssl 

Wgetrc: 
    /usr/local/etc/wgetrc (system)
ロケール: 
    /usr/local/Cellar/wget/1.20.3_2/share/locale 
コンパイル: 
    clang -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/usr/local/etc/wgetrc" 
    -DLOCALEDIR="/usr/local/Cellar/wget/1.20.3_2/share/locale" -I. 
    -I../lib -I../lib -I/usr/local/opt/openssl@1.1/include -DNDEBUG -g 
    -O2 
リンク: 
    clang -DNDEBUG -g -O2 -lidn2 -L/usr/local/opt/openssl@1.1/lib -lssl 
    -lcrypto -ldl -lz ftp-opie.o openssl.o http-ntlm.o ../lib/libgnu.a 
    -liconv -lintl -Wl,-framework -Wl,CoreFoundation -lunistring 

Copyright (C) 2015 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 あるいはそれ以降のバージョン
<http://www.gnu.org/licenses/gpl.html>.
このソフトウェアはフリーソフトウェアです。自由に変更、再配布ができます。
法律が許すかぎり、全くの無保証です。

Hrvoje Niksic <hniksic@xemacs.org> によって書かれました。
バグ報告や質問は<bug-wget@gnu.org>へ
~ % 

Homebrew を Macbook Pro へインストール

Homebrew を Macbook へインストールする際のステップです。

OS:Mac OS Catalina バージョン 10.15.4

Homebrew 公式サイトでインストール用スクリプトをコピー&ターミナルへペースト

Homebrew の公式サイトへアクセス。

トップページに表示されているコードをコピーし、ターミナルへペースト&「Enter」
*コードは 2020 年 5 月時点のものです。

~ % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

インストールがスタート

するとまず下記の通りインストール時に何が起こるかの説明が表示されます。

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following existing directories will be made group writable:
/usr/local/bin
/usr/local/lib
/usr/local/share
==> The following existing directories will have their owner set to *****:
/usr/local/bin
/usr/local/lib
/usr/local/share
==> The following existing directories will have their group set to admin:
/usr/local/bin
/usr/local/share
==> The following new directories will be created:
/usr/local/etc
/usr/local/include
/usr/local/sbin
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
==> The Xcode Command Line Tools will be installed.

Press RETURN to continue or any other key to abort

そのままリターンキーを叩くとパスワード確認後インストールへ。他のキーを叩くと切断されます。ということでリターンキーをポチ。

==> /usr/bin/sudo /bin/chmod u+rwx /usr/local/bin /usr/local/lib /usr/local/share
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/bin /usr/local/lib /usr/local/share
==> /usr/bin/sudo /usr/sbin/chown ***** /usr/local/bin /usr/local/lib /usr/local/share
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin /usr/local/share
==> /usr/bin/sudo /bin/mkdir -p /usr/local/etc /usr/local/include /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/etc /usr/local/include /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/sbin/chown ***** /usr/local/etc /usr/local/include /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/etc /usr/local/include /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/mkdir -p /Users/*****/Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Users/*****/Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown ***** /Users/*****/Library/Caches/Homebrew
==> Searching online for the Command Line Tools
==> /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
==> Installing Command Line Tools for Xcode-11.5
==> /usr/bin/sudo /usr/sbin/softwareupdate -i Command\ Line\ Tools\ for\ Xcode-11.5
Software Update Tool


Downloading Command Line Tools for Xcode

上記の最後の行、「Xcode 用のコマンドラインツールをダウンロードしています」で一旦止まりますがそのまま待ちます。

その後下記の様な表示がされます。

Downloading Command Line Tools for Xcode
Downloaded Command Line Tools for Xcode
Installing Command Line Tools for Xcode
Done with Command Line Tools for Xcode
Done.
==> /usr/bin/sudo /bin/rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
Password:

Xcode 用 コマンドラインツールのダウンロード&インストールの完了、そしてパスワードを再度求められます。

パスワードを入力すると再度処理が始まりズラズラっとターミナル上に表出されていきます。

「==> Installation successful!」と表示されてインストール完了

Password:
==> /usr/bin/sudo /usr/bin/xcode-select --switch /Library/Developer/CommandLineTools
==> Downloading and installing Homebrew...
remote: Enumerating objects: 68, done.
remote: Counting objects: 100% (68/68), done.
remote: Compressing objects: 100% (64/64), done.
remote: Total 137483 (delta 5), reused 55 (delta 4), pack-reused 137415
Receiving objects: 100% (137483/137483), 33.39 MiB | 346.00 KiB/s, done.
Resolving deltas: 100% (101071/101071), done.
From https://github.com/Homebrew/brew
 * [new branch]      master     -> origin/master
 * [new tag]         2.3.0      -> 2.3.0
〜一部省略〜
 * [new tag]             2.2.9      -> 2.2.9
HEAD is now at 77e09fc16 Merge pull request #7661 from MikeMcQuaid/man-url-install
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
remote: Enumerating objects: 726765, done.
remote: Total 726765 (delta 0), reused 0 (delta 0), pack-reused 726765
Receiving objects: 100% (726765/726765), 294.50 MiB | 324.00 KiB/s, done.
Resolving deltas: 100% (480049/480049), done.
Tapped 2 commands and 5029 formulae (5,298 files, 322.8MB).
Already up-to-date.
==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics
No analytics data has been sent yet (or will be during this `install` run).

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations

==> Next steps:
- Run `brew help` to get started
- Further documentation: 
    https://docs.brew.sh
~ % 

上記の中盤過ぎに「==> Installation successful!」と表示が出ているので問題なく処理が完了した様です。

「ターミナルで brew help と入力すればいくつか情報が得られるし、https://docs.brew.sh にもより詳細な情報があるよ」とのこと。ちなみに「brew help」を実行すると下記の内容が表示されます。

~ % brew help
Example usage:
  brew search [TEXT|/REGEX/]
  brew info [FORMULA...]
  brew install FORMULA...
  brew update
  brew upgrade [FORMULA...]
  brew uninstall FORMULA...
  brew list [FORMULA...]

Troubleshooting:
  brew config
  brew doctor
  brew install --verbose --debug FORMULA

Contributing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]

Further help:
  brew commands
  brew help [COMMAND]
  man brew
  https://docs.brew.sh

いまいちよく分からないですね!ひとまず一旦無視して追々必要に応じて調べていこうと思います。

「brew --version」で最終確認

ターミナルに「brew --version」と入力して Enter。ちゃんとどのバージョンがインストールされているか表示されています。ということでインストールはOKです。

~ % brew --version
Homebrew 2.3.0
Homebrew/homebrew-core (git revision 2adae5; last commit 2020-05-30)
~ % 

【ターミナル】Mac のログインシェルを zsh に変える

Macbook Pro でターミナルを開いたら下記のメッセージが表示された。

原文:

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

日本語訳:

デフォルトの対話型シェルはzshになりました。
zshを使用する様アカウントを更新するには、 `chsh -s /bin/zsh`を実行してください。
詳細については、https://support.apple.com/kb/HT208050をご覧ください。

つまりどういうこと?

どうやら Mac OS Mojave まではターミナルにログインした時にデフォルトで bash というシェルが使われていたのが、今度から zsh になったのであなたのコンピュータでもそうしませんかということらしい。

シェルとは

シェルとは、ユーザーが入力したコマンドをコンピュータに伝え、OSがそれを実行するプログラム。sh、csh、bash、fish、今回変更を促されている zsh など色々の種類がある。

Apple サポートによると、zsh は sh との互換性が高く、bash とも若干の違いはあるものの、互換性があると言って差し支えないとのこと。まあ、zsh にして問題ないということかな。

chsh -s /bin/zsh の意味

冒頭のメッセージに「chsh -s /bin/zsh」を実行する様書いてあるが、どういう意味なのか。

  • chsh:ユーザーのログイン shell の属性を変える。ログインシェル(ログインして最初に動き出すシェル)を変更する時に使う。
  • -s /bin/zsh:シェルを /bin/zsh に指定する。

つまりそのまま、『ログインシェルを「/bin/zsh」に変更する』という事らしい。

「システム環境設定」から設定する方法

下記のApple 公式サポートページで「デフォルトシェルを変更する方法」の部分を見ると、システム環境設定から変更する方法コマンドラインから変更する方法の両方の記載があります。

zsh を Mac のデフォルトシェルとして使う」(冒頭のメッセージに記載の URL の日本語版)

私の様な初心者にはシステム環境設定の画面の方がなんとなく安心感があるのでこっちの方法で変更しました。

公式サポートの画像の通り「ログインシェル」の部分を「/bin/zsh」に変えたところ、ターミナルを開いても冒頭のメッセージが表示されなくなりました。場合によっては再起動が必要かもしれません。