カテゴリーアーカイブ Linux

takahashi 著者:takahashi

主要Linuxディストリに追加された新しいパッケージ形式”Snaps”とは

恥ずかしながら最近初めて知ったのですが、最近の主要ディストリでは、RPMやDEB形式ではない新しいアプリケーションパッケージシステム(パッケージマネージャー)である”Snaps”(Snap、Snappyとも呼ばれる)が実装されているらしいです。

Linuxの新しいパッケージフォーマット、Ubuntu生まれのSnapsは、小アプリケーション群のためのコンテナのようだ – Tech Crunch

最初”なぜ今更あたらしいパッケージマネージャーなんて…”と思ったのですが、記事を読んでなるほど納得がいきました。

パッケージは端的に言ってしまうとWindowsでいう所謂”Windowsインストーラ”にあたります。本来、Linuxではアプリケーションをインストールするときに”ビルド”という手動の作業が必要だったのですが、従来のRPMやDEBなどどいったパッケージマネージャーは、パッケージを”インストール”することによって、初期設定も含めて全自動でアプリをインストールしてくれるという非常に便利なシステムです。


debパッケージ


rpmパッケージ

ただし、Windowsインストーラと異なるのはそのパッケージ単体をインストールするだけではアプリは動作しないという点。
Linuxの場合、一つのアプリを動作させるためには、そのアプリが動作するのに必要となるライブラリ群をあらかじめOSにインストールしておく必要があります。
アプリとアプリが必要とするライブラリの関係を”依存関係”とよび、パッケージにはアプリが必要とする依存関係も登録されています。

ところが、この依存関係というのが非常に厄介な存在です。
実はDEBやRPMといったパッケージマネージャーは飽くまで依存関係にあるアプリがインストールされているかのチェックのみで、足りない依存関係を自動で満たす機構はもっていません。
もっとも現在ではyumやaptなどといったコマンドを使えばこの依存関係の自動補完も行ってくれますが、あくまで外部のツールが補完しているのであり、DEBやRPM本体の機能でないことには注意が必要です。

さらに、インストールするアプリが要求するライブラリなどによっては、使用しているOSや、登録しているリポジトリで提供していないものがある場合が考えられます。
この場合、たとえaptやyumを用いたとしても、アプリをインストールすることができません。

さらに、DEBとRPMには互換性がなく、DEBパッケージマネージャーを採用しているOSでRPMパッケージはインストールできないし、逆にRPMパッケージマネージャーを採用しているOSでDEBパッケージはインストールできません。
一応、パッケージ形式を相互変換してくれる”alien”コマンドはあるのですが、自分が試した限りでは上手く動作しませんでした。

今回のSnapsパッケージは、そんな従来のパッケージマネージャーの欠点を解決してくれそうなシステムになっているようです。

 

Snapsは、最近はやりの仮想化技術である”コンテナ”のような仕組みになっており、Snapsパッケージ内にアプリとそのアプリが必要とするライブラリ群もすべて含まれているとのこと。
また、Snaps内のアプリはアップデートもロールバックも行えるようになっているようで、より柔軟な使い方ができるようになりそうです。

つまり、同じLinuxでありながら使用できるアプリが異なっていた各ディストリ上でも、Snapsをサポートしているバージョンであれば、debian系LinuxであろうとRedHat系Linuxであろうと、同じパッケージをインストールすることができるようになります。Linuxアプリ開発者は今までdeb形式とrpm形式のパッケージを準備する必要がありましたが、今後はSnapsパッケージ一つ作るだけで両方のLinuxユーザーから利用してもらえるようになります。とても画期的ですね。

現時点ですでにSnaps形式のパッケージが出回りつつあるようですが、まだ日本語化されていなかったりするパッケージも多いようで、快適に利用できるようになるまではもう少し時間がかかりそうです。

Snapcraft

  • この記事いいね! (0)
takahashi 著者:takahashi

自宅のPCにUbuntu 18.04 LTS をインストール

Linuxディストリビューションの一つであるUbuntuの最新版、Ubuntu 18.04 LTSを自宅のPCにインストールしてみました。

16.04 LTS までデフォルトになっていたデスクトップ環境Unityですが、UbuntuのモバイルOS進出断念に伴い開発が終了されました。

