20210610のMacに関する記事は6件です。

whichコマンドで見たいものが見れない時は...!!

まえがき 何をすれば良いのか結果だけ見たい方は一番最後のPATHだけ表示したいよを見ていただければ幸いです。 whichコマンドとは コマンドのディレクトリがどこにあるのかを知るために使用します。 僕は普段、pythonをメインに使用するので例として下記のようにやると、 $ which pipenv /usr/local/bin/pipenv このようになると思います。 ですがpipnevと合わせて使うpyenvでやってみると、 $ which pyenv pyenv () { local command command="${1:-}" if [ "$#" -gt 0 ] then shift fi case "$command" in (rehash | shell) eval "$(pyenv "sh-$command" "$@")" ;; (*) command pyenv "$command" "$@" ;; esac } おやおや、pipenvのときようにPATHのみが現れませんね。 さらにさらにnodenvにおいてもやってみると、 $ which nodenv nodenv () { local command command="${1:-}" if [ "$#" -gt 0 ] then shift fi case "$command" in (rehash | shell) eval "$(nodenv "sh-$command" "$@")" ;; (*) command nodenv "$command" "$@" ;; esac } pyenvと同じ感じになりましたね。 whereコマンドとの違い 上記で述べたwhereコマンドと比較してみると、 $ where nodenv nodenv () { local command command="${1:-}" if [ "$#" -gt 0 ] then shift fi case "$command" in (rehash | shell) eval "$(nodenv "sh-$command" "$@")" ;; (*) command nodenv "$command" "$@" ;; esac } /usr/local/bin/nodenv おっと、whichコマンドでも見れた部分がありますね。どうやらwhichコマンドはwhereコマンドで表示される最初の部分が表示されるという違いがあるようです。 PATHだけ表示したいよ 毎回whereコマンドで確認するのもいいですが欲しい情報以外も表示されてしまい少しわかりづらくなってしまいます。ここで使うのがtypeコマンドです。 試しにやってみると、 $ type pipenv pipenv is /usr/local/bin/pipenv $ type pyenv pyenv is a shell function from /Users/gabe/.zshrc pyenv is /usr/local/bin/pyenv $ type nodenv nodenv is a shell function from /Users/gabe/.zshrc nodenv is /usr/local/bin/nodenv このように表示されます。しかも、ユーザーも設定している場合、それがどこに記載されているかも表示してくれます。 なので、whereコマンドを使用するよりもtypeコマンドを利用した方が都合が良い時が多いかもしれませんね!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

M1 MacのVSCodeにPlantUMLを導入

インストール brew コマンドを使って必要なパッケージを導入 $ brew install graphviz $ brew install adoptopenjdk $ brew install plantuml VSCode で利用する PlantUML をインストールする。 インストールが完了したら VSCode を再起動。 .pu ファイルを作成し、以下の通り記入してみる。 @startuml Class1 <|-- Class2 Class3 *-- Class4 Class5 o-- Class6 Class7 .. Class8 Class9 -- Class10 @enduml その後、⌥(option) + D を入力すると図が描写される。 Reference Mac の VSCode に PlantUML を導入 PlantUMLをMac OS Xで使う PlantUMLを使ってみる(MacOS) ~Visual Studio Codeでもっと使いやすく~
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

VagrantのbashでSDKMAN!をインストールしようとすると、『unzip』が無いと怒られた。

