Linuxについてのまとめ

  • ガイド ( How to )
  • 閲覧数:1525
  • ありがとう数:0

はじめに

OKWAVEに寄せられたLinuxに関する質問回答をまとめました。

  • LinuxでiPhoneアプリ開発
  • Arch、Puppy、Debian系の違いについて
  • シェルの実行方法
  • プロセス、サービス、デーモンの違い
  • ユーザをwheelグループに追加するのは何のため?
  • LinuxがPC向けに普及しなかった理由

STEP1LinuxでiPhoneアプリ開発

linuxでiphoneアプリ開発

iphoneアプリ開発をしたいと思っているのですが
TitaniumなりSwiftなりObjective-Cなり
iphoneアプリ開発のためのツールはlinux上でも動かせるということですが
結局はXCodeがなければ
ソースコードを書くだけで
プレビューさえもできないということでしょうか。

今からお金を貯めて2ヶ月先くらいにmacを買ってXCodeを使えるようになるとして
今何を準備のために勉強するのが良いと思いますか。


Cとjavascriptは若干理解しています。
この2つは今も本を読みながら勉強中です。
よろしくおねがいします。

>javascriptがあればすぐ始められます。というのは
>とりあえずtitaniumなどでソースを書いてみよう

いえ「Monacaクラウド」です。
https://ja.monaca.io
(クリックするとサイトへ飛びます)
JavaScript(+ HTML5)がOKなら、すぐ始められます。Macは必要ありません。TitaniumはMacが無いと使えません(Xcodeが必要)。

なので、Xcodeを学びたいのか、アプリが作りたいのか、その辺りを整理してから進めた方が良いです。もうアイデアがあってスグにアプリを作って公開したいならMonacaがオススメです♪

Xcodeが近道です(^_^)
親に借金してでも、すぐに始めた方が良いです。ただ、技術者なんて何百万人もいるから、本当に必要なのはアイデアのような気がします...

アイデアはあって、大ヒット間違い無し~であれば、習得が難しいXcodeを今から始めるより、とりあえず簡単に作ってみた方がいいかも?
JavaScript(+ HTML5)がOKなら、すぐ始められます。ジャパンネット銀行の残高確認アプリ(公式)は、コレで作られているとか♪
https://ja.monaca.io
高速シューティングゲームとかは作れなさそうですが(^_^;)

STEP2Arch、Puppy、Debian系の違いについて

Arch、Puppy、Debian系の違いについて

こんにちは。
LINUX初心者です。
いろいろとディストロを試しています。
UbuntuやLinux mintなどはすべてDebianの派生でその系列では同じソフトが使えるようですが、
ArchやPuppyなどの他の系列では利用可能なソフトウェアというのはどうなっているのでしょうか?
Ubuntuなどとは同じものは使えないのでしょうか?
また使えない場合、その充実ぶりはやはりUbunru等からすれば見劣りするものなのでしょうか?

というのもいまManjaroやMacpupなどのディストロが気になっており、
最初からソフトがなければ入れればいいけど、もしソフトの数自体が少なかったら不便だろうなと思っています。

インストールの方法が違うだけで、ソフトウェアは他の
ディストリビューション(CentOS,openSUSE,Puppy・・・)
でも使用(インストール)出来ます。

乱暴な言い方をすると、Linuxの部品が有り、それぞれの目的に
合った部品で組み立てる、これがLinuxディストリビューションかと・・・
従って、部品の一つであるソフトウエアはゼンブに使用出来る図式かと・・・
PuppyにFirefox入れて運用してます。
CentOSも標準がFirefoxだったと思います・・・

おまけ(質問の主旨からは関係無しの回答です)
基本的なドライバーはカーネルに内包されているので、外部のデバイスに
インストールすると動作しているパソコンに小判鮫の如く張り付いて、
OSを動かす、Windowsには出来ない芸当です。

40~120GBの中古のHDDを外付けHDDケースに入れ、色々なLinuxを
インストールしてます、これが実に面白いので病みつきに、なりました。
ドイツ発のKnoppixやopenSUSE(カメレオン)が個性が有って面白いしいです。

プリンターなどのドライバーをメーカーが提供するのは極少の為、
初心者がWindowsの様にデスクトップパソコンとして、運用するには、
敷居が高いですね。
その中でDebian派生のUbuntuは頑張ってますね、デバイスのメーカーが
ドライバーを提供してくれれば、Windowsよ「さらば」なんですが。

Ubuntu派生のLinux Mintがズゥ~ト人気の様です。
UbuntuのUnityからの逃避組と見た目がスッキリした画面からなのかな~~
http://distrowatch.com/dwres.php?resource=popularity

