カテゴリーアーカイブ オープンソース

takahashi 著者:takahashi

Kali Linuxの言語を日本語化する方法

ペネトレーションテストツールを多数収録している、セキュリティ系ハッカー御用達(クラッカーではない(←重要))のLinuxディストリビュージョンとして有名なKali Linuxですが、実はWindowsのWSLでも利用可能になっています。

このWSL版Kali Linuxですが、以前ご紹介したWSL版Ubuntuと同様、デフォルトでは言語が英語になっていますが、日本語化を行うこともできます。

ただし、同じDebian系とはいえUbuntuと手順が異なっているので注意です。

Kali Linuxで日本語化を行うには”locales”というパッケージが必要です。

入っていない場合はまずインストールをします。

sudo apt update
sudo apt install locales

locales のインストールが完了したら、下記のコマンドを実行します。

sudo dpkg-reconfigure locales

下記のような画面が出てくるので、ja_JP.UTF-8 UTF-8 を選択します。(スペースキーで選択できます。)

選択したらTABキーを押して<OK>の部分が赤くなったらEnterキーを押します。

次にシステムの標準言語を選択する画面が表示されますので、

こちらでも”ja_JP.UTF-8″を選択し、Tabキー->OKでエンターキーを押します。

これで設定完了です。

あとは一度ターミナルを開きなおし、何かコマンドを実行すると…

日本語に対応しているコマンドであればバッチリ日本語に切り替わっています。

Kali Linuxを日本語で使いたい方はぜひ試してみてください。

Change language of installed Kali

Docker debian系のlocaleを日本語化する – Qiita

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

音楽聞き放題Webサービス”PlayMusic”をデスクトップアプリ化してくれるアプリ”Google PlayMusicDesktopPlayer”

僕はGoogleのサービスを結構愛用しているのですが、それらのサービスの一つに、”GooglePlayMusic”があります。

これはGoogleが運営している所謂”音楽聞き放題サービス”なのですが、他のサービスと違う特徴として、自分が既にファイルとして所持している音楽ファイルもアップロードすることで再生リストに追加できる点があります。

元々はCDからコピーして自宅HDDに保存してシャッフル再生…という使い方をしていたので、PlayMusicはそんな僕のようなユーザーにもピッタリな音楽サービスとなっています。

そんなPlayMusicですが、欠点の一つとして”PC向けのプレイヤーアプリがない”点があります。

AndroidやiOS向けのアプリは他のサービス同様にあるのですが、PC向けの公式ネイティブアプリは同期専用のアプリ以外存在しません。

なのでPCからPlayMusicにアクセスするにはブラウザからアクセスする方法のみになります。

ただ音楽を聴くだけならいいのですが、ヘビィユーザーになってくると、ちょっと不便に感じる瞬間が出てきます。

システムとの相性が悪くてキーボートのホットキーで再生停止ができなかったり、ウインドウを開いていないと再生が止まってしまったり、OS統合機能の一部が利用できなかったりなどです。

やっぱりPlayMusicもネイティブアプリのような機能が使いたい…!という贅沢な悩みを解決してくれるアプリが、実はオープンソースで作られていました。

Google Play Music Desktop Player

というアプリです。

TweetDeckベースアプリのTweetenのような所謂”専用ブラウザ”系アプリで、 元々のPlayMusicの機能をアプリがオーバーライドすることで機能追加を実現しています。

Google Play Music Desktop Playerの場合も、立ち上げ直後は本家Webアプリと一見変わらなそうに見えますが、本家にはない便利な機能がいくつか追加されています。

例えば…

サイドメニューに、”Alarm”という機能が追加されています。
これをクリックすると…

こんな感じで、時間指定で音楽を流すことができる機能になっています。

他にも、

ミニプレイヤー機能や

ウインドウを閉じても再生を継続してくれる常駐機能もついています。

また、メニューのデスクトップ設定からアクセスできる