以下のコマンドを叩いて、SDKMAN!をインストールしようとすると。。。 $ curl -s https://get.sdkman.io | bash 以下のログが。。。 curl -s "https://get.sdkman.io" | bash $ curl -s "https://get.sdkman.io" | bash -+syyyyyyys: `/yho:` -yd. `/yh/` +m. .oho. hy .` .sh/` :N` `-/o` `+dyyo:. .yh:` `M- `-/osysoym :hs` `-+sys: hhyssssssssy+ .sh:` `N: ms/-`` yy.yh- -hy. `.N-````````+N. `od/` `N- -/oM- ddd+` `sd: hNNm -N: :do` .M. dMMM- `ms. /d+` `NMMs `do .yy- :N` ```mMMM. - -hy. /MMM: yh `+d+` `:/oo/` `-/osyh/ossssssdNMM` .sh: yMMN` /m. -dh- :ymNMMMMy `-/shmNm-`:N/-.`` `.sN /N- `NMMy .m/ `oNs` -hysosmMMMMydmNmds+-.:ohm : sd` :MMM/ yy .hN+ /d: -MMMmhs/-.` .MMMh .ss+- `yy` sMMN` :N. :mN/ `N/ `o/-` :MMMo +MMMN- .` `ds mMMh do /NN/ `N+....--:/+oooosooo+:sMMM: hMMMM: `my .m+ -MMM+ :N. /NMo -+ooooo+/:-.......:+hNMN.NMMMd.MM/ -m: oMMN. hs -NMd :mm -MMMm- .s/ -MMm. /m- mMMd -N. mMM/ .- /MMh. -dMo -MMMy od. .MMMs..---yh +MMM. sNo.sNMM+ :MMMM/ sh+MMMNmNm+++- mMMM- /--ohmMMM+ :MMMMm.hyymmmdddo MMMMh. `-+yy/`yMMM/ :MMMMMy -sm:.``..-:-.` dMMMMmo-...-:/osyhddddho. `+shdh+. hMMM: :MmMMMM/ ./yy/` `:sys+/+sh/ .dMMMMMMmdddddmmNMMMNNNNNMMMMMs sNdo- dMMM- `-/yd/MMMMm-:sy+. :hs- /N` `/ymNNNNNNNmmdys+/::----/dMMm: +m- mMMM+ohmo/.` sMMMMdo- .om: `sh `.-----+/.` `.-+hh/` `od. NMMNmds/ `mmy:` +mMy `:yy. /moyso+//+ossso:. .yy` `dy+:` .. :MMMN+---/oys: /+m: `.-:::-` /d+ +MMMMMMMNh:` +MN/ -yh. `+hddhy+. /MM+ .sh: :NMo -sh/ -NMs `/yy: .NMy `:sh+. `mMm` ./yds- `dMMMmyo:-.`.-:oymNy: +NMMMMMMMMMMMMMMMMms: -+shmNMMMNmdy+: Now attempting installation... Looking for a previous installation of SDKMAN... Looking for unzip... Looking for zip... which: no zip in (....) Not found. Please install zip on your system using your favourite package manager. Restart after installing zip. Looking for a previous installation of SDKMAN... Looking for unzip... Not found. →unzipが無いと言っている。 恐らくzipでインストールした後、それを解凍できるコマンドがないということらしい。 なので、unzipをインストールする。 以下のコマンドを使用する。 $ yum install unzip これにより [vagrant@localhost yum.repos.d]$ sudo yum install unzip 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile base | 3.7 kB 00:00 base/primary_db | 4.7 MB 00:03 extras | 3.4 kB 00:00 extras/primary_db | 29 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 12 MB 00:07 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package unzip.x86_64 0:6.0-5.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 インストールしています: unzip x86_64 6.0-5.el6 base 152 k トランザクションの要約 インストール 1 パッケージ 総ダウンロード容量: 152 k インストール済み容量: 324 k これでいいですか? [y/N]y パッケージをダウンロードしています: unzip-6.0-5.el6.x86_64.rpm | 152 kB 00:00 警告: rpmts_HdrFromFdno: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 Importing GPG key 0xC105B9DE: Userid : CentOS-6 Key (CentOS 6 Official Signing Key) centos-6-key@centos.org Package: centos-release-6-8.el6.centos.12.3.x86_64 (@anaconda-CentOS-201605220104.x86_64/6.8) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 これでいいですか? [y/N]y rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : unzip-6.0-5.el6.x86_64 1/1 Verifying : unzip-6.0-5.el6.x86_64 1/1 インストール: unzip.x86_64 0:6.0-5.el6 完了しました! 途中、『y』押下を求められるので、押下してあげる。 すると、インストール完了と出る。 $ curl -s "https://get.sdkman.io" | bash -+syyyyyyys: `/yho:` -yd. `/yh/` +m. .oho. hy .` .sh/` :N` `-/o` `+dyyo:. .yh:` `M- `-/osysoym :hs` `-+sys: hhyssssssssy+ .sh:` `N: ms/-`` yy.yh- -hy. `.N-````````+N. `od/` `N- -/oM- ddd+` `sd: hNNm -N: :do` .M. dMMM- `ms. /d+` `NMMs `do .yy- :N` ```mMMM. - -hy. /MMM: yh `+d+` `:/oo/` `-/osyh/ossssssdNMM` .sh: yMMN` /m. -dh- :ymNMMMMy `-/shmNm-`:N/-.`` `.sN /N- `NMMy .m/ `oNs` -hysosmMMMMydmNmds+-.:ohm : sd` :MMM/ yy .hN+ /d: -MMMmhs/-.` .MMMh .ss+- `yy` sMMN` :N. :mN/ `N/ `o/-` :MMMo +MMMN- .` `ds mMMh do /NN/ `N+....--:/+oooosooo+:sMMM: hMMMM: `my .m+ -MMM+ :N. /NMo -+ooooo+/:-.......:+hNMN.NMMMd.MM/ -m: oMMN. hs -NMd :mm -MMMm- .s/ -MMm. /m- mMMd -N. mMM/ .- /MMh. -dMo -MMMy od. .MMMs..---yh +MMM. sNo.sNMM+ :MMMM/ sh+MMMNmNm+++- mMMM- /--ohmMMM+ :MMMMm.hyymmmdddo MMMMh. `-+yy/`yMMM/ :MMMMMy -sm:.``..-:-.` dMMMMmo-...-:/osyhddddho. `+shdh+. hMMM: :MmMMMM/ ./yy/` `:sys+/+sh/ .dMMMMMMmdddddmmNMMMNNNNNMMMMMs sNdo- dMMM- `-/yd/MMMMm-:sy+. :hs- /N` `/ymNNNNNNNmmdys+/::----/dMMm: +m- mMMM+ohmo/.` sMMMMdo- .om: `sh `.-----+/.` `.-+hh/` `od. NMMNmds/ `mmy:` +mMy `:yy. /moyso+//+ossso:. .yy` `dy+:` .. :MMMN+---/oys: /+m: `.-:::-` /d+ +MMMMMMMNh:` +MN/ -yh. `+hddhy+. /MM+ .sh: :NMo -sh/ -NMs `/yy: .NMy `:sh+. `mMm` ./yds- `dMMMmyo:-.`.-:oymNy: +NMMMMMMMMMMMMMMMMms: -+shmNMMMNmdy+: Now attempting installation... Looking for a previous installation of SDKMAN... Looking for unzip... Looking for zip... Looking for curl... Looking for sed... Installing SDKMAN scripts... Create distribution directories... Getting available candidates... Prime the config file... Download script archive... ################################################################## 100.0% Extract script archive... Install scripts... Install contributed software... /home/vagrant/.sdkman/tmp/stage/contrib/completion' ->/home/vagrant/.sdkman/contrib/completion' Set version to 5.11.5+713 ... Attempt update of interactive bash profile on regular UNIX... Added sdkman init snippet to /home/vagrant/.bashrc Attempt update of zsh profile... Updated existing /home/vagrant/.zshrc All done! Please open a new terminal, or run the following in the existing one: source "/home/vagrant/.sdkman/bin/sdkman-init.sh" Then issue the following command: sdk help Enjoy!!! 再度、SDKのインストールコマンドを押下すると、『Enjoy!』笑 これにて、SDKMAN!はインストールできました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Spotify APIを用いた、印象語による楽曲検索(距離計算編)

