2020/07/23

tlmgr でインストールができない問題を探ったらcurlのproxyが原因だった件


tlmgr でスタイルファイルをインストールしようとしたら,長い時間待たされた挙げ句,以下のようなエラーが出て止まる.

sudo tlmgr install latexmk  --no-persistent-downloads

/Library/TeX/texbin/tlmgr: TLPDB::from_file could not initialize from: https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/systems/texlive/tlnet/tlpkg/texlive.tlpdb
/Library/TeX/texbin/tlmgr: Maybe the repository setting should be changed.
/Library/TeX/texbin/tlmgr: More info: https://tug.org/texlive/acquire.html

多分proxyの問題だろうと思い,以前同じような問題で止まったとき同様,以下のサイトを参考にwgetのproxyの設定をするが,うまく行かず.
https://qiita.com/yyamnk/items/2da2791bcee82643984f

どうやらcurlで止まっているっぽかったので,curlのproxy設定をしたらうまく行った.
(というか,.zshrcにproxy設定を書き忘れてた)

.zshrc に以下を記入するだけ.
export http_proxy=http://example.com:8000
export https_proxy=http://example.com:8000

コマンド実行時は,環境変数の引き継ぎを忘れずに.
sudo -E tlmgr install latexmk


2020/05/27

TimeMachineで複数のMacのバックアップをしていて片方のMacが容量を食いすぎてしまった場合の対処法

タイトルの通り.

一つのTimeCapsuleにTimeMachineで複数のiMacとMacbookのバックアップを取っていたら,一方のiMacがどんどん空き容量にバックアップをためていき,たまにしか接続しないもう一方のMacbookは残された容量をほそぼそと使うという状態になっていた.
そしてとうとう,バックアップができない状態になってしまったので,渋々対応策を探す.



まず,

tmutil listbackups 

とかするとバックアップの履歴がリストされる.
そこから例えば,

sudo tmutil delete /Volumes/Time\ Machine\ バックアップ/Backups.backupdb/<マシン名>/2019-*

のような感じで,まとめて削除.

Total deleted: 470.0G

とか出て,空き容量が増えたかと思いきや,Macbook側から見ると空容量増えず.

hdiutil detach /Volumes/Time\ Machine\ バックアップ

した後に,

hdiutil compact /Volumes/<ディスク名>/<マシン名>.sparsebundle

で圧縮.
これで空き容量が開放される.

まぁ,本来ならパーティション分けるのが正しいんでしょうね.


参考にしたサイトはこちら.
基本的にはこのサイトでやっている通り.
https://qiita.com/takc923/items/52c4f7e4d260fc89a907

2020/04/29

Djangoで継承している子クラスのオブジェクトを親クラスのオブジェクトから見つける

タイトルの通り.

子クラスの名前がわかってる場合は,
parent_obj.child
でアクセス可能だけど,継承している子クラスが複数あって,どのクラスのオブジェクトに対応づいているか不明な場合は,工夫がいる.
related_objects から対応付くクラスの一覧を取得して,getattrでテキストで指定してアクセスすればOK.
こういう書き方をしておくと,子クラスを増やしたときに,書き換える必要がないから楽.

コードは以下の通り.

class Parent(models.Model):
    def get_child(self):
        """継承する子クラスのオブジェクトを返す"""
        children = self._meta.related_objects  # 継承している子クラス一覧を見つける
        for c in children:
            try:
                child = getattr(self, c.name)  # テキストで指定したselfのインスタンス変数にアクセス
            except getattr(ImageDatabase, c.name).RelatedObjectDoesNotExist:  # テキストで指定したクラス変数にアクセス
                pass  # 対応するオブジェクトがなければ何もしない
        return child

class Child(ImageDatabase):
    parent = models.OneToOneField(to= Parent, related_name='relation')


でも,もっとちゃんとした方法があるかも.
誰か知ってたら教えてほしい.

2020/03/11

lynxでno_proxy

lynx でプロキシの問題でページが表示できなくて困っていたが,どうやら no_proxy のワイルドカードが使えないということのようだ.

2020/02/06

pipでsslモジュールが使えないと言われた場合の対処法

何がきっかけかわからないが,あるとき突然pipができなくなってしまった.
エラーは以下の通りで,sslモジュールが使えないと言われる.

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

ググると,opensslを入れ直せと出てくるが,

brew update
brew upgrade
brew uninstall --ignore-dependencies openssl
brew install openssl

とかしてみてもだめ.
色々試行錯誤の結果,以下で行けたように見えた.

brew uninstall --ignore-dependencies openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

しかし,今度はsshができなくなる.
エラー内容はこんな感じ.
dyld: Library not loaded: /usr/local/opt/openssl@1.1/lib/libcrypto.1.1.dylib


最終的に以下で行けた.

brew switch openssl 1.0.2t


2019/11/25

sudo しないとアクセスできないファイルをローカルにコピーする方法

普通にscpとかを使ってもできない.
以下のようにsshすればできる.

ssh -t user@host 'echo パスワード |sudo -S cat ファイルパス' > ローカルファイル名

2019/11/06

異なるファイルが置かれた複数のデスクトップを切り替えながら使う方法

Dropboxがシンボリックリンク非対応になった問題を解決する方法 を探していたら,副産物として,デスクトップを簡単に切り替える方法を考えついたので,メモを残す.

タイトルに有る通り,別々のファイルが置かれたデスクトップを複数用意することができる方法であって,MacのMission Controlのように,隣のデスクトップに移動しても同じファイルがありつつ,ウィンドウを広げるスペースを確保する話とは全く異なるので注意.
つまり,例えば,仕事用のファイルを置いたデスクトップとプライベート用ファイルを置いたデスクトップをそれぞれ分けて使うことが可能になったりする.

使うのは,bindfsというツール.
bindfs は FUSEの仕組みを使って,任意のファイルシステムをマウントできるものらしい.
とりあえず以下でインストール.


brew cask install osxfuse
brew install bindfs

使い方は簡単で,

bindfs somedir/ mountdir/

とすると,somedirがmountdirにマウントされる.
これを使い,以下のように,任意のフォルダ(somedir)を~/Desktopにマウントすると,Desktopのファイル群がsomedirの中身に入れ替わる.
切り替えて戻しても,ファイルの配置はそのまま.

bindfs -o volname=Desktop ~/somedir/ ~/Desktop/

戻すときはアンマウント(ディスクを取り出す)すればOK.