Playback APIを有効化すれば、Windowsのプレイヤー連係機能を利用して、再生中の曲をロック画面などに表示したり、他の機能と連携したりもできます。

また、PlayMusicに対してキーボードの”再生/停止”ホットキーが効かないPCも、このAPIを有効にすることで効くようになる場合もあるようです。

※Playback APIは一部セキュリティソフトを利用中の場合にブロックされてしまう場合があるようなので、注意してください。

こんな感じで Google Play Music Desktop Player にはネイティブプレーヤーアプリさながらの機能が利用できるので、ヘビィユーザーにとってはなかなかうれしい内容になっています。

何より、 Google Play Music Desktop Player はネイティブアプリとして扱われるので、

OS標準のランチャーにもちゃんとアプリのアイコン付きで追加できるのがうれしいですね。

Google Play MusicをPCで使われている皆さん、是非一度試してみてはいかがでしょうか。

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

IPFSにファイルをアップロードしてみた!

前回の記事で、IPFSのインストール方法についてご紹介しました。
今回は実際にIPFSに対してファイルをアップロードしてみたいと思います。

前回までの操作で、ipfsコマンドがどのユーザー・どのディレクトリからでも叩ける状態になっているはずです。
今回は、自分が撮影した画像で、IPFSに上げても問題なさそうなものを使用してみました。
IPFSに一度アップロードしたファイルは基本的に二度と削除することは出来ませんので、アップロードする際は十分注意してください。

まず、IPFSにアップロードしたいファイル(形式はなんでも大丈夫ですが、あまり大きくない方がよさそうです。)をipfsコマンドを動かす環境上に用意します。

ファイルを準備したら、実際にアップロードを行ってみます。

ipfs add ファイル名

するとファイルに紐づく一意のID(ハッシュ値)が生成されます。

$ ipfs add hoge.txt

added Qm678e851755589c2ed8905b10e0e8302a694af7e40ee86abacfa4bddfba859bb1 hoge.txt

IPFSでは、このハッシュ値こそがHTTPでいうURLのような、絶対的なパスとなります。

なぜハッシュ値が使われるのかというと、もしIPFS上に全く同じファイルが存在した場合、重複したファイルを同じファイルとして扱うことができる(IPFS上では単に目的のファイルを閲覧できればいいので、何処で上げたか、誰が上げたかは区別されない)上、内容が少しでも異なっていれば違うハッシュ値になるという特性からコンテンツの内容とハッシュ値が1:1で対応するからです。

ipfsではアップロードしただけではファイルの永続性が保証されないので、ipfsコマンドで”pin”をしてファイルを永続化させます。

ipfs pin add コンテンツのハッシュ値

あとは
https://gateway.ipfs.io/ipfs/コンテンツのハッシュ値
のようにIPFSゲートウェイから参照すると、自分が先程アップロードしたコンテンツの内容がブラウザ上で表示されるはずです。

なお、実際にIPFSでWebサイトなどを公開しようとした場合を考えた時、コンテンツの更新時に毎回異なるハッシュ値が生成されることになるので、毎回リンク先が変わってしまうことになります。

これでは不便なので、IPFSには”IPNS”という仕組みが備えられています。
IPNSはIPFS上にアップロードしたコンテンツに対してランダムな名前(エイリアス)を付けることができる仕組みです。

IPNSを利用することで、元のコンテンツを更新しても、IPNS名を使えば同じ名前で更新後のコンテンツへアクセスすることができるようになります。

コンテンツをIPNSと紐づけるには

ipfs name publish コンテンツのハッシュ値

のようにコマンドを実行します。

紐づけたコンテンツは

https://gateway.ipfs.io/ipns/上のコマンドで出力されたipns名

のように各IPFSゲートウェイから参照できます。

実際にIPFSを触ってみた感想として、IPFSのアイデアはとても面白いと感じました。

特に、一度IPFS上にアップロードしてしまえば、どのIPFSゲートウェイノードからでも同じコンテンツが参照できてしまうのはなかなか面白い仕組みだと思います。