上の続きです 今回はimpressionのテーブルの定義とmain.pyの部分を記事にします シェルスクリプトで関数を実行するために以下の記事を参考にしました main.pyの中身はこうなっています main.py import argparse import norm #距離計算 # python main.py music_impression -i '{印象語}' def music_impression(name): norm.distance(name) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('function_name', type=str, help='set fuction name in this file') parser.add_argument('-i', '--func_args', nargs='*', help='args in function', default=[]) args = parser.parse_args() # このファイル内の関数を取得 func_dict = {k: v for k, v in locals().items() if callable(v)} # 引数のうち,数値として解釈できる要素はfloatにcastする func_args = [float(x) if x.isnumeric() else x for x in args.func_args] # 関数実行 ret = func_dict[args.function_name](*func_args) 今回中にあるのはnorm.py(距離計算)だけです 実行環境 macOS Catlina 10.15.7 Python 3.7.5 impressionテーブル main.pyはimpressionテーブル(以下impression)とmusicテーブル(以下music)の距離計算で上位10曲を表示するというものになっています musicはSpotify APIを用いているのでimpressionの正確さが結果の正確さに直結します ここに客観性かつ正確性を持たせるために現在思案中です とりあえずは25人にそれぞれの印象に当てはまる曲を挙げてもらい、平均を出しました fc=# select * from impression; word | danceability | acousticness | energy | liveness | loudness | speechiness | tempo | valence ---------+--------------+--------------+----------+----------+-----------+-------------+------------+---------- excited | 0.559412 | 0.238991 | 0.753471 | 0.177212 | -6.361706 | 0.1073 | 128.399882 | 0.565765 cool | 0.533333 | 0.176618 | 0.796208 | 0.214154 | -5.769667 | 0.0718 | 124.457208 | 0.456937 relax | 0.5335 | 0.420415 | 0.604963 | 0.161387 | -7.346125 | 0.069258 | 121.235208 | 0.504838 sad | 0.509 | 0.403961 | 0.593177 | 0.183709 | -6.792652 | 0.046196 | 119.219565 | 0.408422 fierce | 0.53716 | 0.136491 | 0.823628 | 0.1822 | -5.7808 | 0.099324 | 132.39152 | 0.505112 距離計算 norm.py import psycopg2 def distance(name): conn = psycopg2.connect("host=" + "localhost" + " dbname=" + {データベース名} + " user=" + {自分のmacのユーザーネーム} + " password=" + "") cur = conn.cursor() cur.execute("SELECT * FROM music") m = cur.fetchall() conn.commit() print("The number of music is ", len(m)) conn.commit() cur.execute("SELECT music.name, music.artist, distance(music.danceability, music.acousticness, music.energy, music.liveness, music.loudness, music.speechiness, music.tempo, music.valence, impression.danceability, impression.acousticness, impression.energy, impression.liveness, impression.loudness, impression.speechiness, impression.tempo, impression.valence) AS score FROM music, impression WHERE impression.word = '{}' ORDER BY score ASC FETCH FIRST 10 ROWS ONLY".format(name)) n = cur.fetchall() conn.commit() print() print(name) for n_ in n: print(n_) print() cur.close() conn.close() return distanceという関数をsqlで定義しています これは距離計算をする関数です norm.sql CREATE FUNCTION distance(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float) RETURNS float AS 'SELECT sqrt(($1 - $9)^2 + ($2 - $10)^2 + ($3 - $11)^2 + ($4 - $12)^2 + ($5 - $13)^2 + ($6 - $14)^2 + ($7 - $15)^2 + ($8 - $16)^2 ) AS distance' LANGUAGE 'sql'; 実行結果(fierce) こんな感じに結果が出てきます ~/music2imp$ python main.py music_impression -i 'fierce' The number of music is 2849 fierce ('Fxxker', 'CHANMINA', 0.4662540877118465) ('よー、そこの若いの', 'Takehara Pistol', 0.484637866437422) ('Tik Tik Tok (Rhythm of the Clock) - Original Mix', 'Kid Alina', 0.4947239347393736) ('Dark Horse', 'Katy Perry', 0.6637707380602147) ('ダンシング・ヒーロー(Eat You Up)', 'Yoko Oginome', 0.7221408093890002) ('インフルエンサー 〜off vocal ver.〜 - Off Vocal Version', 'Nogizaka46', 0.7878546612066344) ('pov', 'Ariana Grande', 0.7881882205317551) ('ONLY ONE', 'SPiCYSOL', 0.800737013372686) ('格好悪いふられ方', 'Senri Oe', 0.8075263077974683) ('19 GROWING UP -ode to my buddy-', 'PRINCESS PRINCESS', 0.8426145755830627)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Spotify APIを用いた、印象語による楽曲検索(楽曲情報取得編)

