次の方法で共有


パート 1.2 - Linux での基本的な操作

適用対象: .NET on Linux

このパートの目標

トレーニングのこの部分では、Linux の特殊なディレクトリ、スーパーユーザー (ルート) としてコマンドを実行する方法、およびパッケージ マネージャーを使用してアプリケーションをインストールおよびアンインストールする方法について説明します。

パッケージ マネージャーを使用してパッケージをインストールおよび削除するには、ルート特権が必要です。 そのため、まず、スーパーユーザーとしてコマンドを実行する方法を理解する必要があります。

Linux の特殊なディレクトリ

このトレーニングでは、Linux の管理方法について詳しく調べる必要はありません。 ただし、一部の特殊なディレクトリの概要は、トレーニングの残りの部分で使用するため便利です。

ディレクトリ 説明
/ ルート ディレクトリ (最上位フォルダー)。
bin/ ユーザー バイナリ、実行可能ファイルが含まれています。
/sbin ユーザー バイナリ、実行可能ファイルが含まれています。
/etc ローカル システムとアプリケーションの構成ファイルが含まれています。 たとえば、 /etc/system ディレクトリにいくつかの構成ファイルを作成して、ASP.NET Core アプリケーションをシステムによって自動的に起動できるようにします。
/home 各ユーザーのホーム ディレクトリを格納します。 たとえば、 /home/<username>
tmp/ システムとアプリケーションによって作成された一時ファイルを格納する一時ディレクトリ。
/usr 実行可能ファイル、ライブラリ、ドキュメントなどの共有可能なファイルを格納します。 たとえば、.NET ランタイムと SDK は、 /usr/share/dotnet/ ディレクトリにインストールされます。
/var 変数データ ファイルを格納します。 たとえば、Apache はルート Web サイトのコンテンツを /var/www/html ディレクトリに格納し、ログ ファイルを /var/log/apache2/ ディレクトリに格納します。 必要ではありませんが、このディレクトリに Web アプリケーションを発行します。

Note

Linux では大文字と小文字が区別されます。 したがって、 /home/Home は異なるディレクトリであり、ファイル名とファイル名は異なります。

Linux 仮想マシンに初めて接続するときは、ルート ディレクトリから開始します。 このディレクトリは、 /home/<username>になります。

ルート ディレクトリのショートカットは ~ (チルダ) です。 cd ~ コマンドはいつでも使用して、ホーム ディレクトリに戻ることができます。

次のコマンドを確認して試します (次のスクリーンショットを参照)。

  • pwd (作業ディレクトリの印刷): 現在のディレクトリと /etc/systemd ディレクトリを出力します。
  • echo: ~ (ルート) ディレクトリの値を出力します。
  • cd ~: ルート ディレクトリに戻ります。

password コマンドのスクリーンショット。

この例には、ディレクトリの内容の一覧は含まれません。 ただし、このトレーニングの後の手順では、ファイルとフォルダーの操作について説明します。 これらのタスクの一部には、スーパーユーザーのアクセス許可が必要です。 次のセクションでは、自分自身をスーパーユーザーの状態に昇格させる方法について説明します。

スーパーユーザーとしてコマンドを実行する

スーパーユーザーは、最も特権のあるユーザー アカウントです。 すべてのファイルとフォルダーへのルート (無制限) アクセス権を持ち、コンピューターの操作を完全に制御できます。 システム管理者は、このアカウントをシステムメンテナンスに使用します。

UNIX に似たシステムでは、スーパーユーザーの従来の名前は "root" です。 ルート ユーザーは、標準ユーザーに対して制限されているタスク (次のものを含む) を実行できます。

  • システム ディレクトリの変更
  • ユーザー特権の変更
  • ファイルの所有権の変更
  • 再起動などのシステム関連のタスク
  • 特定のアプリケーションのインストール

ルート アカウント ユーザーとしてコマンドを実行するには、いくつかの方法があります。 1 つは、 sudo su コマンドを使用することです。 このコマンドでは、 sudosuperuser doの略で、 su は "ユーザーの切り替え" の省略形です。 su コマンドを使用して、標準ユーザーを切り替えることもできます。

重要

ルート アカウント ユーザーになると、実行するすべての操作がルート コンテキストで実行されます。 そのため、ルート アカウントはシステム全体にアクセスできるため、慎重に対処する必要があります。