一方で、IPFS自体にはまだ認証システムが備わっておらず、アップロードしたファイルはハッシュ値さえ知られてしまえばだれでも閲覧可能であったり、
IPFS上にアップロードしたファイルはアップロードした本人ですら削除できないため、誤って重要なファイルをIPFSにアップロードしても取り消せなかったり、また使用されなくなったファイルがゴミとしてIPFS上に残り続けてしまう、などといった弱点も見えてきました。

完全に一般公開するようなコンテンツであれば現状でも問題ありませんが、HTTPをIPFSで置き換える為には、やはり認証の問題は避けては通れないと思います。

この辺りがもう少し解決されれば、いよいよ実用的に利用できる段階になっていくのではないかな、と思いました。

是非今後の展開に注目したいですね。

参考:

IPFSを触ってみた

IPFSを使って無料で静的サイトをホスティング(公開)してみる

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

CentOS7にIPFSをセットアップしてみる

以前記事でご紹介したIPFSですが、今回は実際に自分の持っているCentOSの環境にIPFS環境一式をインストールしてみました。

今回はそのやり方についてご紹介したいと思います。

まず、IPFSの動作にはgo言語の動作環境が必要になりますのでインストールします。

sudo yum -y install go
または
sudo yum -y install golang

次にIPFSをインストールするために必要な環境を整えます。
/usr/local/
ディレクトリにgo言語周りのパッケージをインストールする場所を作成します。

sudo mkdir -p /usr/local/go

次にパスを通します。

sudo vi /etc/profile

を実行し、一番下の行に次の記述を追記します。

PATH=$PATH:/usr/local/go/bin
export GOPATH=/usr/local/go
export GOBIN=$GOPATH/bin

一度ログイン中の端末からログアウトし、再度ログインします。

次に下記のコマンドを実行します。

go get -u -d github.com/ipfs/go-ipfs #ipfsソースを入手
cd $GOPATH/src/github.com/ipfs/go-ipfs #ipfsソースダウンロード先へ移動
sudo su - #"sudo  -s"でやると/etc/profileでexportした環境変数が消失するため
make install #ipfsをビルド
exit #rootユーザーからログアウト

するとIPFSパッケージがビルドされ、$GOPATH/binへインストールされます。

ビルドが完了したら、ipfsコマンドが利用できるか確認します。

ipfs --help

下記のような表示がされたらインストールは成功しています。

USAGE
  ipfs - Global p2p merkle-dag filesystem.

SYNOPSIS
  ipfs [--config=<config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L] [--api=<api>] <command> ...

OPTIONS

  -c,              --config   string - Path to the configuration file to use.
  -D,              --debug    bool   - Operate in debug mode.
  --help                      bool   - Show the full command help text.
  -h                          bool   - Show a short version of the command help text.
  -L,              --local    bool   - Run the command locally, instead of using the daemon. DEPRECATED: use --offline.
  --offline                   bool   - Run the command offline.
  --api                       string - Use a specific API instance (defaults to /ip4/127.0.0.1/tcp/5001).
  --enc,           --encoding string - The encoding type the output should be encoded with (json, xml, or text). Default: text.
  --stream-channels           bool   - Stream channel output.
  --timeout                   string - Set a global timeout on the command.

