Pythonの勉強しようとしたらminicondaが死んでいたという件

こんにちは。

外に遊びにいけないので家でパソコンをいじることになりました。動画とか観るのもあきてきたため、やはり生産性のあることをやったほうがいいと思います。Pythonの勉強をしようとしてとりあえずminicondaをアップデートしようとしたりjupyter notebookを起動しようとしたらエラーが出ました。

ImportError: dlopen(/Users/○○/miniconda3/lib/python3.7/lib-dynload/_ctypes.cpython-37m-darwin.so, 2): Library not loaded: @rpath/libffi.6.dylib
Referenced from: /Users/○○/miniconda3/lib/python3.7/lib-dynload/_ctypes.cpython-37m-darwin.so
Reason: image not found

というわけでlibffi.6.dylibというのがないらしいです。

(base) lib $ ll libffi*
-rwxrwxr-x 1 ○○ ×× 37892 6 27 21:18 libffi.7.dylib*
-rw-rw-r-- 2 ○○ ×× 42792 4 23 06:06 libffi.a
lrwxr-xr-x 1 ○○ ×× 14 6 27 21:18 libffi.dylib@ -> libffi.7.dylib

libffi.6.dylibってのがないけどlibffi.7.dylibというのがあるらしい。で、バージョン番号を指定してないやつは新しいと思われる7の方にシンボリックリンクが張られている。

(base) lib $ ln -s libffi.7.dylib libffi.6.dylib

とやったら動きました。libffi-3.3の管理が変わったとかそんなことが

https://github.com/conda/conda/issues/9899

にありましたの参考迄に。前のバージョンをしばらく放っておいてアップデートするとこの問題が出るようです。

Python周りはオリジナルのやらhomebrewのやらpipやらanacondaやらでごちゃごちゃしているのであまりシェルでいじりたくないのですが、anaconda(minicondaだけど)の在りかがわかったからもう大丈夫かな?

cronの設定ではまったので報告するよ

こんにちは。

LinuxのcronでNHKの語学ストリーミングを録音して勉強しています。gogakuondemand.rbとかです。作者の人には大変感謝しております。

自宅においてあるraspbianのやつと、ほかで動かしているDebianのやつで同時に動かしてリダンダンシーを確保している(録音忘れを回避している)のですが、どっちも忘れたころにcronの設定を変更する必要があり、混乱が生じたので整理してみました。

  1. ユーザレベルでのcronの設定
  2. rootでの設定

1.ユーザレベルでのcronの設定

これは $ crontab -e を編集することになります。設定ファイルの保存先は /var/spool/cron/crontab の下にある各ユーザのファイルです。このディレクトリにはrootユーザじゃないと入れません。設定ファイルがユーザの見えるところにすぐないので、なんで設定してないのに動くんだ? と不思議に思ってましたが結局これが理由でした。

2.rootでの設定

cron(8)によると基本的には/etc/crontabを設定しろと書いてあります。Debianでは、このファイルの中に/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly のディレクトリ中のファイルを処理するような初期設定がすでに記載されています。またこれもDebian specificとありますが、/etc/cron.dのファイルも読みに行くことになっています。もし/etc/cron.d にファイルを置くときは任意のcrontabの書式のファイルでいいんだけどpermissionは644にしてownerをrootにする必要があります。

あとユーザレベルのcronじゃないのでここにおくファイルはどのユーザが実行するかの設定を中に記載しないといけません。

まとめ

結局raspbianの方はユーザ側で設定していて、もう一台のDebian Linux boxの方はcron.dにファイルをおいていました。書式をすっかり忘れてて、なんでこのシステムではcronを設定してないのにちゃんと仕事が終わってるんだろうと不思議に思ってたというわけ。Linuxだと何かやるのに似た方法がいっぱいあるから、システムポリシーをよく考えておかないとはまりますね。あとcronの設定ファイルの中ではPATHがほとんど設定されてないので変なとこのプログラムが実行されたりするので注意が必要です。

Macのpython環境をなおしたよ

こんにちは。

うちのMacでは前にpythonのコースを受講したときなんかで使ったminicondaというのが入っていて、あといろいろblogとかを参考にしたpyenvとかが入っています。Macなのでhomebrewは普通に使っています。

しばらくPython使っていなくって、久しぶりに勉強しようとしたら切り替え方がわからなくなっていたので、最初から戻って整理することにしました。

Macのシステムに普通に入っているpythonはpython 2.7です。

