パッケージとハードウェアについて

# パッケージとは
***ソフトウェアに必要なものを1つにまとめたもの***です。

ex)実行ファイルやライブラリなど

パッケージでは依存関係、競合関係があるのでなかなか管理が難しいので
***パッケージ管理システム***を使います。

```リポジトリ```と呼ばれる***色々なファイルやデータが保存されているデータベース***から
ダウンロードしてきてパッケージ管理システムを通してインストール、アンインストール、アップデートしていきます。


# aptコマンド
```APT```とはdpkgに代わり、***操作が向上したパッケージ管理システム***です。

|コマンド|説明|
|--|--|
|apt|パッケージのインストール、アップグレードなど幅広く実行|
|apt-file|指定したファイルを含むパッケージを検索|
|apt-get|パッケージのインストール、アンインストール、アップグレードを実行|
|apt-cache|パッケージの情報を調べ、検索|

***今はapt-file|とapt-getの使用は推奨されていない***みたいです。
***パッケージの削除などはroot権限が必要***だから見たいです。基本は***aptコマンドをメイン***で使います。

# aptコマンド使い方
メインのコマンドです。apt-getとapt-cacheの機能が両方あります。
使い方です。
```
$ sudo apt install パッケージ名キーワード
```
```sudo```は***root権限***でという意味です。
```-c設定ファイル```を設定ファイルを指定し、```-dでパッケージのダウンロード```をします。
```--reinstall```でインストールされているパッケージの再インストールです。
```-y```というオプションは***処理中にyesかnoで聞かれたら自動的にyes***となります。


# apt-fileコマンド
サブコマンドで```-F```があります。検索内容で完全一致するものを探します。
***apt-fileをインストールする必要***があるみたいです。
使用前には```apt-file update ```が必要みたいです。

使い方は

```
$ apt-file search "ファイル名キーワード"
```
基本searchを使うことが多いみたいです。



### apt-getのリポジトリ
ap-getの情報をみていきます.

|ファイル名|説明|
|--|--|
|/etc/apt/sources.list.d|apt に関する設定ファイルが格納されるディレクトリ|
|/etc/apt/sources.list|登録されているリポジトリのURLを列挙するファイル|

ちなみにこれはcatコマンドを使い、ubuntuで確認できました。都合上ファイルの中身はこの記事では表示できません。


https://hibiki-press.tech/dev-env/ubuntu/add-ppa/4640#toc2


使い方は
```
$ sudo apt-get -y install パッケージ名
```
```-y```というオプションは***処理中にyesかnoで聞かれたら自動的にyes***となります。
```-s```だとシステム変更なしで動作をシミュレートする見たいです。

### apt-cacheコマンド
root権限がなくても使えます。理由はパッケージ情報を調べたり、インストールされていないパッケージを検索できたりするからです。

こちらの記事にサブコマンドが載っています。

https://www.motokis-brain.com/article/117#1

```
$ apt-cache search パッケージ名
```


### 試しに動かした
windowで動かしたのとこの記事で編集しているのがMacなので実行結果が都合上書けないので
挙動はご自身で確認をお願いします。

```
$  apt -y install apt-file
```
まずこれでインストールします。

```
$ apt-file
```
でapt-file確認。

全部消す場合は
```
$ sudo apt purge apt-file
```

```
$ apt list
$ apt show キーワード
```
などで調べてみました。


# 色々なコマンドの資料

https://kaworu.jpn.org/ubuntu/apt

https://qiita.com/SUZUKI_Masaya/items/1fd9489e631c78e5b007

https://junkbox.wicurio.com/index.php?apt-get%E3%82%B5%E3%83%96%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89

# Debian形式
Debian形式のパッケージ管理ツールは先ほどの***aptコマンド***と次出てくる***dpkgコマンド***です。

### dpkgコマンド
古参のdebian系のコマンドでパッケージのインストールや削除には***root権限が必要***です。

```
$ sudo dpkg -iE パッケージ名
```
```-E```は***同じバージョンがインストールされていればインストールしない***オプションです。
```-G```は***新しいバージョンがインストールされていればインストールしない***オプションです。
```-R```はディレクトリ内の最帰的に処理します。

***-iはアクション***のことです。
下の記事がアクション一覧です。

https://kaoru2012.blogspot.com/2015/05/dpkg.html?m=1




⚫︎dpkg資料

https://eng-entrance.com/linux-package-dpkg#dpkg-3

# YUMとは
CentOSなどで使われるAPTのようなツールです。

⚫︎設定ファイル
|設定|ファイル|
|--|--|
|YUMの設定|/etc/yum.conf ファイル|
|リポジトリ情報設定|/etc/yum.repos.d/ ディレクトリ|
||/etc/yum/ ディレクトリ|

catコマンドなどを使って中身を見てみてください。

### yumコマンド
使い方として

