openSUSE Advent Calender の 16日目です。今日は小ネタです。

スマートフォンを通してインターネットに接続するテザリングをするとき、一般的には Wi-Fi を使ってスマートフォンと PC を接続することが多いのではないかと思います。

実はUSBケーブルで接続してテザリングをすることもできます。充電・電源供給しながら使用することができるので、長時間使うときには便利です。

Android のスマートフォンであれば、どの機種でも簡単にできます。USB ケーブルで接続し、スマートフォン側のネットワークの設定で USB テザリングを有効にすれば、特にパッケージ等のインストールをすることなくつながります。

Network Manager では、1番目に Type-C で接続した有線LANアダプタがあるため、スマートフォンは「Wired connection 2」として設定されました。

この記事はopenSUSE Advent Calendar 2019の13日目です。

今回は、openSUSEでパッケージをインストールする3つのメジャーな方法を紹介させて頂きます。

  • YaSTの「ソフトウエア管理」からインストール
  • コンソールからzypperコマンドでインストール
  • Webサイトから1-clickインストール

YaSTの「ソフトウエア管理」からインストール

簡単設定ツールYaSTの「ソフトウェア管理」で、パッケージをインストールしたりアップグレードしたりできます。YaSTは、左下のアプリケーションランチャーから、「アプリケーション > 設定 > 管理者設定(YaST)」で起動できます。

起動したら、「ソフトウエア管理」を選びましょう。リポジトリ情報などを取得した後、管理画面が開きます。

YaSTのメニュー
ソフトウエア管理でpodmanを検索

左上の場所にパッケージ名を入力して、「検索」をクリックすれば、右側に一覧が表示されます。インストールしたいパッケージを選択して、右下の「了解」をクリックしましょう。

コンソールからzypperコマンドでインストール

コマンド「zypper 」で、パッケージ管理ができます。パッケージを検索したい時は以下のコマンドです。

$ zypper se [検索したいパッケージ名]

seはsearchのseです。searchとフルでタイプしても大丈夫です。該当するパッケージがあれば、一覧が表示されます。

リポジトリのデータを読み込んでいます…
インストール済みのパッケージを読み込んでいます…

S  | 名前                   | 概要                                                                  | 種類             
—+————————+———————————————————————–+—————–
  | podman                 | Daemon-less container engine for managing containers, pods and images | ソースパッケージ
i+ | podman                 | Daemon-less container engine for managing containers, pods and images | パッケージ       
i  | podman-cni-config      | Basic CNI configuration for podman                                    | パッケージ       
  | python-podman          | A library to interact with a Podman server                            | ソースパッケージ
  | python-podman-compose  | A script to run docker-compose using podman                           | ソースパッケージ
  | python2-podman         | A library to interact with a Podman server                            | パッケージ       
  | python3-podman         | A library to interact with a Podman server                            | パッケージ       
  | python3-podman-compose | A script to run docker-compose using podman                           | パッケージ  

上記は「podman」で検索してみた例です。(折り返してしまっているので見にくくてすみません。)

ちなみに、左端の「i」がインストールされているという意味で、「i+」は、ユーザーが選んでインストールしたパッケージ、という意味です。

目当てのパッケージが見つかったら、インストールは以下のコマンドです。

$ zypper in [インストールしたいパッケージ]

inはinstallの略です。フルでinstallとタイプしても大丈夫です。

そうすると、同時にインストールすることが推奨されるパッケージや利用予定ディスク容量などが表示され、インストールするかを聞かれますので、Y(Yes)で答えればインストールです。なお、root権限が必要ですので、一般ユーザーの場合はsudoで実行するなどしましょう。

Webサイトから1-clickインストール

openSUSEにはソフトウェアサイトがあり、コミュニティ作成のパッケージや、実験的なパッケージをインストールすることもできます。(もちろん、自己責任となりますのでご注意ください。)

ソフトウェアサイトのトップページ

左側でディストリビューションを選べますので、希望のものを選びます。今ですと、Leap15.1になるでしょう。それからパッケージ名を検索します。そうすると、各パッケージのページに行くことができます。