PuppyではUbuntuのdebパッケージでソフトのインストールは可能です。
ArchLinuxでは基本的にArchで使ってるパッケージで。(パッケージじゃないインストールも可能ですが)
でも、ソースからソフトをインストールなら、どのLinuxにもどいつでも(可能なものは)可能なんじゃないかな。

STEP3シェルの実行方法

【Linux】シェルの実行方法を教えて下さい。

【Linux】シェルの実行方法を教えて下さい。

ファイルの中身が#!/bin/bashで始まる拡張子shのシェルがあります。
これを実行するには、どのようなコマンドを打てばよいのでしょうか?

1.rootでログイン。
2.test.shがあるフォルダに、cdで移動する。
3.test.shと入力し、Enterキーを押す。

↑みたいな感じで良いのでしょうか。
テスト用サーバなので、最悪壊しても良いと上司に言われましたが、
なにぶん時間がないため質問させていただきました。
Redhatでバージョンが3か4だったと思います。
よろしくお願いします。

やり方は一通りじゃないので一例です。
普通rootでログインはしませんが、何らかの理由でrootでログインせざるを得ないなら、1は合ってます。2も合ってます。
3は、./test.sh と打ってEnterです。

ファイルの属性にxがあれば、
./test.sh
属性にxが無ければ
sh ./test.sh

STEP4プロセス、サービス、デーモンの違い

プロセス、サービス、デーモンの違い

表題の通りなのですが、プロセス、サービス、デーモンの違いについて教えていだだけますでしょうか。

私の理解ではデーモンとサービスはほぼ同じ。
サービスはいつくかのプロセスによって構成される。

初心者のため全く検討違いかもしれませんが、ご回答をよろしくお願いいたします。

また、プロセス監視と、サービス監視の違い(使い分け)についてもご教示いただけますと助かります。

デーモンはデーモンプロセスのことで、プロセスの一種です。

おおむね、システムの起動から終了まで動き続けます。その他、いくつかの特徴がありますが、省略します。

サービスの定義はOSによって違うでしょうが、Redhat系であれば、/sbin/service コマンドで起動・終了できるように設定されたプロセスのことでしょうか。ほとんどがデーモンプロセスですが、そうでないものもあります。

プロセス監視とは、プロセスが動いているかどうか(場合によってはどれだけリソースを使っているか)を監視することです。
そのうち、サービスであるデーモンプロセスを監視することがサービス監視。

デーモン≒サービス
イコールでは無いので、デーモンで無いサービスもあれば、サービスで無いデーモンもあります。
また、1つのサービスが複数のデーモンプロセスから出来ていることもあります。

・UNIX系のinetdやwindowsのsvchostなどプロセス名とサービスが単純に結びついていないサービスがあります。
・プロセスは起動しているが、ハングアップなどでサービスとして機能していない場合があります

プロセス監視や、サービス監視で、それぞれプロセスの何を監視するのか、サービスの何を監視するのかを決めないと何とも言えません。

STEP5ユーザをwheelグループに追加するのは何のため?

ユーザをwheelグループに追加するのは何のため?

■環境
・Cent OS

■質問1
・ユーザをwheelグループに追加するのは何のためでしょうか?
・sudo コマンドを使えるようにするため?
・sudo コマンドを使わないなら、追加しなくてもよい?

■背景
・新しく作成したユーザを、wheelグループへ追加するべきか判断がつかない
・このユーザは、「apacheユーザのセカンダリグループとして追加するためだけに作ったグループ」用ユーザです

■質問2
・wheelグループ名は固定なのでしょうか?
・例えば、hogeなどに変更可能?

「wheel グループ」とは
UNIX系システム上でスーパーユーザー(root)特権を得ることのできるユーザーの属するグループの名称。
詳しくは、次を参考にしてください。
http://itpro.nikkeibp.co.jp/word/page/10005502/

>・ユーザをwheelグループに追加するのは何のためでしょうか?

既に回答ある通りです。

自ユーザー以外の一般ユーザーアカウントがあって、管理者に昇格できる(suコマンドでrootになれる)アカウントを制限したい場合に使います。
PAMを利用していないと無意味かも知れませんが…。
# CentOSなら普通にPAM使っているでしょう。
あと、pam_wheel.soのモジュールを利用するように変更する必要もあるでしょう。
/etc/pam.d/su の編集が必要でしょうね。
# 該当ファイルにコメント書かれているんで読んでください。英語ですが。

>・sudo コマンドを使えるようにするため?
>・sudo コマンドを使わないなら、追加しなくてもよい?

/etc/pam.d/sudo というのが別にありますから、sudoコマンドではなくあくまでsuコマンドでの制限ですね。
sudoコマンドでの制限は別のファイルでかけることになりますし。
# /etc/pam.d/sudo なりでpam_wheel.soのモジュールを使用するように設定すれば意味はありましょう。

>・新しく作成したユーザを、wheelグループへ追加するべきか判断がつかない