印象語(cool, excited, relax, sad, fierce)からその印象に合った曲を検索します 構成図はこんな感じです 今回はadd_table.pyの部分を記事にしますが、impressionのテーブルの定義は次回にします。 add_table.pyの中身はこうなっています シェルスクリプトで関数を実行するために以下の記事を参考にしました add_table.py import argparse import create_table import save_db import music_info # 実行文 # python add_table.py add_table -i '{id}' #music tableの作成 def add_table(id): create_table.create_music_table() print("create table") ids = imusic_info.getTrackIDs({ユーザーID}, '{}'.format(id)) print("get API") save_db.save_df(music_info.make_df(ids)) print("save db") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('function_name', type=str, help='set fuction name in this file') parser.add_argument('-i', '--func_args', nargs='*', help='args in function', default=[]) args = parser.parse_args() # このファイル内の関数を取得 func_dict = {k: v for k, v in locals().items() if callable(v)} # 引数のうち,数値として解釈できる要素はfloatにcastする func_args = [float(x) if x.isnumeric() else x for x in args.func_args] # 関数実行 ret = func_dict[args.function_name](*func_args) 手順としては 1, DB作成(create_table) 2, 楽曲情報を取得(imusic_info) 3, データフレームに変換(imusic_info) 4, DBに保存(save_db) です 実行環境 macOS Catlina 10.15.7 Python 3.7.5 また今回は全ての作業をpythonで行いたかったのでpsycopg2を用いました 1, DB作成 create_table.py import psycopg2 #テーブル作成 def create_music_table(): conn = psycopg2.connect("host=" + "localhost" + " dbname=" + {データベース名} + " user=" + {自分のmacのユーザーネーム} + " password=" + "") cur = conn.cursor() cur.execute('CREATE TABLE IF NOT EXISTS music (name TEXT NOT NULL, artist TEXT NOT NULL, danceability FLOAT8 NOT NULL,acousticness FLOAT8 NOT NULL,energy FLOAT8 NOT NULL,liveness FLOAT8 NOT NULL,loudness FLOAT8 NOT NULL,speechiness FLOAT8 NOT NULL,tempo FLOAT8 NOT NULL,valence FLOAT8 NOT NULL);') cur.execute('CREATE TABLE IF NOT EXISTS music_normalization (name TEXT NOT NULL, artist TEXT NOT NULL, danceability FLOAT8 NOT NULL,acousticness FLOAT8 NOT NULL,energy FLOAT8 NOT NULL,liveness FLOAT8 NOT NULL,loudness FLOAT8 NOT NULL,speechiness FLOAT8 NOT NULL,tempo FLOAT8 NOT NULL,valence FLOAT8 NOT NULL);') conn.commit() cur.close() conn.close() return 2, 楽曲情報を取得 Spotify APIの取得は以下のサイトを参考にしました https://knowledge.insight-lab.co.jp/sisense/information/spotify_music_data_1 music_info.py import spotipy from spotipy.oauth2 import SpotifyClientCredentials import pandas as pd import time def getTrackIDs(user, playlist_id): #自分のユーザーID/取得したいプレイリストID ids = [] client_id = {自分の情報} client_secret = {自分の情報} client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret) spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager) client_credentials_manager = SpotifyClientCredentials(client_id, client_secret) sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager) playlist = sp.user_playlist(user, playlist_id) while playlist['tracks']['next']: for item in playlist['tracks']['items']: track = item['track'] ids.append(track['id']) playlist['tracks'] = sp.next(playlist['tracks']) else: for item in playlist['tracks']['items']: track = item['track'] ids.append(track['id']) return ids def getTrackFeatures(id): client_id = {自分の情報} client_secret = {自分の情報} client_credentials_manager = SpotifyClientCredentials(client_id, client_secret) sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager) meta = sp.track(id) features = sp.audio_features(id) # data name = meta['name'] artist = meta['album']['artists'][0]['name'] acousticness = features[0]['acousticness'] danceability = features[0]['danceability'] energy = features[0]['energy'] liveness = features[0]['liveness'] loudness = features[0]['loudness'] speechiness = features[0]['speechiness'] tempo = features[0]['tempo'] valence = features[0]['valence'] track = [name, artist, danceability, acousticness, energy, liveness, loudness, speechiness, tempo, valence] return track getTrackIDs = 曲のIDを取得 getTrackFeatures = 曲の情報を取得 みたいな感じです 3, データフレームに変換 後々正規化などをする予定なのでdfに変換しておく music_info.py def make_df(ids):#getTrackIDsで返ってきたID tracks = [] for i in range(len(ids)): time.sleep(.5) track = getTrackFeatures(ids[i]) tracks.append(track) df = pd.DataFrame(tracks, columns = ['name', 'artist', 'danceability', 'acousticness', 'energy', 'liveness', 'loudness', 'speechiness', 'tempo', 'valence']) return df 4, DBに保存 楽曲名とアーティスト名が重複したら保存しないようにしました save_db.py import psycopg2 #重複を避けてDBに保存 def save_df(df): conn = psycopg2.connect("host=" + "localhost" + " dbname=" + {データベース名} + " user=" + {自分のmacのユーザーネーム} + " password=" + "") cur = conn.cursor() for text in df.values: values = (text[0], text[1], text[2], text[3], text[4], text[5], text[6], text[7], text[8], text[9]) cur.execute('SELECT * FROM music WHERE name = %s AND artist = %s', (text[0], text[1])) record = cur.fetchone() if record is not None: continue else: try: cur.execute ('INSERT INTO music (name, artist, danceability, acousticness, energy, liveness, loudness, speechiness, tempo, valence)' 'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)' ,values) except Exception as err: print("Encountered exception. {}".format(err)) conn.commit() cur.execute("SELECT * FROM music") m = cur.fetchall() conn.commit() print("The number of music is ", len(m)) cur.close() conn.close() 実行結果 ~/music2imp$ python add_table.py add_table -i '5gNu9eJF7yg4xHQBXWVVaN' create table get API The number of music is 2849 save db musicテーブルの中身のはこんな感じです(一部) fc=# select * from music; name | artist | danceability | acousticness | energy | liveness | loudness | speechiness | tempo | valence -----------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+--------------+--------------+---------+----------+----------+-------------+---------+--------- 道 | EXILE | 0.478 | 0.00209 | 0.592 | 0.245 | -5.975 | 0.0265 | 139.607 | 0.271 桜 | KOBUKURO | 0.462 | 0.531 | 0.414 | 0.119 | -7.392 | 0.0251 | 83.474 | 0.342 桜 | FUNKY MONKEY BABYS | 0.65 | 0.291 | 0.734 | 0.153 | -3.746 | 0.0302 | 81.993 | 0.726 蕾(つぼみ) | KOBUKURO | 0.355 | 0.203 | 0.441 | 0.155 | -5.785 | 0.0253 | 75.894 | 0.283 流星 | KOBUKURO | 0.464 | 0.49 | 0.553 | 0.32 | -5.314 | 0.0272 | 77.022 | 0.254 遥か | GReeeeN | 0.516 | 0.258 | 0.428 | 0.213 | -5.53 | 0.0242 | 84.005 | 0.368 ここにしか咲かない花 | KOBUKURO 続きは下にあります
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