UbuntuのCanonical、「Unity 8」開発打ち切りを発表 スマホの取り組みも終了 – ASCII.jp

という経緯で18.04ではGnome 3がデフォルトになっていました。

個人的にGnome3はGnome2とくらべてかなり操作感が変わりわかりづらくなっていたので、[Gnome3かー」と思ってはいたのですが、18.04に搭載されているバージョンのGnome3のUIは以前触ったときに比べてかなり操作しやすくなっていました。

まだ使い始めたばかりで、どんなところが変わっているのかなどまだ把握できていない点が多いので、また少しづつまとめていけたらと思います。

  • この記事いいね! (1)
著者:杉浦

screenとshutdown

 2018/4/16本日、screenからexitするつもりがscreen中でshutdownコマンドを実行してサーバを落とす事故を起こしてしまいました。そんなわけでlinuxのscreenコマンドとshutdownコマンドについて書くことにしました。screenについてはこちらの記事こちらの記事で詳しく話されています。
screen
 screenは端的に言えば別画面を作るコマンドです。ターミナルと同じ機能を持つ別のプロセスが走り出すような感じです。
参照:SCREEN Quick Reference
よく使う操作

新たにscreenを作る screen
名前を付けてscreenを作る screen -S <name>
現在存在しているscreenをリストアップ screen -ls
指定した<id|name>のscreenに移動 screen -rx <id|name>
screenを動作させたまま抜け出す screen中でCtrl-a d
screenを消して抜け出す screen中でexit

 
shutdown
 シャットダウンを行うコマンドです。ただ命令するだけでも問答無用でshutdownコマンドが実行され出しますがコンピュータのシャットダウンが行われるまで多少猶予があります。CentOS7.4.1708のデフォルト設定におけるオプションなしの猶予は1分でした。特に覚えておきたい大事な操作は’shutdown -c’で実行できるshutdown処理の中断命令です。shutdownはCtrl+zやCtrl+cを打ち込んでも走り続けるため、シャットダウンを中止するためにはshutdown -cを入力する必要があります。一応shutdownを実行した際に「use ‘shutdown -c’ to cancel」と文面がでますが、焦り出す上に英語に親しくない私みたいな人は読み取れないことがあると思います。気を付けましょう。

  • この記事いいね! (0)
takahashi 著者:takahashi

気になる端末:GPD Pocket

持ち運びに特化したノートPC:ネットブックが一時期大流行しましたが、最近はその数をかなり減らし、タブレット型PCやキーボードと画面が分離するコンバーチブルPCが目立ってきています。

持ち運びに重点を置くのなら確かにタブレット型で、キーボードは必要な時に着ける形の方が理にかなっている気はします。ただ、個人的にはキーボードとタブレットを別々で持ち運ぶというのにもちょっとわずらわしいのでは…と思うときがあります。

やっぱり、ノートPCにはハードウェアキーボードがついていてほしい…でもかさばってほしくない….

そんなわがままを叶えてくれるのがネットブックだったので、少なくなってしまったのはちょっと残念に思っていました。

そんな中、彗星のごとく現れたのが、

中国・深センのデバイス製造メーカーGPDが発売した「GPD Pocket」という機種です。
大きさはなんと7インチという極小サイズ。電子書籍と見間違うほどの小ささなのですが、スペックはIntel Atom x7-Z8750、ストレージ128GB、RAMも8GBあります。
CPUを除けばMacBookAirとさほど変わらないスペックです。

ポートもUSB3.0、イヤホンジャック、USB Type-Cなど、主要なものは一通りそろえています。
OSもWindows 10 Home入りですが、Ubuntuも公式にサポートしている点はガジェット通な人の心をつかみそうです。

使用感はこちらのかたのブログでよくまとめられています。

7インチの極小ノートパソコン「GPD Pocket」と過ごした1ヵ月まとめ – goodegg.jp

昔は2番煎じ、3番煎じ間の強かった中華製ガジェットですが、最近は国内や主要メーカーよりもより痒いところに手が届く”一番手”なハードが増えてきた気がします。
是非今後も注目していきたいですね。

参考:
UMPCを忘れられないあなたへ 超小型パソコン『GPD Pocket』を日本でも – Makuake

7インチの極小ノートパソコン「GPD Pocket」と過ごした1ヵ月まとめ – goodegg.jp

  • この記事いいね! (0)
takahashi 著者:takahashi

Linux(Unix)のscreenの外からコマンドを実行する方法

LinuxやUnixでSSHにつなぎながら作業する際、時間のかかる処理を行わせたりでしばらく放置しておく機会と言うのはしばしばあります。

そんなときに、途中でインターネット接続が切れてしまうと最悪です。また、トラブル以外でもは会社の業務終了時間になって退社する時するなどでマシンの電源を落とさないといけない場面があったりします。

そんなときにscreenコマンドは便利です。
サーバー側に仮装のターミナルを作成し、そこで様々な処理を実行することが出来ます。
途中でSSHが切断されてしまっても、screenはサーバーの中で動作しているので、処理も続行されます。途中で処理させながらscreenターミナルから抜けることも、再度入ることも可能です。

また、スクリプトを簡易的にデーモンっぽく動作させる使い方もできます。

このscreenコマンドですが、実は外部からコマンドや文字列を与えることができるのはご存知でしょうか。

例えば、s1という名前でスクリーンを作成し、

$ screen -S s1

s1スクリーン内でpythonのプロンプトを起動しておきます。

$ python

Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

このs1スクリーンに、外からs1の標準入力に対して文字列を入力したい場合、
まず、ctrl+a d でスクリーンをデタッチした後で、

$ screen -S s1 -X stuff 'print "Hello world!"
'`echo -ne '\015'`

とした後、再度screen -r s1 でアタッチすると

>>> print "Hello world!"
Hello world!
>>> 

と表示されているはずです!

これは例えば、screenで実行中のプログラムに文字列を渡したい時や、特定のscreenでのみ定期的にプログラムを実行したいときに有効です。

予めシェルスクリプトにしておけば、cronで回すことも出来ます。
便利なので、ぜひ一度試してみてはいかがでしょうか?

参考サイト:
Minecraftサーバをscreenとcronでプラグインを使わずに自動再起動する – 純規の暇人趣味ブログ

別ターミナルで動いているscreenに外部からコマンド実行 – 戯術者の日記

  • この記事いいね! (0)
takahashi 著者:takahashi

WindowsへのMeltdown対策によるCPUベンチマークの変化をMSが公表。旧CPUでは著しい速度低下も。

先日、Microsoftが気になるデータを公表しました。

プロセッサの脆弱性、Microsoftの対策パッチでパフォーマンス大幅低下も – IT Media エンタープライズ

先日発覚したCPUの脆弱性 Meltdown/Spectre の脆弱性対策としてMicrosoftが公開したWindowsへの対策パッチを適用した際のベンチマークを比較したところ、IntelCPUの 第6世代にあたるSkylake以降は特に目立った速度低下はないものの、第4世代にあたる Haswell以前のIntelCPUは相当な減速が確認された、という内容です。
特にHaswellを含むそれよりも古いCPUを搭載したWindows Server機はかなりのスペックダウンが発生する可能性があるようです。

Skylakeが初めてIntelから発売されたのが2015年8月ごろになる(Wikipedia)ので、少なくともこれより前に発売されたIntelCPU、およびそのCPUを搭載したPCはすべてこのスペックダウンの影響を大きく受ける可能性があるということになります。

比較的新しいCPUでもスペックダウンの対象になってしまっているという点で、なかなかショッキングな内容です。
ちなみに、僕が現在所有しているマシンは一番新しいもので第5世代のbroadwellのマシンなので、全滅でした。

なお、LinuxOSにおいても影響が出ているようです。
CPU脆弱性Meltdownのパッチ適用でベンチマークスコアが25%低下した – Qiita

ここまで影響が大きいと、ゲーム用のマシンや企業向けサーバーなどののスペックダウンに各方面からの悲鳴も聞こえてきそうですね。
現にAWSでかなり影響が出ているという報告もあるようです。
チップ脆弱性の修正パッチが招いた、サーヴァーの性能低下という「二次災害」の深刻度 – WIRED

引き続き、Intelや各OSベンダーがさらなる対策を行ってくれることを祈ります。

  • この記事いいね! (0)
takahashi 著者:takahashi

Windowsが起動しなくなった時にPCからデータを取り出す方法

以前
Windowsがおかしくなった時に試したいコマンド “sfc /scannow”
という記事を書きましたが、今回はその後の話、つまりWindowsが復旧できなくなってしまった場合の対策を紹介したいと思います。
実際はsfc以外にも回復する方法があるのですが、それらもろもろを試してもダメだった場合、初期化が必要になってきます。

幸いなことに、Windows8以降のOSではなるべくファイルを残した状態でOSを再インストールするオプションがあるので、通常はこれでほとんど治ります。

Windowsのリフレッシュ(一部初期化)とリセット(完全な初期化)は下記を参照ください。
第8回 Windows 8によるPCの「リフレッシュ」と「リセット」 – @IT
Windows10 「PCのリフレッシュ」「PCの初期化 (リカバリー)」をする方法! – Mecha log

そもそもリカバリすらできない、あるいはリカバリする前に念のためデータをバックアップしておきたい、といった場合は、HDDを取り出して正常に起動するPCに繋げるか、外部からOSを直接起動することができれば可能になります。

実は世の中にはCDやDVDから直接起動することができるOSが複数種類存在します。

もしDVDを作成する機能のあるPCを使っている場合は、Ubuntuがおすすめです。

Ubuntu Japanese Team – Ubuntu

Ubuntu 14.04 インストールDVDの作成 – 根気だけでパソコンを征服しようとする隊長の備忘録

そもそもディスクドライブがない!という方はUSBメモリへインストールすることもできます。

さまざまなOSのインストール“USBメモリ”を手軽に作成できる「UNetbootin」- 窓の社

一度OSが起動すればあとはWindowsと操作は同じです。
PCに内蔵されているHDDを開き、必要なファイルを別のUSBメモリやHDDへコピペすることができます。

詳しい操作方法はこの辺りを見ていただければわかりやすいかと思います。

Ubuntu ウブントゥでデータ救出

GUIのわかりやすい画面でファイル操作ができると、かなり安心感がありますね。
困った際は是非試してみてはいかがでしょうか?

  • この記事いいね! (1)
takahashi 著者:takahashi

NginxでBASIC認証をプロキシするときの注意点

今回。hamamatsu-gnss.orgのサーバー切り替えを行ったのですが、移行先サーバでサービスの再起動後何故かBASIC認証が通らなくなる問題が発生。
80番ポートはWebページとポートを共有しているので、webサーバーとntripサーバーの前にNginxを置いて、ドメインで通信を振り分けています。
旧サーバーでは問題なく動いていたのですが、まったく同じ設定をコピーした新サーバーでは、RTKLIBからntripへ401ステータスで接続できなくなってしまいました。

ちなみに直で新サーバー側のntripへ接続すると、認証も問題なく通り、ログにも異常は見られなかったので、原因がNginxなのは間違いなさそうです。

認証の要らないsourcetableはNginx経由でも問題なく表示できたため、恐らくBASIC認証の際に必要なヘッダ情報が渡せていないのだろうと推測しました。
そこでいろいろ調べてみると、参考になりそうなサイトを発見。

Nginx を認証プロキシとして使う – Docker-docs-ja

正常にプロキシするには

      proxy_pass                          http://example.com;
      proxy_set_header  Host              \$http_host;   
      proxy_set_header  X-Real-IP         \$remote_addr; 
      proxy_set_header  X-Forwarded-For   \$proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto \$scheme;

の記述が必要だったのですが、新サーバーの設定ファイルと見比べたところ

proxy_set_header  X-Forwarded-Proto \$scheme;

の記述が抜けていることがわかりました。
この一行を追記し、Nginxをリロード、もう一度試してみると…

無事接続できました!

Nginxはプロキシする際、バックエンドへ渡すヘッダー情報を自由に指定・編集することができるので、抜けがあると今回のようなことが起きます。
Nginxでシステムを構築した際は、こういう部分も気を付けてチェックしたいですね。

いやーしかし、今回は症状がちょっと奇妙だったのでちょっとだけ焦りました…(笑

  • この記事いいね! (0)