SUBCOMMANDS
  BASIC COMMANDS
    init          Initialize ipfs local configuration
    add <path>    Add a file to IPFS
    cat <ref>     Show IPFS object data
    get <ref>     Download IPFS objects
    ls <ref>      List links from an object
    refs <ref>    List hashes of links from an object
  
  DATA STRUCTURE COMMANDS
    block         Interact with raw blocks in the datastore
    object        Interact with raw dag nodes
    files         Interact with objects as if they were a unix filesystem
    dag           Interact with IPLD documents (experimental)
  
  ADVANCED COMMANDS
    daemon        Start a long-running daemon process
    mount         Mount an IPFS read-only mountpoint
    resolve       Resolve any type of name
    name          Publish and resolve IPNS names
    key           Create and list IPNS name keypairs
    dns           Resolve DNS links
    pin           Pin objects to local storage
    repo          Manipulate the IPFS repository
    stats         Various operational stats
    p2p           Libp2p stream mounting
    filestore     Manage the filestore (experimental)
  
  NETWORK COMMANDS
    id            Show info about IPFS peers
    bootstrap     Add or remove bootstrap peers
    swarm         Manage connections to the p2p network
    dht           Query the DHT for values or peers
    ping          Measure the latency of a connection
    diag          Print diagnostics
  
  TOOL COMMANDS
    config        Manage configuration
    version       Show ipfs version information
    update        Download and apply go-ipfs updates
    commands      List all available commands
    cid           Convert and discover properties of CIDs
  
  Use 'ipfs <command> --help' to learn more about each command.
  
  ipfs uses a repository in the local file system. By default, the repo is
  located at ~/.ipfs. To change the repo location, set the $IPFS_PATH
  environment variable:
  
    export IPFS_PATH=/path/to/ipfsrepo
  
  EXIT STATUS
  
  The CLI will exit with one of the following values:
  
  0     Successful execution.
  1     Failed executions.

  Use 'ipfs <subcmd> --help' for more information about each command.

最後に、ipfsを使用するユーザー(ipfsへファイルをアップロード・ダウンロードするユーザー)で下記のコマンドを実行します。

ipfs init

するとipfs上での自ノード専用のキーが発行・保存され、セットアップ完了です。

initializing IPFS node at /ユーザーディレクトリのパス/.ipfs
generating 2048-bit RSA keypair...done
peer identity: 自分のipfsノードのキー
to get started, enter:

        ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

ファイルのアップロードやアップロードしたファイルを閲覧する方法などはまた後日解説したいと思います。

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

ntpd が起動できなくなりログも吐かない

ntpd で時刻同期をしているのですが、OS を再起動したタイミングで ntpd が起動できなくなってしまいました。

ntpd が起動できなくなった原因と、ntptime が ERROR になる原因は違いそうですが、ntpd を起動しておかないとズレが生じる為、ntpd が起動を起動するところまでは復旧する必要があります。

disable monitor

脆弱性対策で ntp.conf に設定を入れていたのですが、原因不明のため、ntpd を最新版へアップグレードして起動の確認を行いました。

ntpdc と ntpq

古い人間なので ntpdc を使っていましたが、今どきの ntpd は ntpq を使う様です。ntp.conf を新バージョンに合わせた設定に変更し、ntpq -p で同期確認。

無事同期ができるようになりました。でも、相変わらず、ntptime で ERROR は吐く。

IPMI 経由で BIOS の時刻を見ると、ものすごいズレがあるので、ntpdate -b で同期を行いたいのですが root で実行しても permission denied 。困りました。

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

WordPressの次期メジャーアップデートで実装される記事エディタ”Gutenberg”を使ってみた

WordPressの次回メジャーバージョンアップ WordPress 5.0から新しい記事エディタ”Gurenberg(グーテンベルク)”が実装されるようです。

Gutenberg – WordPress

WordPress 5.0はまだリリースされていませんが、Gurenbergは既にプラグインとして公開されており、既存の4.x系のWordpressでも先行して試すことができます。

ということで、早速、自分の所有するWordpressサイトにインストールしてみました。

インストール後は、管理画面から
投稿->新規追加
をクリックしたときに表示されるエディタが従来のTinyMCEからGutenbergに差し替えられます。
ただし、ダッシュボードや記事一覧の”新規投稿”ボタンに変更が加えられ、ドロップダウンから旧エディタを選択することが可能です。

早速Gutenbergを呼び出してみます。

まず見てわかるのは、入力欄がとても大きくなりました。
トップにタイトルの入力欄、そしてその下には本文入力欄があり、ここまでは従来と変わりませんが、入力してみると…

