{"id":45871,"date":"2022-12-13T13:41:29","date_gmt":"2023-07-07T05:51:46","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/"},"modified":"2024-04-29T05:06:23","modified_gmt":"2024-04-28T21:06:23","slug":"45871-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/","title":{"rendered":""},"content":{"rendered":"<p>\u305d\u308c\u305e\u308c\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u4e0a\u304c\u3063\u305f\u4ee5\u5916\u306f\u524d\u56de\u306e Ubuntu 18.04 \u306e\u3068\u304d\u304b\u3089\u3042\u307e\u308a\u5909\u308f\u3063\u3066\u3044\u307e\u305b\u3093<\/p>\n<p>Bundler \u306e binstubs \u3092\u5229\u7528\u3059\u308b\u624b\u9806\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f<\/p>\n<p>\u624b\u8efd\u306b\u8a66\u3057\u305f\u3044\u5834\u5408\u306f\u516c\u5f0f\u306e Docker \u30a4\u30e1\u30fc\u30b8\u3084 Binder \u3092\u5229\u7528\u3059\u308b\u306e\u304c\u826f\u3044\u3068\u601d\u3044\u307e\u3059\uff08IRuby \u306e README \u3092\u53c2\u7167\uff09<\/p>\n<div>\n<p>\u5927\u4e8b\u306a\u306e\u30672\u56de\u66f8\u304d\u307e\u3059\u3002\u624b\u8efd\u306b\u8a66\u3057\u305f\u3044\u5834\u5408\u306f\u516c\u5f0f\u306e Docker \u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u3046\u304b\u3001Binder \u3092\u4f7f\u3044\u307e\u3057\u3087\u3046\uff08IRuby \u306e README \u3092\u53c2\u7167\uff09\u3002<br \/>\n\u4e0b\u8a18\u306e\u3088\u3046\u306a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806\u306f\u4e0d\u8981\u3067\u3059\u3050\u4f7f\u3048\u307e\u3059\u3002<\/p>\n<\/div>\n<h1>\u30d0\u30fc\u30b8\u30e7\u30f3\u306a\u3069<\/h1>\n<pre class=\"post-pre\"><code>Ubuntu 18.04\uff08\u30b3\u30f3\u30c6\u30ca\u5916\u306e\u4f5c\u696d\u74b0\u5883\uff09\r\nanyenv\r\npyenv\r\n  Python 3.10.3\r\nrbenv\r\n  Ruby 3.1.2\r\n\r\njupyter 1.0.0\r\n  jupyter_core 4.10.0\r\n  notebook 6.4.11\r\niruby 0.7.4\r\n<\/code><\/pre>\n<h1>Docker \u306e\u7528\u610f<\/h1>\n<p>Docker \u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u308b\u306e\u304c\u76ee\u7684\u3067\u306f\u306a\u304f\u3001\u307e\u3063\u3055\u3089\u306a\u72b6\u614b\u306b\u623b\u3057\u3066\u3042\u308c\u3053\u308c\u8a66\u3059\u305f\u3081\u306b\u4f7f\u3044\u307e\u3059\u3002<br \/>\nDocker \u306a\u3057\u3067\u3082\u5927\u4f53\u540c\u3058\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\"># Dockerfile<\/span>\r\n\r\nFROM ubuntu:22.04\r\n\r\nRUN apt-get update <span class=\"se\">\\<\/span>\r\n  <span class=\"o\">&amp;&amp;<\/span> apt-get <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> <span class=\"nb\">sudo <\/span>git wget build-essential nano\r\n\r\nRUN useradd <span class=\"nt\">--create-home<\/span> <span class=\"nt\">--gid<\/span> <span class=\"nb\">sudo<\/span> <span class=\"nt\">--shell<\/span> \/bin\/bash user1 <span class=\"se\">\\<\/span>\r\n  <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">echo<\/span> <span class=\"s1\">'user1:pass'<\/span> | chpasswd <span class=\"se\">\\<\/span>\r\n  <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">echo<\/span> <span class=\"s1\">'Defaults visiblepw'<\/span>           <span class=\"o\">&gt;&gt;<\/span> \/etc\/sudoers <span class=\"se\">\\<\/span>\r\n  <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">echo<\/span> <span class=\"s1\">'user1 ALL=(ALL) NOPASSWD:ALL'<\/span> <span class=\"o\">&gt;&gt;<\/span> \/etc\/sudoers\r\n\r\nUSER user1\r\n\r\nWORKDIR \/home\/user1\r\n\r\nCMD <span class=\"o\">[<\/span><span class=\"s2\">\"\/bin\/bash\"<\/span><span class=\"o\">]<\/span>\r\n<\/code><\/pre>\n<p>\u53c2\u8003: Docker\u30b3\u30f3\u30c6\u30ca\u5185\u306bsudo\u30e6\u30fc\u30b6\u3092\u8ffd\u52a0\u3059\u308b &#8211; Qiita<\/p>\n<p>\u30e6\u30fc\u30b6\u540d user1 \u306f\u9069\u5f53\u306a\u3082\u306e\u3067\u3059\u3002\u9069\u5b9c\u8aad\u307f\u66ff\u3048\u307e\u3059\u3002\u4ee5\u4e0b\u540c\u69d8\u3002<\/p>\n<p>\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\u3057\u3066\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3002<\/p>\n<pre class=\"post-pre\"><code>docker build -t ubuntu_jupyter:22.04 .\r\ndocker run --rm -it -p8888:8888 ubuntu_jupyter:22.04 bash\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u306f\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u4f5c\u696d\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h1>anyenv, rbenv, pyenv \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n<pre class=\"post-pre\"><code>git clone https:\/\/github.com\/anyenv\/anyenv ~\/.anyenv\r\n\r\n  <span class=\"c\"># \u4e00\u5fdc\u30d0\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a<\/span>\r\n<span class=\"o\">(<\/span> <span class=\"nb\">cd<\/span> ~\/.anyenv<span class=\"p\">;<\/span> git checkout v1.1.4<span class=\"p\">;<\/span> git status <span class=\"o\">)<\/span>\r\n\r\n<span class=\"nb\">echo<\/span> <span class=\"s1\">'export PATH=\"$HOME\/.anyenv\/bin:$PATH\"'<\/span> <span class=\"o\">&gt;&gt;<\/span> ~\/.bashrc\r\n<span class=\"nb\">echo<\/span> <span class=\"s1\">'eval \"$(anyenv init -)\"'<\/span>               <span class=\"o\">&gt;&gt;<\/span> ~\/.bashrc\r\n\r\n<span class=\"nb\">exec <\/span>bash <span class=\"nt\">-l<\/span>\r\n\r\n  <span class=\"c\"># \u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u3057\u305f\u304c\u3063\u3066\u5b9f\u884c<\/span>\r\n<span class=\"nb\">yes<\/span> | anyenv <span class=\"nb\">install<\/span> <span class=\"nt\">--init<\/span>\r\n\r\nanyenv <span class=\"nb\">install <\/span>rbenv\r\nanyenv <span class=\"nb\">install <\/span>pyenv\r\n\r\n  <span class=\"c\"># \u4e00\u5fdc\u30d0\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a<\/span>\r\n<span class=\"o\">(<\/span> <span class=\"nb\">cd<\/span> ~\/.anyenv\/envs\/rbenv<span class=\"p\">;<\/span> git checkout v1.2.0<span class=\"p\">;<\/span> git status <span class=\"o\">)<\/span>\r\n<span class=\"o\">(<\/span> <span class=\"nb\">cd<\/span> ~\/.anyenv\/envs\/pyenv<span class=\"p\">;<\/span> git checkout v2.2.5<span class=\"p\">;<\/span> git status <span class=\"o\">)<\/span>\r\n\r\n<span class=\"nb\">exec <\/span>bash <span class=\"nt\">-l<\/span>\r\n<\/code><\/pre>\n<h1>Ruby \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n<pre class=\"post-pre\"><code>sudo apt install -y libssl-dev zlib1g-dev\r\nrbenv install 3.1.2\r\n<\/code><\/pre>\n<p>Docker \u306e\u30dd\u30fc\u30c8\u30de\u30c3\u30d4\u30f3\u30b0\u306e\u78ba\u8a8d\u3002\u5148\u306b\u758e\u901a\u78ba\u8a8d\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>rbenv shell 3.1.2\r\ngem <span class=\"nb\">install <\/span>webrick\r\nruby <span class=\"nt\">-run<\/span> <span class=\"nt\">-e<\/span> httpd <span class=\"nt\">--<\/span> <span class=\"nt\">--port<\/span><span class=\"o\">=<\/span>8888 <span class=\"nt\">--bind-address<\/span><span class=\"o\">=<\/span>0.0.0.0 <span class=\"nb\">.<\/span>\r\n<\/code><\/pre>\n<p>\u30db\u30b9\u30c8\u5074\u304b\u3089 http:\/\/localhost:8888\/ \u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066 Ctrl-C \u3067\u6b62\u3081\u308b\u3002<\/p>\n<h1>Python \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n<pre class=\"post-pre\"><code><span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> libffi-dev libsqlite3-dev\r\n<span class=\"nb\">env <\/span><span class=\"nv\">PYTHON_CONFIGURE_OPTS<\/span><span class=\"o\">=<\/span><span class=\"s1\">'--enable-shared'<\/span> pyenv <span class=\"nb\">install <\/span>3.10.3\r\n<\/code><\/pre>\n<p>env PYTHON_CONFIGURE_OPTS=&#8217;&#8211;enable-shared&#8217; \u306f\u5f8c\u3067 PyCall \u3092\u4f7f\u3046\u305f\u3081\u306e\u6307\u5b9a<br \/>\nhttps:\/\/github.com\/mrkn\/pycall.rb#note-for-pyenv-users<\/p>\n<h1>Jupyter Notebook \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n<pre class=\"post-pre\"><code>  <span class=\"c\"># \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068 rbenv, pyenv \u306e\u7528\u610f<\/span>\r\n\r\n<span class=\"nb\">mkdir<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HOME<\/span><span class=\"k\">}<\/span>\/jupyter\r\n<span class=\"nb\">cd<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HOME<\/span><span class=\"k\">}<\/span>\/jupyter\r\n<span class=\"nb\">pwd<\/span> <span class=\"c\">#=&gt; \/home\/user1\/jupyter<\/span>\r\n\r\nrbenv <span class=\"nb\">local <\/span>3.1.2\r\npyenv <span class=\"nb\">local <\/span>3.10.3\r\n\r\nruby <span class=\"nt\">-v<\/span>   <span class=\"c\">#=&gt; ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]<\/span>\r\npython <span class=\"nt\">-V<\/span> <span class=\"c\">#=&gt; Python 3.10.3<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>  <span class=\"c\"># bundle init \u307f\u305f\u3044\u306a\u3082\u306e<\/span>\r\n  <span class=\"c\"># \"venv.d\" \u306f\u4efb\u610f\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u540d<\/span>\r\npython <span class=\"nt\">-m<\/span> venv venv.d\r\n\r\n  <span class=\"c\"># \u5e38\u306b bundle exec \u3057\u3066\u308b\u307f\u305f\u3044\u306a\u30e2\u30fc\u30c9\u306b\u306a\u308b<\/span>\r\n  <span class=\"c\"># \u30e2\u30fc\u30c9\u3092\u629c\u3051\u305f\u3044\u5834\u5408\u306f deactivate \u3092\u5b9f\u884c\u3059\u308b<\/span>\r\n<span class=\"nb\">.<\/span> venv.d\/bin\/activate\r\n\r\n  <span class=\"c\"># bundle add \u307f\u305f\u3044\u306a\u3082\u306e<\/span>\r\npip <span class=\"nb\">install <\/span>jupyter\r\n\r\njupyter notebook <span class=\"nt\">--no-browser<\/span> <span class=\"nt\">--ip<\/span><span class=\"o\">=<\/span>0.0.0.0\r\n\r\n  <span class=\"c\"># \u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c8\u30fc\u30af\u30f3\u4ed8\u304d\u306eURL\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u3001\u30db\u30b9\u30c8\u5074\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u958b\u304f<\/span>\r\n<\/code><\/pre>\n<p>&#8211;ip=0.0.0.0 \u3092\u6307\u5b9a\u3057\u3066\u3044\u308b\u306e\u306f Docker \u30b3\u30f3\u30c6\u30ca\u5185\u3067\u5b9f\u884c\u3057\u3066\u30db\u30b9\u30c8\u5074\u304b\u3089\u53c2\u7167\u3059\u308b\u305f\u3081\u3002<\/p>\n<p>\u78ba\u8a8d\u3067\u304d\u305f\u3089 Ctrl-C \u3067\u6b62\u3081\u308b\u3002<\/p>\n<h1>IRuby \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n<p>\u57fa\u672c\u7684\u306b\u306f<br \/>\nhttps:\/\/github.com\/SciRuby\/iruby<br \/>\n\u306e\u8aac\u660e\u3092\u53c2\u8003\u306b\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3057\u305f\u3002<\/p>\n<p>\u305f\u3060\u3057\u3001gem \u3092 Bundler \u3067\u7ba1\u7406\u3057\u305f\u3044\u306e\u3067\u3001\u305d\u306e\u305f\u3081\u306e\u624b\u9806\u3092\u52a0\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Bundler \u74b0\u5883\u3067 iruby \u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u65b9\u6cd5\u3068\u3057\u3066<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">binstubs \u3092\u4f7f\u3046\u65b9\u6cd5<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30e9\u30c3\u30d1\u30fc\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u3046\u65b9\u6cd5<\/ul>\n<p>\u306e2\u3064\u3092\u8a66\u3057\u307e\u3057\u305f\u3002 binstubs \u3092\u4f7f\u3046\u65b9\u304c\u624b\u9806\u304c\u7c21\u5358\u3067\u3059\u3002<\/p>\n<h2>binstubs \u3092\u4f7f\u3046\u5834\u5408<\/h2>\n<pre class=\"post-pre\"><code><span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> libtool libffi-dev ruby ruby-dev make\r\n<span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> libzmq3-dev libczmq-dev\r\n\r\nbundle init\r\nbundle config <span class=\"nb\">set<\/span> <span class=\"nt\">--local<\/span> path <span class=\"s1\">'vendor\/bundle'<\/span>\r\n\r\nbundle add ffi-rzmq iruby pycall rake\r\n\r\nbundle binstubs iruby\r\n  <span class=\"c\"># .\/bin\/iruby \u304c\u751f\u6210\u3055\u308c\u308b<\/span>\r\n\r\nbin\/iruby register <span class=\"nt\">--force<\/span>\r\n  <span class=\"c\"># ~\/.local\/share\/jupyter\/kernels\/ruby\/kernel.json<\/span>\r\n  <span class=\"c\"># \u304c\u751f\u6210\u3055\u308c\u308b<\/span>\r\n\r\n<span class=\"nb\">cat<\/span> ~\/.local\/share\/jupyter\/kernels\/ruby\/kernel.json\r\n  <span class=\"c\">#=&gt; {\"argv\":[\"\/home\/user1\/jupyter\/bin\/iruby\",\"kernel\",\"{connection_file}\"],\"display_name\":\"Ruby 3.1.2\",\"language\":\"ruby\"}<\/span>\r\n\r\n  <span class=\"c\"># \u3053\u306e\u72b6\u614b\u3067 jupyter \u8d77\u52d5<\/span>\r\njupyter notebook <span class=\"nt\">--no-browser<\/span> <span class=\"nt\">--ip<\/span><span class=\"o\">=<\/span>0.0.0.0\r\n  <span class=\"c\"># \u2192 Ruby 3.1.2 \u306e\u30ce\u30fc\u30c8\u30d6\u30c3\u30af\u304c\u65b0\u898f\u4f5c\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b<\/span>\r\n  <span class=\"c\">#  \uff08\u30e1\u30cb\u30e5\u30fc\u306b\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308b\uff09<\/span>\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d619337434c4406cfdcec\/35-0.png\" alt=\"image.png\" \/><\/div>\n<h2>\u30e9\u30c3\u30d1\u30fc\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u3046\u5834\u5408<\/h2>\n<pre class=\"post-pre\"><code><span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> libtool libffi-dev ruby ruby-dev make\r\n<span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> <span class=\"nt\">-y<\/span> libzmq3-dev libczmq-dev\r\n\r\nbundle init\r\nbundle config <span class=\"nb\">set<\/span> <span class=\"nt\">--local<\/span> path <span class=\"s1\">'vendor\/bundle'<\/span>\r\n\r\nbundle add ffi-rzmq iruby pycall rake\r\n\r\nbundle <span class=\"nb\">exec <\/span>iruby register <span class=\"nt\">--force<\/span>\r\n  <span class=\"c\"># ~\/.local\/share\/jupyter\/kernels\/ruby\/kernel.json<\/span>\r\n  <span class=\"c\"># \u304c\u751f\u6210\u3055\u308c\u308b<\/span>\r\n\r\n<span class=\"nb\">cat<\/span> ~\/.local\/share\/jupyter\/kernels\/ruby\/kernel.json\r\n  <span class=\"c\">#=&gt; {\"argv\":[\"\/home\/user1\/jupyter\/vendor\/bundle\/ruby\/3.1.0\/bin\/iruby\",\"kernel\",\"{connection_file}\"],\"display_name\":\"Ruby 3.1.2\",\"language\":\"ruby\"}<\/span>\r\n\r\n  <span class=\"c\"># \u3053\u306e\u72b6\u614b\u3067 jupyter \u8d77\u52d5<\/span>\r\njupyter notebook <span class=\"nt\">--no-browser<\/span> <span class=\"nt\">--ip<\/span><span class=\"o\">=<\/span>0.0.0.0\r\n  <span class=\"c\"># \u2192 Ruby 3.1.2 \u306e\u30ce\u30fc\u30c8\u30d6\u30c3\u30af\u304c\u65b0\u898f\u4f5c\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b<\/span>\r\n  <span class=\"c\"># \uff08\u30e1\u30cb\u30e5\u30fc\u306b\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308b\uff09<\/span>\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d619337434c4406cfdcec\/38-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u3057\u304b\u3057\u3001\u5b9f\u969b\u306b\u65b0\u898f\u4f5c\u6210\u3092\u884c\u3046\u3068\u6b21\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u304c jupyter \u3092\u8d77\u52d5\u3057\u305f\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u51fa\u3066\u3046\u307e\u304f\u52d5\u304b\u306a\u3044\u3002<\/p>\n<pre class=\"post-pre\"><code>[I 05:17:21.886 NotebookApp] KernelRestarter: restarting kernel (3\/5), new random ports\r\n\/home\/user1\/.anyenv\/envs\/rbenv\/versions\/3.1.2\/lib\/ruby\/3.1.0\/rubygems.rb:265:in `find_spec_for_exe': can't find gem iruby (&gt;= 0.a) with executable iruby (Gem::GemNotFoundException)\r\n        from \/home\/user1\/.anyenv\/envs\/rbenv\/versions\/3.1.2\/lib\/ruby\/3.1.0\/rubygems.rb:284:in `activate_bin_path'\r\n        from \/home\/user1\/jupyter\/vendor\/bundle\/ruby\/3.1.0\/bin\/iruby:25:in `&lt;main&gt;'\r\n<\/code><\/pre>\n<p>\u3053\u308c\u306f\u304a\u305d\u3089\u304f rbenv + bundler \u74b0\u5883\u3067\u5b9f\u884c\u3067\u304d\u3066\u3044\u306a\u3044\u305b\u3044\u306a\u306e\u3067\u3001iruby \u30b3\u30de\u30f3\u30c9\u306e\u30e9\u30c3\u30d1\u30fc iruby.sh \u3092\u7528\u610f\u3057\u3066\u5bfe\u51e6\u3057\u3066\u307f\u308b\u3002<br \/>\n\uff08\u4ed6\u306b\u826f\u3044\u65b9\u6cd5\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u3068\u308a\u3042\u3048\u305a\u3053\u308c\u3067\u52d5\u304d\u307e\u3057\u305f\u3002\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"nb\">cat<\/span> <span class=\"o\">&lt;&lt;<\/span><span class=\"sh\">'<\/span><span class=\"no\">EOB<\/span><span class=\"sh\">' &gt; iruby.sh\r\n#!\/bin\/bash\r\n\r\nJUPYTER_DIR=~\/jupyter\r\n\r\nexport PYENV_ROOT=\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">HOME<\/span><span class=\"k\">}<\/span><span class=\"sh\">\/.anyenv\/envs\/pyenv\"\r\nexport LIBPYTHON=<\/span><span class=\"k\">${<\/span><span class=\"nv\">PYENV_ROOT<\/span><span class=\"k\">}<\/span><span class=\"sh\">\/versions\/3.10.3\/lib\/libpython3.10.so.1.0\r\nexport PYTHON=<\/span><span class=\"k\">${<\/span><span class=\"nv\">JUPYTER_DIR<\/span><span class=\"k\">}<\/span><span class=\"sh\">\/venv.d\/bin\/python\r\n  # \u3053\u308c\u3067\u3082\u3044\u3044\uff1f\r\n  # export PYTHON=<\/span><span class=\"k\">${<\/span><span class=\"nv\">PYENV_ROOT<\/span><span class=\"k\">}<\/span><span class=\"sh\">\/shims\/python\r\n\r\nexport RBENV_ROOT=\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">HOME<\/span><span class=\"k\">}<\/span><span class=\"sh\">\/.anyenv\/envs\/rbenv\"\r\nexport PATH=\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">RBENV_ROOT<\/span><span class=\"k\">}<\/span><span class=\"sh\">\/bin:<\/span><span class=\"k\">${<\/span><span class=\"nv\">PATH<\/span><span class=\"k\">}<\/span><span class=\"sh\">\"\r\neval \"<\/span><span class=\"si\">$(<\/span>rbenv init -<span class=\"si\">)<\/span><span class=\"sh\">\"\r\n\r\nrbenv shell 3.1.2\r\n\r\nBUNDLE_GEMFILE=<\/span><span class=\"k\">${<\/span><span class=\"nv\">JUPYTER_DIR<\/span><span class=\"k\">}<\/span><span class=\"sh\">\/Gemfile <\/span><span class=\"se\">\\<\/span><span class=\"sh\">\r\n  bundle exec iruby \"<\/span><span class=\"nv\">$@<\/span><span class=\"sh\">\"\r\n<\/span><span class=\"no\">EOB\r\n<\/span><\/code><\/pre>\n<pre class=\"post-pre\"><code>  <span class=\"c\"># \u5b9f\u884c\u6a29\u9650\u3092\u4ed8\u3051\u308b<\/span>\r\n<span class=\"nb\">chmod <\/span>u+x iruby.sh\r\n\r\n  <span class=\"c\"># iruby \u306e\u30d1\u30b9\u3092\u4fee\u6b63<\/span>\r\nnano ~\/.local\/share\/jupyter\/kernels\/ruby\/kernel.json\r\n\r\n<span class=\"o\">{<\/span>\r\n  <span class=\"s2\">\"argv\"<\/span>: <span class=\"o\">[<\/span>\r\n    <span class=\"s2\">\"\/home\/user1\/jupyter\/iruby.sh\"<\/span>,  ...\u3053\u3053\u3060\u3051\u4fee\u6b63\r\n    <span class=\"s2\">\"kernel\"<\/span>,\r\n    <span class=\"s2\">\"{connection_file}\"<\/span>\r\n  <span class=\"o\">]<\/span>,\r\n  <span class=\"s2\">\"display_name\"<\/span>:<span class=\"s2\">\"Ruby 3.1.2\"<\/span>,\r\n  <span class=\"s2\">\"language\"<\/span>:<span class=\"s2\">\"ruby\"<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n  <span class=\"c\"># \u3082\u3046\u4e00\u5ea6 jupyter \u3092\u8d77\u52d5<\/span>\r\njupyter notebook <span class=\"nt\">--no-browser<\/span> <span class=\"nt\">--ip<\/span><span class=\"o\">=<\/span>0.0.0.0\r\n<\/code><\/pre>\n<p>\u3053\u308c\u3067 ruby \u30ab\u30fc\u30cd\u30eb\u304c\u52d5\u304f\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<h1>IRuby \u306e\u30ce\u30fc\u30c8\u30d6\u30c3\u30af\u3092\u4f7f\u3046<\/h1>\n<p>\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u306f IRuby Notebook \u5229\u7528\u8005\u30ac\u30a4\u30c9 \u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>matplotlib \u3092\u4f7f\u3063\u3066\u3044\u308b\u7b87\u6240\u304c\u3042\u308b\u306e\u3067\u3001\u4e0b\u8a18\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>pip install matplotlib\r\nbundle add matplotlib\r\n<\/code><\/pre>\n<h1>\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8ffd\u52a0<\/h1>\n<h2>Python \u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3057\u305f\u3044\u5834\u5408<\/h2>\n<pre class=\"post-pre\"><code>pip <span class=\"nb\">install <\/span>lib_foo\r\n<\/code><\/pre>\n<h2>Ruby \u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3057\u305f\u3044\u5834\u5408<\/h2>\n<pre class=\"post-pre\"><code>bundle add lib_foo\r\n<\/code><\/pre>\n<p>\u30ab\u30fc\u30cd\u30eb\u3092\u518d\u8d77\u52d5\uff08\u30ce\u30fc\u30c8\u30d6\u30c3\u30af\u306e\u30da\u30fc\u30b8\u306e\u30e1\u30cb\u30e5\u30fc\u306e Kernal \u2192 Restart\uff09\u3059\u308b\u3068 require \u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<h1>\u30d0\u30fc\u30b8\u30e7\u30f3\u8a73\u7d30<\/h1>\n<details>pip freeze<br \/>\nargon2-cffi==21.3.0<br \/>\nargon2-cffi-bindings==21.2.0<br \/>\nasttokens==2.0.5<br \/>\nattrs==21.4.0<br \/>\nbackcall==0.2.0<br \/>\nbeautifulsoup4==4.11.1<br \/>\nbleach==5.0.0<br \/>\ncffi==1.15.0<br \/>\ndebugpy==1.6.0<br \/>\ndecorator==5.1.1<br \/>\ndefusedxml==0.7.1<br \/>\nentrypoints==0.4<br \/>\nexecuting==0.8.3<br \/>\nfastjsonschema==2.15.3<br \/>\nipykernel==6.13.0<br \/>\nipython==8.3.0<br \/>\nipython-genutils==0.2.0<br \/>\nipywidgets==7.7.0<br \/>\njedi==0.18.1<br \/>\nJinja2==3.1.2<br \/>\njsonschema==4.5.1<br \/>\njupyter==1.0.0<br \/>\njupyter-client==7.3.0<br \/>\njupyter-console==6.4.3<br \/>\njupyter-core==4.10.0<br \/>\njupyterlab-pygments==0.2.2<br \/>\njupyterlab-widgets==1.1.0<br \/>\nMarkupSafe==2.1.1<br \/>\nmatplotlib-inline==0.1.3<br \/>\nmistune==0.8.4<br \/>\nnbclient==0.6.2<br \/>\nnbconvert==6.5.0<br \/>\nnbformat==5.4.0<br \/>\nnest-asyncio==1.5.5<br \/>\nnotebook==6.4.11<br \/>\npackaging==21.3<br \/>\npandocfilters==1.5.0<br \/>\nparso==0.8.3<br \/>\npexpect==4.8.0<br \/>\npickleshare==0.7.5<br \/>\nprometheus-client==0.14.1<br \/>\nprompt-toolkit==3.0.29<br \/>\npsutil==5.9.0<br \/>\nptyprocess==0.7.0<br \/>\npure-eval==0.2.2<br \/>\npycparser==2.21<br \/>\nPygments==2.12.0<br \/>\npyparsing==3.0.8<br \/>\npyrsistent==0.18.1<br \/>\npython-dateutil==2.8.2<br \/>\npyzmq==22.3.0<br \/>\nqtconsole==5.3.0<br \/>\nQtPy==2.1.0<br \/>\nSend2Trash==1.8.0<br \/>\nsix==1.16.0<br \/>\nsoupsieve==2.3.2.post1<br \/>\nstack-data==0.2.0<br \/>\nterminado==0.13.3<br \/>\ntinycss2==1.1.1<br \/>\ntornado==6.1<br \/>\ntraitlets==5.1.1<br \/>\nwcwidth==0.2.5<br \/>\nwebencodings==0.5.1<br \/>\nwidgetsnbextension==3.6.0<\/details>\n<details>jupyter &#8211;version<br \/>\nSelected Jupyter core packages&#8230;<br \/>\nIPython : 8.3.0<br \/>\nipykernel : 6.13.0<br \/>\nipywidgets : 7.7.0<br \/>\njupyter_client : 7.3.0<br \/>\njupyter_core : 4.10.0<br \/>\njupyter_server : not installed<br \/>\njupyterlab : not installed<br \/>\nnbclient : 0.6.2<br \/>\nnbconvert : 6.5.0<br \/>\nnbformat : 5.4.0<br \/>\nnotebook : 6.4.11<br \/>\nqtconsole : 5.3.0<br \/>\ntraitlets : 5.1.1<\/details>\n<details>cat Gemfile.lock<br \/>\nGEM<br \/>\nremote: https:\/\/rubygems.org\/<br \/>\nspecs:<br \/>\ndata_uri (0.1.0)<br \/>\nffi (1.15.5)<br \/>\nffi-rzmq (2.0.7)<br \/>\nffi-rzmq-core (&gt;= 1.0.7)<br \/>\nffi-rzmq-core (1.0.7)<br \/>\nffi<br \/>\nio-console (0.5.11)<br \/>\nirb (1.4.1)<br \/>\nreline (&gt;= 0.3.0)<br \/>\niruby (0.7.4)<br \/>\ndata_uri (~&gt; 0.1)<br \/>\nffi-rzmq<br \/>\nirb<br \/>\nmime-types (&gt;= 3.3.1)<br \/>\nmulti_json (~&gt; 1.11)<br \/>\nnative-package-installer<br \/>\nmime-types (3.4.1)<br \/>\nmime-types-data (~&gt; 3.2015)<br \/>\nmime-types-data (3.2022.0105)<br \/>\nmulti_json (1.15.0)<br \/>\nnative-package-installer (1.1.4)<br \/>\npycall (1.4.1)<br \/>\nrake (13.0.6)<br \/>\nreline (0.3.1)<br \/>\nio-console (~&gt; 0.5)PLATFORMS<br \/>\nx86_64-linux<\/p>\n<p>DEPENDENCIES<br \/>\nffi-rzmq (~&gt; 2.0)<br \/>\niruby (~&gt; 0.7.4)<br \/>\npycall (~&gt; 1.4)<br \/>\nrake (~&gt; 13.0)<\/p>\n<p>BUNDLED WITH<br \/>\n2.3.7<\/p>\n<\/details>\n<h1>\u53c2\u8003<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">2018-04 IRuby \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30ac\u30a4\u30c9 (RubyData\/workshop-materials)<\/ul>\n<\/li>\n<\/ul>\n<p>2017-05 Rubyist \u304c pyenv \u3092\u4f7f\u3046\u3068\u304d\u306b\u77e5\u3063\u3066\u304a\u3044\u3066\u307b\u3057\u3044\u3053\u3068 &#8211; Qiita<\/p>\n<hr \/>\n<ul class=\"post-ul\">2019-12 Ruby\u3067\u30b0\u30e9\u30d5\u3092\u63cf\u753b\u3059\u308b\u30c4\u30fc\u30eb GR.rb \u306e\u7d39\u4ecb &#8211; Qiita<\/ul>\n<h1>\u3053\u306e\u8a18\u4e8b\u3092\u8aad\u3093\u3060\u4eba\u306f\uff08\u3072\u3087\u3063\u3068\u3057\u305f\u3089\uff09\u3053\u3061\u3089\u3082\u8aad\u3093\u3067\u3044\u307e\u3059<\/h1>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u305d\u308c\u305e\u308c\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u4e0a\u304c\u3063\u305f\u4ee5\u5916\u306f\u524d\u56de\u306e Ubuntu 18.04 \u306e\u3068\u304d\u304b\u3089\u3042\u307e\u308a\u5909\u308f\u3063\u3066\u3044\u307e\u305b\u3093 Bun [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45871","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>- Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:description\" content=\"\u305d\u308c\u305e\u308c\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u4e0a\u304c\u3063\u305f\u4ee5\u5916\u306f\u524d\u56de\u306e Ubuntu 18.04 \u306e\u3068\u304d\u304b\u3089\u3042\u307e\u308a\u5909\u308f\u3063\u3066\u3044\u307e\u305b\u3093 Bun [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-07T05:51:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T21:06:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d619337434c4406cfdcec\/35-0.png\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/\",\"name\":\"- Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-07-07T05:51:46+00:00\",\"dateModified\":\"2024-04-28T21:06:23+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"- Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/","og_locale":"zh_CN","og_type":"article","og_description":"\u305d\u308c\u305e\u308c\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u4e0a\u304c\u3063\u305f\u4ee5\u5916\u306f\u524d\u56de\u306e Ubuntu 18.04 \u306e\u3068\u304d\u304b\u3089\u3042\u307e\u308a\u5909\u308f\u3063\u3066\u3044\u307e\u305b\u3093 Bun [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-07T05:51:46+00:00","article_modified_time":"2024-04-28T21:06:23+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d619337434c4406cfdcec\/35-0.png"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/","name":"- Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-07-07T05:51:46+00:00","dateModified":"2024-04-28T21:06:23+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/45871-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45871","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=45871"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45871\/revisions"}],"predecessor-version":[{"id":83221,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/45871\/revisions\/83221"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=45871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=45871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=45871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}