- 投稿日:2021-01-23T22:26:53+09:00
sudoコマンドでパスワードを聞かれないようにする
- 投稿日:2021-01-23T19:00:59+09:00
�【Linux】 パッケージ管理コマンドまとめ(ディストリビューション別)
Linuxパッケージ管理コマンドを全オプション/サブコマンドを全ディストリビューション、目的ごとにまとめます。
まだ完全ではないですが勉強するごとに徐々に項目を追加していきます。
LPICなどの資格勉強や業務で使う際に役立てて頂けたら幸いです。RedHat系
RedHat、CentOSで使うコマンドは主に以下2つ。コマンド/目的別にオプションを記載します。
rpmコマンド
依存関係を考慮することなく、パッケージ管理を行うコマンド。yumコマンド(後述)とは違いオプション指定でコマンドを実行する。
例) rpm -ih パッケージファイル名
→進行状況を表示しながらインストール■インストール編
インストールのオプションで指定する引数はパッケージ名ではなく、パッケージファイル名(~.rpmなど)指定であることに注意。debian系(後述)など他のディストリビューションでも依存関係を考慮せずに実行するコマンドのインストールオプションはパッケージファイル名を指定するのは共通。
オプション 結果 -i(--install) パッケージファイル名 パッケージのインストール。 -U(--upgrade) パッケージファイル名 パッケージのアップグレード。アップグレード時にパッケージがない場合はインストール。 -F(--freshen) パッケージファイル名 パッケージのアップグレード。アップグレード時にパッケージがない場合はインストールしない。-Uとややこしいので自分は今のパッケージを新鮮(freshen)にする=ないものは新鮮にできないと覚えました。 -e(--erase) パッケージ名 パッケージのアンインストール 併用オプション(上記オプションと併用) -v パッケージの詳細情報表示。 -h(--hash) インストールの進行状況を#で表示。-eとは併用不可。 -t(--test) テストを実施(実際にはインストールしない)。 -nodeps 依存関係を無視。 ■検査・参照編
既存のパッケージに対し、検査・参照する場合はパッケージ名を指定。
パッケージの検査はRPMデータベースのファイルに関する情報とパッケージファイルを比較して検査する。
主にファイルサイズ、チェックサム、所有ユーザ/グループ、タイムスタンプにより判断。
オプション 結果 -q(--query) パッケージ名 指定パッケージがインストールされているか参照。 -V(--verify) パッケージ名 パッケージ検査。併用オプションは-a(--all)と--nomd5のみ。 併用オプション(上記オプションと併用) -a(--all) 全パッケージ表示。 -l(--list) パッケージに含まれるファイルを表示。 -i(info) パッケージそのものの詳細情報を表示 -l(list) パッケージ一覧表示(バージョン、インストール有無) -f(--file) ファイル名 指定ファイルがどのパッケージからインストールされているか表示 -p(--package) パッケージを指定 -changelog パッケージの変更履歴 -c(--configfiles) 設定ファイルを一覧表示 -nomd5 MD5によるファイルの改竄をチェックしない。 yumコマンド
インターネット経由、もしくはその他メディアを通じて依存関係を考慮しながらパッケージ管理を行うコマンド。サブコマンド(-をつけない)を指定してコマンドを実行する。
debian系(後述)など他のディストリビューションでも依存関係を考慮しながら実行するコマンドは-をつけずにサブコマンドでパッケージを指定する。
インストールでもパッケージ名指定でOK。例) yum [-y] install php
→phpパッケージをインストール。■インストール・参照編
オプション 結果 install パッケージ名 パッケージインストール。 update パッケージ名 パッケージのアップデート。パッケージ名を指定しない場合、全パッケージをアップデートする。 remove パッケージ名 パッケージアンインストール info パッケージそのものの詳細情報を表示 search キーワード キーワードを指定してパッケージを検索 check-update アップデート可能なパッケージを表示 grouplist パッケージグループの一覧表示 groupinstall パッケージグループのインストール Debian系
Debian、Ubuntuで使うコマンドは主に以下3つ。コマンド/目的別にオプションを記載します。
dpkgコマンド
依存関係を考慮することなく、パッケージ管理を行うコマンド。apt-getコマンド(後述)とは違いオプション/アクション指定でコマンドを実行する。
例) dpkg -Ei パッケージファイル名
→同バージョンのパッケージがなければインストール。■インストール編
インストールのオプションで指定する引数はパッケージ名ではなく、パッケージファイル名(~.debなど)指定であることに注意。
オプション 結果 -E インストール対象パッケージと同バージョンがインストール済みの場合、インストールしない。自分はEqualなら実行しないと覚えました。 -G インストール対象パッケージより新しいバージョンがインストール済みの場合、インストールしない。自分はGreaterなら実行しないと覚えました。 -R ディレクトリを再起的に処理。 アクション -i(--install) パッケージファイル名 パッケージインストール -r(--remove) パッケージ名 設定ファイルを残してアンインストール。 -P(--purge) パッケージ名 設定ファイルごとアンインストール。-rとややこしいため歴史好きな自分は丸ごと追放をイメージしやすいred purge(赤狩り)を思い浮かべて記憶しています。 -l(--list) 検索パターン インストール済みパッケージを検索。 -L(--listfiles) パッケージからインストールされたファイルを一覧表示。-lとややこしいので自分は"長大なもの(オプションが長くて大文字から)はファイル参照"と覚えました。 -s(--status) パッケージ名 インストール済みパッケージの詳細情報 -S(--search) 検索パターン どのパッケージから指定ファイルがインストールされたかを表示。 -C(--audit) インストールが不完全なパッケージ表示 apt-getコマンド、apt-cacheコマンド
インターネット経由、もしくはその他メディアを通じて依存関係を考慮しながらパッケージ管理を行うコマンド。サブコマンド(-をつけない)を指定してコマンドを実行する。
インストールでもパッケージ名指定OK。インストールはapt-get、参照はapt-cacheコマンドで対応する。
インストールでもパッケージ名指定でOK。例)apt-get install パッケージ名
→パッケージインストール■インストール編(apt-get)
オプション 結果 install パッケージ名 パッケージインストール/アップグレード。 remove パッケージ名 パッケージアンインストール。 upgrade インストール済み全パッケージのアップグレード。 dist-upgrade ディストリビューションを最新版にアップグレード。 update パッケージのデータベースを最新版へアップデート。 clean 過去に取得したパッケージファイルを削除。 例)apt-cache showpkg パッケージ名
→依存関係も含めてパッケージ情報を表示。■参照編(apt-cache)
オプション 結果 search キーワード キーワードを含んだパッケージを参照 show パッケージ名 パッケージ情報を表示 showpkg パッケージ名 依存関係を含めてパッケージ情報を表示 depends パッケージ名 指定パッケージに依存しているパッケージを表示 最後に
ツイッターで日々の勉強内容を発信しておりますのでフォロー、閲覧していただけると幸いです。
何かアドバイスなどございましたらコメントください。
- 投稿日:2021-01-23T16:44:00+09:00
検索してもなかなか出てこない一行Linuxコマンド
- 投稿日:2021-01-23T11:35:03+09:00
WSL2向けUbuntu20.04の初期設定
WSL2(Ubuntu20.04)を使用するために、普段実施している共通作業です。
この記事の後、各種用途に合わせて環境を作り込んでいくことを想定しています。やること
WSL2(Ubuntu)のインストール直後から開始して、
・ホスト名の変更(プロンプトをシンプルにするため)
・パスワード無しsudoを可能に
・Manコマンドなど含め、普通の日本語環境(LC_ALL=日本語)
・デフォルトエディタの変更環境
エディション:Windows 10 Home
バージョン:2004> ver Microsoft Windows [Version 10.0.19041.746] > wsl --list --verbose NAME STATE VERSION * Ubuntu-20.04 Running 2初期設定
ホスト名変更
WSLの場合Linuxコマンドの「sudo hostnamectl set-hostname 」は次のエラーが出て使えません。
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to create bus connection: Host is downWindowsの設定画面でコンピュータ名を変更するか、管理者権限で起動したPowershellで次のコマンドを入力すると変更できます。
Rename-Computer -NewName "<HOSTNAME>"以降のコマンドはWSL(Ubuntu)上で投入します。
パスワード無しでsudo可能にする
visudoを使っても良いですが、ファイル編集が面倒なので、/etc/sudoers.d/へ設定ファイルを配置します。
sudo bash -c 'echo "<USERNAME> ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/<USERNAME>'パッケージ更新処理
sudo apt-get update sudo apt-get upgradeロケール設定
manコマンドなど、対応しているコマンドの出力が日本語になります。
sudo apt install language-pack-ja sudo update-locale LC_ALL=ja_JP.utf8Timezone設定
WSLはホストOSのTimezoneが設定されているので作業不要です
デフォルトエディタを変更
sudo update-alternatives --config editor対話形式に(vimの場合は[/usr/bin/vim.basic]の)選択肢Noを入力
(vim.basicとvim.tinyの違いは機能が多いか少ないか。通常のvimはvim.bashcのエイリアスです)(参考)普段入れているソフトウェア
build-essential
c/c++コンパイラおよびMakeと付随するソフトウェアがインストールされます。
sudo apt install build-essentialpython-venv
Pythonの仮想環境作成モジュールです。
何かしらPythonを使うので、入れておきます。sudo apt install python3-venv
- 投稿日:2021-01-23T10:38:50+09:00
PATHの通し方
概要
いつまでたってもPATHの通し方を忘れるので自分用にメモ。
現在通っているPATHの確認
下記のどれでもOK。
env $PATH printenv $PATH echo $PATH一時的なPATHの追加
export PATH=$PATH:<PATH>
$PATH:<PATH>
で、「現在のPATH」+「新しいPATH」という意味。うっかり
$PATH
を忘れて、他のPATHを通すのを忘れてしまったりしたことがあったり無かったり。。。。恒久的なPATHの追加
上の
export
コマンドをTerminal立ち上げ時に毎回自動的に打てればいい。シェルに関して、その設定をするのが、
.zshrc
のファイル。Terminal起動時に必ず読み込まれるファイル。vi ~/.zshrcで
.zshrc
を開き、PATH
の部分を下記に変更。export PATH=$PATH <PATH>保存した後に
.zshrc
を読み出す下記コマンドを打てばPATHが通るはず。source ~/.zshrc
参考
- 投稿日:2021-01-23T10:19:35+09:00
ターミナルの便利機能「エイリアス」をサクッと登録してみる【Linux】
ターミナル(シェル)のエイリアス登録という便利機能をご存知でしょうか??
エイリアスとはショートカットのようなもので、
いつものコマンドに短縮コマンドを登録しておくことができます。エイリアス 【alias】
エイリアスとは、偽名、別名、通称などの意味を持つ英単語。
引用元: エイリアスとは : IT用語辞典 e-Words純粋なlinuxのコマンドはたいてい元々短いのでそこまで困らないかもしれないですが、
よく使うコマンドオプションまで含めて登録してしまうととても便利だったりします。サクッとやってみる
①ディレクトリの中身を常にわかりやすく表示
例えばディレクトリの中身を表示するlsコマンドには
$ls -F
というオプションがあります。これはファイル種別を表示するオプションです。
-F
オプションはよく使うので、ターミナルに$ alias ls='ls -F'と打ち込んで
$ls
としてエイリアスを登録すると..$ ls app/ bootstrap/ composer.lock database/ phpunit.xml readme.md routes/ storage/ vendor/ artisan composer.json config/ package.json public/ resources/ server.php tests/ webpack.mix.jsという感じにディレクトリ名には
/
が表示され、
$ls
を実行しただけで、ファイルなのかディレクトリなのか分かりやすく表示することができるようになりました。
(このほうが見やすいですよね..?)②隠しファイルの表示も簡単に
$ls -a
は隠しファイルも含めてディレクトリ内の全てのファイルとディレクトリを表示するオプションです。
こちらもよく使うので、$ alias la='ls -a'のように今度は
$la
としてエイリアスを登録すると..$ la ./ .env* .gitattributes app/ composer.json database/ public/ routes/ tests/ ../ .env.example .gitignore artisan composer.lock package.json readme.md server.php vendor/ .editorconfig .git/ .styleci.yml bootstrap/ config/ phpunit.xml resources/ storage/ webpack.mix.jsというように、
$la
と打つだけで.envファイルや.gitディレクトリなどの隠しファイルが表示されるようになりました。登録したエイリアスを削除したい
登録したエイリアスを削除するには、
$ unalias ls $ unalias laのように登録したエイリアス名を引数にして、
$unalias
というコマンドを実行すればエイリアスの登録が削除されます。登録したエイリアスを一時的に無視したい
一方でエイリアスの登録は削除したくないけど、
エイリアスを一時的に解除して元のコマンドを実行したい場合は、コマンドの前に\
を付けて実行するだけでOKです。$ \ls app bootstrap composer.lock database phpunit.xml readme.md routes storage vendor artisan composer.json config package.json public resources server.php tests webpack.mix.js普通に$lsを実行したときと同じ結果になりました。(ディレクトリ名に
/
が表示されない)
蛇足ですがこの\ls
は、$ command ls #または $ /bin/lsのようにしても同様です。(
$/ls
が短いので一番良いと思いますが)おまけ
同様に、基本コマンドでエイリアス登録しておくと便利なオプションを少し紹介しておきます。
# ディレクトリ内の詳細を表示する $ alias ll='ls -l' # rmコマンドで削除前に常に確認するようにする $ alias rm='rm -i' # cpコマンドで上書き前に常に確認するようにする $ alias cp='cp -i' # mvコマンドで上書き前に常に確認するようにする $ alias mv='mv -i' # mkdirコマンドで深い階層のディレクトリも一気に作成できるようにする $ alias mkdir='mkdir -p'
最後のmkdir -pが分かりづらいので例を示すと、
例えば/parent
や/child
というディレクトリが存在しない状態で、
「parent/child/grandchild」というディレクトリ構成を一気に作りたい場合。普通に、
$ mkdir parent/child/grandchildと実行すると「そんなディレクトリは存在しないよ〜」というエラーになるかと思います。
この場合は
-p
オプションを付けて、$ mkdir -p parent/child/grandchildとするとエラーにならずに一撃で「parent/child/grandchild」という構成を作れます。
なので、常に-p
オプション付きで実行されるように$ alias mkdir='mkdir -p'でエイリアス登録してしまうと便利ですね。
以上、初歩的な記事ではありますが、
良かったらLGTMもしていただけると今後の励みになります(^_^)
- 投稿日:2021-01-23T10:19:35+09:00
ターミナルの便利機能「エイリアス」をサクッと登録してみる
ターミナル(シェル)のエイリアス登録という便利機能をご存知でしょうか??
エイリアスとはショートカットのようなもので、
いつものコマンドの短縮コマンドを登録しておくことができます。Linuxのコマンド自体は短いものが多いですが、
よく使うオプションまで含めて登録してしまうととても便利です。サクッとやってみる
例①:常にディレクトリの中身をわかりやすく表示したい
例えばディレクトリの中身を表示するlsコマンド1には
-F
というオプションがあります。これはファイル種別を表示するオプションです。
-F
オプションはよく使うので、ターミナルを開いて$ alias ls='ls -F'を実行し、
$ ls
としてエイリアスを登録すると..$ ls app/ bootstrap/ composer.lock database/ phpunit.xml readme.md routes/ storage/ vendor/ artisan composer.json config/ package.json public/ resources/ server.php tests/ webpack.mix.jsという感じにディレクトリ名には
/
が表示され、
$ ls
を実行しただけで、ファイルなのかディレクトリなのか分かりやすく表示することができるようになりました。
(このほうが見やすいですよね..?)※追記
コマンドで登録した場合、PCをシャットダウンするとエイリアスがリセットされるので、
永続化する方法も後述しています。例②:隠しファイルを簡単に表示したい
$ ls -a
は隠しファイルも含めてディレクトリ内の全てのファイルとディレクトリを表示するオプションです。
こちらもよく使うので、$ alias la='ls -a'のように今度は
$ la
としてエイリアスを登録すると..$ la ./ .env* .gitattributes app/ composer.json database/ public/ routes/ tests/ ../ .env.example .gitignore artisan composer.lock package.json readme.md server.php vendor/ .editorconfig .git/ .styleci.yml bootstrap/ config/ phpunit.xml resources/ storage/ webpack.mix.jsというように、
$ la
を実行するだけで.envファイルや.gitディレクトリなどの隠しファイルが表示されるようになりました。登録したエイリアスを削除したい
登録したエイリアスを削除するには、
$ unalias ls $ unalias laのように登録したエイリアス名を引数にして、
$ unalias
というコマンドを実行すればエイリアスの登録が削除されます。登録したエイリアスを一時的に無視したい
エイリアスの登録は削除したくないけど、
一時的に解除して元のコマンドを実行したい場合は、コマンドの前に\
を付けて実行するだけでOKです。$ \ls app bootstrap composer.lock database phpunit.xml readme.md routes storage vendor artisan composer.json config package.json public resources server.php tests webpack.mix.js普通に
$ ls
を実行したときと同じ結果になりました。(ディレクトリ名に/
が表示されない)
蛇足ですがこの\ls
は、$ command ls #または $ /bin/lsのようにしても同様です。
補足:シャットダウンすると消えてしまう..永続化したい場合
先程までのようにターミナルのコマンドでサクッと登録もできるのですが、
留意点としてPCをシャットダウンせっかく登録したエイリアスが消えて無くなってしまいます。。しかしviエディタ等で設定ファイルを直接編集してあげれば、
エイリアスを永続的にマシンに登録することもできます。ログインシェルがbash(2019年秋以前のMacの標準)なら
$ vi ~/.bashrc
で、
ログインシェルがzsh(2019年秋以降のMacの標準)なら% vi ~/.zshrcで編集することができます。
そこに、
# User specific aliases and functions alias ls='ls -F' alias la='ls -a'のように追記して保存した後、
$ source ~/.bashrc #または $source ~/.zshrcで反映させてあげればOKです。(これ自身をエイリアス登録しても良いかも)
viエディタ補足
「
vi
って何?」という方に簡単に使い方だけざっくり補足すると、、
- 開いた時はコマンドモード(移動できるモード)になっています。
h, j, k, l
キーが、それぞれ十字キーの左上下右として使えます。(十字キーも使えるけど)- これで移動して、
i
キーで編集モード(文字入力できるモード)にできます。- 普通に打ち込んで、編集が完了したら
esc
キーを押して、最初の移動のモードに戻します。:wq
と打ち込んでEnterで、保存して終了することができます。- 保存したくない場合は
:q!
と打ち込むんでEnterで、保存せずに終了することができます。おまけ
同様に、基本コマンドでエイリアス登録しておくと便利なオプションを少し紹介しておきます。
# ディレクトリ内の詳細を表示する alias ll='ls -l' # rmコマンドで削除前に常に確認するようにする alias rm='rm -i' # cpコマンドで上書き前に常に確認するようにする alias cp='cp -i' # mvコマンドで上書き前に常に確認するようにする alias mv='mv -i' # mkdirコマンドで深い階層のディレクトリも一気に作成できるようにする alias mkdir='mkdir -p'こんな感じで、
間違えたらまずいコマンドは-i
オプションで常に確認するようにすると安全です。また最後のmkdir -pが分かりづらいので例を示すと、
例えば/parent
や/child
というディレクトリが存在しない状態で、
「parent/child/grandchild」というディレクトリ構成を一気に作りたい場合。普通に、
$ mkdir parent/child/grandchildと実行すると「そんなディレクトリは存在しないよ〜」というエラーになるかと思います。
この場合は
-p
オプションを付けて、$ mkdir -p parent/child/grandchildとするとエラーにならずに一撃で「parent/child/grandchild」という構成を作れます。
なので、常に-p
オプション付きで実行されるようにalias mkdir='mkdir -p'でエイリアス登録してしまうと便利ですね。
以上、初歩的な記事ではありますが、
良かったらLGTMもしていただけると今後の励みになります(^_^)
以降では、
$ コマンド名
で実行するコマンドを示します。 ↩
- 投稿日:2021-01-23T08:58:34+09:00
【Ubuntu 】 sudo apt install 実行時の404エラーがなぜsudo apt-get updateで解決できるか
環境
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"やったこと
中国語入力できるようにしたくて以下のコマンドを入力したら、404エラーが発生。
sudo apt install fcitx-googlepinyinFailed to fetch http://security.ubuntu.com/ubuntu/pool/main/f/firefox/firefox-locale-zh-hans_84.0+build3-0ubuntu0.20.04.1_amd64.deb 404 Not Found [IP: 160.26.2.187 80]いろいろ調べて以下のコマンドで解決できたのは良いけど、ただコマンド打ってるだけで実際何が起きたのかよく分からなかったので調べてみた。
sudo apt-get update何が起きていたのか
そもそも「apt install」は/var/lib/apt/listsからインストールされるコマンド。
「apt-get update」はパッケージリストがUbuntuリポジトリからダウンロードされ、/var/lib/apt/listsに保存される。だからエラー解消できたみたい。