{"id":891,"date":"2023-11-09T19:15:25","date_gmt":"2023-11-09T10:15:25","guid":{"rendered":"http:\/\/jazzman.pe.kr\/blog\/?p=891"},"modified":"2024-11-29T23:52:03","modified_gmt":"2024-11-29T14:52:03","slug":"emacs-in-wsl2","status":"publish","type":"post","link":"https:\/\/jazzman.pe.kr\/blog\/index.php\/2023\/11\/09\/891\/","title":{"rendered":"Emacs in WSL2"},"content":{"rendered":"\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"git clone git:\/\/git.sv.gnu.org\/emacs.git\n# \uc704 \uba85\ub839\uc5b4\ub85c\ub294 emacs 30.x \ubc84\uc83c\uc758 \uc18c\uc2a4\ub97c \uc5bb\uc2b5\ub2c8\ub2e4. \uc791\ub3d9\uc740 \ud558\uae34 \ud558\uc9c0\ub9cc \uc815\uc2dd \ubc84\uc83c\uc740 29.x\ngit clone git:\/\/git.savannah.gnu.org\/emacs.git emacs-29\ncd emacs\ngit checkout emacs-29\n# \uc774\ub807\uac8c \ud558\uba74 29.x (2024\/7\/9 \ud604\uc7ac 29.4.50) \uc18c\uc2a4\uac00 \uc124\uce58\ub428\nsudo apt install build-essential libgtk-3-dev libgnutls28-dev libtiff5-dev libgif-dev libjpeg-dev libpng-dev libxpm-dev libncurses-dev texinfo\nsudo apt install autoconf\nsudo apt install libtree-sitter-dev  \n# \uc798\uc740 \ubaa8\ub974\uc9c0\ub9cc tree-sitter \ub97c \ub123\uc5b4\uc11c \ucef4\ud30c\uc77c \ud558\ub824\uace0...^^;;;;\n\ngcc --version\n# gcc version \uc54c\uc544\uc11c libgccjit \uc124\uce58, native compilation option \uc704\ud574 \ud544\uc694, gcc version 13 \uc774\ub77c\uba74:\nsudo apt install libgccjit-13-dev\n\n.\/autogen.sh\n.\/configure --with-native-compilation --with-pgtk --with-tree-sitter\nmake -j8\nsrc\/emacs --version\nsudo make install\n\n# Install the latest version of R\n# update indices\nsudo apt update -qq\n# install two helper packages we need\nsudo apt install --no-install-recommends software-properties-common dirmngr\n# add the signing key (by Michael Rutter) for these repos\n# To verify key, run gpg --show-keys \/etc\/apt\/trusted.gpg.d\/cran_ubuntu_key.asc \n# Fingerprint: E298A3A825C0D65DFD57CBB651716619E084DAB9\nwget -qO- https:\/\/cloud.r-project.org\/bin\/linux\/ubuntu\/marutter_pubkey.asc | sudo tee -a \/etc\/apt\/trusted.gpg.d\/cran_ubuntu_key.asc\n# add the R 4.0 repo from CRAN -- adjust 'focal' to 'groovy' or 'bionic' as needed\nsudo add-apt-repository &quot;deb https:\/\/cloud.r-project.org\/bin\/linux\/ubuntu $(lsb_release -cs)-cran40\/&quot;\nsudo apt install --no-install-recommends r-base\n\n# install tidyverse and other packages in R\n# install dependecies\nsudo apt install libcurl4-openssl-dev libxml2-dev libssl-dev libfontconfig1-dev libharfbuzz-dev libfribidi-dev libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev\n\nsudo -i R\n&gt; install.packages(c(&quot;tidyverse&quot;, &quot;data.table&quot;, &quot;survival&quot;, &quot;reticulate&quot;))\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88C0D0\">git<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">clone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">git:\/\/git.sv.gnu.org\/emacs.git<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># \uc704 \uba85\ub839\uc5b4\ub85c\ub294 emacs 30.x \ubc84\uc83c\uc758 \uc18c\uc2a4\ub97c \uc5bb\uc2b5\ub2c8\ub2e4. \uc791\ub3d9\uc740 \ud558\uae34 \ud558\uc9c0\ub9cc \uc815\uc2dd \ubc84\uc83c\uc740 29.x<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">git<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">clone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">git:\/\/git.savannah.gnu.org\/emacs.git<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">emacs-29<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">cd<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">emacs<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">git<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">checkout<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">emacs-29<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># \uc774\ub807\uac8c \ud558\uba74 29.x (2024\/7\/9 \ud604\uc7ac 29.4.50) \uc18c\uc2a4\uac00 \uc124\uce58\ub428<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">build-essential<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libgtk-3-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libgnutls28-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libtiff5-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libgif-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libjpeg-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libpng-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libxpm-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libncurses-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">texinfo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">autoconf<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libtree-sitter-dev<\/span><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># \uc798\uc740 \ubaa8\ub974\uc9c0\ub9cc tree-sitter \ub97c \ub123\uc5b4\uc11c \ucef4\ud30c\uc77c \ud558\ub824\uace0...^^;;;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">gcc<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--version<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># gcc version \uc54c\uc544\uc11c libgccjit \uc124\uce58, native compilation option \uc704\ud574 \ud544\uc694, gcc version 13 \uc774\ub77c\uba74:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libgccjit-13-dev<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">.\/autogen.sh<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">.\/configure<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--with-native-compilation<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--with-pgtk<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--with-tree-sitter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">make<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-j8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">src\/emacs<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--version<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">make<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Install the latest version of R<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># update indices<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">update<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-qq<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># install two helper packages we need<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--no-install-recommends<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">software-properties-common<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">dirmngr<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># add the signing key (by Michael Rutter) for these repos<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># To verify key, run gpg --show-keys \/etc\/apt\/trusted.gpg.d\/cran_ubuntu_key.asc <\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Fingerprint: E298A3A825C0D65DFD57CBB651716619E084DAB9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">wget<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-qO-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">https:\/\/cloud.r-project.org\/bin\/linux\/ubuntu\/marutter_pubkey.asc<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">tee<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-a<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">\/etc\/apt\/trusted.gpg.d\/cran_ubuntu_key.asc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># add the R 4.0 repo from CRAN -- adjust &#39;focal&#39; to &#39;groovy&#39; or &#39;bionic&#39; as needed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">add-apt-repository<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">deb https:\/\/cloud.r-project.org\/bin\/linux\/ubuntu <\/span><span style=\"color: #ECEFF4\">$(<\/span><span style=\"color: #88C0D0\">lsb_release<\/span><span style=\"color: #A3BE8C\"> -cs<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #A3BE8C\">-cran40\/<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--no-install-recommends<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">r-base<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># install tidyverse and other packages in R<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># install dependecies<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libcurl4-openssl-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libxml2-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libssl-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libfontconfig1-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libharfbuzz-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libfribidi-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libfreetype6-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libpng-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libtiff5-dev<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">libjpeg-dev<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">sudo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">R<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> install.packages<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">c(<\/span><span style=\"color: #88C0D0\">&quot;tidyverse&quot;<\/span><span style=\"color: #88C0D0\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">data.table<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">survival<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">reticulate<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,3],"tags":[],"class_list":["post-891","post","type-post","status-publish","format-standard","hentry","category-computer_tips","category-research"],"views":936,"_links":{"self":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/891","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=891"}],"version-history":[{"count":20,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/891\/revisions"}],"predecessor-version":[{"id":1108,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/posts\/891\/revisions\/1108"}],"wp:attachment":[{"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jazzman.pe.kr\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}