改行するごとにブロックが分けられ、そのブロックを組み合わせてコンテンツを作っていく編集方式になっていました。
ブロックは自由に入れ替えることができ、別のブロックにしておけばコピペなして内容の順番を入れ替えることができます。

ブロックには文章の外にも画像や動画などを含めることもできます。

ブログのUIを見るとどうしても長文を書かないといけない気になって続かない…なんてこともありますが、GutenbergのようなUIなら、短文を気軽に書いてもいいようなUIになっていて、ミニブログ感覚で無理なく書けるのではないかなと思いました。

なお、Wordpress 5.0以降も従来のエディタを使いたい!という方は、公式でClassic Editorという名前のプラグインで提供されるので、これをインストールすれば引き続き旧エディタが利用できるようです。

ブログは書きたいけどなかなか筆が進まない…という方は一度試してみてはいかがでしょうか?

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

CentOS 7 でepelリポジトリのnpmでアップデートを行うとnpmが消されてしまう問題の回避方法

CentOS 7 の新環境を作り、epelリポジトリからyumでnpmをインストール。

sudo yum -y install epel-release
sudo yum -y install npm

npmのバージョンを確認すると
3.10.10
と古かったため

sudo npm -g update npm

としたところ

- fstream-npm@1.2.0 node_modules/npm/node_modules/fstream-npm
- normalize-git-url@3.0.2 node_modules/npm/node_modules/normalize-git-url
- realize-package-specifier@3.0.3 node_modules/npm/node_modules/realize-package-specifier
/usr/lib
└── (empty)

npm ERR! Linux 3.10.0-862.el7.x86_64
npm ERR! argv "/usr/bin/node" "/bin/npm" "-g" "update" "npm"
npm ERR! node v6.14.3
npm ERR! npm  v3.10.10
npm ERR! path /usr/lib/node_modules/npm/node_modules/fs-write-stream-atomic
npm ERR! code EEXIST
npm ERR! errno -17
npm ERR! syscall mkdir

npm ERR! EEXIST: file already exists, mkdir '/usr/lib/node_modules/npm/node_modules/fs-write-stream-atomic'
npm ERR! File exists: /usr/lib/node_modules/npm/node_modules/fs-write-stream-atomic
npm ERR! Move it away, and try again.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/username/npm-debug.log
npm ERR! code 1

のようなエラーが出てしまい、更新に失敗します。
そればかりか…

$ npm -v
-bash: npm: コマンドが見つかりません

$ which npm
/usr/bin/which: no npm in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/username/.local/bin:/home/username/bin)

なんとnpm本体が消えてしまいました。
そんな馬鹿な…

流石にちょっと困ってしまったので、いろいろ調べたところ、npm公式のGitHubページのIssueでも同様の報告が上がっていました。

Try to update the npm cli and got an error #15821 – GitHub

内容を見ていくと、epelではなくnodejs公式のnodesourceというリポジトリを使用したら成功したという記述が。
半信半疑ながらも、nodesourceを使うことにしました。

とりあえず、一旦npmをアンインストールします。

sudo yum -y remove npm
$ sudo yum -y remove npm
読み込んだプラグイン:fastestmirror
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ npm.x86_64 1:3.10.10-1.6.14.3.1.el7 を 削除
--> 依存性の処理をしています: npm = 1:3.10.10-1.6.14.3.1.el7 のパッケージ: 1:nodejs-6.14.3-1.el7.x86_64
--> 依存性の処理をしています: npm = 1:3.10.10-1.6.14.3.1.el7 のパッケージ: 1:nodejs-6.14.3-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ nodejs.x86_64 1:6.14.3-1.el7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

========================================================================================================================
 Package                 アーキテクチャー        バージョン                                リポジトリー            容量
========================================================================================================================
削除中:
 npm                     x86_64                  1:3.10.10-1.6.14.3.1.el7                  @epel                  9.8 M