追加したアカウントを外部から操作できる状態で、管理者権限を付与したくない。
というのであれば、PAMでpam_wheel.soを有効にするべきでしょう。
# 当然、本来の管理者はwheelグループに登録。
シェルが使える状態になっていない…というのなら、そこまで厳しくする必要は無いかも知れません。
まぁ、かける手間と効果を考慮すると、外部公開するならwheelグループ使うようにした方がいいんでしょうけどね。
# PAMの設定変更と管理者昇格可能なユーザーのwheelグループへの追加だけでやらないよりはセキュリティ的に安全になるのですから。
# 言いつつ私はやっていませんけど。まぁ後でやっておくか…。

>・このユーザは、「apacheユーザのセカンダリグループとして追加するためだけに作ったグループ」用ユーザです

なら、管理者になる必要も無いかと思われますが…。

>・wheelグループ名は固定なのでしょうか?
>・例えば、hogeなどに変更可能?

man 8 pam_wheel
してください。

STEP6LinuxがPC向けに普及しなかった理由

LinuxがPC向けに普及しなかった理由

今はwindowsが条件付きで格安になる版が出ててLinuxが伸びないのは分かります。
昔(2010年以前やそれよりもっと昔)はどういう欠点があってLinux搭載PCが普及しなかったんですか。

『Linux サポート (特に初心者への)』という、普及のために最も重要で、かつ最も労力のかかる仕事に誰も本格的に踏み込まなかったのが最大要因かと。Linux 開発者はもとより、パソコンメーカも、販売店も、Linux を推していた人たちも。

Windows は開発メーカ (Microsoft) もパソコンメーカーも販売店も、サポートページ・サポートセンター・セットアップサービスを充実させていることを考えれば雲泥の差ですね。

大きくは2つあると思います。

1)使い勝手よりもセキュリティを重視した

Linuxは、それが手本としたUnixと同様の以下のような目標をもって作られていました。

1)堅固なセキュリティ
2)高い信頼性とパフォーマンス
3)マルチユーザ・マルチタスクが効率的に実行できる

でも、セキュリティを高くしようとして、WindowsPCやスマホを使うとき、長くて複雑なパスワードを毎回入力する、さらに1ヶ月おきにパスワードを変更しないといけないってことにすれば、確かにセキュリティは上がりますけど、使いずらくなりますよね?
これはログオン時の話ですけど、プログラム間のデータ通信にしても、「もらうデータはなんでも信頼してますよ。くるものこばまず!」とすれば、プログラムの設計や作成は容易になります。でも、セキュリティをきちんと確保しようとすると、お互いのプログラムのデータ交換が難しくなってしまいます。

Windows Serverのかなり前身であるWindows NTというOSがありました。
このサーバOSは、最初は、Linuxと同じようにセキュリティを重視して開発されていました。
でも、「GUIのパフォーマンスが上がらない!」という問題があって、途中で、OSのセキュリティ設計の方針を甘い方向に変更して、処理スピードアップをはかりました。
この結果、Windows NTは、それなりのスピードで動作するけど、信頼性が低いOSというのが世界的な評価になり、「毎日リブートしないと安定しないサーバOS」という評価になりました。

でも、Linuxは、あくまでも、「セキュリティのルールはきちんと守る!」という原則を貫きとおしたんです。
ただし、それは同時に、「アプリケーションプログラムが作りにくい」「作成されたアプリがユーザにとってつかいずらい」という結果になったと思っています。
まあ、そういう評価のOSを搭載したPCを売ろうとするメーカが現れないのも当然ですよね。

2)ユーザが使えるアプリケーション(特にOffice系のソフト)が無かった

Linuxは無償のOSとして広まりました。
ただし、そのOSで動作するアプリケーションを作るのは、LinuxOSを開発する以上に大変な手間と時間が必要でした。

がんばってどこかの企業がLinxu上で動作するアプリを開発したとしても、Linuxはいくつもの派生OSが存在していたため、Windowsのように、「インストールプログラムを1発走らせればOK!」とはなかなかなりませんでした。

微妙に各Linux間での差異があって、それを素人ユーザが修正・対応させるのは、ちょっと無理な面があったんです。
つまりは、「がんばってアプリを作っても、売るのが難しいし、使うのも難しい!」ってことですね。

となれば、一般のユーザや企業ユーザが「Linux搭載PCよりも、オフィスの動作するWindows搭載PCを選ぶ」ってことになりますよね?

こういう経緯があって、Linuxはなかなか広まらない結果になってしまいました。

でも、サーバOSとしては、広く使われていますので、ほぼすべてのPCやMac、タブレット、スマホユーザが「Linuxを使っている」といえるのが現状だと思います。

とにかくめんどくさい。
何かあるとコマンドを打たなければならない。
Windowsでコマンンドプロンプトが必要なケースなどほとんどない。

