2019年11月18日月曜日

mvコマンドの使い方

コマンド概要

ファイルやディレクトリを移動するmvコマンドです。
オプションをつけてコマンドを実行する機会は少ないかもしれません


mv [オプション] 移動するファイル 移動先のディレクトリ

オプション 説明
-f 移動先に同名のファイルがあれば上書きする
-n 移動先に同名のファイルがあれば上書きしない
-i 移動先に同名のファイルがあれば上書きするか確認する

コマンド使用例

  • ディレクトリ内のファイルをすべて移動する
  • 
     $ ls TEMP
     dht11  dht11.c  dht11.py  temp.txt
     $ ls TEMP2
     $
     $ mv TEMP/* TEMP2
     $ ls TEMP     ★TEMP配下にあったファイルが全て無くなっている
     $
     $ ls TEMP2  ★TEMP配下にあったファイルが全て移動している
     dht11  dht11.c  dht11.py  temp.txt
     $
    
    
  • 「-i」オプションのつけた時の動き
  • 
     $ mv -i TEMP/temp.txt TEMP2
     mv: 'TEMP2/temp.txt' を上書きしますか? n
     $ ls -l TEMP2
     合計 24
     -rwxr-xr-x 1 pi pi 8668 11月 16 14:24 dht11
     -rw-r--r-- 1 pi pi 3215 11月 16 14:55 dht11.c
     -rw-r--r-- 1 pi pi 3788 11月 16 17:30 dht11.py
     -rw-r--r-- 1 pi pi 1095 11月 16 17:31 temp.txt  ★上書きされてない
     $
     $ mv -i TEMP/temp.txt TEMP2
     mv: 'TEMP2/temp.txt' を上書きしますか? y
     $ ls -l TEMP2
     合計 24
     -rwxr-xr-x 1 pi pi 8668 11月 16 14:24 dht11
     -rw-r--r-- 1 pi pi 3215 11月 16 14:55 dht11.c
     -rw-r--r-- 1 pi pi 3788 11月 16 17:30 dht11.py
     -rw-r--r-- 1 pi pi 1095 11月 18 20:34 temp.txt ★上書きされた(タイムスタンプから)
     $
    
    

cpコマンドの使い方

コマンド概要

ファイルやディレクトリをコピーするコマンドです。

cp [オプション] コピー元ファイル名 コピー先ファイル名

オプション 説明
-f コピー先に同名のファイルがある場合にも上書きする
-p コピー元ファイルの属性(オーナー、アクセス権、タイムスタンプなど)を保持したままコピーする
-r ディレクトリごとコピーする

使用例

  • フォルダごとコピーする場合は「-r」を使います
  • 以下の例では試しに「-p」オプションをつけた場合とつけない場合を比較してみました。
    
     $ ls
     LED
     $ cp -r LED LED2
     $ cp -rp LED LED3
     $ ls -l
     合計 16
     drwxr-xr-x 2 pi pi 4096 11月 16 15:04 LED
     drwxr-xr-x 2 pi pi 4096 11月 18 19:54 LED2 【★普通にコピーしたからタイムスタンプが更新されてる】
     drwxr-xr-x 2 pi pi 4096 11月 16 15:04 LED3 【★「-p」オプションをつけたからタイムスタンプが元のまま】
    
    
    

lsコマンドの使い方

概要

ディレクトリの内容を表示するlsコマンドについて情報を整理します。
基本的なコマンドなので、オプションを変えながら何個か表示します。

オプション 説明
-a 隠しファイル(.から始まる名前のファイル)も含めて表示する
-A -aと同じだが、「.」「..」は表示しない
-F ファイルの種類も表示する
-i iノード番号も表示する
-l ファイルの詳細な情報を表示する
-t ファイルを最終更新日時順に表示する
-h -lとセットで使う。ファイルのサイズを単位付きで表示する

表示例

  • 普段見やすくてよく使うのは「-lA」オプション
  • 
    pi@raspberrypi:~ $ ls -lA
    合計 100
    -rw------- 1 pi pi   56 11月 17 10:17 .Xauthority
    -rw------- 1 pi pi 7327 11月 18 17:22 .bash_history
    -rw-r--r-- 1 pi pi  220  9月 26 09:09 .bash_logout
    -rw-r--r-- 1 pi pi 3523  9月 26 09:09 .bashrc
    drwxr-xr-x 7 pi pi 4096 10月 27 13:35 .cache
    drwx------ 5 pi pi 4096 10月 27 13:35 .config
    drwx------ 3 pi pi 4096  9月 26 09:46 .gnupg
    drwxr-xr-x 3 pi pi 4096  9月 26 09:18 .local
    drwx------ 3 pi pi 4096 10月 27 13:35 .pki
    -rw-r--r-- 1 pi pi  807  9月 26 09:09 .profile
    drwx------ 3 pi pi 4096 10月 27 14:52 .vnc
    -rw------- 1 pi pi 2436 11月 17 10:17 .xsession-errors
    -rw------- 1 pi pi 2436 11月 16 23:26 .xsession-errors.old
    drwxr-xr-x 2 pi pi 4096 10月 27 14:21 Desktop
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Documents
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Downloads
    drwxr-xr-x 2 pi pi 4096  9月 26 09:18 MagPi
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Music
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Pictures
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Public
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Templates
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Videos
    drwxr-xr-x 2 pi pi 4096 11月  2 14:48 local
    drwxr-xr-x 4 pi pi 4096 11月 16 15:05 osoyo
    
    

  • ファイルサイズを聞かれたときに見やすいのは「-lAh」オプション
  • 
    pi@raspberrypi:~ $ ls -lAh
    合計 100K
    -rw------- 1 pi pi   56 11月 17 10:17 .Xauthority
    -rw------- 1 pi pi 7.2K 11月 18 17:22 .bash_history
    -rw-r--r-- 1 pi pi  220  9月 26 09:09 .bash_logout
    -rw-r--r-- 1 pi pi 3.5K  9月 26 09:09 .bashrc
    drwxr-xr-x 7 pi pi 4.0K 10月 27 13:35 .cache
    drwx------ 5 pi pi 4.0K 10月 27 13:35 .config
    drwx------ 3 pi pi 4.0K  9月 26 09:46 .gnupg
    drwxr-xr-x 3 pi pi 4.0K  9月 26 09:18 .local
    drwx------ 3 pi pi 4.0K 10月 27 13:35 .pki
    -rw-r--r-- 1 pi pi  807  9月 26 09:09 .profile
    drwx------ 3 pi pi 4.0K 10月 27 14:52 .vnc
    -rw------- 1 pi pi 2.4K 11月 17 10:17 .xsession-errors
    -rw------- 1 pi pi 2.4K 11月 16 23:26 .xsession-errors.old
    drwxr-xr-x 2 pi pi 4.0K 10月 27 14:21 Desktop
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Documents
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Downloads
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:18 MagPi
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Music
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Pictures
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Public
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Templates
    drwxr-xr-x 2 pi pi 4.0K  9月 26 09:46 Videos
    drwxr-xr-x 2 pi pi 4.0K 11月  2 14:48 local
    drwxr-xr-x 4 pi pi 4.0K 11月 16 15:05 osoyo
    
    

  • 最近更新されたファイルを探したいときは「-lAt」オプション
  • 
    pi@raspberrypi:~ $ ls -lAt
    合計 100
    -rw------- 1 pi pi 7327 11月 18 17:22 .bash_history
    -rw------- 1 pi pi 2436 11月 17 10:17 .xsession-errors
    -rw------- 1 pi pi   56 11月 17 10:17 .Xauthority
    -rw------- 1 pi pi 2436 11月 16 23:26 .xsession-errors.old
    drwxr-xr-x 4 pi pi 4096 11月 16 15:05 osoyo
    drwxr-xr-x 2 pi pi 4096 11月  2 14:48 local
    drwx------ 3 pi pi 4096 10月 27 14:52 .vnc
    drwxr-xr-x 2 pi pi 4096 10月 27 14:21 Desktop
    drwx------ 3 pi pi 4096 10月 27 13:35 .pki
    drwxr-xr-x 7 pi pi 4096 10月 27 13:35 .cache
    drwx------ 5 pi pi 4096 10月 27 13:35 .config
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Documents
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Downloads
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Music
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Pictures
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Public
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Templates
    drwxr-xr-x 2 pi pi 4096  9月 26 09:46 Videos
    drwx------ 3 pi pi 4096  9月 26 09:46 .gnupg
    drwxr-xr-x 2 pi pi 4096  9月 26 09:18 MagPi
    drwxr-xr-x 3 pi pi 4096  9月 26 09:18 .local
    -rw-r--r-- 1 pi pi  220  9月 26 09:09 .bash_logout
    -rw-r--r-- 1 pi pi 3523  9月 26 09:09 .bashrc
    -rw-r--r-- 1 pi pi  807  9月 26 09:09 .profile
    
    

環境変数の設定方法


概要

Linux上で操作をする際に使用する変数に、シェル変数と環境変数があります。
シェル変数は設定をしたプロセスでのみ有効な変数であるのに対して環境変数は別のプロセスにも引き継がれます。
環境変数の設定方法と、表示方法について整理します。
また、よく使うPATHの環境変数についても整理します。

要点

  • 環境変数の表示方法
  • 環境変数を表示するにはprintenvコマンドを使います。
    
     $ printenv
     SHELL=/bin/bash
     LANGUAGE=ja_JP.UTF-8
     NO_AT_BRIDGE=1
     PWD=/home/pi
     LOGNAME=pi
     XDG_SESSION_TYPE=tty
     HOME=/home/pi
    
     【省略】
    
     LC_ALL=ja_JP.UTF-8
     PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
     DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
     MAIL=/var/mail/pi
     SSH_TTY=/dev/pts/0
     TEXTDOMAIN=Linux-PAM
     _=/usr/bin/printenv
    
    

    個別に表示する場合は「echoコマンド $変数名」を使って表示することもできます。
    
     $ echo $LANG
     ja_JP.UTF-8
    
    

  • 環境変数の設定方法
  • 環境変数を設定する際には「変数名=値」とします。以下の例はLANGの変数を「en_US.UTF-8」に設定しています。
    
     $ echo $LANG
     ja_JP.UTF-8
     $
     $ LANG=en_US.UTF-8
     $
     $ echo $LANG
     en_US.UTF-8
    
    
  • 環境変数の設定方法
  • 環境変数を引き継ぐ場合にはexportコマンドが必要です。
    以下は環境変数を設定したけど、exportしてないから子プロセスに引き継がれなくて、exportしたら環境変数が引き継がれた様子です。

    
     $ NAME=aaa
     $ echo $NAME
     aaa
     $ bash ★子プロセスへ移動
     $ echo $NAME ★表示されない
     $ exit
     $
     $ echo $NAME
     aaa
     $ export NAME
     $ bash ★子プロセスへ移動
     $ echo $NAME ★表示されてる
     aaa 
    
    
  • 主な環境変数

  • 変数名 説明
    PWD カレントディレクトリの絶対パス
    PATH 参照しているコマンドのパス
    HOME ユーザのホームディレクトリ
    PS1 プロンプトを定義
    PS2 2次プロンプトを定義
    HISTFILE コマンド履歴を格納するファイルを定義
    LANG 言語情報
    HOSTNAME ホスト名
    USER 現在のユーザ名
    HISTSIZE コマンド履歴の最大値
    LAGNAME ログインシェルのユーザ名

  • 環境変数PATHについて
  • PATHの環境変数を表示すると以下のようになっていました。
    
     $ echo $PATH
     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
    
    
    これは、このユーザが以下のフォルダにあるコマンドを相対パスで実行できることを示しています。
    • /usr/local/sbin
    • /usr/local/bin
    • /usr/sbin
    • /usr/bin
    • /sbin
    • /bin
    • /usr/local/games
    • /usr/games

    なので、例えば実行できるコマンドを追加してパスを通す必要が出てきたときは、この環境変数PATHにコマンドのパスを追加します。

2019年11月14日木曜日

aptitudeコマンド remove とpurgeの違いの実験

概要

パッケージのインストールと確認ができるaptitudeコマンドについての情報をまとめます。
アンインストールする際のremoveオプションとpurgeオプションの違いもためしてみました。

要点

  • aptitudeコマンドについて
  • aptitudeコマンドはapt-getコマンドとapt-chaheコマンドと同等の事ができるコマンドです。
    試しに使ってみようと思ったらaptitudeがインストールされていませんでした。
    なので、まずはapt-getでインストールします
    
     #apt-get install aptitude
    
    

    サブコマンド 説明
    update データベースを更新する
    show パッケージ名 パッケージ情報を表示する
    search パターン パッケージを検索する
    install パッケージ名 パッケージをインストールする
    remove パッケージ名 設定ファイルを残してパッケージをアンインストールする
    purge パッケージ名 設定ファイルも含めてパッケージをアンインストールする
    full-upgrade すべてのパッケージファイルをアップグレードする
    safe-upgrade ほかのパッケージを削除しないようにすべてのパッケージファイルをアップグレードする

  • aptitude updateコマンド
  • 「apt-get update」と同様にパッケージデータベースの更新を行います。試しにどっちも試してみたところ、発見とヒットの違いがありました。

    
     # apt-get update
     ヒット:1 http://archive.raspberrypi.org/debian buster InRelease
     ヒット:2 http://raspbian.raspberrypi.org/raspbian buster InRelease
     パッケージリストを読み込んでいます... 完了
     #
     # aptitude update
     発見 http://raspbian.raspberrypi.org/raspbian buster InRelease
     発見 http://archive.raspberrypi.org/debian buster InRelease
    
    
  • aptitude removeコマンドとaptitude purge コマンド
  • 設定ファイルを残してパッケージを削除するコマンドです。
    設定ファイルを残す場合がremoveで、場合と残さない場合がpurgeなので、本当に設定ファイルが消えるのか実験してみました。

    1. まずはremoveでsnmpをアンインストール。
    2. 
       # ls snmp
       snmp.conf  【★設定ファイルがある】
       #
       # aptitude remove snmp
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{u} libsnmp30{u} mariadb-common{u} mysql-common{u} snmp
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
      
       #
       # ls snmp
       snmp.conf 【★アンインストールしても設定ファイルが残っている 想定通り】
      
      
    3. 再度snmpをインストールして、今度はpurgeのサブコマンドを使ってアンインストール。
    4. 
       # ls snmp
       snmp.conf【★設定ファイルがある】
       # aptitude purge snmp
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{u} libsnmp30{u} mariadb-common{u} mysql-common{u} snmp{p}
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
       
       #
       # ls snmp
       snmp.conf 【★アンインストールしたのに設定ファイルが残っている! 想定外】
      
      
    5. snmp.confファイルが関連するパッケージを確認すると、snmpではなくlibsnmp-baseが紐づいているようでした。
    6. 
       # dpkg -S snmp.conf
       libsnmp-base: /etc/snmp/snmp.conf   【★関連しているパッケージは libsnmp-baseだった!】
       libsnmp-base: /usr/share/man/man5/snmp.conf.5.gz
      
      
    7. ということで、再度snmpをインストールして、今度はlibsnmp-baseをpurgeでアンインストール。
    8. 
       # ls snmp
       snmp.conf 【★設定ファイルがある】
       #
       # aptitude purge libsnmp-base
       以下のパッケージが削除されます:
         libsnmp-base{p}
       更新: 0 個、新規インストール: 0 個、削除: 1 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 2,176 kB のディスク領域が解放されます。
       以下のパッケージには満たされていない依存関係があります:
        snmp : 依存: libsnmp-base (>= 5.7.3+dfsg-5) インストールされません
        libsnmp30 : 依存: libsnmp-base インストールされません
       以下のアクションでこれらの依存関係の問題は解決されます:
      
           以下のパッケージを削除する:
       1)     libsnmp30 [5.7.3+dfsg-5+b1 (now, stable)]
       2)     snmp [5.7.3+dfsg-5+b1 (now, stable)]
      
       この解決方法を受け入れますか? [Y/n/q/?]Y
       以下のパッケージが削除されます:
         libmariadb3{u} libsnmp-base{p} libsnmp30{a} mariadb-common{u} mysql-common{u} snmp{a}
       更新: 0 個、新規インストール: 0 個、削除: 6 個、保留: 6 個。
       アーカイブの 0 B を取得する必要があります。展開後に 7,747 kB のディスク領域が解放されます。
       先に進みますか? [Y/n/?] Y
       (データベースを読み込んでいます ... 現在 156656 個のファイルとディレクトリがインストールされています。)
       snmp (5.7.3+dfsg-5+b1) を削除しています ...
       libsnmp30:armhf (5.7.3+dfsg-5+b1) を削除しています ...
       libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
       libsnmp-base (5.7.3+dfsg-5) を削除しています ...
       mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
       update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
       mysql-common (5.8+1.0.5) を削除しています ...
       man-db (2.8.5-2) のトリガを処理しています ...
       libc-bin (2.28-10+rpi1) のトリガを処理しています ...
       (データベースを読み込んでいます ... 現在 156439 個のファイルとディレクトリがインストールされています。)
       libsnmp-base (5.7.3+dfsg-5) の設定ファイルを削除しています ...
      
       # ls snmp 【★設定ファイルが消えてる! 想定通り】
       ls: 'snmp' にアクセスできません: そのようなファイルやディレクトリはありません 
      
      
    snmpをpurgeでアンインストールするときも、libsnmp-baseが関連するから一緒にアンインストールしてるように見えますが、どうやらその時は設定ファイルは消さないようです。
    表示内容をよく見ると、「libsnmp-base{u}」と表示されてる時と「libsnmp-base{p}」と書かれている時があり、{u}は設定残してアンインストール、{p}は設定含めてアンインストールしているように見えました。

2019年11月11日月曜日

apt-getコマンド


概要

パッケージをインストールする際に、ファイル転送も含めて一度にやってくれる便利なapt-getコマンドについて情報をまとめます。

要点

  • apt-getコマンドについて
  • apt-getコマンドはパッケージ管理をしてくれるコマンドで、インストールする際に必要なファイルを転送してくれて、ほかのパッケージとの依存関係があれば、解決しながらインストールをしてくれるとても便利なコマンドです。
    コマンドを実行する際には、任意のオプションと必須のサブコマンドをつけて実行します。

    オプション 説明
    -d ファイルのダウンロードだけする
    -s システムを変更せず動作をシミュレートする

    サブコマンド 説明
    install パッケージをインストールする
    remove パッケージをアンインストールする
    update パッケージリストのデータベースを更新する
    upgrade インストール済みのパッケージの内容を最新の状態にアップグレードする

  • apt-getコマンドに関連する設定ファイル
  • apt-getコマンドはパッケージファイルをネットワークの先から持ってくる必要があるので、設定ファイルに必要なサーバの情報を記載する必要があります。私のラズパイの設定を見ると以下のように書かれていました。
    
     $ cat /etc/apt/sources.list
      deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
      # Uncomment line below then 'apt-get update' to enable 'apt-get source'
      #deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
    
    
    URLにアクセスすると以下のページにアクセスできます。
    apt-getコマンドを使うとここからパッケージファイルをダウンロードすることになります。



  • apt-getコマンドを使ったパッケージ情報の更新
  • 
     # apt-get update
     取得:1 http://archive.raspberrypi.org/debian buster InRelease [25.2 kB]
     取得:2 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
     取得:3 http://archive.raspberrypi.org/debian buster/main armhf Packages [259 kB]
     取得:4 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB]
     13.3 MB を 45秒 で取得しました (295 kB/s)
     パッケージリストを読み込んでいます... 完了
    
    

  • apt-getコマンドを使ったパッケージのインストール
  • 試しにapt-getを使ってsnmpというパッケージをインストールしてみます。
    apt-getを使うと依存関係のあるパッケージも一緒にインストールしてくれます。

    
     # apt-get install snmp
     パッケージリストを読み込んでいます... 完了
     依存関係ツリーを作成しています
     状態情報を読み取っています... 完了
     以下の追加パッケージがインストールされます:
       libmariadb3 libsnmp-base libsnmp30 mariadb-common mysql-common
    【以下略】
    
    

  • apt-getコマンドを使ったパッケージのアンインストール
  • 
    #apt-get remove 【準備中】
    
    
  • apt-getコマンドを使ったインストール済みパッケージのアップグレード
  • apt-get upgrade コマンドを実行すると、インストール済みのパッケージの内容をアップグレードしてくれます。
    途中で追加のデータが必要な場合には「続行しますか?」と聞いてくるので、大文字の「Y」を打てば続行してくれます。
    
     # apt-get upgrade
      パッケージリストを読み込んでいます... 完了
      依存関係ツリーを作成しています
      状態情報を読み取っています... 完了
      アップグレードパッケージを検出しています... 完了
      以下のパッケージは保留されます:
        libjavascriptcoregtk-4.0-18 libwebkit2gtk-4.0-37
      以下のパッケージはアップグレードされます:
        dhcpcd5 firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek gldriver-test libarchive13 libfribidi0 pi-bluetooth
        piwiz python-piglow python3-piglow raspberrypi-sys-mods rpi-eeprom rpi-eeprom-images
      アップグレード: 16 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。
      16.1 MB のアーカイブを取得する必要があります。
      この操作後に 17.4 kB のディスク容量が解放されます。
      続行しますか? [Y/n] Y
      取得:2 http://archive.raspberrypi.org/debian buster/main armhf dhcpcd5 armhf 1:8.1.1+really7.0.8-0.1+rpt2 [142 kB]
      取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libarchive13 armhf 3.3.3-4+deb10u1 [271 kB]
      【以下略】
    
    

dpkgコマンドについて

概要

Debian系のLinuxのパッケージ管理を行う際に使用するdpkgコマンドについての情報をまとめます。


要点

  • dpkgコマンドについて
  • dpkgコマンドを使う際には、任意のオプションと必須のアクションを指定する必要があります。


    オプション 説明
    -E 同じバージョンがインストールされている場合はインストールしない
    -G 新バージョンがインストールされている場合はインストールしない
    -R 再帰的に処理する


    アクション 説明
    -i パッケージをインストールする
    -r 設定ファイルを残してアンインストールする
    -P 設定ファイルも含めてアンインストールする
    -l インストール済みパッケージを表示する
    -L 指定パッケージからインストールされたファイルを一覧表示する
    -s パッケージの情報を表示する
    --configure 展開されたパッケージを構成する
    --unpack パッケージをインストールせず展開する(解凍する)
    -P

  • deb形式のパッケージファイルについて
  • deb形式のファイルは拡張子が.debとなっているファイルで、ファイル名には「パッケージ名称」、「バージョン情報」、「アーキテクチャ(i386など)」が書かれています。
    必要なパッケージとバージョンを、アーキテクチャ32bit版、64bit版などの情報に注意してファイルを選択します。
    取得したファイルは、USBなどの媒体に入れて運ぶか、SCPやなどのファイル転送のツールを使ってインストールしたい装置にファイルを移動します。

  • パッケージのインストール
  • おそらくdpkgのなかで一番使うアクションだと思います。
    間違ってバージョンを下げないように-Gをつけてい置くと安全なのかもしれません。
    ルート権限で行う必要があります。
    
     # dpkg -G -i debファイル 【準備中】
    
    
  • 設定ファイルも含めたパッケージのアンインストール
  • 設定ファイルだけ残してアンインストールしてもしょうがないと思うので、使うならpurgeアクションで使うと思います。
    ルート権限でおこなう必要があります。
    
     # dpkg -p debファイル 【準備中】
    
    
  • インストール済みパッケージの確認(一覧)
  • 装置にインストールされているファイルの一覧を表示します。
    例えば、zip関連のパッケージを確認する場合は以下のように確認することができるので便利です。
    
     $ dpkg -l | grep zip
     ii  bzip2                                 1.0.6-9.2~deb10u1                   armhf        high-quality block- 
     sorting file compressor - utilities
     ii  gzip                                  1.9-3                               armhf        GNU compression 
     utilities
     ii  unzip                                 6.0-23+deb10u1                      armhf        De-archiver for .zip 
     files
     ii  zip                                   3.0-11                              armhf        Archiver for .zip 
     files
    
    
  • インストール済みパッケージの確認(詳細)
  • このコマンドはパッケージの詳細を見るときに使うようです。
    試しにunzipのパッケージに使ってみたら以下のような情報が見れました。
    
     $ dpkg -s unzip
     Package: unzip
     Status: install ok installed
     Priority: optional
     Section: utils
     Installed-Size: 466
     Maintainer: Santiago Vila 
     Architecture: armhf
     Multi-Arch: foreign
     Version: 6.0-23+deb10u1
     Depends: libbz2-1.0, libc6 (>= 2.4)
     Suggests: zip
     Description: De-archiver for .zip files
      InfoZIP's unzip program. With the exception of multi-volume archives
      (ie, .ZIP files that are split across several disks using PKZIP's /& option),
      this can handle any file produced either by PKZIP, or the corresponding
      InfoZIP zip program.
      .
      This version supports encryption.
     Homepage: http://www.info-zip.org/UnZip.html