アクセス許可の問題を示すには、 /etcという名前の特別なフォルダーにテキスト ファイルを作成します。

/etc/ フォルダーは、システム構成ファイルがある場所です。 このフォルダーは、そのコンテンツが標準ユーザーによって変更されないように保護します。

次のコマンドを実行します。

echo hello world > /etc/helloworld.txt

echo コマンドは、その後に続くすべてのテキストを出力に書き込みます。 山かっこ (>) は、コンソールではなく、 /etc/helloworld.txt ファイルに出力を送信するようにシステムに指示します。 この動作は、Windows の動作に似ています。

Note

Linux では、 Helloworld.txthelloworld.txthelloworld など、大文字と小文字が区別されます。Txt は異なるファイルです。

ファイル名拡張子を指定する必要はありません。 "helloworld" という名前自体は完全に有効です。 ("txt" 拡張機能は、ここでは例としてのみ使用されます)。

このコマンドを実行すると、 アクセス拒否 エラー メッセージが表示されます。

アクセス許可が拒否されたメッセージのスクリーンショット。

/etc フォルダーは標準ユーザーが変更できない特殊なフォルダーであるため、操作は失敗します。 id コマンドを実行して、ユーザーを確認します。

I D コマンドのスクリーンショット。

ルート アカウント ユーザーにするには、 sudo su コマンドを実行します。

sudo su コマンドのスクリーンショット。

