あとらすの備忘録

チラ裏のメモ帳

yumコマンドメモ

  • 概要
  • yumコマンドを使う
    • パッケージインストール
    • パッケージのアップデート
      • アップデート可能パッケージのチェック
      • アップデート実行
    • パッケージを探す。
      • SEARCH
      • PROVIDES
    • パッケージの一覧表示
      • インストール可能パッケージの表示
      • インストール済みパッケージの表示
  • オプション
  • 参考サイト様
  • 雑感

概要

yumコマンドの備忘録
とりあえずメモ程度にまとめておくがRedHat公式のチートシートが優秀

続きを読む

VMware Workstation Playerで仮想マシンにVMware toolsをインストール

環境

前提知識

  • 会社でVMware Playerを使っている。

※自分でセットアップ等はしたことがない。すでに用意されているもの

  • 高校生の時にさくらVPS使ってDebianで色々していた

CLIにアレルギー反応が出ない

仮想マシンのネットワーク接続確認

ifconfigが使えないのでip addr showで確認します。
さあTeraTermで接続だ。

 [root@localhost ~]# ip addr show
...中略
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 192.168.XXX.XXX/24 brd 192.168.XXX.XXX scope global dynamic eth0
       valid_lft 1459sec preferred_lft 1459sec
    inet6 XXXX::XXXX:XXXX:XXXX:XXXX/64 scope link
       valid_lft forever preferred_lft forever

パッケージアップデートの実行

VMware toolsをインストールする前にインストール済みのいろいろをアップデートします。

[root@localhost ~]# yum check-update
...中略
[root@localhost ~]# yum -y update
...中略
完了しました!

TeraTermの出力では日本語で完了と出ました。VMware上での操作ではこの限りではないかもしれません

詳しい人は一括でアップデートかけたりしないのかな?
細かいことは気にしません。練習なんですから...

VMware toolsの入手

VMware toolsはどこからかDLしてくるとかではなくVMware Workstation Playerから
ディスクドライブにCD/ROMを挿入する感覚です。

上メニューPlayer → 管理 →VMware toolsのインストールを選択
こで仮想マシンのディスクドライブにCD/ROMが挿入されました。
USBメモリが接続されたのほうが正しい?

f:id:HM_Atlas:20180208225845p:plain

CD/ROMやUSBメモリ、HDDなどのPCデバイス/dev配下に
スクリプト?デバイス本体?を持っています。
※すいません。ここよくわかってません。

先程の操作で挿入されたCD/ROMは/dev/sr0にあるのでマウントします。

一応と言うか自分もよくわかってないのに説明もクソもないですが
cdromと言うグループに所属していることになっています。
つまりこいつはディスクドライブだ!(無理やり)

[root@localhost ~]# ls -la /dev/sr0
brw-rw----. 1 root cdrom 11, 0  28 23:01 /dev/sr0

mountをかけてVMware toolsを取り出す。

/dev/sr0がCD/ROMという事がわかったのでマウント掛けます。
/mntにマウントしていますが普通に良くない(?)ので配下に作業ディレクトリでも用意してそこにマウントしてください

dfコマンドでマウントされてういることを確認してください
/dev/sr0/mntにマウントされてると表示されていますね

mountコマンドが成功していればマウント先である/mntVMwareTools-10.2.0-7259539.tar.gzが存在しているはずです。