VirtualBoxでCentOSの時刻を変更する(Mac)

はじめに CentOSからgitにコミットした際にCentOSの設定時刻と現在の時刻がずれていることに気がつく。 github上で正しい時刻に草が生えるようにCentOS上の時刻を直す。 原因はわからないがMac(ホスト)とCentOs(ゲスト)の時刻に7時間ほどの差異がある。 現状、Mac(ホスト)とCentOs(ゲスト)の時刻が同期される設定になっている。 開発環境 ・MacBook Pro プロセッサ2 GHz クアッドコアIntel Core i5 メモリ16GB ・Virtualbox+vagrant+CentOs7.9 作業 まず何も設定していない状態でCentOS上(ゲスト)で時刻を変更しても、すぐに元に戻ってしまう。 $ sudo date -s"06/10 5:40 2021" その数秒後には元の時刻に戻る。 $ date 2021年 6月 9日 水曜日 22:40:45 一度、ホスト側に戻り下記のコマンドを入力する。 VirtualBox のゲスト OS の時刻をホスト OS と同期させない設定をおこなう。 $ VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1 "VM name"→VM Virtualboxを開き、対象のVirtualboxの名前を確認する。 その後、ゲストOSを再起動し、ホスト側で再び下記のコマンドを入力。 $ sudo date -s"06/10 6:00 2021" 今度はホストOSの時刻と同期されず、設定した時刻を保っている。 $ date 2021年 6月 10日 木曜日 6:00:23 補足 VirtualBox のゲスト OS の時刻をホスト OS と同期させる場合は下記のコマンドを入力する。 $ VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0 ご覧いただきありがとうございました。 参考にさせていただいた記事
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む