20200711のLinuxに関する記事は16件です。

Linuxをコンソールから操作する方法

手順

  1. linuxで[ip a]と打ってipを確認する
  2. コンソールで[ssh root@確認したip]と入力する ※rootの場合
  3. パスワード打ったらできます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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.xls

viコマンド

テキストエディタ

基本コマンド

コマンド 内容
:q viを終了する
:w ファイルを上書き保存する
:w <ファイル名> 名前を付けて保存する
:q! ファイルを保存せずにviを終了する

移動コマンド

コマンド 内容
gg 1行目に移動する
G 最後の行に移動する
<数字>G <数字>行目に移動する
[wataru@localhost testgo]$ vi work.05.txt 
ABCDEFG
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, 56C     
ABCDEFG
HIJKLMN
OPQRSTUWwaq
abcdef

1234562345623456
#d$で削除した文字列はpを利用して、張り付けることが出来る
345678

検索

ノーマルモードで/(スラッシュ)入力すると検索可能。

HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN
HIJKLMN
OPQOPQOPQ

OPQOPQOPQ

HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN
HIJKLMN

HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN
HIJKLMN


HIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMNHIJKLMN
# /の後に検索したい文字を入力する
/HI     

chmodコマンド

ファイルモードを変更する

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.txt

chmodのユーザー指定

記号 意味
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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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ヶ月じっくり学習で取得できるような難易度だと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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を細かく操作できている気分になるので面白かったです(小並感)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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を細かく操作できている気分になるので面白かったです(小並感)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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を用いてチュートリアルをやっていこうと思います!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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/nginx

aptのインストールには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

dpkg

$ 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

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

/usr/bin vs /usr/local/bin

sudo pip3でインストールしたものは、/usr/local/lib~
pip3でインストールしたものは、/home/●●●/.local/lib~

参考
https://ja.stackoverflow.com/questions/30665/root%E3%81%AB-usr-local-bin%E3%81%AE%E3%83%91%E3%82%B9%E3%81%8C%E9%80%9A%E3%81%A3%E3%81%A6%E3%81%AA%E3%81%84%E7%90%86%E7%94%B1%E3%81%AF%E3%81%AA%E3%82%93%E3%81%A7%E3%81%99%E3%81%8B

/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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【パッケージ管理】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/nginx

aptのインストールには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

dpkg

$ 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

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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_rsa

Qiita@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_profile
eval `keychain --eval --agents ssh id_rsa`

これで起動する度に「ssh-agentを立ち上げてssh-addでパスフレーズを入力して…」という手間から解放される!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

OneDrive上のファイルをwgetする

この記事の概要

FTPやSCPが使えない(or 使えるようにするのがめんどくさい)環境間でOneDrive経由でファイル連携をする

前提環境

  • wget
wget --version
GNU Wget 1.14 built on linux-gnu.

手順

OneDriveにアップロードしたファイルを共有可能にする

Webインターフェース上で操作します。

対象のファイルを右クリックして「共有」を押下します。
2020-07-11 (2).png

ファイルのダウンロードURLを生成する

再度対象のファイルを右クリックして「埋め込み」を押下します。
2020-07-11 (2).png

「生成」を押下します。
2020-07-11 (4).png

生成された埋め込みタグの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しましょう。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

sleepの歴史探訪

ほほぉ・・・ちょっとソースコードを確認してみよう。もしかすると、こういう仕様になった経緯が見つかるかもしれない!

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系では現状まだ、秒数指定のまま。

以上になります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PowerShell】Linuxのgrepのように行を検索する方法(Windows)

はじめに

WindowsのPowerShellでLinuxのようにgrepする方法について書きます。

そもそもgrepとは?

簡単に言うと、Linuxのファイルの行を検索するコマンドになります。
詳しくは下記ページをご覧下さい。

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 <検索したい文字列> 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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-gd

2.下記コマンドで再起動して有効化。

sudo systemctl restart httpd.service

3.念のため、再起動できているか確認。

sudo systemctl status httpd.service

4.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/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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

公式サイトから最新バージョンのリンクを取得
image.png

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.xz

tarファイルがあることを確認

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

色々出力されて止まったら解凍完了
image.png

実行コマンドがインストールされる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/bin

app.jsというサンプルプログラムを用意

app.js
const 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/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS EC2インスタンスの終了方法(セキュリティGの削除とキーペアの削除)

インスタンスの終了

  • AWSにログイン
  • 「EC2」をクリック
  • 左ペインから「インスタンス」をクリック
  • 右ペインに表示されたインスタンス一覧から削除したいインスタンスにチェック
  • 「アクション」→「インスタンスの状態」→「終了」を選択 del_instabce1.jpg

セキュリティグループの削除

  • 左ペインから「セキュリティグループ」をクリック
  • 該当のセキュリティグループを選択する
  • 右上の「セキュリティグループを削除」をクリック del_instance2.jpg
  • 表示されたポップアップの「削除」をクリック
    del_instance3.jpg

  • 削除されたことを確認する
    del_instance4.jpg

キーペアの削除

  • 左ペインから「キーペア」をクリック
  • メインカラムに表示されたキーペア一覧から、該当のものを選択する
  • 右上の「アクション」→「削除」を選択
    del_instance5.jpg

  • フィールドに削除を入力し「削除」ボタンをクリック
    del_instance6.jpg

  • 「キーペア」一覧から削除されていることを確認して終了

  • お疲れ様でした!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む