90年代の話しですが、当時からLinuxは開発者向けに、人気がありましたし、
windowsより脆弱性がなかったので安定性の面からサーバー機で使っている人たちが
いました。しかしながら、1995年にWINDOWS95が発売され、アップルコンピュータ(MAC)なみにそっくりなGUIが発売されたことで、DOS機にのっかるOSが出たので
メーカー各社がこぞってwindows os搭載のパソコンがじゃんじゃん売れて今日のwindows帝国ができました。マイクロソフトの営業戦略勝ちです。当時、ネットスピードが遅いために、インストールはメディアからでした。CD焼けばいいだけなので、焼きまくって売れば、儲かるのがソフトウェアー会社ですが、性能が良いosをつくればつくるほど、長持ちして人々は買わない。そこで、ウィルスやソフトウェアとは切ってもきれ無い関係になってしまうのです。一方、マイクロソフトのソフトウエアであぐらかいてるうちに、ハードウェアと独自のosを作っているアップルがipodやiphone、ipadなどを開発していまったがために、マイクロソフトは出遅れてしまい、タブレットに移行したOSや価格面でも安くしないといけない状況になりました。Linuxはソフトウェアとして当時電気屋でも売ってましたが、アプリが少ないのも欠点でした。先にマイクロソフトが世界的に広めた営業努力が今日あるものだと思います

Linuxは今でこそGUIがあるものの元々はテキスト(キーボードを叩いて)で操作がメインという形でした。(CUI)
一方、windowsやMACはマウス操作がメインです。(GUI)
設定を変えるのにキーボードを叩いてコマンドを実行したり設定ファイルを書き換えたり・・・
そういった操作はwindowsが何とか使えるというユーザーには無理難題です。
たとえるなら自動車学校で車の運転が仮免合格前の人にサーキットでレースをしろというようなものです。

Linuxに金かけてる企業が、Linuxに対してクライアントとしての機能よりサーバーとしての機能を求めたからではないでしょうか。それを踏まえて、一般的に売られるPCはクライアント向けであれば、そこにLinuxを入れることにメリットは少ないと思います。

windowsXPが出たからでしょうね。
LinuxのGUIは15年たっても動作安定性がwindows98の時代から変わっていませんから、NT系OSをwindowsでデスクトップOSとされてしまったらひとたまりもありません。
情報量が少なかったり、金のかかった宣伝や、優秀なステマ工作がなされないのも大きいですが、最大の理由は低品質だと思います。

PC用のプリンターが使えない、95当時一般的だった内蔵56kモデムが使えない、音が出ない、など周辺機器のドライバーがほとんど供給されなかった。要するに使おうとしても使えなかったのが大きいかと。
プリンターは高価なポストスクリプトプリンター、モデムは外部モデム、サウンドカードは特定メーカー製品とか。これでは一般に普及する筈がないです。印刷はしない、モデムの代わりにLAN、音はでなくてよい、となったらサーバーという事かと。で、サーバー用には普及したのでは。

いまでもそうですが、Linuxはサーバー用途のOSだと考えるべきです。

確かに最近のUbuntuなんかは、インストールもWindows並みに簡単で、インストールするだけでインターネットにもつながりますが、Linuxを知らない人ができるのはそこまでです。それからは、嫌でもLinuxというOSを勉強しなければ何もわからないできないといったことになります。たいていの人はそこで面倒になってやめてしまいます。

一般の人がする場合は、みんなデスクトップ用途ですからLinuxなんて必要性を感じないわけです。サーバーとして使うにしても、いまなら光ファイバーやルーターもいろいろありますから、一般家庭においてはファイルサーバーくらいにしか使い道がないです。

それと今でも、例えば、株取引のアプリとかゲームとか、どうしてもWindowsでしか使えないアプリもありますよね。それも一因だと思います。それから地デジを見るにも、対応した地デジチューナーがほとんどないとか。

それとLinux自体、Ubuntu,Cent OS,Debianとかいろいろ種類が合って、種類が違えばもちろんですが、バージョンが異なるだけで前のアプリが使えなくなるとか、とにかく複雑で面倒な面があります。

Windowsは後方互換性を重視していました。つまりは、以前のバージョンで動作していたアプリが、新しいOSでもできるだけ動作するように対処していたんですね。
ですから、前のOSにバグがあって、バグがあることで動作していた大ヒットゲームがあった場合、そのゲームが新しいOSでも動作するように、OS側で対応していたそうです。

LinuxはOS開発において、良いアルゴリズムというか手法があれば、「古いもの、悪いものは捨て去る。後ろは顧みない!」というスタンスだったと思います。
ですから、バージョンが上がれば、アプリが動作しないのは当たり前って時期がわりと長かったような気がしますね。

特集


感謝指数をマイページで確認!

ピックアップ

ページ先頭へ