podmanのパッケージのページ

ここから「直接インストール」を選択します。

あるいは、下部に利用可能な各ディストリビューションのコミュニティ作成パッケージや実験的パッケージが表示されますので、希望のものをえらび「1-クリックインストール」をクリックします。

podmanのleap15.1のパッケージ例

追加のリポジトリが必要な場合は、それを設定するか確認されます。「ちゃんと、変更内容わかってる?」と、かなり念を押してくれます。

まとめ

どの方法でも、zypperで操作できるパッケージ管理の配下に入っていきます。ですので、WebサイトからインストールしたものをYaSTで確認、などもできます。気になるパッケージもこれで手に入りますね。なお、Webサイトからですと実験的なものなども見れますので、他の方法で見つからない場合は覗いてみるのもアリだと思います。(くどいようですが、自己責任ですので・・)

  • リポジトリとパッケージの関係をとりまとめてブログに書きたい
  • libzyppとzypperとYaSTの関係図を書けるようになりたい
  • なんなら、zypperのソースを読んでみたい

Noto Sans CJK JPと、Noto Sans JPの違い

By Syuta Hashimoto @ 2019-12-11 22:27

この記事はopenSUSE Advent Calendar 2019の11日目です。

さて、今回は豆知識です。

この間 Cross Distro Developers Campの秋の合宿に参加したのですが(レポートは17日に書きます)、この時に以下の豆知識を教わりました。

Noto Sans CJK JP

C(Chinese)、J(Japanese)、K(Korean)の全てが入っているフォントで、その中でJapaneseを優先的に表示するようになっているのだとか。

Noto Sans JP

JaPaneseのみのフォントが入っている。容量はもちろんCJKよりも小さい。

まとめ

もちろん、アルファベットは両方に入っています。openSUSEではデフォルトでNoto Sans JPが使われているようですね。

合宿では、フォントの形?をグリフと呼ぶ、とか、表示されるフォントの優先順位を決めているfontconfigというユーティリティがあるが、この使い方が難しい、だとか、色々とお話を聴かせて頂きました。また、どちらを使うかがディストリビューションによって違ったりするので、名前が一致しなくて、文書がきちんと表示できない、なんてこともあるとか。

このあたりのお話や情報も、まとめて、正しい知識にしたいと思っています。

なお、22日はftakeさんのフォントに関するお話です。(この記事にミス等あれば、ご指摘して頂けますでしょう)

明日は最近DNSの申し子になっているemaxserさんの記事です。どうぞお楽しみに!

この記事はopenSUSE Advent Calendar 2019の10日目です。

今更ですが、今年の6/21(金)-6/23日(日)で、Cross Distro Developers Camp 6月の開発合宿に行ってきました。

Cross Distro Developers Camp

これは、インプットメソッドやかな漢字エンジンなど、日本のディストリビューションを横断して解決すべき問題についての情報交換や共同開発を目的とした集まりです。

もともとは2月のOSC Tokyo/Springの時に、DebianさんたちとopenSUSEのftakeさんとで、日本語インプットメソッドの問題について意見交換したのがきっかけで、じゃぁ開発合宿でもして解決に臨もうか、となったのでした。(ちょうど、Debianの方が、GNOME + Waylandでインプットメソッドが使えない、という問題を解決しているところでした。)

8月のODCでは、一連の問題提議や、この会の説明などのセッションを持たせて頂き、多くの方に興味を持って頂きました。

インプットメソッドの問題はアジア圏など広い範囲でも共通する問題ですので、アクターが広がっていくと良さそうですね。

マホロバマインズ三浦

宿は、いろいろな宿泊施設を試してみたい、とおっしゃっていたDebianの吉田さんの提案で、マホロバマインズ三浦に決定、私は予約などをさせて頂きました。

ここの研修プランにしたのですが、見積り依頼時から担当がついてくださって、こちらの要望(追加料金を払うので最低10人を8人で利用したい)やタイムスケジュールの調整(3人は前泊したい)などを柔軟に聞き入れてくださり、サービス力は高いと感じました。また、当日も担当のコンシェルジェがついてくださり(結局利用させていただくことはありませんでしたが)、「研修を心地よく有意義に過ごして頂こう」というホテル側の気配りを感じることができました。