依存性関連での削除をします:
 nodejs                  x86_64                  1:6.14.3-1.el7                            @epel                   16 M

トランザクションの要約
========================================================================================================================
削除  1 パッケージ (+1 個の依存関係のパッケージ)

インストール容量: 26 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : 1:npm-3.10.10-1.6.14.3.1.el7.x86_64                                                     1/2
警告: ファイル /usr/lib/node_modules/npm/scripts/update-authors.sh: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/scripts/relocate.sh: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/scripts/release.sh: 削除に失敗しました: そのようなファイルやディレクトリはあり ません
警告: ファイル /usr/lib/node_modules/npm/scripts/publish-tag.js: 削除に失敗しました: そのようなファイルやディレクトリは ありません
警告: ファイル /usr/lib/node_modules/npm/scripts/maketest: 削除に失敗しました: そのようなファイルやディレクトリはありま せん
警告: ファイル /usr/lib/node_modules/npm/scripts/install.sh: 削除に失敗しました: そのようなファイルやディレクトリはあり ません
警告: ファイル /usr/lib/node_modules/npm/scripts/index-build.js: 削除に失敗しました: そのようなファイルやディレクトリは ありません
警告: ファイル /usr/lib/node_modules/npm/scripts/gen-changelog: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/scripts/doc-build.sh: 削除に失敗しました: そのようなファイルやディレクトリはあ りません
警告: ファイル /usr/lib/node_modules/npm/scripts/dev-dep-update: 削除に失敗しました: そのようなファイルやディレクトリは ありません
警告: ファイル /usr/lib/node_modules/npm/scripts/dep-update: 削除に失敗しました: そのようなファイルやディレクトリはあり ません
警告: ファイル /usr/lib/node_modules/npm/scripts/clean-old.sh: 削除に失敗しました: そのようなファイルやディレクトリはあ りません
警告: ファイル /usr/lib/node_modules/npm/scripts/changelog.js: 削除に失敗しました: そのようなファイルやディレクトリはあ りません
警告: ファイル /usr/lib/node_modules/npm/scripts: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules/realize-package-specifier: 削除に失敗しました: そのようなファイル やディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules/normalize-git-url: 削除に失敗しました: そのようなファイルやディレ クトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules/fstream-npm: 削除に失敗しました: そのようなファイルやディレクトリ はありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/index.js: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/README.md: 削除に失敗しました: そのよう なファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic/LICENSE: 削除に失敗しました: そのような ファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/write-file-atomic: 削除に失敗しました: そのようなファイル やディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/wrappy.js: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/package.json: 削除に失敗しました: そのようなファイ ルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/README.md: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy/LICENSE: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/wrappy: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/which.js: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/windows.js: 削除に失敗しました:  そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/mode.js: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/index.js: 削除に失敗しました: そ のようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/access.js: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/README.md: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/LICENSE: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe/.npmignore: 削除に失敗しました:  そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules/isexe: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/node_modules: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/bin/which: 削除に失敗しました: そのようなファイルや ディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/bin: 削除に失敗しました: そのようなファイルやディレ クトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/README.md: 削除に失敗しました: そのようなファイルや ディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/LICENSE: 削除に失敗しました: そのようなファイルやデ ィレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which/CHANGELOG.md: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/which: 削除に失敗しました: そのようなファイルやディレクト リはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/package.json: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/builtins.json: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/Readme.md: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/History.md: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins/.travis.yml: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules/builtins: 削除に失 敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/node_modules: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/index.js: 削除に失敗しました: そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/README.md: 削除に失敗しました:  そのようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/LICENSE: 削除に失敗しました: そ のようなファイルやディレクトリはありません
警告: ファイル /usr/lib/node_modules/npm/node_modules.bundled/validate-npm-package-name/.npmignore: 削除に失敗しました: そのようなファイルやディレクトリはありません
(省略)

