20210123のLinuxに関する記事は8件です。

sudoコマンドでパスワードを聞かれないようにする

手順

  1. visudoコマンドで設定ファイル(/etc/sudoersファイル)を編集する。

    sudo visudo /etc/sudoers
    
  2. ユーザを指定する場合、次のように記述する。

    sshuser ALL=(ALL) NOPASSWD:ALL
    
  3. グループを指定する場合、次のように記述する。

    %wheel ALL=(ALL) NOPASSWD:ALL
    
  4. ファイルを保存し、visudoコマンドを終了する。

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

�【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 パッケージ名 指定パッケージに依存しているパッケージを表示

最後に

ツイッターで日々の勉強内容を発信しておりますのでフォロー、閲覧していただけると幸いです。
何かアドバイスなどございましたらコメントください。

ツイッター
https://twitter.com/Picko_Engineer

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

検索してもなかなか出てこない一行Linuxコマンド

検索してもなかなか出てこない一行Linuxコマンド

ファイルをバックアップするときの省略記法

バックアップするときのcpコマンドで2回ファイル名を入力するのは面倒なので。

cp index.php{,.bak}
その他

見つけるたびに追記していきます。

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

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 down

Windowsの設定画面でコンピュータ名を変更するか、管理者権限で起動した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.utf8

Timezone設定

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-essential

python-venv

Pythonの仮想環境作成モジュールです。
何かしらPythonを使うので、入れておきます。

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

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

参考

https://qiita.com/fuwamaki/items/3d8af42cf7abee760a81

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

ターミナルの便利機能「エイリアス」をサクッと登録してみる【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もしていただけると今後の励みになります(^_^)

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

ターミナルの便利機能「エイリアス」をサクッと登録してみる

ターミナル(シェル)のエイリアス登録という便利機能をご存知でしょうか??
エイリアスとはショートカットのようなもので、
いつものコマンドの短縮コマンドを登録しておくことができます。

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って何?」という方に簡単に使い方だけざっくり補足すると、、

  1. 開いた時はコマンドモード(移動できるモード)になっています。
  2. h, j, k, lキーが、それぞれ十字キーの左上下右として使えます。(十字キーも使えるけど)
  3. これで移動して、iキーで編集モード(文字入力できるモード)にできます。
  4. 普通に打ち込んで、編集が完了したらescキーを押して、最初の移動のモードに戻します。
  5. :wqと打ち込んでEnterで、保存して終了することができます。
  6. 保存したくない場合は: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もしていただけると今後の励みになります(^_^)


  1. 以降では、$ コマンド名で実行するコマンドを示します。 

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

【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-googlepinyin
Failed 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に保存される。だからエラー解消できたみたい。

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