場所は三浦半島の海に近い場所、朝方はみんなで浜辺に散歩にいったり、食事も肉に魚と美味しいものばかりでした。(メニューはみんなで事前に選びました。朝食のバイキングも、内容がよくて満足でした。)

お値段は、土-日組が17k弱、金-日組で23k程度だったと思います(すみません、記憶なので確かではないかもです)。温泉の他に、水着を持参するか借りるかすれば温水プールも利用できて、オンオフ両方充実できる場所でした。研修室は15名ほどで利用できる会議室に机をコの字に並べての贅沢利用。給茶機、WiFi、ホワイトボードも利用可能でした。(プロジェクターだけは借りると1日10kほどだったため、メンバーの方が持参してくださいました)

売店も地ビールなどがおいてあって、おみやげにも困らず、開発合宿をオールインワンでしたい場合の良い候補地だと思いました。

売店にあったクラフトチューハイ

私の課題

私はこの合宿ではGeeko Magazine 夏号の原稿を書いていました。もくもく会的なところがあって、皆さんそれぞれの作業をしていました。その他、時間をとってみんなでインプットメソッドの話や、ユーザー会の運営的なところのお話などを共有しました。

私は作業はあまり外に出ないタイプなのですが、こうやって意見交換できる場所は色々と新しいことがあって、非常に良い刺激になりますし、何より楽しいですね。見識が深まりますし、モチベーションも上がりました。

次回

年に二回ぐらい?というお話がでたとおり、この次は秋に合宿をしてきました。その様子は来週にレポートさせて頂きたいと思います。

また、この時にあまりスムーズでない進行にかかわらず付き合ってくださったみなさん、ありがとうございました。こういう段取りや準備も、徐々に慣れていこうと思います。

openSUSE Advent Calendar 9日目です。

M5Stack は 5.5 cm 角のディスプレイとバッテリー付きのマイコンです。SoC は ESP32 で、Wi-Fi も使えます。近々 Arduino のハンズオンを行う予定で、M5Stack を Arduino 互換ボードとして開発する環境を openSUSE 上に整えてみました。

ハードウェアのセットアップは簡単で、openSUSE が動く PC に接続するだけで cp210x として認識されます。ただし、少し前の brltty にバグがあり、アップデートが適用されていないと、M5STACK が点字ディスプレイとして持って行かれてしまいますのでご注意下さい。

Arduino の開発環境である Arduino IDE は以下のサイトからダウンロードして、適当なディレクトリに展開します(/opt/arduino など)。Flatpak でインストールしたいところですが、ESP32 のコンパイラが Python を必要とするため、Python を同梱していない Flatpak 版は使用できません。
https://www.arduino.cc/en/Main/Software

インストールした Arduino IDE を起動して、ESP32用のツールをダウンロードします。「環境設定」を開いて「追加のボードマネージャのURL」に次のURLを設定します:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

「ツール」から「ボードマネージャ」を起動し、ESP32 の開発環境をインストールします。

ボードマネージャを使用しない方法は以下を参照:
https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md

1つだけインストールしなければならないのが python2-pyserial です。ビルド時に ESP32 のビルドツールが使用します。zypper か YaST からインストールして下さい。

あとは、「ツール」 > 「シリアルポート」を /dev/ttyUSB0 (dmesg に出てきたデバイス名)に設定したら準備完了です。

Arduino IDE は Java アプリで、デフォルトの設定ではフォントがきれいでないのが残念。この設定変更はまたの機会に。

OSC Tokyo/Fall 行ってきました

By Syuta Hashimoto @ 2019-12-08 18:47

この記事はopenSUSE Advent Calendar 2019の8日目です。

ftakeさんなどユーザー会の人たちと一緒に、11/23、24に明星大学で開催されたOSC Tokyo/Fall 2019に参加してきました。ftakeさんのレポートはこちらです。

