- 投稿日:2020-07-11T23:52:12+09:00
Linuxをコンソールから操作する方法
- 投稿日:2020-07-11T23:00:07+09:00
Linuxコマンド<基礎2>
Linuxコマンドの基礎2。
findコマンド
ファイルを探す
[wataru@localhost testgo]$ find . -name work.08.txt -print #find <検索開始位置> <検索条件> <アクション>の書式 #-printはパス名を表示するアクション(アクションを省略した場合は-printを指定したと見なされる) ./work.08.txt[wataru@localhost testgo]$ find . -name 'work.0*' -print #-nameでワイルドカードを使用する場合は、''(シングルクォーテーション)で囲む #""(ダブルクォーテーション)でも可 ./work.02.txt ./work.05.txt ./work.06.txt ./work.07.txt ./work.08.txt ./work.09.txt[wataru@localhost testgo]$ find . -name "work.0*" #""(ダブルクォーテーション)でも問題なく検索されている #-printを省略すると、自動的に-printを指定したと見なされる ./work.02.txt ./work.05.txt ./work.06.txt ./work.07.txt ./work.08.txt ./2020dir/work.09.txt[wataru@localhost testgo]$ find . -type d #-type dを使用すると、ディレクトリを検索する . ./2020dir[wataru@localhost testgo]$ find . -type f #-type fを使用すると、ファイルを検索する ./work.02.txt ./work.05.txt ./work.06.txt ./work.07.txt ./work.08.txt ./testtest.txt ./2020dir/work.09.txt[wataru@localhost testgo]$ ls 2020dir work.02.txt work.04.xls work.06.txt work.07.xls work.09.xls testtest.txt work.02.xls work.05.txt work.06.xls work.08.txt work.10.xls work.01.xls work.03.xls work.05.xls work.07.txt work.08.xls wataru@localhost testgo]$ find . -type f -name '*xls' #-type f と-nameは一緒に使用することができる ./work.01.xls ./work.02.xls ./work.03.xls ./work.04.xls ./work.05.xls ./work.06.xls ./work.07.xls ./work.08.xls ./work.09.xls ./work.10.xlsviコマンド
テキストエディタ
基本コマンド
コマンド 内容 :q viを終了する :w ファイルを上書き保存する :w <ファイル名> 名前を付けて保存する :q! ファイルを保存せずにviを終了する 移動コマンド
コマンド 内容 gg 1行目に移動する G 最後の行に移動する <数字>G <数字>行目に移動する [wataru@localhost testgo]$ vi work.05.txtABCDEFG HIJKLMN OPQRSTUWwaq abcdef 123456 345678 7890 ~ ~ ~ ~ ~ ~ ~ ~ -- INSERT -- #インサートモードにするには、iまたはaを入力する #インサートモードをやめる際は、Escキーを入力するカット、コピー、ペースト
デリートコマンド
コマンド 内容 d$ 行末まで削除する dgg 最初の行まで削除する dG 最後の行まで削除する ※コピーはdの代わりにyを使用する。
そのため、上記表のdをyに読み替えて実施すると、コピー可能。ABCDEFG HIJKLMN OPQRSTUWwaq abcdef 123456 345678 #d$を入力して、行末まで削除した(7890削除) ~ ~ ~ "work.05.txt" 9L, 56CABCDEFG HIJKLMN OPQRSTUWwaq abcdef 1234562345623456 #d$で削除した文字列はpを利用して、張り付けることが出来る 345678検索
ノーマルモードで/(スラッシュ)入力すると検索可能。
HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN HIJKLMN OPQOPQOPQ OPQOPQOPQ HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN HIJKLMN HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN HIJKLMN HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN # /の後に検索したい文字を入力する /HIchmodコマンド
ファイルモードを変更する
wataru@localhost testgo]$ ls -l total 0 drwxrwxr-x. 2 wataru wataru 25 Jul 7 16:25 2020dir -rw-rw-r--. 1 wataru wataru 0 Jul 5 04:26 testtest.txt [wataru@localhost testgo]$ chmod u+x testtest.txt #chmod [ugoa][+-=][rwx] <ファイル名>でパーミッションの設定が出来る #今回では、testtest.txtファイルのオーナーに実行権限を追加した [wataru@localhost testgo]$ ls -l total 0 drwxrwxr-x. 2 wataru wataru 25 Jul 7 16:25 2020dir -rwxrw-r--. 1 wataru wataru 0 Jul 5 04:26 testtest.txtchmodのユーザー指定
記号 意味 u オーナー g グループ o その他ユーザー a ugoすべて [wataru@localhost testgo]$ chmod u-rx testtest.txt #testtest.txtファイルのオーナーに読み取りと書き込み権限を禁止した [wataru@localhost testgo]$ ls -l total 0 drwxrwxr-x. 2 wataru wataru 25 Jul 7 16:25 2020dir --w-rw-r--. 1 wataru wataru 0 Jul 5 04:26 testtest.txt[wataru@localhost testgo]$ chmod a+rwx testtest.txt #すべてのユーザーに読み取り、書き込み、実行の権限を設定 [wataru@localhost testgo]$ ls -l total 0 drwxrwxr-x. 2 wataru wataru 25 Jul 7 16:25 2020dir -rwxrwxrwx. 1 wataru wataru 0 Jul 5 04:26 testtest.txt -rw-rw-r--. 1 wataru wataru 0 Jul 11 01:55 work.txt[wataru@localhost testgo]$ chmod 444 testtest.txt #数値でもパーミッションの設定が可能 #今回では、読み取りだけ設定 [wataru@localhost testgo]$ ls -l total 0 drwxrwxr-x. 2 wataru wataru 25 Jul 7 16:25 2020dir -r--r--r--. 1 wataru wataru 0 Jul 5 04:26 testtest.txt -rw-rw-r--. 1 wataru wataru 0 Jul 11 01:55 work.txt数値モードでのパーミッション数値
数値 意味 4 読み取り 2 書き込み 1 実行 [wataru@localhost testgo]$ chmod 660 testtest.txt #オーナーとグループに読み取りと書き込み権限を設定 [wataru@localhost testgo]$ ls -l total 0 drwxrwxr-x. 2 wataru wataru 25 Jul 7 16:25 2020dir -rw-rw----. 1 wataru wataru 0 Jul 5 04:26 testtest.txt -rw-rw-r--. 1 wataru wataru 0 Jul 11 01:55 work.txt
- 投稿日:2020-07-11T22:07:51+09:00
LPIC level1について軽くまとめてみる(102編)
まえがき(挨拶)
本日LPIC102に合格したので投稿してみる
経緯
取得した経緯については前回の投稿をご覧ください
https://qiita.com/M_RK/items/8f26b179a42a93f14fc7勉強期間とスコア
・LPIC level1 全体:約3ヶ月
・LPIC102:約1ヶ月・スコア:640点
・内訳
シェルおよびシェルスクリプト:75%
ユーザーインターフェースとデスクトップ:75%
管理タスク:91%
Essential System Service:66%
Networking Fundamentals:92%
セキュリティ:90%試験内容
・シェルおよびシェルスクリプト
環境変数とシェル変数の違い、シェルのオプション(setコマンド)、エイリアスの指定、シェルスクリプトの書き方など・ユーザーインターフェースとデスクトップ
LinuxでGUIを使用する技術(X Window System)、リモートデスクトップについて、障がい者のための設定など・管理タスク
ユーザーの作成コマンドやグループの作成と管理方法、cronの設定(スケジューリング)、タイムゾーンの設定・Essential System Service
システムクロック(dateコマンド)ハードウェアクロック(hwclockコマンド)の設定、NTPサーバからの時刻取得(ntpdateコマンド)、syslogの設定、メールの送受信、プリンタの設定・Networking Fundamentals
TCP/IPの基礎知識(代表的なプロトコルとポート番号)、IPアドレスについて、ネットワーク関連の設定ファイル、トラブルシューティングに使えるコマンド(ping、traceroute、tracepath)など・セキュリティ
xinetdの設定(スーパーサーバ)、開いているポートの確認(ssコマンド)、パスワードの有効期限の設定、sshの設定など感想
102は101と比べるとインフラについての知識を広く学ぶことができました。
ネットワークの部分は業務でも使用するものが殆どだったので復習になる感じでした。
LPIC level1を総合的にみるとインフラエンジニアとしてやっていくなら学習しておいて良かったと思える内容です。
難易度的にはLinux未経験でも4ヶ月じっくり学習で取得できるような難易度だと思います。
- 投稿日:2020-07-11T20:53:56+09:00
LPIC level1について軽くまとめる(101編)
まえがき(挨拶)
本日LPIC102を取得しLPIC level1に認定されたのでちょっとしたまとめを書こうと思います。
取得した経緯
取得した経緯ですが、現役でインフラエンジニア(ネットワーク強め)をやっていてネットワーク周りの知識は大分深まってきていると感じていますが、OSやサーバインフラ周りの知識が殆ど無かったので取得しようと思いました。
勉強期間とスコア
・LPIC level1 全体:約3ヶ月
・LPIC101:約2ヶ月・スコア:550点
・内訳
システムアーキテクチャ:62%
Linuxのインストールおよびパッケージ管理:75%
GNUコマンドおよびUnixコマンド:76%
デバイス、Linuxファイルシステム、ファイルシステム、階層標準:64%試験内容
・システムアーキテクチャ
システムの起動順序やBIOSで設定できる内容、デバイスファイルやランレベルに関する内容
ここは自作PCを作成したことがある人は得意かもしれません。・Linuxのインストールおよびパッケージ管理
各ディレクトリの役割(/home:一般ユーザが利用するファイルが入っている、/var:ログファイルやメールスプールなどのファイルが入っている等)パーティションの考え方、Debian系、Red Hat系のパッケージ管理についてなど・GNUコマンドおよびUnixコマンド
Linuxのコマンドラインでの操作(cd、cp、rmなど)、ファイルの編集(viエディタの使い方)など・デバイス、Linuxファイルシステム、ファイルシステム、階層標準
パーティションの作成、ファイルの検索やマウントのやり方など感想
101は基本的にコマンドの暗記がメインになりました。特にパッケージ管理コマンド(dpkg、rpm)のオプションが多すぎて途中でキレそうになりましたw
1番勉強していて面白かったのはコマンドラインでの操作です。やっぱりプロンプトでの操作をしているとOSを細かく操作できている気分になるので面白かったです(小並感)
- 投稿日:2020-07-11T20:53:56+09:00
LPIC level1について軽くまとめてみる(101編)
まえがき(挨拶)
本日LPIC102を取得しLPIC level1に認定されたのでちょっとしたまとめを書こうと思います。
取得した経緯
取得した経緯ですが、現役でインフラエンジニア(ネットワーク強め)をやっていてネットワーク周りの知識は大分深まってきていると感じていますが、OSやサーバインフラ周りの知識が殆ど無かったので取得しようと思いました。
勉強期間とスコア
・LPIC level1 全体:約3ヶ月
・LPIC101:約2ヶ月・スコア:550点
・内訳
システムアーキテクチャ:62%
Linuxのインストールおよびパッケージ管理:75%
GNUコマンドおよびUnixコマンド:76%
デバイス、Linuxファイルシステム、ファイルシステム、階層標準:64%試験内容
・システムアーキテクチャ
システムの起動順序やBIOSで設定できる内容、デバイスファイルやランレベルに関する内容
ここは自作PCを作成したことがある人は得意かもしれません。・Linuxのインストールおよびパッケージ管理
各ディレクトリの役割(/home:一般ユーザが利用するファイルが入っている、/var:ログファイルやメールスプールなどのファイルが入っている等)パーティションの考え方、Debian系、Red Hat系のパッケージ管理についてなど・GNUコマンドおよびUnixコマンド
Linuxのコマンドラインでの操作(cd、cp、rmなど)、ファイルの編集(viエディタの使い方)など・デバイス、Linuxファイルシステム、ファイルシステム、階層標準
パーティションの作成、ファイルの検索やマウントのやり方など感想
101は基本的にコマンドの暗記がメインになりました。特にパッケージ管理コマンド(dpkg、rpm)のオプションが多すぎて途中でキレそうになりましたw
1番勉強していて面白かったのはコマンドラインでの操作です。やっぱりプロンプトでの操作をしているとOSを細かく操作できている気分になるので面白かったです(小並感)
- 投稿日:2020-07-11T20:05:28+09:00
DataikuをWindowsで使用する方法
環境
・Windows10
・Google Chrome 83.0.4103.116
・Ubuntu 18.04 LTS
*おそらく,Ubuntuは20.04もあると思いますが,一部のものが非対応っぽく20.04ではうまくいきませんでした.Dataikuとは?
Dataikuとは,機械学習を行う際の面倒なデータの前処理などを一つのプラットフォームで行ってくれるツールです.(まだ僕もあまり触ってないので分かっていません.)
Daraikuを使うための方法
こんなすばらしいツールを試してみたい,と思ったら環境を作っていきましょう.
以下では,Windows上にUbuntuを入れてそこにDataikuをセットアップしていきます.基本的には,こちらの記事を参考にして行いましたが,一部違う点があったのでその点を中心に書いていこうと思います.
Linuxの準備
まずはLinuxを入れましょう.
Windows Subsystem for Linuxにチェックして,Ubuntuを入れるところまでは同じです.このとき,Ubuntu LTS 20.04だとうまくいきませんでした.なので,18.04のインストールをお勧めいたします.さて,インストールが済み,ユーザー名・パスワードが設定出来たらいよいよDataikuのインストールです.これから入力するものはすべてUbuntuのshellに入力していきます.
sshサーバーの起動
上記のサイトでは省略されていますが,まずはLinuxのサーバーをたてましょう.
apt list openssh*
を叩いてから,
$ sudo ssh-kegen -A $ sudo service ssh start成功すれば
* Starting OpenBSD Secure Shell server sshd [ OK ]と表示されるはずです.これでsshサーバーが起動しました.
Dataikuのインストール
お待たせしました.いよいよDataikuのインストールです.
$ wget https://cdn.downloads.dataiku.com/public/dss/7.0.2/dataiku-dss-7.0.2.tar.gz
と入力しましょう.さきほど紹介した記事ではDataikuのバージョンが4.1.5になっていますが,この記事を書いた2020/7/9現在では,7.0.2となっています.それ以外は紹介したサイトと同じですので,4.1.5の部分を7.0.2に変えれば大丈夫です.
さきほどのQiitaの記事と同じように解凍をし,
$ dataiku-dss-7.0.2/installer.sh -d DATA_DIR -p 11000を入力すると,記事と同様にエラーメッセージが出ます.
*** Error: package nginx not found *** Error: package unzip not found *** Error: package zip not found *** Error: package default-jre-headless not found *** Error: package python2.7 not found *** Error: package libpython2.7 not found *** Error: package libgomp1 not found *** Error: package python3-distutils not found私の場合は,このようなエラーが出ました.(エラーの箇所だけ抜粋しています)
なので,*** Error: package ほにゃらら not found
のほにゃららにあたるものをインストールします.
その前に,記事と同様に
$ wget https://nginx.org/keys/nginx_signing.key $ sudo apt-key add nginx_signing.keyを行いました.
$sudo apt-get install ほにゃららを一つずつ,根気よくやっていきます.
そして,もう一度
$ dataiku-dss-7.0.2/installer.sh -d DATA_DIR -p 11000を行うと,成功するはずです!
次回では,Dataikuを用いてチュートリアルをやっていこうと思います!
- 投稿日:2020-07-11T17:40:22+09:00
【pip/apt】ライブラリのインストール先と内部処理
pipのインストール先
pip3でインストールしたものは、/home/hogehoge/.local/lib/python3.8/site-packages
sudo pip3でインストールしたものは、/usr/local/lib/python3.8/dist-packages
/lib
は「/bin」や「/sbin」ディレクトリにあるコマンドを実行するのに必要なライブラリが含まれている。この場合だと「python」コマンドを実行するのに必要なライブラリという意味合い。ちなみに
/lib
と/local/lib
の違いだが/bin
はベンダが提供している、すなわち、ベンダが動作を保証しているソフトが入っており、/local/bin
は野良ビルド(ユーザが自力コンパイルしたソフト) が入っている。/lib
もこの考え方を追従する。hogehoge@DESKTOP-OB61H52:~$ pip3 install pillow Collecting pillow Downloading Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl (2.2 MB) |████████████████████████████████| 2.2 MB 3.7 MB/s Installing collected packages: pillow Successfully installed pillow-7.2.0 hogehoge@DESKTOP-OB61H52:~$ pip3 show pillow Name: Pillow Version: 7.2.0 Summary: Python Imaging Library (Fork) Home-page: https://python-pillow.org Author: Alex Clark (PIL Fork Author) Author-email: aclark@python-pillow.org License: HPND Location: /home/crystalmethod/.local/lib/python3.8/site-packages Requires: Required-by:hogehoge@DESKTOP-OB61H52:~$ sudo pip3 install bs4 [sudo] password for hogehoge: Collecting bs4 Downloading bs4-0.0.1.tar.gz (1.1 kB) Collecting beautifulsoup4 Downloading beautifulsoup4-4.9.1-py3-none-any.whl (115 kB) |████████████████████████████████| 115 kB 8.9 MB/s Collecting soupsieve>1.2 Downloading soupsieve-2.0.1-py3-none-any.whl (32 kB) Building wheels for collected packages: bs4 Building wheel for bs4 (setup.py) ... done Created wheel for bs4: filename=bs4-0.0.1-py3-none-any.whl size=1272 sha256=64f5f02ec3d3490b6e405f28b32e602a919241216423a26d4a1ab43303a5be70 Stored in directory: /root/.cache/pip/wheels/75/78/21/68b124549c9bdc94f822c02fb9aa3578a669843f9767776bca Successfully built bs4 Installing collected packages: soupsieve, beautifulsoup4, bs4 Successfully installed beautifulsoup4-4.9.1 bs4-0.0.1 soupsieve-2.0.1 hogehoge@DESKTOP-OB61H52:~$ pip3 show bs4 Name: bs4 Version: 0.0.1 Summary: Screen-scraping library Home-page: https://pypi.python.org/pypi/beautifulsoup4 Author: Leonard Richardson Author-email: leonardr@segfault.org License: MIT Location: /usr/local/lib/python3.8/dist-packages Requires: beautifulsoup4 Required-by:aptのインストール先
--listfiles package (または -L) は与えられたパッケージがインストールするファイルを表示します。
https://debian-handbook.info/browse/ja-JP/stable/sect.manipulating-packages-with-dpkg.htmlよく見るとgzファイル(圧縮ファイルが置かれています)
インストールするファイルパッケージは圧縮ファイルなのか…?実行ファイルのフルパスは以下
$ which sudoku /usr/games/sudoku $ which ffmpeg /usr/bin/ffmpeg $ which nginx /usr/sbin/nginxaptのインストールにはsudoが必要です
/usr/share/doc/
nginxは上記の場所にインストールされていました。$ dpkg -L nginx /. /usr /usr/share /usr/share/doc /usr/share/doc/nginx /usr/share/doc/nginx/copyright /usr/share/doc/nginx/changelog.Debian.gz$ dpkg -L sudoku /. /usr /usr/games /usr/games/sudoku /usr/share /usr/share/applications /usr/share/applications/sudoku.desktop /usr/share/doc /usr/share/doc/sudoku /usr/share/doc/sudoku/changelog.Debian.gz /usr/share/doc/sudoku/copyright /usr/share/icons /usr/share/icons/hicolor /usr/share/icons/hicolor/64x64 /usr/share/icons/hicolor/64x64/apps /usr/share/icons/hicolor/64x64/apps/sudoku.png /usr/share/icons/hicolor/scalable /usr/share/icons/hicolor/scalable/sudoku.svg /usr/share/man /usr/share/man/man6 /usr/share/man/man6/sudoku.6.gz /usr/share/menu /usr/share/menu/sudoku /usr/share/pixmaps /usr/share/pixmaps/sudoku.xpm /usr/share/sudoku /usr/share/sudoku/template$ dpkg -L ffmpeg /. /usr /usr/bin /usr/bin/ffmpeg /usr/bin/ffplay /usr/bin/ffprobe /usr/bin/qt-faststart /usr/share /usr/share/doc /usr/share/doc/ffmpeg /usr/share/doc/ffmpeg/RELEASE_NOTES /usr/share/doc/ffmpeg/copyright /usr/share/ffmpeg /usr/share/ffmpeg/ffprobe.xsd /usr/share/ffmpeg/libvpx-1080p.ffpreset /usr/share/ffmpeg/libvpx-1080p50_60.ffpreset /usr/share/ffmpeg/libvpx-360p.ffpreset /usr/share/ffmpeg/libvpx-720p.ffpreset /usr/share/ffmpeg/libvpx-720p50_60.ffpreset /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/ffmpeg /usr/share/man /usr/share/man/man1 /usr/share/man/man1/ffmpeg-all.1.gz /usr/share/man/man1/ffmpeg-bitstream-filters.1.gz /usr/share/man/man1/ffmpeg-codecs.1.gz /usr/share/man/man1/ffmpeg-devices.1.gz /usr/share/man/man1/ffmpeg-filters.1.gz /usr/share/man/man1/ffmpeg-formats.1.gz /usr/share/man/man1/ffmpeg-protocols.1.gz /usr/share/man/man1/ffmpeg-resampler.1.gz /usr/share/man/man1/ffmpeg-scaler.1.gz /usr/share/man/man1/ffmpeg-utils.1.gz /usr/share/man/man1/ffmpeg.1.gz /usr/share/man/man1/ffplay-all.1.gz /usr/share/man/man1/ffplay.1.gz /usr/share/man/man1/ffprobe-all.1.gz /usr/share/man/man1/ffprobe.1.gz /usr/share/man/man1/qt-faststart.1.gz /usr/share/doc/ffmpeg/changelog.Debian.gz/usr/shareディレクトリに関して
「/usr/share」ディレクトリには、「アーキテクチャに依存しないファイル」が置かれます。
すなわち、manコマンドで参照できるマニュアルがここに置かれています。このマニュアルは、多くの場合「/usr/share/man」に置かれています。何らかのソフトウェアをインストールしたとき、そのソフトウェアに関するドキュメントがここに置かれる場合もあります。「/usr/share/doc」などが主なディレクトリになるでしょう。設定ファイルの雛形があることも多いので、覚えておくと役に立ちます。このように、/usr/shareディレクトリは、主にドキュメント関係が置かれていることが多いです。apt の--dry-run
インストールコマンドの予行演習/シミュレーションを行うことができます。
このスイッチを設定するには、引数に-s
を追加します。
さらに、追加で--print-uris
を使えばダウンロードおよびインストールされたサイズとパッケージに関する追加情報(WebアドレスおよびMD5Sum)を表示します。$ Sudo apt-get install sudoku --print-uris$ Sudo apt-get install sudoku -s結局、aptは内部で何をやっているのか?
- 依存関係のチェック(およびインストールの要求)
- パッケージをダウンロードして検証する
- apt-getは必要なものをすべて一時ディレクトリ(/var/cache/apt/archives/)にダウンロードする
- WebサーバーまたはFTPサーバーからダウンロードされる。それらはsources.listで指定される
- ここに落とさるものは
.deb
ファイルである。- dpkgにインストールするように指示する
- dpkgがパッケージ(/var/cache/apt/archives/)を抽出し、コンテンツを適切な場所にコピーし、既存のファイルとそれらの変更を確認する
- インストールするファイルは
dpkg -L ffmpeg
などで追える
dpkg -L ffmpeg
で確認すると/usr/share
以外に/usr/bin
にバイナリファイルが確認できるdpkg -L sudoku
で確認すると/usr/share
以外に/usr/games
にバイナリファイルが確認できるdpkg -L nginx
で確認すると/usr/share
しか表示されなかった/usr/bin
はコマンドの実行ファイルの場所である。dpkg -L hoge
はインストールするファイルを示しているはずだが、どういうことか?「変更を確認する」ということはこの実行ファイルとの差分を取っているのか??(要調査)- maintainer scriptsを実行する(インストール処理)
- コピーしたパッケージにはシステムにインストールされるファイルと制御ファイルと特定の状況でパッケージングシステムが実行するスクリプトが含まれている。
- 特定の状況でパッケージングシステムが実行するスクリプトはmaintainer scriptsと呼ばれている。これらのスクリプトは次のように分割されています。
- preinst:システムファイル階層にファイルをインストールする前
- postinst:インストール後
- prerm:アンインストール前
- postrm:アンインストール後
- 制御ファイルは以下のようになっている
- control:依存関係のリストおよびパッケージを識別するための情報
- conffiles:Aリスト設定ファイル(通常は/etcにあるもの)
- debian-binary:deb-packageバージョンが含まれている
- md5sums:検証用のパッケージ内の各ファイルのmd5sumのリスト
- templates:インストール中のエラーの説明とダイアログを含むファイル
- トリガーに基づいていくつかのアクションを実行
- 結果として適切な場所に実行ファイルが置かれることになる(whichコマンドで確認)
実行ファイルのフルパスは以下
$ which sudoku /usr/games/sudoku $ which ffmpeg /usr/bin/ffmpeg $ which nginx /usr/sbin/nginx$ ll /var/cache/apt/archives/ total 249876 drwxr-xr-x 1 root root 512 Jul 12 14:08 ./ drwxr-xr-x 1 root root 512 Jul 12 14:12 ../ -rw-r--r-- 1 root root 103540 Feb 26 04:28 aufs-tools_1%3a4.14+20190211-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 6320 Apr 30 2017 cgroupfs-mount_1.4_all.deb -rw-r--r-- 1 root root 21408158 May 15 12:16 containerd.io_1.2.13-2_amd64.deb -rw-r--r-- 1 root root 41206258 May 19 07:25 docker-ce-cli_5%3a19.03.9~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 22898926 Feb 14 07:27 docker-ce_5%3a19.03.6~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 22882090 Mar 4 14:37 docker-ce_5%3a19.03.7~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 22529530 May 19 07:25 docker-ce_5%3a19.03.9~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 1452156 Mar 16 22:48 ffmpeg_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 258936 Mar 11 04:08 gnupg_2.2.19-3ubuntu2_all.deb -rw-r--r-- 1 root root 97660 Mar 11 04:08 gpg-wks-client_2.2.19-3ubuntu2_amd64.deb -rw-r--r-- 1 root root 90268 Mar 11 04:08 gpg-wks-server_2.2.19-3ubuntu2_amd64.deb -rw-r--r-- 1 root root 482096 Mar 11 04:08 gpg_2.2.19-3ubuntu2_amd64.deb -rw-r--r-- 1 root root 1852632 Apr 16 15:23 grub-common_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 3658 Mar 28 2015 grub-gfxpayload-lists_0.7_amd64.deb -rw-r--r-- 1 root root 969136 Apr 16 15:23 grub-pc-bin_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 124692 Apr 16 15:23 grub-pc_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 589024 Apr 16 15:23 grub2-common_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 923728 Feb 7 02:14 i965-va-driver_2.4.0-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 1764416 Apr 13 20:28 intel-media-va-driver_20.1.1+dfsg1-1_amd64.deb -rw-r--r-- 1 root root 50084 Dec 9 2018 libaacs0_0.9.0-2_amd64.deb -rw-r--r-- 1 root root 1160240 Feb 8 22:05 libaom0_1.0.0.errata1-3build1_amd64.deb -rw-r--r-- 1 root root 88004 May 22 2018 libass9_1%3a0.14.0-2_amd64.deb -rw-r--r-- 1 root root 16184 May 22 2018 libavc1394-0_0.5.4-5_amd64.deb -rw-r--r-- 1 root root 4880392 Mar 16 22:48 libavcodec58_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 74264 Mar 16 22:48 libavdevice58_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 1083784 Mar 16 22:48 libavfilter7_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 980732 Mar 16 22:48 libavformat58_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 54172 Mar 16 22:48 libavresample4_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 241240 Mar 16 22:48 libavutil56_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 47268 May 22 2018 libbdplus0_0.1.2-3_amd64.deb -rw-r--r-- 1 root root 138036 Mar 30 03:09 libbluray2_1%3a1.2.0-1_amd64.deb -rw-r--r-- 1 root root 10164 Mar 23 02:40 libbs2b0_3.1.0+dfsg-2.2build1_amd64.deb -rw-r--r-- 1 root root 202256 Mar 25 01:54 libcaca0_0.99.beta19-2.1ubuntu1_amd64.deb -rw-r--r-- 1 root root 17568 Aug 9 2019 libcdio-cdda2_10.2+2.0.0-1_amd64.deb -rw-r--r-- 1 root root 16236 Aug 9 2019 libcdio-paranoia2_10.2+2.0.0-1_amd64.deb -rw-r--r-- 1 root root 58604 Jun 15 2018 libcdio18_2.0.0-2_amd64.deb -rw-r--r-- 1 root root 37632 Mar 23 16:00 libchromaprint1_1.4.3-3build1_amd64.deb -rw-r--r-- 1 root root 7885840 Dec 23 2019 libcodec2-0.9_0.9.2-2_amd64.deb -rw-r--r-- 1 root root 79608 Oct 27 2019 libdc1394-22_2.2.5-2.1_amd64.deb -rw-r--r-- 1 root root 115656 Mar 23 02:00 libexpat1-dev_2.2.9-1build1_amd64.deb -rw-r--r-- 1 root root 12807788 Nov 9 2018 libflite1_2.1-release-3_amd64.deb -rw-r--r-- 1 root root 122888 Mar 23 16:10 libgme0_0.6.2-1build1_amd64.deb -rw-r--r-- 1 root root 24440 Apr 2 2019 libgsm1_1.0.18-2_amd64.deb -rw-r--r-- 1 root root 24264 Nov 29 2018 libiec61883-0_1.2.0-3_amd64.deb -rw-r--r-- 1 root root 111456 Apr 9 19:58 libigdgmm11_20.1.1+ds1-1_amd64.deb -rw-r--r-- 1 root root 266740 Apr 16 19:18 libjack-jackd2-0_1.9.12~dfsg-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 40392 Feb 3 08:23 liblilv-0-0_0.24.6-1_amd64.deb -rw-r--r-- 1 root root 132544 Nov 18 2019 libmp3lame0_3.100-3_amd64.deb -rw-r--r-- 1 root root 123596 Nov 18 2019 libmpg123-0_1.25.13-1_amd64.deb -rw-r--r-- 1 root root 39220 Feb 11 15:23 libmysofa1_1.0~dfsg0-1_amd64.deb -rw-r--r-- 1 root root 14300 Apr 16 19:04 libnginx-mod-http-image-filter_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 12532 Apr 16 19:04 libnginx-mod-http-xslt-filter_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 42296 Apr 16 19:04 libnginx-mod-mail_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 66852 Apr 16 19:04 libnginx-mod-stream_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 289928 Mar 23 03:00 libnorm1_1.5.8+dfsg2-2build1_amd64.deb -rw-r--r-- 1 root root 161788 Nov 9 2018 libopenal-data_1%3a1.19.1-1_all.deb -rw-r--r-- 1 root root 492372 Nov 9 2018 libopenal1_1%3a1.19.1-1_amd64.deb -rw-r--r-- 1 root root 598732 Mar 25 01:11 libopenmpt0_0.4.11-1build1_amd64.deb -rw-r--r-- 1 root root 191092 Aug 29 2019 libopus0_1.3.1-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 158116 Apr 3 22:08 libpgm-5.2-0_5.2.122~dfsg-3ubuntu1_amd64.deb -rw-r--r-- 1 root root 55296 Mar 16 22:48 libpostproc55_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 7236 Mar 13 21:38 libpython3-dev_3.8.2-0ubuntu2_amd64.deb -rw-r--r-- 1 root root 3937864 Apr 30 20:48 libpython3.8-dev_3.8.2-1ubuntu1.1_amd64.deb -rw-r--r-- 1 root root 30718 Apr 27 2016 libraw1394-11_2.1.2-1_amd64.deb -rw-r--r-- 1 root root 89436 Mar 23 17:22 librubberband2_1.8.2-1build1_amd64.deb -rw-r--r-- 1 root root 939116 May 5 2018 libsamplerate0_0.1.9-2_amd64.deb -rw-r--r-- 1 root root 406608 Apr 14 15:08 libsdl2-2.0-0_2.0.10+dfsg1-3_amd64.deb -rw-r--r-- 1 root root 46608 Dec 9 2019 libserd-0-0_0.30.2-1_amd64.deb -rw-r--r-- 1 root root 23160 May 5 2018 libshine3_3.1.1-2_amd64.deb -rw-r--r-- 1 root root 16672 Mar 21 21:58 libsnappy1v5_1.1.8-1build1_amd64.deb -rw-r--r-- 1 root root 24488 Nov 9 2018 libsndio7.0_1.5.0-3_amd64.deb -rw-r--r-- 1 root root 19536 Dec 9 2019 libsord-0-0_0.16.4-1_amd64.deb -rw-r--r-- 1 root root 77984 Nov 29 2019 libsoxr0_0.1.3-2build1_amd64.deb -rw-r--r-- 1 root root 53180 Feb 25 00:53 libspeex1_1.2~rc1.2-1.1ubuntu1_amd64.deb -rw-r--r-- 1 root root 16884 Dec 9 2019 libsratom-0-0_0.6.4-1_amd64.deb -rw-r--r-- 1 root root 201632 Apr 10 01:58 libssh-gcrypt-4_0.9.3-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 57124 Mar 16 22:48 libswresample3_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 155764 Mar 16 22:48 libswscale5_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 162300 Dec 10 2019 libtheora0_1.1.1+dfsg.1-15ubuntu2_amd64.deb -rw-r--r-- 1 root root 47628 Oct 26 2019 libtwolame0_0.4.0-2_amd64.deb -rw-r--r-- 1 root root 7044 Apr 17 01:03 libva-drm2_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 11896 Apr 17 01:03 libva-x11-2_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 53532 Apr 17 01:03 libva2_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 25624 Mar 26 02:59 libvdpau1_1.3-1ubuntu2_amd64.deb -rw-r--r-- 1 root root 35040 Nov 10 2018 libvidstab1.1_1.1.0-2_amd64.deb -rw-r--r-- 1 root root 819568 Mar 25 00:14 libvpx6_1.8.2-1build1_amd64.deb -rw-r--r-- 1 root root 77024 Jan 1 2020 libwavpack1_5.2.0-1_amd64.deb -rw-r--r-- 1 root root 520964 Nov 10 2018 libx264-155_2%3a0.155.2917+git0a84d98-2_amd64.deb -rw-r--r-- 1 root root 1059940 Mar 23 17:39 libx265-179_3.2.1-1build1_amd64.deb -rw-r--r-- 1 root root 9296 Mar 30 15:53 libxcb-xfixes0_1.14-2_amd64.deb -rw-r--r-- 1 root root 201320 Feb 16 14:18 libxvidcore4_2%3a1.3.7-1_amd64.deb -rw-r--r-- 1 root root 242136 Apr 21 18:08 libzmq5_4.3.2-2ubuntu1_amd64.deb -rw-r--r-- 1 root root 32480 Feb 14 15:58 libzvbi-common_0.2.35-17_all.deb -rw-r--r-- 1 root root 237288 Feb 14 15:58 libzvbi0_0.2.35-17_amd64.deb -rw-r--r-- 1 root root 9070160 May 1 10:13 linux-image-unsigned-5.6.0-1010-oem_5.6.0-1010.10_amd64.deb -rw-r--r-- 1 root root 53430980 May 1 10:13 linux-modules-5.6.0-1010-oem_5.6.0-1010.10_amd64.deb -rw-r----- 1 root root 0 Apr 23 15:44 lock -rw-r--r-- 1 root root 2415676 Apr 17 06:18 mesa-va-drivers_20.0.4-2ubuntu1_amd64.deb -rw-r--r-- 1 root root 2545648 Apr 17 06:18 mesa-vdpau-drivers_20.0.4-2ubuntu1_amd64.deb -rw-r--r-- 1 root root 37284 Apr 16 19:04 nginx-common_1.17.10-0ubuntu1_all.deb -rw-r--r-- 1 root root 425076 Apr 16 19:04 nginx-core_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 3616 Apr 16 19:04 nginx_1.17.10-0ubuntu1_all.deb -rw-r--r-- 1 root root 30338 Apr 5 2017 ocl-icd-libopencl1_2.2.11-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 20076 Jun 5 2019 os-prober_1.74ubuntu2_amd64.deb drwx------ 1 _apt root 512 Jul 12 14:08 partial/ -rw-r--r-- 1 root root 57448 Dec 28 2017 pigz_2.4-1_amd64.deb -rw-r--r-- 1 root root 1798932 Apr 22 01:28 python-pip-whl_20.0.2-5ubuntu1_all.deb -rw-r--r-- 1 root root 1212 Mar 13 21:38 python3-dev_3.8.2-0ubuntu2_amd64.deb -rw-r--r-- 1 root root 230292 Apr 22 01:28 python3-pip_20.0.2-5ubuntu1_all.deb -rw-r--r-- 1 root root 25324 Apr 17 03:08 python3-software-properties_0.98.9_all.deb -rw-r--r-- 1 root root 1228 Mar 13 21:38 python3-venv_3.8.2-0ubuntu2_amd64.deb -rw-r--r-- 1 root root 23760 Mar 23 18:03 python3-wheel_0.34.2-1_all.deb -rw-r--r-- 1 root root 515060 Apr 30 20:48 python3.8-dev_3.8.2-1ubuntu1.1_amd64.deb -rw-r--r-- 1 root root 5292 Apr 30 20:48 python3.8-venv_3.8.2-1ubuntu1.1_amd64.deb -rw-r--r-- 1 root root 10548 Apr 17 03:08 software-properties-common_0.98.9_all.deb -rw-r--r-- 1 root root 41564 May 4 2018 sudoku_1.0.5-2build3_amd64.deb -rw-r--r-- 1 root root 4020 Apr 17 01:03 va-driver-all_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 4596 Mar 26 02:59 vdpau-driver-all_1.3-1ubuntu2_amd64.deb -rw-r--r-- 1 root root 155508 Feb 26 01:13 zlib1g-dev_1%3a1.2.11.dfsg-2ubuntu1_amd64.deb参考
- 投稿日:2020-07-11T17:40:22+09:00
/usr/bin vs /usr/local/bin
sudo pip3でインストールしたものは、/usr/local/lib~
pip3でインストールしたものは、/home/●●●/.local/lib~/usr/bin や /bin はベンダが提供している=ベンダが動作保証をしているソフトが入っていて
/usr/local/bin は野良ビルド (ユーザが自力コンパイルしたソフト) が入っています。ベンダが提供している root で起動していいのはベンダが保証しているソフトのみ、
ってことで root の PATH には /usr/local/bin を含めないほうが良い、という判断らしいです。sudo -iをすればrootの環境設定が使われる
ちなみにUbuntuでrootの$PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/binです
https://unix.stackexchange.com/questions/115129/why-does-root-not-have-usr-local-in-path
- 投稿日:2020-07-11T17:40:22+09:00
【パッケージ管理】aptとpipのインストール先と内部処理
pipのインストール先
pip3でインストールしたものは、/home/hogehoge/.local/lib/python3.8/site-packages
sudo pip3でインストールしたものは、/usr/local/lib/python3.8/dist-packages
/lib
は「/bin」や「/sbin」ディレクトリにあるコマンドを実行するのに必要なライブラリが含まれている。この場合だと「python」コマンドを実行するのに必要なライブラリという意味合い。ちなみに
/lib
と/local/lib
の違いだが/bin
はベンダが提供している、すなわち、ベンダが動作を保証しているソフトが入っており、/local/bin
は野良ビルド(ユーザが自力コンパイルしたソフト) が入っている。/lib
もこの考え方を追従する。pipを使ったインストールではPyPI(Python Package Index)というリポジトリを参照する
aptでもPython moduleは管理できるが、以下の理由からpipで管理したほうがいい
- pip is used to download and install packages directly from PyPI. PyPI is hosted by Python
- apt-get is used to download and install packages from Ubuntu repositories which are hosted by Canonical.
- Canonical only provides packages for selected python modules. Whereas, PyPI hosts a much broader range of python modules. So, there are a lot of python modules which you won't be able to install using apt-get.
- Canonical only hosts a single version of any package (generally the latest or the one released in recent past). So, with apt-get we cannot decide the version of python-package that we want. pip helps us in this situation. We can install any version of the package that has previously been uploaded on PyPI. This is extremely helpful in case of conflict in dependencies.
- apt-get installs python modules in system-wide location. We cannot just install modules in our project virtualenv. pip solves this problem for us. If we are using pip after activating the virtualenv, it is intelligent enough to only install the modules in our project virtualenv.
form https://askubuntu.com/questions/431780/apt-get-install-vs-pip-install
hogehoge@DESKTOP-OB61H52:~$ pip3 install pillow Collecting pillow Downloading Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl (2.2 MB) |████████████████████████████████| 2.2 MB 3.7 MB/s Installing collected packages: pillow Successfully installed pillow-7.2.0 hogehoge@DESKTOP-OB61H52:~$ pip3 show pillow Name: Pillow Version: 7.2.0 Summary: Python Imaging Library (Fork) Home-page: https://python-pillow.org Author: Alex Clark (PIL Fork Author) Author-email: aclark@python-pillow.org License: HPND Location: /home/crystalmethod/.local/lib/python3.8/site-packages Requires: Required-by:hogehoge@DESKTOP-OB61H52:~$ sudo pip3 install bs4 [sudo] password for hogehoge: Collecting bs4 Downloading bs4-0.0.1.tar.gz (1.1 kB) Collecting beautifulsoup4 Downloading beautifulsoup4-4.9.1-py3-none-any.whl (115 kB) |████████████████████████████████| 115 kB 8.9 MB/s Collecting soupsieve>1.2 Downloading soupsieve-2.0.1-py3-none-any.whl (32 kB) Building wheels for collected packages: bs4 Building wheel for bs4 (setup.py) ... done Created wheel for bs4: filename=bs4-0.0.1-py3-none-any.whl size=1272 sha256=64f5f02ec3d3490b6e405f28b32e602a919241216423a26d4a1ab43303a5be70 Stored in directory: /root/.cache/pip/wheels/75/78/21/68b124549c9bdc94f822c02fb9aa3578a669843f9767776bca Successfully built bs4 Installing collected packages: soupsieve, beautifulsoup4, bs4 Successfully installed beautifulsoup4-4.9.1 bs4-0.0.1 soupsieve-2.0.1 hogehoge@DESKTOP-OB61H52:~$ pip3 show bs4 Name: bs4 Version: 0.0.1 Summary: Screen-scraping library Home-page: https://pypi.python.org/pypi/beautifulsoup4 Author: Leonard Richardson Author-email: leonardr@segfault.org License: MIT Location: /usr/local/lib/python3.8/dist-packages Requires: beautifulsoup4 Required-by:aptのインストール先
--listfiles package (または -L) は与えられたパッケージがインストールするファイルを表示します。
from https://debian-handbook.info/browse/ja-JP/stable/sect.manipulating-packages-with-dpkg.html実行ファイルのフルパスは以下
$ which sudoku /usr/games/sudoku $ which ffmpeg /usr/bin/ffmpeg $ which nginx /usr/sbin/nginxaptのインストールにはsudoが必要です
/usr/share/doc/
nginxは上記の場所にインストールされていました。$ dpkg -L nginx /. /usr /usr/share /usr/share/doc /usr/share/doc/nginx /usr/share/doc/nginx/copyright /usr/share/doc/nginx/changelog.Debian.gz$ dpkg -L sudoku /. /usr /usr/games /usr/games/sudoku /usr/share /usr/share/applications /usr/share/applications/sudoku.desktop /usr/share/doc /usr/share/doc/sudoku /usr/share/doc/sudoku/changelog.Debian.gz /usr/share/doc/sudoku/copyright /usr/share/icons /usr/share/icons/hicolor /usr/share/icons/hicolor/64x64 /usr/share/icons/hicolor/64x64/apps /usr/share/icons/hicolor/64x64/apps/sudoku.png /usr/share/icons/hicolor/scalable /usr/share/icons/hicolor/scalable/sudoku.svg /usr/share/man /usr/share/man/man6 /usr/share/man/man6/sudoku.6.gz /usr/share/menu /usr/share/menu/sudoku /usr/share/pixmaps /usr/share/pixmaps/sudoku.xpm /usr/share/sudoku /usr/share/sudoku/template$ dpkg -L ffmpeg /. /usr /usr/bin /usr/bin/ffmpeg /usr/bin/ffplay /usr/bin/ffprobe /usr/bin/qt-faststart /usr/share /usr/share/doc /usr/share/doc/ffmpeg /usr/share/doc/ffmpeg/RELEASE_NOTES /usr/share/doc/ffmpeg/copyright /usr/share/ffmpeg /usr/share/ffmpeg/ffprobe.xsd /usr/share/ffmpeg/libvpx-1080p.ffpreset /usr/share/ffmpeg/libvpx-1080p50_60.ffpreset /usr/share/ffmpeg/libvpx-360p.ffpreset /usr/share/ffmpeg/libvpx-720p.ffpreset /usr/share/ffmpeg/libvpx-720p50_60.ffpreset /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/ffmpeg /usr/share/man /usr/share/man/man1 /usr/share/man/man1/ffmpeg-all.1.gz /usr/share/man/man1/ffmpeg-bitstream-filters.1.gz /usr/share/man/man1/ffmpeg-codecs.1.gz /usr/share/man/man1/ffmpeg-devices.1.gz /usr/share/man/man1/ffmpeg-filters.1.gz /usr/share/man/man1/ffmpeg-formats.1.gz /usr/share/man/man1/ffmpeg-protocols.1.gz /usr/share/man/man1/ffmpeg-resampler.1.gz /usr/share/man/man1/ffmpeg-scaler.1.gz /usr/share/man/man1/ffmpeg-utils.1.gz /usr/share/man/man1/ffmpeg.1.gz /usr/share/man/man1/ffplay-all.1.gz /usr/share/man/man1/ffplay.1.gz /usr/share/man/man1/ffprobe-all.1.gz /usr/share/man/man1/ffprobe.1.gz /usr/share/man/man1/qt-faststart.1.gz /usr/share/doc/ffmpeg/changelog.Debian.gz/usr/shareディレクトリに関して
「/usr/share」ディレクトリには、「アーキテクチャに依存しないファイル」が置かれます。
すなわち、manコマンドで参照できるマニュアルがここに置かれています。このマニュアルは、多くの場合「/usr/share/man」に置かれています。何らかのソフトウェアをインストールしたとき、そのソフトウェアに関するドキュメントがここに置かれる場合もあります。「/usr/share/doc」などが主なディレクトリになるでしょう。設定ファイルの雛形があることも多いので、覚えておくと役に立ちます。このように、/usr/shareディレクトリは、主にドキュメント関係が置かれていることが多いです。apt の--dry-run
インストールコマンドの予行演習/シミュレーションを行うことができます。
このスイッチを設定するには、引数に-s
を追加します。
さらに、追加で--print-uris
を使えばダウンロードおよびインストールされたサイズとパッケージに関する追加情報(WebアドレスおよびMD5Sum)を表示します。$ Sudo apt-get install sudoku --print-uris$ Sudo apt-get install sudoku -s結局、aptは内部で何をやっているのか?
- 依存関係のチェック(およびインストールの要求)
- パッケージをダウンロードして検証する
- apt-getは必要なものをすべて一時ディレクトリ(/var/cache/apt/archives/)にダウンロードする
- WebサーバーまたはFTPサーバーからダウンロードされる。それらはsources.listで指定される
- ここに落とさるものは
.deb
ファイルである。- dpkgにインストールするように指示する
- dpkgがパッケージ(/var/cache/apt/archives/)を抽出し、コンテンツを適切な場所にコピーし、既存のファイルとそれらの変更を確認する
- インストールするファイルは
dpkg -L ffmpeg
などで追える
dpkg -L ffmpeg
で確認すると/usr/share
以外に/usr/bin
にバイナリファイルが確認できるdpkg -L sudoku
で確認すると/usr/share
以外に/usr/games
にバイナリファイルが確認できるdpkg -L nginx
で確認すると/usr/share
しか表示されなかった/usr/bin
はコマンドの実行ファイルの場所である。dpkg -L hoge
はインストールするファイルを示しているはずだが、どういうことか?「変更を確認する」ということはこの実行ファイルとの差分を取っているのか??(要調査)- maintainer scriptsを実行する(インストール処理)
- コピーしたパッケージにはシステムにインストールされるファイルと制御ファイルと特定の状況でパッケージングシステムが実行するスクリプトが含まれている。
- 特定の状況でパッケージングシステムが実行するスクリプトはmaintainer scriptsと呼ばれている。これらのスクリプトは次のように分割されています。
- preinst:システムファイル階層にファイルをインストールする前
- postinst:インストール後
- prerm:アンインストール前
- postrm:アンインストール後
- 制御ファイルは以下のようになっている
- control:依存関係のリストおよびパッケージを識別するための情報
- conffiles:Aリスト設定ファイル(通常は/etcにあるもの)
- debian-binary:deb-packageバージョンが含まれている
- md5sums:検証用のパッケージ内の各ファイルのmd5sumのリスト
- templates:インストール中のエラーの説明とダイアログを含むファイル
- トリガーに基づいていくつかのアクションを実行
- 結果として適切な場所に実行ファイルが置かれることになる(whichコマンドで確認)
実行ファイルのフルパスは以下
$ which sudoku /usr/games/sudoku $ which ffmpeg /usr/bin/ffmpeg $ which nginx /usr/sbin/nginx$ ll /var/cache/apt/archives/ total 249876 drwxr-xr-x 1 root root 512 Jul 12 14:08 ./ drwxr-xr-x 1 root root 512 Jul 12 14:12 ../ -rw-r--r-- 1 root root 103540 Feb 26 04:28 aufs-tools_1%3a4.14+20190211-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 6320 Apr 30 2017 cgroupfs-mount_1.4_all.deb -rw-r--r-- 1 root root 21408158 May 15 12:16 containerd.io_1.2.13-2_amd64.deb -rw-r--r-- 1 root root 41206258 May 19 07:25 docker-ce-cli_5%3a19.03.9~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 22898926 Feb 14 07:27 docker-ce_5%3a19.03.6~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 22882090 Mar 4 14:37 docker-ce_5%3a19.03.7~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 22529530 May 19 07:25 docker-ce_5%3a19.03.9~3-0~ubuntu-eoan_amd64.deb -rw-r--r-- 1 root root 1452156 Mar 16 22:48 ffmpeg_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 258936 Mar 11 04:08 gnupg_2.2.19-3ubuntu2_all.deb -rw-r--r-- 1 root root 97660 Mar 11 04:08 gpg-wks-client_2.2.19-3ubuntu2_amd64.deb -rw-r--r-- 1 root root 90268 Mar 11 04:08 gpg-wks-server_2.2.19-3ubuntu2_amd64.deb -rw-r--r-- 1 root root 482096 Mar 11 04:08 gpg_2.2.19-3ubuntu2_amd64.deb -rw-r--r-- 1 root root 1852632 Apr 16 15:23 grub-common_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 3658 Mar 28 2015 grub-gfxpayload-lists_0.7_amd64.deb -rw-r--r-- 1 root root 969136 Apr 16 15:23 grub-pc-bin_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 124692 Apr 16 15:23 grub-pc_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 589024 Apr 16 15:23 grub2-common_2.04-1ubuntu26_amd64.deb -rw-r--r-- 1 root root 923728 Feb 7 02:14 i965-va-driver_2.4.0-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 1764416 Apr 13 20:28 intel-media-va-driver_20.1.1+dfsg1-1_amd64.deb -rw-r--r-- 1 root root 50084 Dec 9 2018 libaacs0_0.9.0-2_amd64.deb -rw-r--r-- 1 root root 1160240 Feb 8 22:05 libaom0_1.0.0.errata1-3build1_amd64.deb -rw-r--r-- 1 root root 88004 May 22 2018 libass9_1%3a0.14.0-2_amd64.deb -rw-r--r-- 1 root root 16184 May 22 2018 libavc1394-0_0.5.4-5_amd64.deb -rw-r--r-- 1 root root 4880392 Mar 16 22:48 libavcodec58_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 74264 Mar 16 22:48 libavdevice58_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 1083784 Mar 16 22:48 libavfilter7_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 980732 Mar 16 22:48 libavformat58_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 54172 Mar 16 22:48 libavresample4_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 241240 Mar 16 22:48 libavutil56_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 47268 May 22 2018 libbdplus0_0.1.2-3_amd64.deb -rw-r--r-- 1 root root 138036 Mar 30 03:09 libbluray2_1%3a1.2.0-1_amd64.deb -rw-r--r-- 1 root root 10164 Mar 23 02:40 libbs2b0_3.1.0+dfsg-2.2build1_amd64.deb -rw-r--r-- 1 root root 202256 Mar 25 01:54 libcaca0_0.99.beta19-2.1ubuntu1_amd64.deb -rw-r--r-- 1 root root 17568 Aug 9 2019 libcdio-cdda2_10.2+2.0.0-1_amd64.deb -rw-r--r-- 1 root root 16236 Aug 9 2019 libcdio-paranoia2_10.2+2.0.0-1_amd64.deb -rw-r--r-- 1 root root 58604 Jun 15 2018 libcdio18_2.0.0-2_amd64.deb -rw-r--r-- 1 root root 37632 Mar 23 16:00 libchromaprint1_1.4.3-3build1_amd64.deb -rw-r--r-- 1 root root 7885840 Dec 23 2019 libcodec2-0.9_0.9.2-2_amd64.deb -rw-r--r-- 1 root root 79608 Oct 27 2019 libdc1394-22_2.2.5-2.1_amd64.deb -rw-r--r-- 1 root root 115656 Mar 23 02:00 libexpat1-dev_2.2.9-1build1_amd64.deb -rw-r--r-- 1 root root 12807788 Nov 9 2018 libflite1_2.1-release-3_amd64.deb -rw-r--r-- 1 root root 122888 Mar 23 16:10 libgme0_0.6.2-1build1_amd64.deb -rw-r--r-- 1 root root 24440 Apr 2 2019 libgsm1_1.0.18-2_amd64.deb -rw-r--r-- 1 root root 24264 Nov 29 2018 libiec61883-0_1.2.0-3_amd64.deb -rw-r--r-- 1 root root 111456 Apr 9 19:58 libigdgmm11_20.1.1+ds1-1_amd64.deb -rw-r--r-- 1 root root 266740 Apr 16 19:18 libjack-jackd2-0_1.9.12~dfsg-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 40392 Feb 3 08:23 liblilv-0-0_0.24.6-1_amd64.deb -rw-r--r-- 1 root root 132544 Nov 18 2019 libmp3lame0_3.100-3_amd64.deb -rw-r--r-- 1 root root 123596 Nov 18 2019 libmpg123-0_1.25.13-1_amd64.deb -rw-r--r-- 1 root root 39220 Feb 11 15:23 libmysofa1_1.0~dfsg0-1_amd64.deb -rw-r--r-- 1 root root 14300 Apr 16 19:04 libnginx-mod-http-image-filter_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 12532 Apr 16 19:04 libnginx-mod-http-xslt-filter_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 42296 Apr 16 19:04 libnginx-mod-mail_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 66852 Apr 16 19:04 libnginx-mod-stream_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 289928 Mar 23 03:00 libnorm1_1.5.8+dfsg2-2build1_amd64.deb -rw-r--r-- 1 root root 161788 Nov 9 2018 libopenal-data_1%3a1.19.1-1_all.deb -rw-r--r-- 1 root root 492372 Nov 9 2018 libopenal1_1%3a1.19.1-1_amd64.deb -rw-r--r-- 1 root root 598732 Mar 25 01:11 libopenmpt0_0.4.11-1build1_amd64.deb -rw-r--r-- 1 root root 191092 Aug 29 2019 libopus0_1.3.1-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 158116 Apr 3 22:08 libpgm-5.2-0_5.2.122~dfsg-3ubuntu1_amd64.deb -rw-r--r-- 1 root root 55296 Mar 16 22:48 libpostproc55_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 7236 Mar 13 21:38 libpython3-dev_3.8.2-0ubuntu2_amd64.deb -rw-r--r-- 1 root root 3937864 Apr 30 20:48 libpython3.8-dev_3.8.2-1ubuntu1.1_amd64.deb -rw-r--r-- 1 root root 30718 Apr 27 2016 libraw1394-11_2.1.2-1_amd64.deb -rw-r--r-- 1 root root 89436 Mar 23 17:22 librubberband2_1.8.2-1build1_amd64.deb -rw-r--r-- 1 root root 939116 May 5 2018 libsamplerate0_0.1.9-2_amd64.deb -rw-r--r-- 1 root root 406608 Apr 14 15:08 libsdl2-2.0-0_2.0.10+dfsg1-3_amd64.deb -rw-r--r-- 1 root root 46608 Dec 9 2019 libserd-0-0_0.30.2-1_amd64.deb -rw-r--r-- 1 root root 23160 May 5 2018 libshine3_3.1.1-2_amd64.deb -rw-r--r-- 1 root root 16672 Mar 21 21:58 libsnappy1v5_1.1.8-1build1_amd64.deb -rw-r--r-- 1 root root 24488 Nov 9 2018 libsndio7.0_1.5.0-3_amd64.deb -rw-r--r-- 1 root root 19536 Dec 9 2019 libsord-0-0_0.16.4-1_amd64.deb -rw-r--r-- 1 root root 77984 Nov 29 2019 libsoxr0_0.1.3-2build1_amd64.deb -rw-r--r-- 1 root root 53180 Feb 25 00:53 libspeex1_1.2~rc1.2-1.1ubuntu1_amd64.deb -rw-r--r-- 1 root root 16884 Dec 9 2019 libsratom-0-0_0.6.4-1_amd64.deb -rw-r--r-- 1 root root 201632 Apr 10 01:58 libssh-gcrypt-4_0.9.3-2ubuntu2_amd64.deb -rw-r--r-- 1 root root 57124 Mar 16 22:48 libswresample3_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 155764 Mar 16 22:48 libswscale5_7%3a4.2.2-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 162300 Dec 10 2019 libtheora0_1.1.1+dfsg.1-15ubuntu2_amd64.deb -rw-r--r-- 1 root root 47628 Oct 26 2019 libtwolame0_0.4.0-2_amd64.deb -rw-r--r-- 1 root root 7044 Apr 17 01:03 libva-drm2_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 11896 Apr 17 01:03 libva-x11-2_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 53532 Apr 17 01:03 libva2_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 25624 Mar 26 02:59 libvdpau1_1.3-1ubuntu2_amd64.deb -rw-r--r-- 1 root root 35040 Nov 10 2018 libvidstab1.1_1.1.0-2_amd64.deb -rw-r--r-- 1 root root 819568 Mar 25 00:14 libvpx6_1.8.2-1build1_amd64.deb -rw-r--r-- 1 root root 77024 Jan 1 2020 libwavpack1_5.2.0-1_amd64.deb -rw-r--r-- 1 root root 520964 Nov 10 2018 libx264-155_2%3a0.155.2917+git0a84d98-2_amd64.deb -rw-r--r-- 1 root root 1059940 Mar 23 17:39 libx265-179_3.2.1-1build1_amd64.deb -rw-r--r-- 1 root root 9296 Mar 30 15:53 libxcb-xfixes0_1.14-2_amd64.deb -rw-r--r-- 1 root root 201320 Feb 16 14:18 libxvidcore4_2%3a1.3.7-1_amd64.deb -rw-r--r-- 1 root root 242136 Apr 21 18:08 libzmq5_4.3.2-2ubuntu1_amd64.deb -rw-r--r-- 1 root root 32480 Feb 14 15:58 libzvbi-common_0.2.35-17_all.deb -rw-r--r-- 1 root root 237288 Feb 14 15:58 libzvbi0_0.2.35-17_amd64.deb -rw-r--r-- 1 root root 9070160 May 1 10:13 linux-image-unsigned-5.6.0-1010-oem_5.6.0-1010.10_amd64.deb -rw-r--r-- 1 root root 53430980 May 1 10:13 linux-modules-5.6.0-1010-oem_5.6.0-1010.10_amd64.deb -rw-r----- 1 root root 0 Apr 23 15:44 lock -rw-r--r-- 1 root root 2415676 Apr 17 06:18 mesa-va-drivers_20.0.4-2ubuntu1_amd64.deb -rw-r--r-- 1 root root 2545648 Apr 17 06:18 mesa-vdpau-drivers_20.0.4-2ubuntu1_amd64.deb -rw-r--r-- 1 root root 37284 Apr 16 19:04 nginx-common_1.17.10-0ubuntu1_all.deb -rw-r--r-- 1 root root 425076 Apr 16 19:04 nginx-core_1.17.10-0ubuntu1_amd64.deb -rw-r--r-- 1 root root 3616 Apr 16 19:04 nginx_1.17.10-0ubuntu1_all.deb -rw-r--r-- 1 root root 30338 Apr 5 2017 ocl-icd-libopencl1_2.2.11-1ubuntu1_amd64.deb -rw-r--r-- 1 root root 20076 Jun 5 2019 os-prober_1.74ubuntu2_amd64.deb drwx------ 1 _apt root 512 Jul 12 14:08 partial/ -rw-r--r-- 1 root root 57448 Dec 28 2017 pigz_2.4-1_amd64.deb -rw-r--r-- 1 root root 1798932 Apr 22 01:28 python-pip-whl_20.0.2-5ubuntu1_all.deb -rw-r--r-- 1 root root 1212 Mar 13 21:38 python3-dev_3.8.2-0ubuntu2_amd64.deb -rw-r--r-- 1 root root 230292 Apr 22 01:28 python3-pip_20.0.2-5ubuntu1_all.deb -rw-r--r-- 1 root root 25324 Apr 17 03:08 python3-software-properties_0.98.9_all.deb -rw-r--r-- 1 root root 1228 Mar 13 21:38 python3-venv_3.8.2-0ubuntu2_amd64.deb -rw-r--r-- 1 root root 23760 Mar 23 18:03 python3-wheel_0.34.2-1_all.deb -rw-r--r-- 1 root root 515060 Apr 30 20:48 python3.8-dev_3.8.2-1ubuntu1.1_amd64.deb -rw-r--r-- 1 root root 5292 Apr 30 20:48 python3.8-venv_3.8.2-1ubuntu1.1_amd64.deb -rw-r--r-- 1 root root 10548 Apr 17 03:08 software-properties-common_0.98.9_all.deb -rw-r--r-- 1 root root 41564 May 4 2018 sudoku_1.0.5-2build3_amd64.deb -rw-r--r-- 1 root root 4020 Apr 17 01:03 va-driver-all_2.7.0-2_amd64.deb -rw-r--r-- 1 root root 4596 Mar 26 02:59 vdpau-driver-all_1.3-1ubuntu2_amd64.deb -rw-r--r-- 1 root root 155508 Feb 26 01:13 zlib1g-dev_1%3a1.2.11.dfsg-2ubuntu1_amd64.deb参考
- 投稿日:2020-07-11T16:48:24+09:00
SSH時のパスワードの入力を省略する
おおまかな流れ
- 移動前のサーバーで秘密鍵・公開鍵のペアを作成し,移動先のサーバーに公開鍵を登録
- 移動先のサーバーのパスワードの代わりに,秘密鍵作成時に指定したパスフレーズで認証
- (何かしらのパスワードを要求されるという意味では)変わらない
- パスフレーズを毎回聞かれるのを避けるためにパスフレーズをssh-agentに登録
- ssh-agentの登録状況はシェルが再起動する度にリセットされる
- e.g. PuTTYのduplicate sessionでも
- 結局毎回ssh-addをする羽目に
- ssh-agentの登録情報を保持するためにkeychain導入
公開鍵認証によるログイン
移動元サーバーでの準備
公開鍵の作成
$ ssh-keygen
何も入力しないと,id_rsa,id_rsa.pubという2つのファイルが生成される.
ここで決めるパスフレーズを今後使って認証することになる.
- id_rsaが秘密鍵(他には公開しない)
- id_rsa.pubが公開鍵(他と共有する)
.pubがついている方を移動後サーバーに登録しておくことで,公開鍵認証ができるようになる.
~/.ssh/configでの設定
ssh時の設定を管理する~/.ssh/configを以下の通り編集.
Host ${ホスト名} HostName ${IPアドレス} User ${ユーザー名} IdentityFile ~/.ssh/id_rsa # 上の行程で作成した秘密鍵ファイルのパスこれで
$ ssh ${ホスト名}をしたときに秘密鍵のパスが指定されるようになる(
ssh ~~
とコマンドラインで打って指定する方法もある).移動先サーバーでの準備
~/.ssh/authorized_keysに移動元サーバーの公開鍵id_rsa.pubを追加
これで移動前サーバーの秘密鍵と移動先サーバーの公開鍵を照合して認証するようになる.ここまでで出来るようになること
移動先サーバーのパスワードではなく,id_rsaの生成時に指定したパスフレーズを使って認証するようになる.
しかし,何かしらのパスワードが求められるという意味では手間は変わらない.ssh-agentを使ったパスフレーズの記憶 (keychainを導入する場合スキップ可)
この問題を回避するために,ssh-agentに(秘密鍵認証に使う)パスフレーズを記憶させる.
$ eval `ssh-agent` $ ssh-add ~/.ssh/id_rsaQiita@evakichi: SSH で毎回パスフレーズを入れるのが面倒だと思ったときには
しかし,ssh-agentの登録情報はシェルの再起動ごとにリセットされる.
例えば,PuTTYでSSH接続してssh-addをする→duplicate sessionで新しいウインドウを開いてもその情報を使えず,再度ssh-addする必要がある.keychainの導入
情報系学生の備忘録: パスフレーズ入力回数を劇的に減らしてくれる「keychain」
が詳しい.しかし,インストール方法やURLが変更されているので注意.最新の情報・ソースは,
GitHub: keychain
Keychain公式Wiki (上記ページからリンク)インストール方法
- 上記のGitHubからダウンロード
- その中のkeychainにパスを通す (ビルドする必要もない)
- 例えば~/local/bin/keychainにリンク,~/local/binを$PATHに
- GitHubに書かれている"Please apply your patches to keychain.sh, not the generated keychain script"はkeychain開発者向け?
- 上記公式Wikiの通り,.bash_profileに以下を追記
.bash_profileeval `keychain --eval --agents ssh id_rsa`これで起動する度に「ssh-agentを立ち上げてssh-addでパスフレーズを入力して…」という手間から解放される!
- 投稿日:2020-07-11T16:41:38+09:00
OneDrive上のファイルをwgetする
この記事の概要
FTPやSCPが使えない(or 使えるようにするのがめんどくさい)環境間でOneDrive経由でファイル連携をする
前提環境
- wget
wget --version GNU Wget 1.14 built on linux-gnu.手順
OneDriveにアップロードしたファイルを共有可能にする
Webインターフェース上で操作します。
ファイルのダウンロードURLを生成する
再度対象のファイルを右クリックして「埋め込み」を押下します。
生成された埋め込みタグの
src
属性にURLが定義されています。
このURLのembed?
をdownload?
に書き換えます。https://onedrive.live.com/embed?cid=xxxxx ↓ https://onedrive.live.com/download?cid=xxxxx書き換えたあとのURLがダウンロードURLになります。
wgetする
ファイルを連携したい先でwgetします。
URLはシングルクオートで囲む必要があります。wget 'https://onedrive.live.com/download?cid=xxxxx' -O <ファイル名>これでダウンロード完了です。
まとめ
わざわざ環境を整えるほどじゃないときにけっこう便利です。
OneDriveに上げられないくらいデカイファイルなら素直にFTPしましょう。
- 投稿日:2020-07-11T15:32:00+09:00
sleepの歴史探訪
sleepコマンドの引数には"sleep 0.5"のように整数だけではなく浮動小数点数を指定できるのは比較的有名。しかし、複数引数を与えるとそれらの合計値だけ待つという謎機能があるのはあまり知られていない。たとえば"sleep 1 2 3"だと6秒待つ
— sat? (@satoru_takeuchi) July 11, 2020GNU 拡張みたいですよhttps://t.co/J6AnzurLxA)
— Kaz Nishimura (@kazssym) July 11, 2020括弧が泣き別れた これならどうだhttps://t.co/07AumUMTIQ
— Kaz Nishimura (@kazssym) July 11, 2020ほほぉ・・・ちょっとソースコードを確認してみよう。もしかすると、こういう仕様になった経緯が見つかるかもしれない!
TL;DR (要約)
- sleepコマンドは、従来秒数指定しかできなかった。(時分秒指定も無し)。
- coreutilsで実装する段階で、時分秒指定と同時に、複数指定で合算でスリープするようになった(1992年)
- 浮動小数指定もできるようになった(1999年)
- BSD系では現状まだ、秒数指定のまま。
過去の歴史を手繰ってみる
まずは、wikipediaで経緯を確認してみよう。
https://en.wikipedia.org/wiki/Sleep_(command)
そして、その実装はcoreutilsの中に書かれている、こちらか……
https://github.com/coreutils/coreutils/blob/master/src/sleep.c
これのhistoryを手繰ってみると…… おおお!!!一番最初から、この仕様で実装されている!!
ということはcommit履歴に原因は書いてない…… とほほほ……
https://github.com/coreutils/coreutils/blob/ccbd1d7dc5189f4637468a8136f672e60ee0e531/src/sleep.c#L45
for (i = 1; i < argc; i++) seconds += argdecode (argv[i]); sleep (seconds);ではなぜ、この仕様になっているのだろうか?(推定)
どうやら「時分秒」指定をできるようにする → 合算した方が便利っぽい、と発想したものと推定される。
ポイントは「時分秒サポート」と「合算」は同時という事。
coreutil以前
sleepコマンドそのもの歴史はこちら。
https://en.wikipedia.org/wiki/Sleep_(command)
ここにある通り、UNIX Likeなしステム時点で、sleepコマンドは存在していた。
2.8 BSD (1981年)
manにsleep 1の記載なし。
2.9.1 BSD (1983年)
https://www.freebsd.org/cgi/man.cgi?query=sleep&sektion=1&manpath=2.9.1+BSD
項目 サポート 秒数指定 65535まで 単位指定 ✕ 複数指定 ✕ 少数指定 ✕ 2.10 BSD (1985年)
https://www.freebsd.org/cgi/man.cgi?query=sleep&sektion=1&manpath=2.10+BSD
項目 サポート 秒数指定 2,147,483,647 まで 単位指定 ✕ 複数指定 ✕ 少数指定 ✕ Sun OS 4.1.3 (1987年)
https://www.freebsd.org/cgi/man.cgi?query=sleep&sektion=1&manpath=SunOS+4.1.3
項目 サポート 秒数指定 2,147,483,647 まで 単位指定 ✕ 複数指定 ✕ 少数指定 ✕ Initial revision (1992年)
初期バージョンでは、単位指定と複数指定はできるが、少数指定はできなかった。
https://github.com/coreutils/coreutils/blob/ccbd1d7dc5189f4637468a8136f672e60ee0e531/src/sleep.c
項目 サポート 秒数指定 UINT_MAX まで 単位指定 ◯ 複数指定 ◯ 少数指定 ✕ つまり、5時間30分のSleepをしたければ、
sleep 5h 30m
はサポートしていた。GNU sh-utils 2.0 相当かな?
https://www.freebsd.org/cgi/man.cgi?query=sleep&sektion=1&manpath=Debian+2.2.7
Rewrite to allow fractional seconds and to handle SIGCONT.(1999年)
1999年11月28日のcommitによって、少数指定ができるようになった。
https://github.com/coreutils/coreutils/commit/56172516598e1f48a629830aa5ce2c9ab9240bb7
項目 サポート 秒数指定 DBL_MAXまで 単位指定 ◯ 複数指定 ◯ 少数指定 ◯ これによって、5時間30分のSleepをしたければ、
sleep 5.5h
もサポートできるようになった。まとめ(再掲)
- sleepコマンドは、従来秒数指定しかできなかった。(時分秒指定も無し)。
- coreutilsで実装する段階で、時分秒指定と同時に、複数指定で合算でスリープするようになった(1992年)
- 浮動小数指定もできるようになった(1999年)
- BSD系では現状まだ、秒数指定のまま。
以上になります。
- 投稿日:2020-07-11T14:58:57+09:00
【PowerShell】Linuxのgrepのように行を検索する方法(Windows)
はじめに
WindowsのPowerShellでLinuxのようにgrepする方法について書きます。
そもそもgrepとは?
簡単に言うと、Linuxのファイルの行を検索するコマンドになります。
詳しくは下記ページをご覧下さい。使用例[root@tspweb01 network-scripts]# grep IPADDR ifcfg-enp0s8 IPADDR=192.168.56.30 [root@tspweb01 network-scripts]#※コマンド実行前の状態
コマンド実行前[root@tspweb01 network-scripts]# cat ifcfg-enp0s8 TYPE="Ethernet" BOOTPROTO="none" IPV6INIT="no" NAME="enp0s8" UUID="81d71b89-d1b6-4ca9-853d-c5bf74c8487e" DEVICE="enp0s8" ONBOOT="yes" IPADDR=192.168.56.30 PREFIX=24 [root@tspweb01 network-scripts]#PowerShellのgrep方法
実行コマンド
コマンド<コマンド> | Out-String -Stream | Select-String <検索したい文字列>使用例①
Get-NetFirewallProfileの実行結果から「Domain」の行を抽出
文字列抽出前PS C:\Users\Administrator> Get-NetFirewallProfile Name : Domain Enabled : False DefaultInboundAction : NotConfigured DefaultOutboundAction : NotConfigured AllowInboundRules : NotConfigured AllowLocalFirewallRules : NotConfigured AllowLocalIPsecRules : NotConfigured AllowUserApps : NotConfigured AllowUserPorts : NotConfigured AllowUnicastResponseToMulticast : NotConfigured NotifyOnListen : False EnableStealthModeForIPsec : NotConfigured LogFileName : %systemroot%\system32\LogFiles\Firewall\pfirewall.log LogMaxSizeKilobytes : 4096 LogAllowed : False LogBlocked : False LogIgnored : NotConfigured DisabledInterfaceAliases : {NotConfigured} 〜〜〜省略〜〜〜 PS C:\Users\Administrator>文字列抽出結果
文字列抽出前PS C:\Users\Administrator> Get-NetFirewallProfile | Out-String -Stream | Select-String Domain Name : Domain PS C:\Users\Administrator>使用例②
test.txtの中から「test」の行を抽出
文字列抽出前PS C:\Users\Administrator\Desktop> cat .\test.txt aaaa aaaa test vagfafa fafeaea iiaaaa faejfajefa文字列抽出結果
文字列抽出結果PS C:\Users\Administrator\Desktop> cat .\test.txt | Out-String -Stream | Select-String "test" test PS C:\Users\Administrator\Desktop>まとめ
下記コマンドで行を検索できる。
コマンド<コマンド> | Out-String -Stream | Select-String <検索したい文字列>
- 投稿日:2020-07-11T14:18:12+09:00
【AWS】WordPress「画像を切り抜く際にエラーが発生しました。」の対処方法
現象
Amazon LinuxインスタンスでWordpressをたてた。その際に画像を編集すると「画像を切り抜く際にエラーが発生しました。」とエラーが発生し、画像を切り抜けない。
原因
原因はphp-gdというプログラムがインストールしていないため。
実際にphp-gdがインストールされているか、下記コマンドを入力して確かめたが、やはりインストールされていなかった。yum info php-gd表示結果
$ yum info php-gd 読み込んだプラグイン:xxx 利用可能なパッケージ 名前 : php-gd アーキテクチャー : xxx バージョン : xxx リリース : xxx 容量 : xxx リポジトリー : xxx 要約 : A module for PHP applications for using the gd graphics : library URL : http://www.php.net/ ライセンス : PHP and BSD 説明 : The php-gd package contains a dynamic shared object that : will add support for using the gd graphics library to PHP(一部内容省略)
対処法
1.php-gdを下記コマンドでインストール。
sudo yum -y install php-gd2.下記コマンドで再起動して有効化。
sudo systemctl restart httpd.service3.念のため、再起動できているか確認。
sudo systemctl status httpd.service4.php-gdがインストールされているか確認。
$ yum info php-gd 読み込んだプラグイン:xxx インストール済みパッケージ 名前 : php-gd アーキテクチャー : xxx バージョン : xxx リリース : xxx 容量 : xxx リポジトリー : installed 提供元リポジトリー : xxx 要約 : A module for PHP applications for using the gd graphics : library URL : http://www.php.net/ ライセンス : PHP and BSD 説明 : The php-gd package contains a dynamic shared object that : will add support for using the gd graphics library to PHP.(一部内容省略)
上記作業で、画像を編集する際も「画像を切り抜く際にエラーが発生しました。」というエラーが解消され、画像を切り抜けるようになった。
参考
https://webbibouroku.com/Blog/Article/wordpress-php-gd
https://www.it-swarm-ja.tech/ja/php/amazon-linux-2%e3%81%aegd%e7%94%bb%e5%83%8f%e6%8b%a1%e5%bc%b5%e3%81%ab%e9%96%a2%e3%81%99%e3%82%8b%e5%95%8f%e9%a1%8c/807484822/
- 投稿日:2020-07-11T13:18:51+09:00
【AWS】EC2インスタンスにnode.jsをインストールしてサンプルプログラムを実行
環境
Windows 10 Home
Tera Term 4.105(Macの人はTerminal)前提
・Amazon Linux EC2
-SSH接続可能
-アウトバウンドのHTTP接続が可能node.jsをインストール
ec2-linux$ cd ~ $ wget https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.xz公式サイトから最新バージョンのリンクを取得
node-v12.18.2-linux-x64.tar.xz
ec2-linux$ cd ~ $ wget https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.xztarファイルがあることを確認
ec2-linux$ ls $ node-v12.18.2-linux-x64.tar拡張子がxzになっているのでtarに変換
ec2-linux$ mv node-v12.18.2-linux-x64.tar.xz node-v12.18.2-linux-x64.tar解凍
ec2-linux$ tar xvf node-v12.18.2-linux-x64.tar実行コマンドがインストールされるnode-v12.18.2-linux-x64/binにパスを設定して移動
ec2-linux$ export PATH=$PATH:~/node-v12.18.2-linux-x64/bin $ cd node-v12.18.2-linux-x64/binapp.jsというサンプルプログラムを用意
app.jsconst http = require('http'); const hostname = 'localhost'; const port = 8080; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });実行
ec2-linux$ touch app.js $ vim app.js ~~~~~~サンプルプログラムを貼付け(vimコマンドは各自お調べください)~~~~~~ $ node app.js Server running at http://localhost:8080/