ホーム > Linux
Linuxのアーカイブ
Linuxにおけるソースのインストール
- 2009年7月20日 10:58 AM
- Linux
Linux用のソース・コードは、tarによってひとつのファイルにアーカイブされ、gzipやbzip2といったコマンドで圧縮されていることが多い。その場合ファイル名は「ソフトウェア名.tar.gz」や「ソフトウェア名.tar.bz2」などとなる。
以下は、ソースがtarでアーカイブされていることを前提としたソースのインストール方法。
ソースは、FTPサイト、Webサイト、CD-ROMなどから取得(ローカルにコピー)しておく。
ファイルの展開
ソースのアーカイブをローカルにコピーしたら、適当なディレクトリを用意して展開(ひとつにまとめられたファイルを複数のファイルにばらす)する。ディレクトリはコンパイル用に用意しておくと便利。例えば、compileというディレクトリを作成し、そこでtarコマンドを使って展開する。
$ mkdir compile # compileディレクトリを作成
$ cd compile # compileディレクトリへ移動
$ tar zxf foo.tar.gz # foo.tar.gzというtarファイルを展開
(または)
$ tar jxf foo.tar.bz2 # foo.tar.bz2というtarファイルを展開# 拡張子が.gzの場合はgzipで圧縮されているので、tarコマンドに「z」オプションを指定
# 拡張子が.bz2の場合はbzip2で圧縮されているので、「j」オプションを指定
ファイルをチェックする
一般的なソース・アーカイブにはさまざまなファイルが含まれている。INSTALLやREADMEといったものには、そのソフトウェアのコンパイルやインストール方法、注意点が書き込まれている。
configureの実行
多くのソース・アーカイブにはconfigureというシェル・スクリプトが含まれている。ソースをコンパイルする前にこのconfigureスクリプトを実行すると、そのシステム(ユーザがインストールしようとしている)に特有の機能が検出される。そして、ソースをコンパイルするにあたって必要なファイル類が自動的に生成される。
configureは、ソースを展開したディレクトリに含まれている。そのディレクトリで以下のようにconfigureを実行すると、ソースのコンパイルに必要なファイル類を自動的に生成してくれる。
$ ./configure
# configureスクリプトのあるディレクトリを指定する「./」をつけて実行するのを忘れないように
また、configureを実行するにあたっては、オプションを指定することが出来る。通常、ソフトウェアは/usr/localディレクトリ下にインストールされるが、そのインストール先を、たとえば「/usr」に変更したければconfigure実行時に「–prefix=/usr」といったオプションを指定すればよい。
$ ./configure –prefix=/usr
configure実行時に指定可能なオプションは以下のコマンドで確認出来る。
$ ./configure –help
多くの場合は、とくにオプションを指定する必要はなく、configureを単体で実行すれば、もっとも一般的な形でコンパイルを実行することが出来る。
実際にconfigureを実行すると、システムのチェックを行う様子が画面に表示され、数十秒程度で作業は完了する。ここでエラーが表示されなければ次のステップへ進むことが出来る。
ちなみに、この段階で発生するエラーは、コンパイルに必要なファイル類(ライブラリやヘッダ・ファイル)が見つからないために起こることが多い。この場合は、エラーメッセージの内容に従って必要なファイルをインストールする。そして、configureを実行し直す前に「rm config.cache」コマンドを実行する。これにより、前回実行したもの(失敗した)の結果が消去され、またあらたにconfigureを実行できるようになる。
makeの実行
configureが終了したら、makeコマンドを使ってコンパイルをする。
$ make
一般に、上のようにmakeコマンドを実行すると、数多くのソースファイルがコンパイルされる。また、ライブラリ(各ソフトウェアなどで共通で使用される機能を集めたファイル)とのリンク作業が実施される。
この一連の作業手順はMakefileというファイルに書き込まれている。makeは、その内容を読み取って、必要な作業を自動的に実行してくれる。ほとんどの場合、Makefileは前ステップで実行したconfigureによって生成される。
makeを実行した後、エラーが表示されずにすべての作業が終了すれば、コンパイルは完了。コンパイル中に警告メッセージが表示されることがあるが、それは無視してかまわないらしい。(コンパイルにかかる時間はソフトウェアの規模によって異なる)
もしもコンパイルがうまくいかないときは、INSTALLやREADMEといったファイルを確認するとよい。対応方法のなんらかのヒントが書かれていることがある。(例えば、configure実行時に何らかのオプションを指定する必要があるなど)
make installの実行
makeの実行によってコンパイルが終了したら、「make install」を実行し、必要なファイルを実際のファイルシステムにインストールする。(この際にはroot権限が必要となるので、suしておく)
$ su
Password: # rootのパスワードを入力
# make install # インストールを実行
make installを実行すると、インストールの実行プロセスが画面に表示される。何もエラーが表示されずに終了すれば、インストール作業は完了。
aptコマンドの使い方
aptは、deb形式(debian系Linuxシステムのパッケージ)のパッケージを管理するコマンド。
aptを使用するには、あらかじめ
/etc/apt/sources.list
というファイルに、パッケージの取得先(debパッケージが格納されているFTPサイトなど)を列挙しておく必要がある。
Ubuntu 8.04におけるデフォルトのsources.listの内容(パッケージ取得先のURIだけ抜粋)
deb http://jp.archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy main restricteddeb http://jp.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-updates main restricteddeb http://jp.archive.ubuntu.com/ubuntu/ hardy universe
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy universe
deb http://jp.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-updates universedeb http://jp.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy multiverse
deb http://jp.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-updates multiversedeb http://security.ubuntu.com/ubuntu hardy-security main restricted
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted
deb http://security.ubuntu.com/ubuntu hardy-security universe
deb-src http://security.ubuntu.com/ubuntu hardy-security universe
deb http://security.ubuntu.com/ubuntu hardy-security multiverse
deb-src http://security.ubuntu.com/ubuntu hardy-security multiverse
システム全体のアップデート
システムにインストールされているdebパッケージ群をアップデートするには以下を実行。これにより、パッケージをアップデートするために必要な情報が更新される。
$ sudo apt-get update
次に、apt-getコマンドにupgradeというサブコマンドを指定して実行。これで、システムに存在するdebパッケージが最新のバージョンに更新される。
$ sudo apt-get upgrade
パッケージのインストール
apt-getコマンドの引数にinstall パッケージ名と指定することで、指定したパッケージがダウンロードされる。
$ sudo apt-get install パッケージ名
パッケージの削除
apt-getコマンドの引数にremove パッケージ名とすることで、指定したパッケージを削除
$ sudo apt-get remove パッケージ名
パッケージの検索
パッケージの検索や詳細情報の表示には、apt-getではなくapt-cacheというコマンドを使用する。検索の場合は「search」というサブコマンドを指定する。
$ apt-cache search bar
上記の例だと、barが検索ワードで、パッケージ名や説明文に「bar」を含むパッケージが表示される。
詳細情報の表示には、サブコマンドに「show」を指定してapt-cacheを実行する。
$ apt-cache show php5
実行すると、パッケージのバージョン、リリース番号や依存関係のあるパッケージ名、ファイル容量等の詳細情報が表示される。
rootに不可欠な20の主要コマンドについて
一般的なコマンド(cd, cp, ls, mkdirなど)は省く。
suコマンド
ターミナル上のコマンドラインでsuコマンドを実行するとパスワードを求めるプロンプトが表示されるので、ここにrootのパスワードを入力すると、コマンドプロンプトが「#」に変わって、root権限での操作が可能になる。(rootを抜けて一般ユーザーに戻るにはexitコマンド)
単にsuを実行すると、シェルの動作設定は一般ユーザーとしてログインしたときのものが引き継がれる。root用の設定でシェルを利用したい場合は「su -」を実行。
また、引数にユーザーを指定すると(su username)指定したユーザーの権限でシステムを操作出来るようになる。さらに、「su username -c コマンド名」で実行すると、指定したユーザーの権限で指定したコマンドを実行できる。
rpmコマンド
Red Hat系Linuxでパッケージのインストールや削除を行うコマンド。
パッケージ(rpm形式)をインストールするには「rpm -i ファイル名」、アップデートするには「rpm -U ファイル名」、削除するには「rpm -e ファイル名」を実行。
オプション「-v」を指定すると、インストールのプロセスが画面に表示される。
オプション「–force」を指定すると、一度インストールしたパッケージを強制的に再インストールしたり、アップデートすることができる。
yumコマンド
CentOSやRed Hat Enterprise Linuxなどでパッケージ管理を行うコマンド。
リポジトリにアクセスして、パッケージのインストールや交信、削除などを行うパッケージ管理のためのコマンド。
システムに最新のアップデート・パッケージを適用する場合は「yum update」を実行。表示されるアップデートの内容に問題がなければ「y」を入力してアップデートを実行。
新たなパッケージをインストールする場合は「yum install パッケージ名」を実行。パッケージを削除する場合は「yum remove パッケージ名」を実行。
コマンドの前に「-y」オプションを追加すると、実行確認をせずに処理が実行される。ユーザーからの応答が必要なくなるので、スクリプトやcronを使った自動アップデートに利用できる。
apt-getコマンド
Debian系Linuxでパッケージのインストールや削除を行うコマンド。
(Vine系Linuxなど、一部のRed Hat系Linuxでも利用可)
パッケージ(主にdeb形式)をインストールするときは「apt-get install パッケージ名」、削除には「apt-get remove パッケージ名」を実行する。
パッケージをアップデートするときは、まず「apt-get update」と実行してインストールCDやリポジトリからパッケージの最新リストを取得する。その上で「apt-get upgrade」を実行。
利用しているマシンのHDにインストールしたいパッケージがある場合はapt-getではなく、dpkgというコマンドを使う。「dpkg -i ファイル名」と実行すると、ファイル名に指定したパッケージがインストールされる。
useradd(adduser)コマンド
新規にユーザーアカウントを作成するコマンド。
オプションとしてUID(ユーザー番号)や所属グループ、パスワードなどを指定することで、それらの設定を同時に行える。
userdel(deluser)コマンド
ユーザーアカウントを削除するコマンド。
削除したいユーザーアカウントのユーザー名を引数に指定して実行。コマンド実行時に「-r」オプションを指定すると、当該ユーザーのホーム・ディレクトリの内容も削除される。
passwdコマンド
ユーザーアカウントのパスワードを変更するコマンド。
コマンド実行時にユーザー名を指定すると「passwd ユーザー名」そのユーザーのパスワードを変更できる。また、ユーザー名を指定せずに単独でコマンドを実行すると、自分のパスワードを変更出来る。
コマンド実行時に「-x 日数」というオプションを指定すると、指定した日数がパスワードの有効期限となる。(その日数を過ぎると、パスワードの変更を促される)また「-n 日数」と指定すると、指定した日数がパスワードが変更できるようになるまでの最小期限となる。(指定した日数を過ぎないとパスワードを変更できない)
さらに「-l ユーザー名」と指定すると、このユーザーアカウントが一時的に使用出来なくなり、「-u ユーザー名」で、再び使用可能となる。
fsckコマンド
ファイルシステムの検査と修復を行うコマンド。
このコマンドを実行すると、ファイルシステムの管理データに矛盾がないかどうかがチェックされる。もし、システムの終了時にファイルシステムが正常にアンマウントされなかったときは、次のLinux起動時にこのコマンドが自動的に起動する。その際、管理データに問題が見つかれば、修復を試みるかどうかの質問が表示されるので「y」または「n」を入力する。(yes or no)
shutdownコマンド
システムを停止、または再起動させるコマンド。
停止は「shutdown -h now」、再起動は「shutdown -r now」を実行。どちらもnowが指定されているが、これはこのコマンド実行後、すぐにシステムが停止、もしくは再起動をさせるための引数。nowのかわりに秒単位で時間(実行されるまでの)を指定することも可能。
shutdownのかわりに「reboot」コマンドでシステムの再起動、「halt」コマンドでシステムの停止を行うことも出来る。
telinitコマンド
ランレベルを変更するコマンド。「telinit ランレベル(数)」
Linuxシステムでは、0から6までの数字(ランレベルという)を使用することで、システムの動作モードを変更することが出来る。
Red Hat系Linuxの場合、通常はランレベル3(複数ユーザーが同時ログインできて、ログイン画面はCUIの動作モード)または5(複数ユーザーが同時にログインできて、ログイン画面はGUI)に設定されているらしい。
ランレベル1はシングルユーザー・モードと呼ばれ、root以外のユーザーはログイン出来ない状態。なので、システムのメンテナンス作業などはこのモードで行うことが望ましい。
ランレベル0はシステムの停止、ランレベル6は再起動に割り当てられている。したがって、shutdownコマンドの代わりにtelinitコマンドを使用することも出来る。また、runlevelというコマンドを実行すると、現在のランレベルが表示される。
mountコマンド
デバイス(例えばCD-ROM)に作成されているファイルシステムを別のデバイス(例えばハードディスク)のファイルシステムに割り当てるコマンド。
現時点で、ちゃんと理解していないので、また機会があったら追記する。
umountコマンド
ファイルシステムをアンマウントするコマンド。
例えば、/mntディレクトリにマウントされたファイルシステムをあうんマウントするには、「umount/mnt」と実行する。
「umount -a」と実行すると、現在マウントされているファイルシステム全てがアンマウントされる。
killコマンド
プロセスを終了、あるいは制御するコマンド。
「kill [シグナル] プロセス番号」(シグナルはなくても良い)
動作しているプログラムを終了させる。また、動作中のプロセスに対して「シグナル」を送信することで、そのプロセスの動作を変更することも出来る。例えば、SIGSTOPというシグナルを送れば、そのプロセスはいったん動作を停止する。再開させるにはSIGCONTというシグナルを送信すれば良い。
killを実行するには、まずpsコマンドを実行して、制御したいプロセス番号を確認。そして、killの引数にシグナルとプロセス番号を指定して実行すればシグナルがプロセスに送信される。
ソフトウェアの動作異常などで、killを実行してもプロセスが終了しない場合がある。その際は「-SIGKILL」というシグナルを送ることで、プロセスを強制的に終了させることが出来る。
psコマンド
実行中のプロセスを表示するコマンド。
オプションを指定せずにpsのみを実行すると、psを実行したターミナル上で動いている全てのプロセスが表示される。「ps -A」と実行すると、動作していないものも含めたすべてのプロセスを表示する。他にも多くのオプションがある。
modprobeコマンド
カーネル・モジュールをカーネルに組み込んだり、除外したりするコマンド。
主にカーネル・モジュール(例えば、周辺機器用のドライバ・プログラム)を、現在実行中のシステムに組み込むときに使用される。モジュールの組み込みには、insmodというコマンドも使用できるが、依存関係まではフォローしてくれない。その点、modprobeはそうした依存関係を考慮した上で必要なモジュール群を自動的に組み込んでくれるので、とても便利らしい。
仮に「sound」というモジュールを組み込みたければ、単に「modprobe sound」を実行。組み込んだモジュールを取り外したければ-rオプションを指定して「modprobe -r sound」と実行。他にもdepmod、lsmod、insmod、rmmodといったコマンドもある。
chmodコマンド
ファイルのパーミッションを変更するコマンド。
chmodを利用することで、ファイルのパーミッション(利用権限)を設定出来る。
ファイルのパーミッションは「シンボル」と「数値」のふたつの方法で設定出来る。
シンボルによる指定とは、所有者(u)、所有グループ(g)、その他(o)の三種類のそれぞれのユーザーに、読み込み(r)、書き込み(w)、実行(x)のパーミッションを指定する方法。たとえば、所有者には三つすべての権利を与え、他のユーザーにはあたえないとすると、以下のようなコマンドになる。
chmod u+rwx,go-rwx ファイル名
所有者(u)に三つ全ての権限(rwx)を付与(+)し、その他のユーザー(go)にはそれらの権限(rwx)を与えない(-)。
一方、数値を使用して同様の指定を行うには以下のように実行する。
chmod 700 ファイル名
数字「700」は、左から順にファイルの所有者、グループ、その他の設定を意味している。(7は全ての権利を付与、0は全ての権利を与えない、を意味する)
あるディレクトリ内(サブ・ディレクトリも含む)にある全てのファイルを対象にパーミッションを設定する場合は「-R」オプションを使用する。
chmod -R go-rwx ディレクトリ名
上記の例では、所有者以外のユーザーに対して、ここで指定したディレクトリ内にある全て(子ディレクトリ、ファイル)における全ての権利を「与えない」としている。
他にも、スティッキー・ビットの変更とかもあるらしいけど、これは必要になったらまた調べましょう。
chownコマンド
ファイルの所有者を変更するコマンド。
ファイルの所有者やグループを設定するためのコマンドで、例えば、あるファイルの所有者をroot、グループもrootに設定する場合は「chown root:root ファイル名」と実行する。
chownコマンドにおいても、chmodコマンド同様に「-R」オプションが利用出来る。
netstatコマンド
ネットワークの状態を表示するコマンド。
オプションをつけずにnetstatを実行すると、その時点でマシンがどのネットワークへ接続しているかが一覧表示される。オプションによって様々なネットワーク状況を表示することが出来るが「-r」「-n」「-t」「-u」などのオプションを使用することが多い。
-rは、ルーティング・テーブルの内容を表示するオプション。-nは、ネットワーク情報をホスト名ではなくIPアドレスで表示するオプション。-tは、TCP接続のみを表示するオプション。-uは、UDP接続のみを表示するオプション。例えば、システム内部の接続状況は表示せず、インターネットへの接続状況だけを表示するには「netstat -tu」と実行すれば良い。
ifconfigコマンド
ネットワーク・インタフェースを設定、あるいは設定内容を表示するコマンド。
ifconfigをオプションなしで実行すると、現在のネットワーク・インタフェース(Ethernetカードなどのネットワーク・デバイスのこと)の設定内容が表示される。
また、インタフェース名を指定すれば(ifconfig インタフェース名)そのインタフェースの情報だけが表示される。(例えば、一枚目のEthernetカードならeth0と指定)
特定のインタフェースにIPアドレスを設定するときもこのコマンドを利用する。例えば、eth1(二枚目のEthernetカード)に「192.168.0.10/255.255.255.0」というIPアドレスを割り当てたいときは、以下のようにifconfigを実行する。
# /sbin/ifconfig eth1 192.168.0.10 netmask 255.255.255.0
指定したインタフェースを一時的に停止したいときは(例えばeth0)「ifconfig eth0 down」、再開するには「ifconfig eth0 up」と実行する。
routeコマンド
ルーティング・テーブルを設定、あるいは設定内容を表示するコマンド。
ルーティング・テーブルとは、あるマシンがIPパケットを送信するときに、それをどのルータに送れば良いかといった経路を記した情報のこと。
routeに何もオプションを付けずに実行すると、現在のルーティング・テーブルが表示される。また、「-n」オプションを付けて実行すると、ルーティング・テーブルのホスト名がIPアドレスで表示される。
ルーティング・テーブルに新しい経路を設定したいときは、オプションとして「add」、削除したいときは「del」を指定して、routeを実行してやればよい。
root / スーパー・ユーザーについて
- 11:46 AM
- Linux
- root(UNIX系システムでの慣習的な呼称)
- スーパー・ユーザー(他のシステムでも通用する呼称)
Linuxではどちらも意味は同じで、すべてのファイルやコマンドを実行できる「万能」なユーザーのことを指す。(システム管理用のコマンドを実行できるLinuxシステムの管理者)
rootには、すべてのファイルやディレクトリにアクセスする権限があるので、ちょっとしたミスが取り返しのつかないシステムの破壊に繋がる場合がある。なので、通常の使用はもちろん、管理作業のためにログインするときも、最初からrootとしてログインしないようにする。
まず、一般ユーザーのアカウントでログインし、必要な時にのみ(root権限でないと作業出来ないとき)suというコマンドを使用してroot権限を取得するのが一般的。
su(substitute user)コマンド
一時的に他のユーザーの権限を得ることが出来るコマンド。引数をつけずに(suのみ)実行すると、一時的にrootの権限を得ることが出来る。一般ユーザーに戻るときはexitコマンドを実行。
suを実行するケース
マシンの終了・再起動時
マシンの電源をオフにしたり再起動したりするときに使うshutdownコマンドを利用。このコマンドは基本的にroot権限で実行する。
ソフトウェアの実行時
通常、サーバ・ソフトウェアはマシンの起動時に自動的に実行される。ただし、自動的に実行されないものもあるので、それらを使用するときにはroot権限が必要なこともある。
ソフトウェアのインストール時
ソフトウェアのインストール、インストール後の動作設定にroot権限が必要。
システムのアップデート時
システムのアップデートを行うには、システム領域に書き込まれたファイルを変更するので、これまたroot権限が必要となる。
ソフトウェアの設定変更時
インストールしたソフトウェアの設定を変更するにはシステム領域に書き込まれたファイルを変更する必要があるので、これもroot権限が必要。
ハードウェアの増設・変更時
ハードディスクを増設するときなどはコマンドを使って初期化したり、設定をするのにroot権限が必要。
アカウント管理時
システムに新しいユーザーを追加したり削除したり、パスワードを変更するときにはroot権限が必要。
ログの閲覧時
サーバの動作が記録されるログ・ファイルを閲覧するにはroot権限が必要。
データのバックアップ時
ファイルやディレクトリには特定のユーザーにしか利用権限が与えられていないものもある。おくした内容も含めてバックアップするにはroot権限が必要。
傷害の修復時
システムに何らかの異常が発生(検出)した場合、それを修復するのにroot権限が必要。
Linux(Ubuntu Server 8.10) でファイルを探す(例えば php.ini)
Linux で(この場合は Ubuntu Server version 8.10)ファイル名からファイルを探す場合。
先にファイル一覧のデータベースを更新しておく
$ sudo updatedb
locate を使って、ファイルを探す(例として、この場合は php.ini)
$ locate php.ini
/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini
/usr/share/doc/php5-common/examples/php.ini-dist
/usr/share/doc/php5-common/examples/php.ini-paranoid
/usr/share/doc/php5-common/examples/php.ini-recommended
/usr/share/php5/php.ini-dist
/usr/share/php5/php.ini-dist.cli
これのおかげで php.ini が php5/apache2 配下と、php5/cli 配下の二箇所にあることがわかったけど、詳しいことはよく分からない。いまんところ。
(なんで二つあるのか、違いはあるのか、対象が違うのか、内容は違うのか、違うんだったらどこが違うのか等)
scpコマンドを使用してファイルをコピーする
Leopard の ローカルにある .vimrc を scp コマンドでリモートの Ubuntu にコピーする。
* scp = secure copy らしい(ssh による暗号化されたコピーを行うらしい)
続きを読む
自分のIPアドレスを調べる
- 6:13 PM
- Linux
Mac OSX に入れている VMware fusion 内の仮想マシン Ubuntu に、Mac の Terminal から ssh でリモート操作してみたくて、んで知ったこと。
あらためて、俺はコンピュータのこともインターネット(通信)のことも全然知らないなと痛感。
続きを読む
debパッケージの取得先について
apt を利用する際には、あらかじめ以下のファイルにパッケージの取得先を記述しておく必要があるらしい。でも、Ubuntu 8 においては、とくにそういうことする必要なかった。(でも、これから先、追記していく必要があるのかもしれない)
/etc/apt/sources.list
続きを読む
aptコマンド
Ubuntu に MySQL をインストールする際に、もう不要になるパッケージについて、削除はこうするといいよってなメッセージが出ていたので、これも一応メモ。(apt-getについてのメモ)
続きを読む
ホーム > Linux
- 検索
- フィード