大量の”ファイルが見つかりません”エラーが。
やっぱり本当に消えてしまってるようです…

アンインストールが完了したらnodesourceリポジトリをインストールします。

curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -

処理が完了したら、”npm”ではなく”nodejs”パッケージをインストールします。

sudo yum install -y nodejs

パッケージ名はnodejsですが、実際には同時にnpmもインストールされているため、インストールが完了すればnpmも使えます。

$ npm -v
6.4.1

バージョンも新しくなっています。

$ sudo npm -g update npm
$ which npm
/usr/bin/npm

アップデートも問題なく動作するようになったようです。

しかし、安定性の高いはずのepelリポジトリのnpmが致命的なバグを抱えたままになっているというのは…大丈夫なんでしょうか…

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

IBMがRedHatを買収 気になるRedHat系OSへの影響

昨日、衝撃のニュースが発表されました。

IBMがRedHat買収合意を発表。買収額約3.8兆円、クラウド分野でアマゾン・マイクロソフト追撃 – Engadget 日本版

なんとオープンソース界隈で非常に大きな影響力をもつRedHat社がIBMに買収されてしまいました。
しかもその買収額は3兆8000億というとんでもない額。これには世界中のIT界隈の人々が驚いたことだと思います。

RedHat社は商用(有料)Linuxディストリビューションの中でも非常に人気の高いRedHat Enterprise Linux (RHEL)を開発、販売している会社です。
また、Linuxディストリビューションのfedoraや、RHELのオープンソース部分を使用して作られたCentOSなどともかかわりが深く、開発に協力していたり、これらのディストリの成果をRHELにも取り込んでいたりと、かなり密接な関係をもつ、オープンソース界隈でもかなり影響力の高い企業でした。

今回の買収でRedHatが完全にIBM傘下に収められたわけですが、個人的に懸念していることがあります。
RedHatは完全にオープンソースへの協力を積極的に行っている企業なのは目に見えてわかりますが、一方IBMについては、個人的に「…?」という印象でした。
もしかすると実際はいろいろなプロジェクトを支援しているのかもしれませんが、少なくとも最近になってオープンソース支援へとシフトしつつあるMicrosoftよりも地味な印象でした。

買収後もRedHatの動きについては現状のままにしたいとIBMは言っているようですが、IBMのオープンソースへのスタンスがいまいちわからないので、個人的にはちょっと不安です。

CentOSは、もともとRHELのオープンソース部分を利用して、有志のメンバーがRHELと同等の機能を持つことを目指して開発されている、RedHat Linuxから派生したRedHat系のLinuxディストリビュージョンです。CentOS自体はもともとRedHatとは関係がありませんでしたが、2014年にRedHatが正式に派生OSとして承認を出し、RedHatから直に開発支援を受けられる状態になりました。

今更聞けない!CentOSとRed Hatの違いとは? – エンジニアの入り口

そんなわけで、現在CentOSはサーバーOSとして非常に人気が高く、LinuxをサーバーOSとして使用する企業や団体の多くで使用されている上、各IaaSクラウドサービスのほどんどで公式フレーバーが提供されているほどになっています。

今後IBMが介入してくることでこういったCentOSや同じくRedHatが支援するfedoraとの関係が変化してしまうのではないか、と個人的に心配しています。

ただ、買収されたからと言って悪い方に転ぶとは限りませんし、今よりより良くなっていく可能性もあると思います。
今後RedHatの買収によってこの辺りがどうなっていくのか…注目していきたいですね。

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

GoogleがGoogle Chrome 69をリリース。テスト中だった新UIがついに正式版に。

GoogleがGoogle Chrome 69をリリースしました。

New in Chrome 69 – Google

新バージョンに更新してまず最初に目につくのがツールバー部分のデザインの変更でしょう。

以前
Google Chrome Ver.68でChromeの新しいデザインが利用可能に。
でご紹介したテスト中の新UIが、正式版として実装されたものと思われます。

Chrome68で実装されていたテスト版のUIはこんな感じでした。