```
$ yum install python
```
などがあります。***yumコマンドもroot権限が必要***です。
```
# yum オプション　パッケージ名
```
最近だと***yumコマンドからdnfコマンドに代わってきた***みたいです。
複数のグループ単位でインストールできます。

![スクリーンショット 2022-06-29 15.33.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/9dc8cc81-fd2d-b607-4b73-c92732ec4e01.png)

> 引用　 https://eng-entrance.com/linux-package-yum#yum-4

# RPMとは
Red Hat社が開発したパッケージ管理システムです。いろいろなオプションを使い、併用して操作できます。
３つのモードとそれに対応するモードごとのオプションがあります。

```
# rpm -ivh パッケージ名
```
```-iはインストール、vは詳細情報表示、進行状況を#で表す```意味です。


下の表にオプション一覧がありますが、まず大事なオプションだけもピックアップします。

⚫︎メインのオプション(インストール、アップグレード)
|オプション|意味|
|--|--|
|-i|パッケージをインストール|
|-U|パッケージをアップグレード|
|-F|パッケージがインストールされている時アップグレード|

⚫︎併用オプション(インストール、アップグレード)
|併用オプション|意味|
|--|--|
|-v|情報表示|
|-h|インストールの進行状況を「#」で表示|
|--nodeps|依存関係を無視し、インストール|
|--force|存在するファイルを置き換える|
|--test|仮テストする|

⚫︎メインのオプション(アンインストール)
|オプション|意味|
|--|--|
|-e|パッケージをアンインストール|

⚫︎併用オプション(アンインストール)
|併用オプション|意味|
|--|--|
|--nodeps|依存関係を無視し、アンインストール|


⚫︎メインのオプション(検索表示)
|オプション|意味|
|--|--|
|-q|指定したパッケージがインストールされているか確認|

⚫︎併用オプション(検索表示)
|併用オプション|意味|
|--|--|
|-a|情報表示|
|-f|インストールの進行状況を「#」で表示|
|-c|設定ファイルのみ表示|
|-d|ドキュメント表示|
|-i|指定したパッケージの情報を表示|
|-l|指定したパッケージに含まれるファイル表示|
|-R|指定したパッケージが依存しているファイル表示|
|-changelog|変更履歴表示|




![スクリーンショット 2022-06-29 15.49.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/730fe124-6d98-35c5-d45d-ccfa63749308.png)
![スクリーンショット 2022-06-29 15.50.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/ab8ff9a4-d733-14cc-6673-68fe573105d0.png)

> 引用　　https://www.itsenka.com/contents/development/unix-linux/rpm.html



⚫︎コマンド集

https://qiita.com/shimajiri/items/e82257394b06713a9332



# ハードウェアとは
ハードウェアとは```コンピューターの部品```のことです。
コンピューターはハードウェアによって構成されています。

ex) 
cpu メモリ　ストレージ、マザーボードなど

特にcpuが代表的かなと思います。
### cpu
コンピューターの頭脳です。
cpuの種別として「アーキテクチャー」とあります。

# デバイス
全てのハードウェアは```dev```ディレクトリ内に***デバイスファイル***として管理され、
ハードウェアにアクセスできます。デバイスファイルは```udev```という仕組みで自動作成されます。


## デバイス関連のディレクトリとファイル

|ファイル名|意味|
|--|--|
|/dev|デバイスファイル|
|/proc|ハードウェアの状態が記載されたファイル|
|/sys|テキストファイルとしてシステム情報にアクセスできるファイル|


|ファイル名|意味|
|--|--|
|/proc/cpuinfo|CPU情報|
|/proc/interrupts|IRQという割り込み処理の情報|
|/proc/ioports|アドレスに関する情報|
|/proc/meminfo|メモリ情報|
|/proc/swaps|スワップ領域情報|
|/proc/bus/usb/デバイス名|USBデバイス情報|
|/proc/bus/pci/デバイス名|PCIデバイス（拡張カード）情報|



### デバイスファイル参照コマンド
⚫︎CPUの情報参照
```
$ cat /proc/cpuinfo
$ lscpu
```

⚫︎pciデバイスの情報
```
lspci  -v
```

⚫︎USBデバイス情報参照　ツリー状表示
```
lsusb -t
```


# デバイスドライバー
デバイスを利用するための制御プログラムで
Linuxではカーネルモジュール(カーネルの一部)として組み込まれています。
***デバイスドライバーをLinuxカーネルに組み込む***ことを```ロードする```　と言う。

```
$ lsmod  #カーネルモジュール確認
$ modprobe   #デバイスドライバーを手動でロード
$ insmod   #ロード
$rmmod  #取り外し
```

# udev
/devディレクトリにデバイスファイル自動作成し、
設定ファイルを編集すれば特定のハードウェアのデバイスファイルを変えることができます。
***/etc/udev/rules.d***ディレクトリに設定ファイルがあります。

# 資料
https://www.udemy.com/course/linuc-lv1-101/