[root@localhost ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    17G  1.2G   16G    7% /
devtmpfs                  478M     0  478M    0% /dev
tmpfs                     489M     0  489M    0% /dev/shm
tmpfs                     489M  6.8M  482M    2% /run
tmpfs                     489M     0  489M    0% /sys/fs/cgroup
/dev/sda1                1014M  153M  862M   16% /boot
tmpfs                      98M     0   98M    0% /run/user/0
/dev/sr0                   56M   56M     0  100% /mnt
[root@localhost ~]# ls -l /mnt/
合計 56201
-r--r--r--. 1 root root 55734807 1130 19:08 VMwareTools-10.2.0-7259539.tar.gz
-r-xr-xr-x. 1 root root     1975 1130 19:08 manifest.txt
-r-xr-xr-x. 1 root root     4393 1130 19:03 run_upgrader.sh
-r-xr-xr-x. 1 root root   880268 1130 19:05 vmware-tools-upgrader-32
-r-xr-xr-x. 1 root root   926440 1130 19:05 vmware-tools-upgrader-64

コピー後、umount

VMwareTools-10.2.0-7259539.tar.gzを任意のディレクトリにコピー後、umount(アンマウント)をかけます。
マウント状態だとガッチリ掴んで離さない状態なのでアンマウントで外します。

mount,umountについては下の「mountって何よ?」に解説サイトのリンクがあります。

[root@localhost ~]# cp /mnt/VMwareTools-10.2.0-7259539.tar.gz /root/
[root@localhost ~]# umount /dev/sr0
[root@localhost ~]# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
...中略(/dev/sr0がないことを確認してください)
[root@localhost ~]# ls -l /mnt/
合計 0
[root@localhost ~]# ls -l /root/
合計 54436
-r--r--r--. 1 root root 55734807  28 23:36 VMwareTools-10.2.0-7259539.tar.gz

mountって何よ?

すみません。自分も会社で教えてもらうまで知りませんでした。

mountとは

登る、乗る、またがる、乗せる、(…に)据えつける、装置する、(…に)はる、(…に)はめる、固定する、開催する
mountの意味・使い方 - 英和辞典 Weblio辞書

なんか、こう言葉だけで大体想像付きました?
本当にざっくり、ざっくりだけ言うと「デバイス(記憶装置?)からデータとかを取り出せるようにする。」くらいの勢いでいいのではないだろうか。
※HDDの拡張をしているときはPCに装着すると言う感覚のほうがしっくり来たけども

早い話こっちを読んだほうが良い
eng-entrance.com

VMware toolsのインストール

コピーしたVMware toolsを展開します。

[root@localhost ~]# tar zxvf VMwareTools-10.2.0-7259539.tar.gz
[root@localhost ~]# ls -l
合計 54436
-r--r--r--. 1 root root 55734807  28 23:36 VMwareTools-10.2.0-7259539.tar.gz
-rw-------. 1 root root     1238  28 21:47 anaconda-ks.cfg
drwxr-xr-x. 9 root root      145 1130 19:08 vmware-tools-distrib
[root@localhost ~]# cd vmware-tools-distrib/
[root@localhost vmware-tools-distrib]# ls -l
合計 372
(...中略)
-rwxr-xr-x.  1 root root 221099 1130 19:08 vmware-install.pl

展開後、展開してできたディレクトリに移動します。
vmware-install.plを実行します。
インストールに関しては下記の解説記事が詳しく分かりやすかったです。
このブログ記事下部にもトラブルシュートを載せていますがリンク先の記事でも解説されています。
urashita.com

インストールの実行

※トラブルシュートを実施してから実行するとスムーズにことが運ぶかと思います。

[root@localhost ~]# ./vmware-tools-distrib/vmware-install.pl

また、-dのオプションをつけることでインストール中のエンター連打作業がなくなります。
つけない場合はエンターを押しまくりましょう。

完了ログ

Enjoy,
--the VMware team

上記のログで特段エラーも吐いていなければOKだと思われます。

動作確認

先程の記事をパクッ参考にサービスが起動しているか確認します。

[root@localhost ~]# systemctl | grep vmware-tools.service
  vmware-tools.service                                                                loaded active running   SYSV: Manages the services needed to run VMware software

runningとなっているので大丈夫そうですね。
以上で終了です。

トラブルシュート

vmware-install.plが実行できない

事象

インストールを実行すると下記のエラーが出る。

[root@localhost vmware-tools-distrib]# ./vmware-install.pl
-bash: ./vmware-install.pl: /usr/bin/perl: 誤ったインタプリタです: そのようなフ ァイルやディレクトリはありません

TeraTermでは日本語で表示されています。

解決策

/user/bin/perlが無いですよと言っています。
perlをインストールしてあげましょう

[root@localhost ~]# yum provides perl
(...中略)
4:perl-5.16.3-292.el7.x86_64 : Practical Extraction and Report Language
リポジトリー        : base
[root@localhost ~]# yum -y install perl
(...中略)
完了しました!

yum searchで検索をかけてもいいんですが大量に引っかかってよくわかりません
なのでperlがどのパッケージに含まれているかを検索します。それがprovidesです。

yum searchコマンドとyum providesコマンドについてはこちらがわかりやすいです。
kazmax.zpp.jp

インストールが進むとループして進まなくなる(GCC編)

事象

ある程度インストールが進むと下記の質問が発生しこれまで通りエンター連打をしてもループしてインストールが進まないと言う沼にハマってしまいます。

[root@localhost vmware-tools-distrib]# ./vmware-install.pl
(...中略)
Searching for GCC...
The path "" is not valid path to the gcc binary.
Would you like to change it? [yes]
INPUT: [yes]  default
What is the location of the gcc program on your machine?
INPUT: []  default

The path "" is not valid path to the gcc binary.
Would you like to change it? [yes]
INPUT: [yes]  default
What is the location of the gcc program on your machine?
INPUT: []  default
(...以下ループ)
解決策

gccどこにあるの?と聞いています。無いようなのでインストールしてあげましょう。

[root@localhost ~]# yum provides gcc
(...中略)
gcc-4.8.5-16.el7.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
リポジトリー        : base
gcc-4.8.5-16.el7_4.1.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
リポジトリー        : updates
[root@localhost ~]# yum -y install gcc-4.8.5-16.el7.x86_64
(...中略)
エラー:  Multilib version problems found. This often means that the root
(...中略)
        Protected multilib versions: libgomp-4.8.5-16.el7.i686 != libgomp-4.8.5-16.el7_4.1.x86_64

最初に、リポジトリのベースを入れてからアップデートかければいいのかな?と思い
ベースをインストールしたらエラーでコケました。
なので最新のパッケージをインストールしましょう。

[root@localhost ~]# yum -y install gcc-4.8.5-16.el7_4.1.x86_64
(...中略)
インストール:
  gcc.x86_64 0:4.8.5-16.el7_4.1

依存性関連をインストールしました:
  cpp.x86_64 0:4.8.5-16.el7_4.1
  glibc-devel.x86_64 0:2.17-196.el7_4.2
  glibc-headers.x86_64 0:2.17-196.el7_4.2
  kernel-headers.x86_64 0:3.10.0-693.17.1.el7
  libmpc.x86_64 0:1.0.1-3.el7
  mpfr.x86_64 0:3.1.1-4.el7

完了しました!

これでgccが入りました。

インストールが進むとループして進まなくなる(kernel編)

事象

GCC編とほぼ同様です。kernel headerと言うやつで困っているようです。
最初は、最新or未インストールかと思ったのですが、調べるとVMware toolsとのバージョン違いで起きる事象みたいです。

今回、自分の環境では再現されなかったのでログなしです。

解決策

kernel-headerのインストール(アップデート?)の実行
事象が再現できていないので割愛

たぶんですがgccのパッケージのインストール時に依存性関連で一緒にインストールされたからエラーが出なかったのではないかな?と思ったりしています。

参考サイト様

記事途中で紹介したサイト様

雑感

ブログ書くだけでなぜこんなに時間がかかっているのか...
再現しながら書いてるからなんですけどね。

金曜からまた上京するので記事をためておきたかったのだけど仕方がない。

VMware Workstation PlayerでCentOSの仮想環境を構築

概要

CentOSの仮想環境を構築します。
RedHatの復習がてら触りたいだけなので細かなところは気にしません
小分けになりますがOSのインストール完了までの備忘録です。

  • 概要
  • 環境
  • 前提知識
  • VMware Workstation Playerのセットアップ
    • VMware Workstation Playerの入手
    • VMware Workstation Playerのインストール
  • OSイメージの入手
  • 新規仮想マシンの作成
  • OSインストール
    • ISOイメージの指定
    • OSインストールの開始
      • ネットワークの設定
  • インストール完了後
  • 参考サイト様
  • 雑感

環境

前提知識

  • 会社でVMware Playerを使っている。

※自分でセットアップ等はしたことがない。すでに用意されているもの

  • 高校生の時にさくらVPS使ってDebianで色々していた

CLIにアレルギー反応が出ない

続きを読む

C# 文字列結合

  • 概要
  • ソース
  • 修正箇所
    • 修正前
    • 修正後
  • 簡単に3パターンの修正案
  • 文字列は不変オブジェクト?
  • StringBuilderを使うメリット
  • 雑感

概要

前回に引き続き疑似マイナンバー生成機の改修ネタです。

  • forからforeachに変更
  • 「”文字” + "文字"」からStringBuilderに変更
  • StringBuilderを使うメリット

int型配列とチェックデジットを文字列に変換する処理があまりにもダサかったので
書き直しました。そこで新しい学びもあったので備忘録として

前回と前々回の記事はこちら
kitigai.hatenablog.com
kitigai.hatenablog.com

続きを読む

C# 乱数の生成

概要

過去に作成した疑似マイナンバー生成機を作って乱数を生成する処理を書いた。
ふとネットの記事を目に*1して「あれ?既存のコードじゃ重複した乱数生成されるんじゃ?」となったので直しました。

ソース

github.com
※コミットがたくさんありますがGitに慣れてなくていろいろやらかした結果です。

続きを読む

VisualStudio 「{」を行頭から行末に設定変更

概要

  • 「{」を行末から行頭にした
  • いつでも戻せるようにメモ

ソースコードの見やすさ

学生の頃からコードはVisualStudio(C#?)の初期設定で
中括弧({})は行頭に配置でコードを書いてきたわけですが

入社時の研修でEclipseJavaを書いたときに違和感を覚えて
行末の方が書きやすいんじゃ?と薄々感じ始めました。

//行頭パターン
public static void hoge()
{
    //処理
}
//行末パターン
public static void hoge() {
    //処理
}

C#プログラミングのイディオム/定石&パターン*1でも
行末で中括弧を書いていて、その理由として

  1. プログラムの構造が正しく反映されるスタイル
  2. 見た目の行数を減らしてディスプレイに多くの情報を表示する。

上記の2点を挙げています。(※異論もあると書いてある。)

個人的には行末パターンがしっくり来ていて
仕事でC#を書くことがあるかはわかりませんが
今は、個人でやるので一般的なルールは無視してよいのかなと言う感じです。

IDEでコード書いている分には改行とかは自動で整形されますし
設定戻せばOKみたいなノリ

続きを読む

C# EntityFrameworkを使ったDBアクセス コードファースト編

概要

C# EntityFrameworkのコードファストを利用してDBアクセスを行います。

先日書いたASP.NET MVCを使ったTweetを投稿するWebアプリケーションの制作過程で
DBアクセスについてよくわからなかったので
チュートリアルをさらさらっとやった次第ですので備忘録として残しておきます。

  • 概要
  • EntityFrameworkとは何ぞや?
  • Code First / DatabaseFirst
  • EntityFrameworkのCode FirstでCRUD
  • 環境
  • ソース
  • プロジェクトの作成
  • EntityFrameworkのインストール
  • Entityクラスの作成
    • Book(書籍)クラスとAuthor(著者)クラスを作成
    • [メモ]virtualとは
  • DbContextクラスの作成
  • DB接続文字列の確認
  • 実行
    • [メモ]__MigrationHistory
  • Create
    • 実行
  • Read
  • Update
  • Delete
  • クエリ
  • [メモ]Entity FrameworkでもLINQが使える
  • アノテーションと自動マイグレーション
  • 自動マイグレーション機能の有効化
    • BooksDbContextクラスにSetInitializerメソッドを追加
    • 実行
  • メモ
  • 参考文献
  • 雑感

まず、用語の理解から

続きを読む