正式版ではタブの追加ボタンが再び右端のタブの右側に戻り、直感性が上がりました。
また、今までアプリモードでは右クリックメニュー以外からは一切メニューにアクセスできませんでしたが、

タイトルバーから一部メニューにアクセスできるようになりました。
アプリ上から拡張機能の設定も行えるため、さらに便利になりそうです。

そして今回の最も多きな変更はやはりSSL関連。

SSLが有効となっているサイトの表示が、ついに灰色の鍵マークとなり、Chromeの”SSLは適用されていて当たり前”という考え方がより色濃く感じられるようになりました。

なお、次バージョンのChrome 70 では、ついにhttpサイトへつないだ際に文字入力をすると、赤文字の”保護されていません”表示が行われるように変更されるとのことです。

Google Chrome、HTTPSサイトの「保護された通信」を非表示に 「デフォルトで安全が前提」 – ITMedia エンタープライズ

Chrome 69からHTTPSの表記が変化!Chrome 70以降も要チェック! – 常時SSL Lab.

まだSSL対応をしていない皆さんはお早めに。

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

GitHub、Microsoftに買収される

以前からちらほら噂がでていたMicrosoftによるGitHubの買収ですが、ついに現実のものとなりそうです。

Microsoft、GitHubを買収か──Bloomberg報道 – ITMedia
Microsoft、GitHubを買収か? – Tech Crunch
マイクロソフトがGitHubを買収か、交渉が再開したとの報道 – THE BRIDGE

GitHubはソースコードの分散バージョン管理システムである”Git”をベースに、成果物に対する不具合報告や議論をする機能(Issue)、Gitプロジェクトのフォークなど、多くの人でソフトウェアなどを開発・共有していくのに必要な機能を提供する高機能な開発者コミュニティサービスです。

GitHubが特徴的なのはその料金体系で、GitHub内の自分のプロジェクトのソースを誰でも見えるように設定した場合に限り、無料で機能を利用できる(つまり、ソースを非公開にする場合は有料となる)となっており、オープンソースコミュニティが使いやすい仕組みになっているため、マイナーなものからNode.jsのようなメジャーな物まで今やかなりの数のオープンソースプロジェクトがGitHubを開発スペースとして利用しています。

最近では、GitHub前提で構築されているパッケージ管理システム(自動でGitHubからソースやバイナリをダウンロードし、利用可能な状態にしてくれるツール)も多く、もはやGitHubは”オープンソースの要”といっても過言ではないと思います。

今回、Microsoftに買収される可能性が出てきたということで、個人的に気になるのが”中立性”の問題。
オープンソース業界全体において、”自由な開発”が担保されているかどうか、というのは常にセンシティブな話題です。
例えば、もしもの話ですが、GitHub買収後にMicrosoftが自社の経営戦略にそぐわないGitHub上のプロジェクトを排除しようと思えば恐らくできてしまうでしょうし、そうでなくても、GitHubのサービスをMicrosoftのサービスに特化させたような仕様に変更してしまえば、GitHubを使う他の企業やプロジェクトに対しても不公平が生じてしまう可能性がでてきます。

最も、昔と違って最近のMicrosoftはオープンソースに対してかなり友好的かつ積極的な印象で、Microsoft自身も最近はオープンソースアプリをリリースしたり、自社製品に取り入れたりするようになったので、恐らく上記のようなことが起こらないように慎重な配慮をしていくのではないかと個人的には思っています。

ただ、飽くまでMicrosoftはプロプライエタリな製品がメインな企業なので、今後オープンソース業界全体がどのような反応を見せるのかはとても気になるところです。

個人的には、なんだかんだ言って開発者の多くがWindowsなどのMicrosoftの製品を使ってますし、今までのGitHubにプラスαされる形でより開発しやすくなるような機能が追加されていったらいいな、と思っています。

GitHub

そもそもGitHubとは一体何か? – Tech Crunch

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