vagrant / virtualbox
vagrant2.2.6がVirtualbox 6.1(最新版)を認識してくれない!!
$ vagrant --version Vagrant 2.2.6
VBoxManage --version 6.1.0r135406
参考サイト
https://blogs.oracle.com/scoter/getting-vagrant-226-working-with-virtualbox-61-ga
$ vagrant up No usable default provider could be found for your system. Vagrant relies on interactions with 3rd party systems, known as "providers", to provide Vagrant with resources to run development environments. Examples are VirtualBox, VMware, Hyper-V. The easiest solution to this message is to install VirtualBox, which is available for free on all major platforms. If you believe you already have a provider available, make sure it is properly installed and configured. You can see more details about why a particular provider isn't working by forcing usage with `vagrant up --provider=PROVIDER`, which should give you a more specific error message for that particular provider.
編集ファイル
(1)
/opt/vagrant/embedded/gems/2.2.6/gems/vagrant-2.2.6/plugins/providers/virtualbox/driver/meta.rb
(2)
/opt/vagrant/embedded/gems/2.2.6/gems/vagrant-2.2.6/plugins/providers/virtualbox/driver/version_6_1.rb
http://www.coter.net/upload/version_6_1.rb
require File.expand_path("../version_6_0", __FILE__) module VagrantPlugins module ProviderVirtualBox module Driver # Driver for VirtualBox 6.1.x class Version_6_1 < Version_6_0 def initialize(uuid) super @logger = Log4r::Logger.new("vagrant::provider::virtualbox_6_1") end end end end end
(3)
/opt/vagrant/embedded/gems/2.2.6/gems/vagrant-2.2.6/plugins/providers/virtualbox/plugin.rb
Ubuntu
Ubuntuで困った事
インストール可能なパッケージの「一覧」を更新する
$ sudo apt-get update 無視:1 http://us.archive.ubuntu.com/ubuntu artful InRelease 無視:2 http://security.ubuntu.com/ubuntu artful-security InRelease 無視:3 http://us.archive.ubuntu.com/ubuntu artful-updates InRelease エラー:4 http://security.ubuntu.com/ubuntu artful-security Release 404 Not Found [IP: 91.189.88.174 80] 無視:5 http://us.archive.ubuntu.com/ubuntu artful-backports InRelease エラー:6 http://us.archive.ubuntu.com/ubuntu artful Release 404 Not Found [IP: 91.189.91.23 80] エラー:7 http://us.archive.ubuntu.com/ubuntu artful-updates Release 404 Not Found [IP: 91.189.91.23 80] エラー:8 http://us.archive.ubuntu.com/ubuntu artful-backports Release 404 Not Found [IP: 91.189.91.23 80] ........
Ubuntuのバージョン確認
$ cat /etc/os-release NAME="Ubuntu" VERSION="17.10 (Artful Aardvark)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 17.10" VERSION_ID="17.10" 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=artful UBUNTU_CODENAME=artful
$ cat /etc/apt/sources.list #deb cdrom:[Ubuntu 17.10 _Artful Aardvark_ - Release amd64 (20171018)]/ artful main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://us.archive.ubuntu.com/ubuntu/ artful main restricted # deb-src http://us.archive.ubuntu.com/ubuntu/ artful main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://us.archive.ubuntu.com/ubuntu/ artful-updates main restricted # deb-src http://us.archive.ubuntu.com/ubuntu/ artful-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://us.archive.ubuntu.com/ubuntu/ artful universe # deb-src http://us.archive.ubuntu.com/ubuntu/ artful universe deb http://us.archive.ubuntu.com/ubuntu/ artful-updates universe # deb-src http://us.archive.ubuntu.com/ubuntu/ artful-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://us.archive.ubuntu.com/ubuntu/ artful multiverse # deb-src http://us.archive.ubuntu.com/ubuntu/ artful multiverse deb http://us.archive.ubuntu.com/ubuntu/ artful-updates multiverse # deb-src http://us.archive.ubuntu.com/ubuntu/ artful-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://us.archive.ubuntu.com/ubuntu/ artful-backports main restricted universe multiverse # deb-src http://us.archive.ubuntu.com/ubuntu/ artful-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu artful partner # deb-src http://archive.canonical.com/ubuntu artful partner deb http://security.ubuntu.com/ubuntu artful-security main restricted # deb-src http://security.ubuntu.com/ubuntu artful-security main restricted deb http://security.ubuntu.com/ubuntu artful-security universe # deb-src http://security.ubuntu.com/ubuntu artful-security universe deb http://security.ubuntu.com/ubuntu artful-security multiverse # deb-src http://security.ubuntu.com/ubuntu artful-security multiverse
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak $ sudo sed -i -e 's/us.archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
$ sudo apt-get update ........ Fetched 38.4 MB in 3min 19s (192 kB/s) Reading package lists... Done
$ sudo apt-get install ibus-mozc
localectl
localectl
設定状況の確認
$ localectl status System Locale: LANG=en_US.UTF-8 VC Keymap: n/a X11 Layout: us X11 Model: pc105
設定可能なロケールの一覧を出力
$ localectl list-locales
サポートされているロケールの一覧を出力
$ less /usr/share/i18n/SUPPORTED
ロケールを生成する
$ sudo locale-gen ja_JP.UTF-8
設定したロケールがあるか一覧を出力して確認
$ localectl list-locales C.UTF-8 en_AG en_AG.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IL en_IL.utf8 en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZM en_ZM.utf8 en_ZW.utf8 ja_JP.utf8
キーマップを設定
$ sudo localectl set-locale LANG=ja_JP.utf8 $ sudo localectl set-locale LANG=en_US.utf8
システムキーマップの設定
$ sudo localectl set-keymap jp106 $ sudo localectl set-keymap jp-OADG109A $ sudo localectl set-keymap us
$ localectl status System Locale: LANG=ja_JP.utf8 VC Keymap: jp-OADG109A X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
C
Zellerの公式
曜日を求めるプログラム
#include <stdio.h> int main(int argc, char const *argv[]) { int year; int month; int day; int week_of_day; year = 2019; month = 10; day = 2; week_of_day = (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7; printf("%d/%d/%d is %d\n", year, month, day, week_of_day); return 0; }
0:日、1:月、2:火、3:水、4:木、5:金、6:土
$ ./zeller 2019/10/2 is 3
C
🔳変数
コンピュータ内部でのメモリの識別:数値による番地(=住所)。メモリのどの番地に値が保持されているか、数値による番地を指定することは大変。メモリを変数として扱うとき、固有の名前を付けて区別する。C言語では、「 データ型 変数; 」で宣言することによりメモリのある領域が変数として扱うことができる。
🔳スタック
スタックはメモリ上に確保されていて、データの位置をスタックポインタという特殊なレジスタ(CPU内部の値を格納するエリア)を利用して実現している。スタック上に確保された変数は、その関数の処理を終えると、変数自体も消えてしまう(ローカル変数:関数の中で宣言する)。
#include <stdio.h> char *func(void){ char one_string[14] = "hello, world\n"; printf("from func: %s", one_string); return one_string; } int main(int argc, char const *argv[]) { printf("from main: %s", func()); return 0; }
main()関数と、func()関数の2カ所で画面に文字を表示するprintf()関数が呼び出しているが.....
$ ./auto-var from func: hello, world from main: I��
func()関数の中で宣言した、配列one_stringはスタック上に確保されるものなので、func()関数の処理を終了した時点で、他の処理に使われて内容が破壊されてしまう。
func()関数、main()関数両方のprintf()が綺麗に表示できるようにするためには、スタックとは別の場所に変数を確保するような宣言を行う必要がある。「静的変数」として変数を宣言すると、スタックとは別の場所に確保される「 staticデータ型変数名; 」。
#include <stdio.h> char *func(void){ static char one_string[14] = "hello, world\n"; printf("from func: %s", one_string); return one_string; } int main(int argc, char const *argv[]) { printf("from main: %s", func()); return 0; }
$ ./auto-var from func: hello, world from main: hello, world
「static int count」
#include <stdio.h> void func(void){ int count = 0; count += 1; printf("count = %d\n", count); return; } int main(int argc, char const *argv[]) { func(); func(); func(); return 0; }
$ ./auto-var_2 count = 1 count = 1 count = 1
#include <stdio.h> void func(void){ static int count = 0; count += 1; printf("count = %d\n", count); return; } int main(int argc, char const *argv[]) { func(); func(); func(); return 0; }
$ ./auto-var_2 count = 1 count = 2 count = 3
🔳大域変数:プログラムのどこからでも読み書きができる変数
大域変数は関数ではない場所で宣言する。
#include <stdio.h> int global_number; void func_1(void){ printf("from func_1: %d\n", global_number); return; } void func_2(void){ printf("from func_2: %d\n", global_number); return; } void func_3(void){ printf("from func_3: %d\n", global_number); return; } int main(int argc, char const *argv[]) { global_number = 1; func_1(); global_number = 10; func_2(); global_number = 100; func_3(); return 0; }
$ ./global from func_1: 1 from func_2: 10 from func_3: 100
別ファイルからの大域変数の参照:extern指定子
extern指定子は、別のファイルに宣言してある変数や関数を利用したいときに、「あとでリンクするときに、実体がありますよ」と指定するためのキーワード。
extern_sub.c
int global_number = 99;
extern_main.c
#include <stdio.h> extern int global_number; int main(int argc, char const *argv[]) { printf("global_number = %d\n", global_number); return 0; }
PROGRAM = extern OBJS = extern_sub.o extern_main.o SRCS = $(OBJS:%.o=%.c) CC = gcc CFLAGS = -g -Wall LDFLAGS = $(PROGRAM):$(OBJS) $(CC) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LDLIBS)
$ make -f Makefile.extern gcc -g -Wall -c -o extern_sub.o extern_sub.c gcc -g -Wall -c -o extern_main.o extern_main.c gcc -g -Wall -o extern extern_sub.o extern_main.o
$ ./extern global_number = 99
🔳const:記憶クラス指定子
constは、初期化した値から一切変更できなくなる指定子で、あらかじめ決められた値を、プログラム中で変更したくない場合に利用する。constが指定された変数を、初期値以外から変更しようとするとコンパイルエラーになる。
#include <stdio.h> int main(int argc, char const *argv[]) { const char character = 'A'; const int number = 1; printf("character is = %c\n", character); printf("number is %d\n", number); character = 'B'; number = 2; return 0; }
$ make -f Makefile.const gcc -g -Wall -c -o const.o const.c const.c:11:13: error: cannot assign to variable 'character' with const-qualified type 'const char' character = 'B'; ~~~~~~~~~ ^ const.c:5:14: note: variable 'character' declared const here const char character = 'A'; ~~~~~~~~~~~^~~~~~~~~~~~~~~ const.c:12:10: error: cannot assign to variable 'number' with const-qualified type 'const int' number = 2; ~~~~~~ ^ const.c:6:13: note: variable 'number' declared const here const int number = 1; ~~~~~~~~~~^~~~~~~~~~ 2 errors generated. make: *** [const.o] Error 1
html_tips
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebPage</title> </head> <body> <p>Host Japan produced another stunning Rugby World Cup upset <strong>to beat Ireland 19-12</strong> in Shizuoka Saturday.</p> <p>Host Japan produced another stunning Rugby World Cup upset <em>to beat Ireland 19-12</em> in Shizuoka Saturday.</p> <p>Host Japan produced another stunning Rugby World Cup upset <ins>to beat Ireland 19-12</ins> in Shizuoka Saturday.</p> <p>Host Japan produced another stunning Rugby World Cup upset <sup>to beat Ireland 19-12</sup> in Shizuoka Saturday.</p> <p>Host Japan produced another stunning Rugby World Cup upset <del>to beat Ireland 19-12</del> in Shizuoka Saturday.</p> </body> </html>
For further information: https://www.w3schools.com/html/html_formatting.asp
Unordered List
<ul>出荷可能な野菜の一覧 <li><strong>キャベツ</strong></li> <li><em>にんじん</em></li> <li><ins>玉ねぎ</ins></li> <li><del>レタス</del></li> </ul>
Ordered List
<ol>出荷可能な野菜の一覧 <li><strong>キャベツ</strong></li> <li><em>にんじん</em></li> <li><ins>玉ねぎ</ins></li> <li><del>レタス</del></li> </ol>
<ol start="10">出荷可能な野菜の一覧 <li><strong>キャベツ</strong></li> <li><em>にんじん</em></li> <li><ins>玉ねぎ</ins></li> <li><del>レタス</del></li> </ol>
<ol type="A">出荷可能な野菜の一覧 <li><strong>キャベツ</strong></li> <li><em>にんじん</em></li> <li><ins>玉ねぎ</ins></li> <li><del>レタス</del></li> </ol>
C
C言語の移植性は、Cランタイムやlibcによって担保されている
ビルド(build)のプロセス
[ ソースコード ] → プリプロセス → コンパイル → アセンブル → リンク → [ 実行ファイル ]
[ 対象] ver_check.c
#include <stdio.h> int main(int argc, char const *argv[]) { printf("%ld\n", __STDC_VERSION__); return 0; }
1) プリプロセッサーによるプリプロセス(コンパイルする前の前処理)
[ #include命令により指定したファイルの内容をソースコードの中に差し込むことで、#include<stdio.h>が無くなり、代わりにstdio.hというファイルの内容に差し替えられた ]
$ gcc -E ver_check.c > ver_check.txt
ver_check.txt
# 1 "ver_check.c" # 1 "<built-in>" 1 # 1 "<built-in>" 3 # 362 "<built-in>" 3 # 1 "<command line>" 1 # 1 "<built-in>" 2 # 1 "ver_check.c" 2 ..... ..... ..... # 412 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h" 2 3 4 # 2 "ver_check.c" 2 int main(int argc, char const *argv[]) { printf("%ld\n", 201112L); return 0; }
2) コンパイル(前処理されたソースをアセンブリ言語に変換)
$ gcc -S ver_check.c
ver_check.s
.section __TEXT,__text,regular,pure_instructions .build_version macos, 10, 14 sdk_version 10, 14 .globl _main ## -- Begin function main .p2align 4, 0x90 _main: ## @main .cfi_startproc ## %bb.0: pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset %rbp, -16 movq %rsp, %rbp .cfi_def_cfa_register %rbp subq $32, %rsp movl $0, -4(%rbp) movl %edi, -8(%rbp) movq %rsi, -16(%rbp) leaq L_.str(%rip), %rdi movl $201112, %esi ## imm = 0x31198 movb $0, %al callq _printf xorl %ecx, %ecx movl %eax, -20(%rbp) ## 4-byte Spill movl %ecx, %eax addq $32, %rsp popq %rbp retq .cfi_endproc ## -- End function .section __TEXT,__cstring,cstring_literals L_.str: ## @.str .asciz "%ld\n" .subsections_via_symbols
3) アセンブル(アセンブリ言語のソースを機械語のプログラムに変換)
-cオプションをつけて、機械語(ver_check.oのオブジェクトファイル)が生成する。この段階では、実行ファイルとして実行するための情報やC言語で書いたプログラムを動かすための情報は具備していない(Cランタイム、libcなど)
$ gcc -c ver_check.s
4) リンク(C言語で書いたプログラムを動かすためのCランタイム、libcなどの必要なライブラリをリンクして実行ファイルを生成)
$ ls -l ver_check.o -rwxr-xr-x 1 xxxxx staff 784 9 24 07:22 ver_check.o
$ find /Library/Developer/CommandLineTools -name "crt1*" /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/crt1.o /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/crt1.10.5.o /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/crt1.10.6.o $ ld ver_check.o /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/crt1.o -lSystem $ ld ver_check.o /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/crt1.10.5.o -lSystem $ ld ver_check.o /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/crt1.10.6.o -lSystem $ ls -l a.out -rwxr-xr-x 1 xxxxx staff 8696 9 24 08:14 a.out $ ./a.out 201112
$ ld -e _main ver_check.o -lSystem $ ./a.out 201112