~ $ /usr/bin/python  Python 2.7.10 (default, Feb  7 2017, 00:08:15)  [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin  Type "help", "copyright", "credits" or "license" for more information. 

でもって自分のシステムにはhomebrew経由でpython3が入ってました。

~ $ /usr/local/bin/python3
 Python 3.7.6 (default, Feb 24 2020, 13:34:17)
 [Clang 9.0.0 (clang-900.0.39.2)] on darwin
 Type "help", "copyright", "credits" or "license" for more information.

自分がやりたいのはいろいろなpythonのライブラリとかを簡単にインストールして、こいつらがけんかしないことです。

Macを使ってデータサイエンスをしたい人はpyenvというのを入れてからAnacondaというpythonディストリビューションを入れるのが普通のようで、私もそうやっていました。しかししばらく使っていなかったら切り替え方を忘れたのと、どうも環境ごとにえらいファイルサイズがでかそうなので、シンプルにしたくなりました。あとAnaconda自体がギガバイト単位のディストリビューションでかついろいろ周辺のプログラムもわざわざ含んであってややこしいらしい。

というわけでminicondaというAnacondaの最小セットを入れることにしました。オリジナルのここ(https://conda.io/projects/conda/en/latest/user-guide/install/macos.html)の通りに実行します。

minicondaは(anacondaも多分そう)ホームディレクトリの下にインストールされます。MacOSだったら /Users/ユーザ名/miniconda3 です。インストールのスクリプトではパスの設定でminiconda3のディレクトリが先に指定されます。

~ $ bash Miniconda3-latest-MacOSX-x86_64.sh
~ $ conda update conda

~ $ conda install jupyter jupyter_console notebook

最後のはjupyter notebookで勉強しようと思ったから追加したやつです。

(base) ~ $ python
 Python 3.7.4 (default, Aug 13 2019, 15:17:50)
 [Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
 Type "help", "copyright", "credits" or "license" for more information.

となってインストールできました。この状態で brew doctorやるとpythonのリンク先が異なる旨のエラーがでますが、しょうがないです。

パッケージは conda install で行うことにします。pip installでもできるらしいのですがどこに入るのかおっかないので試していません。

もっとばりばり開発するようになったらまた環境を考えよう。

PC買った。Linux入れた。ドライバではまったので報告するよ

こんにちは。

ネットをうろうろしていたらThinkCentre M715q Tinyというやつが安いらしいので、デスクトップのmac Miniを入れ替えるために購入しました。

最新の構成でRyzen 2400Eとかいうのが入っているみたいです。グラフィックコアはvega 11とか書いてあります。メモリは8GBの、SSDは128GBのを買って自分で増やしました。メモリ16GBとSATA SDD 500GBを追加したった。

Windows10を初めていじりますが、Linuxも入れたかったので前から使っているDebianを入れました。BusterというやつでDebian10というやつですね。

知ってる人は知ってると思いますが、Linuxの鉄則は初物に飛びつかないことです。今回もやはりはまりにはまって対応に成功したので報告しておきます。

今回の問題は、無線LAN環境しかないのに無線LANのドライバが入らないこと。公式サイトのDVDイメージをディスクに焼いて開始しますが、GUI環境になりません。当然無線ネットワークもつながらないです。困った。

日本語のエラーメッセージが豆腐で出てきても困るので英語でインストールしてみた。

  1. グラフィックドライバ
    • debian 10はカーネルが4.19系だそうです。Radeon Vega RX11はカーネルレベルでは対応しているようです。
    • 親切な人が対応を記載してくれてた(ここ
    • Waylandは対応していなくてX.orgに切り替える必要があるらしい。/etc/gdm3/daemon.conf を設定。WaylandEnable = false とする。
    • firmware-linuxパッケージはネット環境なしではどうせ入らないだろうからあきらめた。そのパッケージの内容をみて、https://packages.debian.org/ja/buster/firmware-amd-graphics を入れた。ネット環境ができていないので、隣のパソコンからUSBメモリ経由でコピー。
    • # dpkg –install firmware-amd-graphics_20190114-2_all.deb
    • 再起動で動いた。うれしい。
    • OpenGLのドライバもこのページにのっとり入れてみた。
  2. 無線LAN (RTL8821CE)のドライバ
    • ネットでは情報が錯綜している。dkmsというのがあればカーネルごとのドライバをつくらなくていいらしい。というわけでdkmsをaptで入れる。幸いなことにcd-romから入れることができた。# apt install dkms
    • Makefileを編集して・・・という情報があったけどこれはうちでは動作しなかった
    • $ git clone https://github.com/tomaspinho/rtl8821ce.git でもらってきたファイルを隣のパソコンでzipで圧縮して新しい機械へ。
    • さっきもってきたファイルのディレクトリに降りて行って
    • # ./dkms-install.sh
    • なんかやったあとドライバが入った。再起動したら無線LAN見えるようになった
    • aptで全く更新されないと思ったらレポジトリがcd-romになってたので適当に設定して終了。
  3. 日本語化
    • # apt install uim mozc-server uim-mozc
    • # apt install fonts-mplus
    • トラブったときにlocaleが日本語だといろいろな情報が豆腐になるので英語ロケールのまま使う
    • フォントの指定はCUIでいろいろやらずなんとなくGUIでやってうまくいっている
    • # apt install manpages-ja
    • alias jman=’man -L ja_jp’
    • manで英語のmanpage, jmanで日本語のmanpage出て便利
  4. Emacsいれた
    • # apt install emacs
  5. R入れた
    • # apt install r-core
    • /etc/apt/sources.listにcranのミラーを入れるとRが最新になった
      • deb https://cloud.r-project.org/bin/linux/debian buster-cran35/
  6. Rstudio入れた
    • # apt install gdebi-core
    • rstudio-1.2.5019-amd64.deb をダウンロードしてくる
    • # dpkg –install rstudio-1.2.5019-amd64.deb
    • なんかaptの整合性がとれてなくてエラー出たけど解除できて入った
  7. sshd入れた
    • /etc/ssh/sshd_config 編集, rootで入れないように
    • 同じ机で使っているノートPCとsubnetが違っていてアクセスできなかった
  8. mew入れた
    • emacsのパッケージシステムから入れてみたらmew周りのバイナリがインストールされない
    • aptで入れた
    • # apt install mew gnupg2
    • Hyperestraierを入れたらsegmentation faultが出る
    • なんとなくmew7.0 ではnot recommendとなってるらしい。
    • どうやってメールの検索していいかわからない

これからお勉強する予定です。/etc/init.d っていうのは古いらしくってsystemdになっているらしいし、ログファイルのありかがよくわかんないし・・・