セミナーは川上さんの「最近よく聞く!? ― eBPF (extended Berkeley Packet Filter) を用いた PostgreSQL の性能測定」でした。そこそこ聴衆も集まったようです。eBPF、私も使ってみたい・・・

ということで、私は他に自分のセミナーもなかったので、ブース対応と、セミナーを少し聞いてきました。

ブース

いやぁ、やっぱり特大ぎーこくん、人気者ですね。今回はお子様も多く、特大ぎーこくんは大人気でした。(一部、大人の方にも人気でした)

ブースに来てくださった方に、openSUSE知ってます?と尋ねると、知ってますよー、と返してくださる方が増えた印象です。今回は新ネタもとくになかったこともあり、YaSTやKubicのお話を中心にさせて頂きました。

また、Netpbmの漆畑さんが同じ部屋にブースを出していらっしゃって、行列などの数学の本をお勧めして頂きました。私は体系的に数学を学んでいないにもかかわらず、機械学習やりたいなーとか思っているので、ものすごく助かりました。

セミナー

主に以下のセミナーを聴かせて頂きました。

ストレージもSoftware Definedな時代です。OpenSDS,始めてみませんか。

伊藤さんによる、OpenSDSのセミナーです。OpenSDSは興味を持っていて、私は5月のopenSUSE Conference 2019では、OpenSDSの概要とKubicから使う方法についてセミナー持たせて頂きました。

OpenSDSは名前が「SODA」に変わり、そのローンチイベントを12/17日に日本で行うそうです。参加したいのですが、その日はあいにく・・・

ちなみに、OpenSDSは、Software Defined Storageのソリューションで、簡単に言いますと、ストレージのプロビジョニング、レプリケーション、バックアップなどを行うコントローラーです。それも抽象化されたコントローラーで、実際の動作は各ドライバに委譲しています。各ドライバのための統一インターフェース、といったところでしょうか。Kubic(Kubernetes)からも使えるので、Kubic(Kubernetes)のストレージ利用を柔軟にしてくれます。

コンテナーにてBittorrentメカニズムを使ったデプロイサーバの実行

Clonezillaさんのセッションです。Clonezillaはディスクを複製するソリューションですね。

アプリケーションをコンテナ実行し、Bittorrentを使って配信することで、利用を簡単・効率的にしたとのことです。コンテナにはDockerではなくSingularityを使っているそうで、理由としてSingularityの、権限制御を簡素化したりしてコンテナのアプリを動かすという所にフォーカスした設計をあげていました。また、デプロイにはBittorrentが効率的に配信できてよい、とのことです。

ITエンジニアが誤解している2020年度からの「小学校プログラミング教育」

さくらインターネットさんの前佛さんのセッションです。さくらインターネットさんは地域貢献の一環として、学校でのプログラミング授業の補佐を行っているそうで、現場視点での現状をお話してくださいました。「主役は子供」というフレーズを語る前佛さん、かっこよかったです。

まだIT業界視点、また、学校視点でも、「プログラミング教育」というものに対する誤解や不理解が多いらしく、そのあたりを整理して解説していました。プログラムをかけるようにする、という視点ではなく、プログラムが書けるような思考力を養う、また、問題を解くときにプログラムを利用するような発想ができるようなる、という視点での教育だということを強調していました。

懇親会

初日夜に開かれた懇親会に参加しました。ここでは、おーぷん万葉の(東海道LUGの?日本openSUSEユーザ会の?)橋本雅彦さんやUbuntuの柴田さんと、ibusと橋本さん作のかな漢字変換エンジンをつなぐ部分の仕様詰めなどをさせて頂いたり、さくらインターネットさんの前佛さんとコンテナのことやプログラミング教育のことについて、色々とお話させて頂いたりしました。まさに懇親会、私なりにネットワーキングさせて頂きました。

次回は

OSC Tokyo/Spring 2020は、都内駒沢大学にて、2/21(金)、2/22(土)で開催予定です。日本openSUSEユーザ会も、もちろん出展・セミナー予定ですので、是非そこでお会いしましょう!

