- 投稿日:2022-02-01T23:03:32+09:00
LPICレベル1の勉強方法
自己紹介 工場で働きながらプログラミングの勉強をしています。 LPIC勉強前は基本的なLinuxコマンドしか分からなかったです。 LPIC101の勉強をしようと思った理由 簡単なLinuxの基礎コマンドしかわからない状態だったので、 LPICの資格勉強でより体系的に学びたかったからです。 資格勉強で学んだことを活かし、Linuxサーバーの構築などを行う時に現場で活躍したいと思ったからです。 勉強法 Linux教科書 LPICレベル1 Version5.0対応の参考書を読む 参考書を一通り読んだ後、Ping-tの問題を解く 問題を全問解いた後、全問ヒット(問題に正解)にする 全問ヒットにした後、全問コンボ(問題を2回連続で正解)にする コマンド問題を一通り解く 勉強期間 12/1~1/31の2ヶ月間です。 2ヶ月間だけLPICを勉強してLPICレベル1の資格を取得する予定でしたが、 勉強して1ヶ月後に受けたLPIC101の試験で470点を取り不合格になってしまい、2ヶ月で資格取得することが不可能だと感じました。 このままダラダラと勉強はしたくないと考え、資格取得を断念し、残りの時間をLPIC102の勉強にあてました。 最後に 今後LPICレベル1の資格勉強をするときに参考になればと思います。
- 投稿日:2022-02-01T22:39:49+09:00
LinuxでVSCodeの拡張機能 "Discord Presence" が機能しない問題
はじめに Discord PresenceはVSCodeの拡張機能です。 プログラミングをする方で、Discordも使っているという方であれば、フレンドのステータスにVisual Studio Codeをプレイ中と表示されているのを見たことがある方もいると思います。 ズバリこの拡張機能であれができます。 今回自分は記事のやり方で解決しましたが、もしかしたら解決しない方もいるかもしれません。 そのときはすみません。 環境 Linux(KDE neon 5.23.5) VSCode 1.63.2 Discord Stable 112824 Host 0.0.16 問題 VSCodeに拡張機能をインストールしても正常に機能しません。 試しにVSCodeの再起動をしてみると、なにやら起動時に拡張機能でConnect Errorが発生しているようです。 Discord側の原因かと思いDiscordも再起動してみましたが改善せず。 原因 DiscordをFlatpak経由でインストールしていたのが原因でした。 FlatpakはLinuxのソフトウェア(パッケージ)を管理するツールです。Ubuntuであれば、ソフトウェアセンターなどからアプリを検索したら、通常はFlatpakでインストールされるのではないでしょうか。 KDE neonもUbuntuベースなのでソフトウェアセンターがデフォルトで入っています。 ソフトウェアセンターはGUIですし、複数のソフトウェア(パッケージ)管理ツールを一元的に管理できるため、非常に便利に思っていたのですが、とんでもないところに落とし穴があるものですね。 解決策 Discord公式からパッケージをダウンロードしてインストールすればよいです。 どうやらDiscordは公式サイトで直接パッケージを配布しているようです。 なので、今回はこれを新たにインストールし直します。 手順 言うまでもないですが念のため。 はじめに、ソフトウェアセンターを使って、Flatpak経由でインストールしたDiscordをアンインストールします。 次に、Discord公式の「Linux版をダウンロード」から、パッケージをダウンロードします(Ubuntuであれば.debでいいはず)。 最後に、ダウンロードしたdebパッケージを開いて、画面の指示に従いつつDiscordをインストールします。 Done! おわりに Linuxに関する詳しい知識がないのでなんとも言えないのですが、パッケージ管理ツール(の依存関係など?)によるバグやエラーというのはたまに聞くことがあった気がします。 今回は直接的な原因とは言いにくい気もしますが、こんなこともあるのかと勉強になりました。 Linuxを使用している方で、「プログラミング頑張ってるよ!」とアピールしたい方は、ぜひDiscord Presenceを使ってみてください。 参考
- 投稿日:2022-02-01T22:23:19+09:00
【github】privateリポジトリをazure上CentOSマシンからgit cloneする
0.事象 リポジトリをpublicにするのが恥ずかしいので、privateに設定したが、 Azure上仮想マシン(centos)からgit cloneを実行するとエラーが発生する。 [xxx@xxx xxx]# git clone https://github.com/xxx/xxx.git Cloning into 'xxx'... Username for 'https://github.com': xxx Password for 'https://xxx@github.com': remote: Support for password authentication was removed on xxx, xxx. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/xxx/xxx.git/' 1.環境 Azure環境OS:CentOS Linux release 7.9.2009 (Core) 2.解決策 github上で、cloneができる権限を付与したtokenの発行を行い、 パスワード入力の際にtokenを使用する。 1)githubのwebUI右上のアイコンをクリック。 2) settingsをクリック。 3) 画面を少しスクロールして「Developer settings」をクリック。 4) 「Personal access tokens」をクリックして、「Generate new token」をクリック。 5) 適当にNoteを入力、期間を選択し、「repo」にチェックを入れる。 6) 画面をスクロールし、Generate token をクリック 7) 画面に長い文字列が表示されるので、それをテキスト等に保存しておく。 8) 仮想マシンにアクセスして、git cloneコマンドをたたいてユーザを入力したあと、 パスワードが聞かれると思うので、そのタイミングで先ほどの長い文字列をペーストするとclone完了。 3.まとめ github difficult but useful
- 投稿日:2022-02-01T20:33:20+09:00
AWSパラメータストアのSecureStringを取得して、起動テンプレートのユーザデータに入れる方法
AWSパラメータストアのSecureStringを取得するには下記のコマンドを実施する。パラメータの意味は次の通り。--name "MyParameterName"でパラメータ名を指定。--query 'Parameter.Value'でパラメータの値を指定。--with-decryptionで暗号化された文字列を復号。 $ aws ssm get-parameter --name "MyParameterName" --query 'Parameter.Value' --with-decryption --output text EC2起動テンプレートのユーザデータにパラメータストアの値を入れるには下記のようにすればいい。これで${PARAMETER}に値がセットされる。 $ set $(aws ssm get-parameter --name "MyParameterName" --query 'Parameter.Value' --with-decryption --output text) $ PARAMETER=${1} $ echo ${PARAMETER} <パラメータの値が表示される>
- 投稿日:2022-02-01T16:33:53+09:00
【Linux】logrotateを使ってログローテションの管理
経緯 検証環境でアプリケーションログのログローテーションが設定されていなくてログファイルが肥大化していたので設定を確認 以下のコマンドでサイズの大きいファイルを確認 sudo du -x -h / | sort -r -h | 関連記事 任意のログをlogrotateを使って管理する 設定ファイルの確認 /etc/ ├── logrotate.conf # メインの設定ファイル ├── logrotate.d # 各サービスごとの設定ファイル │ ├── dracut │ ├── iscsiuiolog │ ├── mcollective │ ├── mysql │ ├── syslog │ ├── yum 設定例 /var/log/sample-service/sample.log { # 対象のログファイル compress # 圧縮する delaycompress # ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定 daily # 毎日ローテートする rotate 7 # 7世代分古いログを残す size 0 # ログファイルが指定したファイルサイズ以上になったらローテーションする ifempty # ログファイルが空でもローテーションする missingok # ログファイルがなくてもエラーを出さない create # ローテーション後に空のログファイルを新規作成。 } まとめ 環境をたち上げた後など、容量不足などが発生した場合などはログローテションの設定がされているかなどを確認してみましょう。
- 投稿日:2022-02-01T16:33:53+09:00
logrotateを使ってログローテションの管理
経緯 検証環境でアプリケーションログのログローテーションが設定されていなくてログファイルが肥大化していたので設定を確認 以下のコマンドでサイズの大きいファイルを確認 sudo du -x -h / | sort -r -h | 関連記事 任意のログをlogrotateを使って管理する 設定ファイルの確認 /etc/ ├── logrotate.conf # メインの設定ファイル ├── logrotate.d # 各サービスごとの設定ファイル │ ├── dracut │ ├── iscsiuiolog │ ├── mcollective │ ├── mysql │ ├── syslog │ ├── yum 設定例 /var/log/sample-service/sample.log { # 対象のログファイル compress # 圧縮する delaycompress # ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定 daily # 毎日ローテートする rotate 7 # 7世代分古いログを残す size 0 # ログファイルが指定したファイルサイズ以上になったらローテーションする ifempty # ログファイルが空でもローテーションする missingok # ログファイルがなくてもエラーを出さない create # ローテーション後に空のログファイルを新規作成。 } まとめ 環境をたち上げた後など、容量不足などが発生した場合などはログローテションの設定がされているかなどを確認してみましょう。
- 投稿日:2022-02-01T16:07:11+09:00
Linux入門 3-9 リポジトリとパッケージ管理 (yum, apt)
[Linux入門 3-10]: はじめに Linux初学者である自分向け用の記事です。Udemyの動画講座を参考にしました。 僕の勉強法は動画を見る→実際に動かしてみる→問題演習という流れです。 前回まで:Linux入門 3-8 3. LinuC 101 Ver .10.0(問題、テスト、演習) リポジトリとパッケージ管理 RPMパッケージ管理, yumコマンドによるパッケージ管理 RPM: レッドハット社が開発したパッケージ管理方式 rpm: RPMパッケージを管理(インストール、アップグレード、削除、検索)するためのコマンド ----------------------------------------------------------------------------------- –i(--install): パッケージをインストール –U(--upgrade): パッケージをアップグレード(存在しない場合インストールする) –F(--freshen): パッケージをアップグレード(存在しない場合インストールしない) 上と併用するオプション –h(--hash): インストールの進捗状況を表示 –v: 詳細情報を表示 –-nodeps: 依存関係を無視してインストール -–prefix: インストールするディレクトリを指定 –-relocate: インストール済みのパッケージをディレクトリ変更して再インストール –e(--erase): パッケージを削除 併用するオプション --nodeps: 依存関係を無視 yum: RedHat系で用いられるRPMパッケージの管理ツール ----------------------------------------------------------------------------------- check-update: アップデート可能なパッケージを表示 update パッケージ名: 指定したパッケージをアップデート(パッケージ名を省略した場合はupdate可能なもの全てupdate) install パッケージ名: パッケージをインストール remove パッケージ名: パッケージをアンインストール info パッケージ名: パッケージの情報を表示 list: 全パッケージを表示 search: 指定したパッケージを検索 grouplist: パッケージグループの一覧を表示 groupinstall: 指定したグループをインストール provides: 指定したファイルが含まれるパッケージを検索する /etc/yum.conf: yumで使用する設定ファイル。 /etc/yum.repos.d/: yumコマンドで使用されるリポジトリ情報が格納される。RPMリポジトリのダウンロード先を追加したい場合は、ファイルをこのディレクトリに追加する。リポジトリとはパッケージの保存場所。このディレクトリ内の情報を元にパッケージをインストールする yumdownloader: RPMパッケージをインストールせずにダウンロードのみを行うコマンド。 yumdownloader –-source: RPMでなくソースファイルをダウンロードする 実行環境で確認。 https://centos.pkgs.org/8/okey-x86_64/httpd-2.4.37-12.el8.x86_64.rpm.html [root@localhost ~]# rpm -ivh http://repo.okay.com.mx/centos/8/x86_64/release/httpd-2.4.37-12.el8.x86_64.rpm http://repo.okay.com.mx/centos/8/x86_64/release/httpd-2.4.37-12.el8.x86_64.rpm を取得中 警告: /var/tmp/rpm-tmp.iGv4hq: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 13d0a55d: NOKEY エラー: 依存性の欠如: /etc/mime.types は httpd-2.4.37-12.el8.x86_64 に必要とされています httpd-filesystem は httpd-2.4.37-12.el8.x86_64 に必要とされています httpd-filesystem = 2.4.37-12.el8 は httpd-2.4.37-12.el8.x86_64 に必要とされています httpd-tools = 2.4.37-12.el8 は httpd-2.4.37-12.el8.x86_64 に必要とされています libapr-1.so.0()(64bit) は httpd-2.4.37-12.el8.x86_64 に必要とされています libaprutil-1.so.0()(64bit) は httpd-2.4.37-12.el8.x86_64 に必要とされています mod_http2 は httpd-2.4.37-12.el8.x86_64 に必要とされています system-logos-httpd は httpd-2.4.37-12.el8.x86_64 に必要とされています [root@localhost ~]# rpm -V httpd パッケージ httpd はインストールされていません [root@localhost ~]# yum install httpd Docker CE Stable - x86_64 36 kB/s | 3.5 kB 00:00 依存関係が解決しました。 ================================================================================================================ パッケージ Arch バージョン リポジトリー サイズ ================================================================================================================ インストール: httpd x86_64 2.4.37-43.module_el8.5.0+1022+b541f3b1 appstream 1.4 M 依存関係のインストール: apr x86_64 1.6.3-12.el8 appstream 129 k apr-util x86_64 1.6.1-6.el8 appstream 105 k centos-logos-httpd noarch 85.8-2.el8 baseos 75 k httpd-filesystem noarch 2.4.37-43.module_el8.5.0+1022+b541f3b1 appstream 39 k httpd-tools x86_64 2.4.37-43.module_el8.5.0+1022+b541f3b1 appstream 107 k mailcap noarch 2.1.48-3.el8 baseos 39 k mod_http2 x86_64 1.15.7-3.module_el8.4.0+778+c970deab appstream 154 k 弱い依存関係のインストール: apr-util-bdb x86_64 1.6.1-6.el8 appstream 25 k apr-util-openssl x86_64 1.6.1-6.el8 appstream 27 k モジュールストリームの有効化中: httpd 2.4 トランザクションの概要 ... インストール済み: apr-1.6.3-12.el8.x86_64 apr-util-1.6.1-6.el8.x86_64 apr-util-bdb-1.6.1-6.el8.x86_64 apr-util-openssl-1.6.1-6.el8.x86_64 centos-logos-httpd-85.8-2.el8.noarch httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64 httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541f3b1.noarch httpd-tools-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64 mailcap-2.1.48-3.el8.noarch mod_http2-1.15.7-3.module_el8.4.0+778+c970deab.x86_64 完了しました! [root@localhost ~]# yum info httpd メタデータの期限切れの最終確認: 0:01:26 時間前の 2022年01月07日 02時48分36秒 に実施しました。 インストール済みパッケージ 名前 : httpd バージョン : 2.4.37 リリース : 43.module_el8.5.0+1022+b541f3b1 Arch : x86_64 サイズ : 4.3 M ソース : httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.src.rpm リポジトリー : @System repo から : appstream 概要 : Apache HTTP Server URL : https://httpd.apache.org/ ライセンス : ASL 2.0 説明 : The Apache HTTP Server is a powerful, efficient, and extensible : web server. [root@localhost ~]# Debianパッケージ管理, apt コマンドによるパッケージ管理 dpkg: Debianのパッケージを管理するためのコマンド –i(--install) パッケージ名: パッケージ をインストール –r(--remove) パッケージ名: 設定ファイルを残してパッケージを削除 –p(--purge) パッケージ名: 設定ファイルを含めてパッケージを削除 –l(--list): インストール済みのパッケージ一覧を表示 –L(--listfiles) パッケージ名: パッケージによってインストールされたファイル一覧を表示 –I(--info) アーカイブ名: 指定したパッケージのアーカイブ情報を表示 –c(--contents) パッケージ名: パッケージに含まれるファイル一覧を表示 –C(--audit) パッケージ名: パッケージのインストール状態の確認 –s(--status) パッケージ名: パッケージの詳細情報を表示 –S(--search) パッケージ名: 指定した文字列に一致するパッケージを表示 その他オプション –E: 同じバージョンがインストール済みの場合はインストールしない –G: システムにインストールされているパッケージが最新の場合、インストールしない dpkg-reconfigure: すでにインストールされたdebパッケージの状態を再設定できる。対話的にパッケージを再設定する。 APT(Advanced Package Tool): dpkgコマンドを拡張した高機能なツール。パッケージ間の依存関係を解決しながらリポジトリというパッケージ管理サイトから、最新のパッケージをダウンロード・インストールできる。 apt-get: APTを使ってパッケージを管理するコマンド(aptコマンドの方が新しいので推奨) autoclean: ダウンロードしたパッケージから最新版以外を削除 clean: ダウンロードしたパッケージを削除 install パッケージ名: パッケージをインストール or 更新 remove パッケージ名: パッケージを削除 update: パッケージリスト情報を最新に更新 dist-upgrate: Linuxディストリビューションを最新版にアップグレード upgrade: 全パッケージを最新版にアップグレード /etc/apt/sources.list: パッケージのダウンロード元を設定したファイル apt-cache: パッケージの情報の照会やパッケージの依存関係を表示するコマンド search キーワード: 指定したキーワードを含むパッケージを検索 show パッケージ名: パッケージ情報の表示 showpkg パッケージ名: パッケージに依存したパッケージ一覧を表示 depends パッケージ名: パッケージが依存したパッケージ一覧を表示 aptコマンド: apt-getとapt-cacheコマンドを組み合わたようなコマンド。最近はパッケージインストール時にはapt-getでなくaptコマンドが推奨されている -c 設定ファイル: /etc/apt/sources.list以外の設定ファイルを指定したい場合に利用するオプション -d: installと併用して用いてパッケージのダウンロードのみを行う -y: 問い合わせに対して自動的にYesと応答する list: パッケージのリストを表示する list --installed: インストールされたパッケージの一覧をリスト表示する list --upgradable: アップグレード可能なパッケージをリスト表示する update: パッケージリスト情報を最新に更新 clean: ダウンロードしたパッケージを削除 install パッケージ名: パッケージをインストール or 更新 remove パッケージ名: パッケージを設定ファイルは残して削除 purge パッケージ名: パッケージを設定ファイルを含め完全に削除する upgrade: インストール済みのパッケージをまとめて更新する full-upgrade: システムのメジャーバージョンを最新版にアップグレードする search キーワード: パッケージの説明文からキーワードを検索して該当するパッケージを表示する autoremove: 必要とされていないパッケージを自動削除する apti-file: 指定したファイルを含むパッケージを検索する。必要なファイルはわかるがパッケージはわからないという場合に用いる apt-fileのインストール: apt install apt-file apt-file update: パッケージ情報を更新する apt-file search: ファイルが含まれるパッケージを検索する Dockerを用いて検証していく。 [root@localhost ~]# docker run -it ubuntu Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu ea362f368469: Pull complete Digest: sha256:b5a61709a9a44284d88fb12e5c48db0409cfad5b69d4ff8224077c57302df9cf Status: Downloaded newer image for ubuntu:latest root@5fd5595cc0a5:/# root@5fd5595cc0a5:/# root@5fd5595cc0a5:/# root@5fd5595cc0a5:/# cat /etc/os-release NAME="Ubuntu" VERSION="20.04.3 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.3 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal To Be Continued... [Linux入門 3-10] へ
- 投稿日:2022-02-01T08:22:52+09:00
R1825のネットワークドライバのDKMS無効化
現象 カーネルのバージョンを自動でアップデートしたらDKMSで自動的にネットワークドライバがインストールされるはずが接続できな状況であった。 構成 Linux mint 20.2 kernel version 5.4.0-97-generic マザーボード Asrock H470 steel legend NIC(マザーボードにオンボード) r8125 2.5G対応LAN 解決 DKMSをアンインストールして再起動すると問題なく認識した。 sudo dkms remove r8125/9.007.01 --all 経緯 DKMSのインストール記事を参考にしてカーネルの自動アップデートでも対応できるようにDKMSを導入した。 だが、kernel 5.4.0-97-generic にアップデートするとネットワークにインストールできない。手動でr8125のネットワークドライバーインストールしても駄目である。 どうやら標準でサポートされたのか、二重に呼び出されてしまい干渉していような気がする。 以前利用していたrealtekの公式から引っ張ってきたr8125のドライバーで、バージョンは9.007.01である。
- 投稿日:2022-02-01T08:22:52+09:00
R8125のネットワークドライバのDKMS無効化
現象 カーネルのバージョンを自動でアップデートしたらDKMSで自動的にネットワークドライバがインストールされるはずが接続できない状況であった。 構成 Linux mint 20.2 kernel version 5.4.0-97-generic マザーボード Asrock H470 steel legend NIC(マザーボードにオンボード) r8125 2.5G対応LAN 解決 DKMSをアンインストールして再起動すると問題なく認識した。 sudo dkms remove r8125/9.007.01 --all 経緯 DKMSのインストール記事を参考にしてカーネルの自動アップデートでも対応できるようにDKMSを導入した。 だが、kernel 5.4.0-97-generic にアップデートするとネットワークにアクセスできない。手動でr8125のネットワークドライバーインストールしても駄目である。 どうやら標準でサポートされたのか、二重に呼び出されてしまい干渉しているような気がする。 以前利用していたrealtekの公式から引っ張ってきたr8125のドライバーで、バージョンは9.007.01である。