ルートになると、ドル記号 ($) がポンド記号 (#) になります。 また、ユーザー名は root に変更されます。 同じ id コマンドをもう一度実行すると、ルートのユーザー ID とグループ ID が 0 ことがわかります。

ルート コマンドのスクリーンショット。

重要

これで、セッションで "スーパーユーザー" ロールに昇格し、システムに完全にアクセスできるようになります。 これは潜在的に危険な状況であることに注意してください。続行するときは注意が必要です。

次に、同じコマンドをもう一度実行します。

echo hello world > /etc/helloworld.txt

今回は、エラー メッセージは表示されません。 ファイルが作成されているかどうかを確認するには、次のコマンドを実行します。

ll /etc/hello*

ll コマンドは、指定したフォルダー内のファイルとサブフォルダーを一覧表示します。 この例では、 /etc/hello* パラメーター値によってコマンド出力が、名前が hello で始まるファイルまたはフォルダーに制限されます。

hello コマンドのスクリーンショット。

出力には、ファイルが作成されたことが示されます。 ファイルの内容を調べる場合はどうしますか? cat コマンドはここで役立ちます。 コンテンツを表示するには、 cat /etc/helloworld.txtを実行します。

cat コマンドのスクリーンショット。

cat コマンドは、ファイルを順番に読み取り、その内容を標準出力に書き込みます。 そのため、コンソールに "hello world" と書き込まれます。

ルートの状態に昇格している間にシステムに損害を与える可能性のある間違いを防ぐには、ルート セッションを終了し、いくつかの危険な操作を回避するために標準ユーザー セッションに戻することをお勧めします。 これを行うには、exit を実行します。 ポンド記号がドル記号に戻り、ユーザー名が標準ユーザーとして表示されていることがわかります。

exit コマンドのスクリーンショット。

さらに練習するには、標準のユーザー コンテキスト内で同じ ll コマンドと cat コマンドを実行します。 /etc/ フォルダーにファイルを作成することはできませんが、ファイルを一覧表示して内容を読み取ることができます。

"sudo" プレフィックスを使用してコマンドを実行する

セッションでルート アカウント ユーザーになる代わりに、 sudo <command> 形式を使用して root としてコマンドを実行できます。 この方法は、指定されたコマンドをスーパーユーザーとしてのみ実行するため、より安全です。

たとえば、スーパーユーザーの状態に昇格していないときに restart を実行すると、結果は次のようになります。

restart コマンドのスクリーンショット。

代わりに、このコマンドをスーパーユーザーとして実行するには、次のようにセッション コンテキストを root に変更するか ( sudo suを実行して)、 sudo プレフィックスを追加します。

sudo reboot

これで、再起動操作は仮想マシンによって想定どおりに実行されます。

reboot コマンドのスクリーンショット。

パッケージ マネージャー

パッケージ マネージャーは、Linux でアプリケーションをインストール、アップグレード、および削除するために使用されます。 DPKG (Debian パッケージ管理システム)、RPM (Red Hat パッケージ マネージャー)、SUSE パッケージ マネージャー自体の Zypper など、いくつかの異なるパッケージ マネージャーが低レベルです。 そのため、パッケージ マネージャーを使用して直接ソフトウェアを管理することは困難な場合があります。 幸いなことに、ソフトウェアのインストールとアンインストールを容易にするこれらのツールのラッパーがあります。 たとえば、yum は RPM (Red Hat パッケージ マネージャー) のラッパーであり、APT は DPKG (Debian パッケージ管理システム) のラッパーです。

このチュートリアルでは、 Ubuntu パッケージ管理システムを実行していることを前提としています。 このシステムは、Debian GNU/Linux ディストリビューションで使用されているのと同じシステムから派生しています。 したがって、APT を使用してソフトウェアをインストールできます。

Linux の選択によっては、他のツールを使用する必要がある場合があります。 たとえば、Red Hat を実行している場合は、yum を使用してソフトウェアをインストールまたはアンインストールできます。

パッケージ マネージャー データベースをアップグレードする

APT は、使用可能なパッケージのデータベースで動作します。 パッケージ マネージャーを更新し、新しいインストール後にパッケージをアップグレードすることをお勧めします。

Ubuntu でパッケージ データベースを更新するには、 sudo apt updateを実行します。 apt コマンドの前にsudo プレフィックスが入力されていることに注意してください。 そうすることで、実際にセッション コンテキストをルート ユーザーのコンテキストに変更することなく、ルート ユーザーとして apt コマンドを実行します。

sudo apt update コマンドのスクリーンショット。

update コマンドでは、インストールされているソフトウェア パッケージは実際にはアップグレードされません。 代わりに、パッケージ データベースが更新されます。 実際のアップグレードは、 sudo apt upgrade コマンドによって実行されます。

sudo apt upgrade コマンドのスクリーンショット。

Yを入力し、Enter キーを押すと、パッケージがアップグレードされます。

アップグレードされたパッケージの進行状況のスクリーンショット。

パッケージ マネージャーを使用してパッケージを検索する

パッケージ マネージャーを使用してパッケージを検索する方法の次の例は、Apache 2 Web サーバーのインストールとアンインストールを示しています。

まず、 apt search コマンドを使用して "Apache Web サーバー" で検索します。 APT はフルテキスト検索を実行し、結果を表示します。 apache2のパッケージ名を使用して Apache HTTP Server をインストールします。

apt search コマンドのスクリーンショット。

Note

コマンドの使用。 パッケージを検索するルート ユーザーである必要がないため、 sudo プレフィックスは追加されません。

APT searchを実行する代わりに、Web ブラウザーで "Ubuntu に Apache をインストールする方法" を検索して、パッケージ名と APT コマンドを見つけることができます。 この例では、この公式の Ubuntu ドキュメント Ubuntu にApache 2をインストールする方法を明確に説明しています。

パッケージの詳細を表示する

正しいパッケージがあることを確認するには、次のスクリーンショットに示すように、 apt show を実行してパッケージの詳細を表示します。 ここでも、 sudo プレフィックスは必要ありません。

apt show コマンドのスクリーンショット。

インストールされているパッケージを一覧表示し、grep を使用して一覧をフィルター処理する

見つかったパッケージが目的のパッケージであると判断したら、移行先サーバーにまだインストールされていないことを確認する必要があります。

これを行うには、 apt list --installed コマンドを使用して、仮想マシンにインストールされているアプリケーションを一覧表示します。 grep コマンドを追加して結果をフィルター処理し、apache2を含むアプリケーションのみを表示することもできます。

Note

grep コマンドは、ファイル内の特定の用語を検索します。 正規表現または文字列を使用した検索、検索結果の反転、大文字と小文字の区別の無視、複数の検索用語を使用した検索、再帰検索のサポートなど、いくつかのオプションが用意されているため、非常に強力なツールです。

apt list --installed | grep apache2を実行すると、パッケージが仮想マシンにインストールされていないことが表示されます。

apt list コマンドのスクリーンショット。

パッケージをインストールする

目的のパッケージが見つかり、まだインストールされていないことが確認できたので、インストールを続行できます。 次のコマンドを実行します。

sudo apt install apache2

Note

今回は、このコマンドによってシステムが変更されるため、 sudo を使用してコマンドのプレフィックスを付けます。 そのため、正しく実行するにはルート アカウントである必要があります。 パッケージ マネージャーは、アプリケーションを本当にインストールするかどうかを確認するのに十分な親切です。

sudo コマンドのスクリーンショット。

Y (はい) と入力し、Enter キーを押してApache2をインストールします。 パッケージ マネージャーには、インストールの状態を示す進行状況バーが表示されます。

インストールの状態のスクリーンショット。

同じ apt list --installed | grep apache2 コマンドをもう一度実行すると、Apache 2 パッケージが、自動的にインストールされる他の apache2 関連パッケージと共にインストールされていることがわかります。

apt list grep コマンドのスクリーンショット。

Apache 2 をインストールしましたが、実際には Nginx を使用する必要があります。 そのため、Apache は不要になり、そのパッケージを仮想マシンから削除できます。

パッケージの削除

パッケージ (この場合は Apache 2) のインストールは元に戻すことができます。 パッケージが不要であると判断した場合は、パッケージを削除できます。 パッケージを削除するには、次の 2 つのコマンド オプションがあります。

  • apt remove: このコマンドはバイナリを削除しますが、構成ファイルは削除しません。 パッケージを再インストールし、同じ構成を保持する場合に便利です。

  • apt purge: このコマンドを実行すると、バイナリと構成ファイルが削除されます。

ルート ユーザーとして apt remove を使用してパッケージを削除し、結果を表示します。 これを行うには、 sudo apt remove apache2を実行します。 削除の確認を求められたら、「 Y」と入力し、 Enter キーを押します。

sudo apt remove apache2 コマンドのスクリーンショット。

コマンド出力では、次の情報が示されます。

  • APT は、自動的にインストールされ、不要になったパッケージがあることを検出しました。
  • APT では、 apache2 パッケージのみが削除されました。関連付けられているパッケージを削除するには、 sudo apt autoremove を実行することをお勧めします。

インストールされているパッケージをもう一度一覧表示します。 apache2 パッケージは削除されますが、それに付属していた自動的にインストールされたパッケージはインストールされたままであることがわかります。

インストールされているパッケージのスクリーンショット。

推奨事項に従って、 sudo apt autoremove をもう一度実行して、残ったパッケージを削除します。

sudo apt autoremove コマンドのスクリーンショット。

インストールされているパッケージをもう一度一覧表示します。 これで、Apache2 関連のパッケージはインストールされていません。

apache2 関連のパッケージがないスクリーンショット。

この手順は完了していません。 apt removeapt purgeの違いは、構成ファイルが削除されるかどうかです。 この演習では、削除しませんでした。 では、どこにあるのでしょうか。

ファイルを見つけるには、パッケージ マネージャーは必要ありません。 代わりに、Linux でファイルの標準検索を実行します。 これを行うには、いくつかの方法があります。 最も一般的な検索コマンドの 1 つは、 findです。 ただし、このコマンドは使い方がわかりにくいので、ここでは説明しません。 代わりに、 whereisを使用します。

Note

Linux は非常によく文書化されています。 ほぼすべてのコマンドに便利なヘルプ ページがあります。 man コマンドと info コマンドを使用して、Linux のヘルプ ページを表示します。 たとえば、 find コマンドの詳細については、 man find または info findを実行します。

whereisのヘルプ ページによると、定義は次のとおりです。

whereis は、指定されたコマンド名のバイナリ、ソース、および手動のファイルを検索します。

whereis apache2を実行すると、/etc/apache2 インストールが見つかります。

apache2 コマンドのスクリーンショット。

/etc/ ディレクトリには、システム構成ファイルが配置されていることに注意してください。 "apache2" がファイルまたはフォルダーであるかどうかを確認するには、 ll /etc/apache2実行します。 ご覧のように、これはフォルダーであり、apache2 構成ファイルが含まれています。

ll etc apache2 コマンドのスクリーンショット。

構成ファイルを削除しない apt remove コマンドを使用したため、これらのファイルとフォルダーをapache2に含める必要があります。

最後の手順として、 apt purge コマンドを実行してその効果を確認します。 パッケージを削除した後でも、消去を実行してインストール フォルダーをクリーンアップできます。 次のスクリーンショットは、 whereis が何も見つからなかったことを示しています。 これは、 purge コマンドがバイナリと共に構成ファイルを削除したためです。

apt purge コマンドのスクリーンショット。

次のステップ

パート 1.3 - Linux での .NET のインストール

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。