さて、Advent Calendarの明日は、ftakeさんによる「openSUSE で M5STACK の開発環境を整える」です。IoTよりのお話ですね。乞うご期待です。

この記事はopenSUSE Advent Calendar 2019の7日目です。

さて、一年越しの遊びたいねぇを実施したいと思います。

openSUSEのコンソールで作業していると、タイプミスやパッケージの未インストールなどで、システムにないコマンドを打ってしまうことがあります。

そんな時、コンソールには次のようなメッセージが表示されると思います。

$ ifconfig

‘ifconfig’ が入力間違いでなければ、下記のように入力することで command-not-found を利用してパッケージを検索することができます:
   cnf ifconfig

ネットワーク関連のコマンドはipやssというコマンドになったため、ifconfigはdeprecatedになっていて、システムには入っていません。

ここで私はzypper seで検索したり、ぐぐったり、と、コマンドを探しに行くわけですが、簡単にどこにあるかを探してくれるコマンドがありました。

そう、それがメッセージで親切にも教えてくれている、”cnf”です。

cnf – Command Not Found

cnfはCommand Not Foundの頭文字を並べたコマンドで、そのコマンドがどのパッケージに入っているかを探してくれたり、$PATHに設定がないのでは、などのNot Foundとなってしまう理由を表示したりしてくれます。なお、command-not-foundというコマンドも同じ模様。

$ cnf ifconfig

                        …  
プログラム ‘ifconfig’ は下記のパッケージに存在しています:
 * net-tools-deprecated [ パス: /bin/ifconfig, リポジトリ: zypp (repo-oss) ]
 * net-tools-deprecated [ パス: /usr/bin/ifconfig, リポジトリ: zypp (repo-oss) ]

下記を利用してインストールしてみてください:
   sudo zypper install net-tools-deprecated

net-tools-deprecatedパッケージにあることと、zypperコマンドでインストール可能なことが表示されました。ここでdeprecatedと名前のついているパッケージに入っているので、ぐぐる意味がでてきそうです。

コマンド名からパッケージが推測できる場合はzypper seで探すことも簡単ですが、そうでない場合などは有効ですね。たとえば、brctlなど。

ちなみに、私はbrctlを導入済みです。この状態でcnfを実行するとどうなるでしょうか。(導入済みなのに、brctlとコマンドを打ってもNot Foundとなってしまった想定)

$ cnf brctl

                     …  
プログラム ‘brctl’ は、システムにインストール済みのパッケージ ‘bridge-utils’ 内に存在します。

絶対パス ‘brctl’ は ‘/usr/sbin/brctl’ を指しています。そのため、このコマンドを実行するにはスーパーユーザ (root など) の権限が必要
かもしれません。

をを、親切にも、/usr/sbin下だから、sudoいるんじゃないの?と、アドバイスをしてくれます。

他にも、一般コマンドで試してみると、

$ cnf podman

                      …  
プログラム ‘podman’ は、システムにインストール済みのパッケージ ‘podman’ 内に存在します。

絶対パス ‘podman’ は ‘/usr/bin/podman’ を指しています。左記のパスがお使いの環境での $PATH 変数に含まれているかどうかご確認ください。

ちゃんと、$PATHに指定されているかをアドバイスしてくれます。

チュートリアルをしているときなどで、コマンドが見つからなかった場合、まずcnf叩いてみるのが有効そうですね。ただ、私の環境では1-clickで追加したリポジトリにあるパッケージを認識しなかったりしたので、ちょっとチューニングがいるのかもしれません。(Cloud:OpenStack:Masterに入っている、genisoimageなど)

まとめ

  • cnfはそのコマンドがNot Fonudとなる理由を表示するユーティリティで、これ自体は勝手に何かをインストールしたりはしないので、気軽に使える
  • コマンド名からパッケージ名の推測が難しいときや、パッケージ入れたのに使えないときに使用する
  • 認識しないリポジトリがある?←要調査
  • manを見ると、厳密にはハンドラでbashやzshに統合されてるらしい
  • 他ディストリビューションでは同様コマンドはあるのでしょうか?情報お持ちの方、是非ご教示ください