プログラムの追加・削除・更新(パッケージ管理) パッケージ管理 パッケージ管理ツール Vine Linuxでは RPM(RedHat Package Manager)形式のパッケージ管理システムを採用しています。 これにより、個々のパッケージのインストールや削除などを容易に行うことができます。 本節では、APTとRPMを用いたrpmパッケージの管理方法を簡単に説明します。 rpmパッケージの操作方法は大きくわけて、 apt-getコマンドでCUI操作 rpmコマンドでCUI操作 X Window上でGUI(Synapticなど)を用いる という方法があります。 本章では上記のそれぞれのapt-getコマンドとrpmコマンドを用いたパッケージの操作方法を解説します。 man apt-getman rpm、また apt-get --helprpm --help で、apt-getコマンドや rpmコマンドのいろいろなオプションを知ることができます。 参照 困ったときには 注意事項 rpmパッケージにはすぐにインストールできるバイナリパッケージと、 プログラムのソースコードで提供されているソースパッケージがあります。 ソースパッケージを入手した場合は、後述する方法でバイナリパッケージに変換する必要があります。 パッケージをインストール、アップデート、アンインストールするときは、ルート(root)ユーザで行います。 しかし、ソースパッケージからバイナリパッケージに変換する場合には、一般ユーザで行います。 これはバイナリパッケージを構築する際にファイル操作を必要とするため、誤操作などによって、既存のシステムを壊さないようにするためです。 システム管理者rootの権限が必要な操作はプロンプトを #で表しています。 また、一般ユーザで行える操作はプロンプトを $で表しています。 プロンプトが $になっているところを rootユーザで実行することはお勧めできません。 rpmパッケージ Vine LinuxのWWWページからアップデートされたソフトウェアや VinePlusをダウンロードすることができます。 ネットワークにつながっている環境で、apt-getコマンドを用いれば自動的にダウンロードとパッケージの更新を行うことができます。 これらのソフトウェアはrpmパッケージとなっています。パッケージの名前付けの規則は、 (パッケージ名)-(バージョン)-(リリース番号).(アーキテクチャ).rpm となっています。 (バージョン)はソフトウェアのバージョンを表し、(リリース番号)はパッケージ作成に関する管理番号です。 Vine Linux固有のパッチが入っている場合は、2vl3のように vl(Vine Linuxリリース番号)の形式になっています。 (アーキテクチャ)には src, noarch, i386, ppcなどが入ります。 ソースパッケージ(ソースコードを含んだパッケージ)には srcが付けられます。 また機種(CPU)に依存しないパッケージには noarchが付けられます。 一方、i386などは機種に依存したパッケージです。 通常、インテル系のPCでコンパイルされたバイナリのパッケージには i386と付いていますが、i586などとなっている場合もあります。 また、Power PC (Power Macintosh)上でコンパイルされたバイナリには ppcが付きます。 APT - Advanced Package Tool APTを使うための準備 APTはパッケージの取り寄せ、インストール、アップグレード、検索などを行う便利なアプリケーションです。 rpmに対してパッケージ間の依存関係や競合関係を解決してくれるためOSのバージョンアップを行うときにも利用できます。 APTはVine Linux 2.1.5から正式採用になっており、それ以降のバージョンでは標準でインストールされています。 もし、APTをアンインストールした場合は Vine LinuxのインストールCDからrpmコマンドを用いてインストールする必要があります。 rpmコマンドの使い方は次節を御覧下さい。CDのマウントに関しては ファイルシステム の マウント を参照してください。 APTがインストールされていると、ファイル /etc/apt/sources.listがあるはずです。 このファイルには apt-line と呼ばれるパッケージを取り寄せる場所が記述されています。 「#」で始まっている行はコメントになっています。 標準では、アップデートパッケージのみをvinelinux.orgからダウンロードするようになっています。 APT全体の設定は、ファイル /etc/apt/apt.conf に書かれています。 また、このファイルで変更された設定を含め、他すべての設定は、apt-config dump で参照できます。 表示が多くなるので apt-config dump | less のようにページャ less を用いると便利です。(参考:) ネットワークからダウンロードする場合 ネットワークに接続されている場合は、ネットワーク上のサーバからダウンロードして、 インストール/アップグレードすることができます。 ただし、ダイアルアップなどの低速なネットワークでOSのバージョンアップを行うと、非常に時間がかかりますので注意して下さい。 ファイル /etc/apt/sources.listの標準設定では、vinelinux.orgのみからパッケージをダウンロードするようになっています。 もし、vinelinux.org のサーバからダウンロードできない場合など、別のサイトからダウンロードする場合は、このファイルを修正して下さい。 たとえば、Ring Server Projectからもパッケージを取得できる様にしたい場合は、以下の様に行頭の#を削除します。 # (ring mirror) rpm [vine] http://www.t.ring.gr.jp/pub/linux/Vine/apt 4.1/$(ARCH) main plus updates nonfree rpm-src [vine] http://www.t.ring.gr.jp/pub/linux/Vine/apt 4.1/$(ARCH) main plus updates nonfree apt-line の変更は Synaptic でも行えます。 Synapticによるパッケージ管理リポジトリの設定を参照してください。 CD-ROMから利用する場合 標準ではネットワークにアクセスします。APT対応のCD-ROM等を入手している場合は、 apt-cdrom コマンドを使用します。 デバイス(CD-ROMドライブ等)とマウントポイントについて apt-cdrom は、Vine Linux 4.0 から、利用するデバイス(CD-ROMドライブ等)の情報を /etc/fstab ではなく /etc/apt/apt.conf から取得するようになりました。標準(apt.confに特に記述していない状態)で /dev/cdrom を利用するようになっているので、特に設定する必要はありません。 マウントポイントは標準で /mnt/cdrom に設定されています。これは Vine Linux 4.0 以前と同じです。 ただし、インストール直後には /mnt/cdrom は作成されていませんので、root権限で次のようにしてディレクトリを作成してください。 $ sudo mkdir -p /mnt/cdrom それぞれ、変更したい場合には apt-cdrom --helpman apt.conf を参照してください。 apt-cdrom は man の情報よりも --help の方が新しくなっていますので、異なる説明となっている部分については --help の記述を利用してください。 マウントポイントを一時的に変更したい場合は apt-cdrom コマンドの オプションを用いて apt-cdrom -d /mnt/cdrom2 add のようにできます。 デバイスやマウントポイントの設定を変更する場合 CDデバイスを /dev/cdrom-hdd に、mount point を /media/cdrom2 にするには /etc/apt/apt.conf の Acquire {} の部分に下のようにそれぞれ書き加えます。 Acquire{ CDROM::Copy "true"; Retrys "0"; CDROM::Mount "/media/cdrom2"; CDROM::Device "/dev/cdrom-hdd"; } $ sudo apt-cdrom add CDROM のマウントポイントとして以下を使用します: /mnt/cdrom/ CDROM デバイスとして以下を使用します: /dev/cdrom CDROM をアンマウントしています CDROM をドライブに挿入してエンターキーを押して下さい CDROM を挿入し、エンターキーを押します。 CDROM をマウントしています CDROM の検出中.. [1a64e79571777b6abf752a0d4f283067-2] CDROM のインデックスファイルのスキャン中..検出 1 パッケージインデックス 0 ソース インデックス この DISK に名前をつけてください。例) 'Distribution Disk 1': Vine Linux 4.1 と入力してエンターキーを押します。 この DISK は: 'Vine Linux 4.1' Reading Indexes... 完了 Writing new source list この DISK の sources.list のエントリ: rpm cdrom:[Vine Linux 4.1]/ Vine main この処理を他の CDROM のためにくり返します。 apt データベースにそのCD-ROMに含まれるパッケージの情報が登録されます。 登録されたあとは CD-ROM は抜いておいて構いません。 VinePlusのCDやソースCDを登録したい場合は同様の手順をおこないます。 CD-ROM の登録を取り消すには apt-cdrom で CD-ROM を登録した場合、ファイル /etc/apt/sources.listrpm cdrom:[ラベル(DISKに付けた名前)]/ Vine main という行が追加されます。 また、ファイル /var/state/apt/cdroms.listCD::CDの識別情報 "ラベル"; と記述されます。 上の場合では、/etc/apt/sources.list には rpm cdrom:[Vine Linux 4.1]/ Vine main と、また、/var/state/apt/cdroms.list には CD::1a64e79571777b6abf752a0d4f283067-2 "Vine Linux 4.1"; と書かれます。 一時的に、登録したCD-ROM や CD-ROM ドライブが使えないといったような場合には、ファイル /etc/apt/sources.listrpm cdrom:[ラベル(DISKに付けた名前)]/ Vine main という行を # rpm cdrom:[ラベル(DISKに付けた名前)]/ Vine main のように、行頭に # を付けることでコメント(無効)にしてください。 これによって、CD は利用されなくなります。 もとに戻す(行頭の # を消す)と再び CD を利用できるようになります。 apt-cdrom add とすれば /etc/apt/sources.list に再び記述されるので、この行を消してしまってもかまいません。 また、CD-ROM が利用できなくなった場合など、CDの情報を完全に消去するという場合には、ファイル /var/state/apt/cdroms.listCD::CDの識別情報 "ラベル"; という行を消すか、ファイル /var/state/apt/cdroms.list を削除してください。 CD につけたラベルの情報も消すことができます。 このファイル(/var/state/apt/cdroms.list)も、apt-cdrom add とすれば再び作成されます。 CD-ROMの取扱いに関する注意 CD-ROM をドライブに入れたままにして電源を切った場合、次回PCの電源を入れた時にインストーラが起動してしまう場合があります。 APT対応のメディア apt 対応の CD-R などを作成するには、 apt のパッケージに含まれている genbasedir コマンドで パッケージインデックスを作成するなどの特別な処理が必要になります。 この文書ではこうしたメディアの作成方法は扱いません。 apt-get をおこなったときに必要なパッケージが CD-ROMにある場合は以下のようにCD-ROMの挿入をうながされますので、 指示されたCD-ROMを挿入してエンターキーをおすことでapt-get は続行されます。 $ sudo apt-get install zsh [sudo] password for username: パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下のパッケージが新たにインストールされます: zsh アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個 0B/2398kB のアーカイブを取得する必要があります。 展開後に 5387kB のディスク容量が追加消費されます。 メディア変更: 'Vine Linux 4.1' とラベルされた CDROM を ドライブ '/mnt/cdrom/' に挿入してエンターキーを押して下さい 取得:1 cdrom://Vine Linux 4.1 Vine/main zsh 1:4.2.5-0vl1 [2398kB] 2398kB を 34s 秒で取得しました (69.1kB/s) 変更を適用しています... 準備中... ########################################### [100%] 1:zsh ########################################### [100%] 完了 パッケージ情報の更新 まず、インストールされているパッケージ情報と新しいパッケージの情報のデータベースを更新するために apt-get updateを用います。 apt-getコマンドを用いて、apt-line 上のパッケージ情報を取得し APT 用のデータベースを構築します。 この段階ではまだパッケージの更新は行われません。 sources.list の変更をした場合や、前回の apt-get から数時間以上たった場合はパッケージ情報が更新されていますので、必ず更新の操作をして下さい。 アップデートパッケージを updates.vinelinux.org からダウンロードする場合、以下のように表示されます。 $ sudo apt-get update [sudo] password for username: 取得:1 http://updates.vinelinux.org 4.1/i386/base/pkglist.updates [14B] 取得:2 http://updates.vinelinux.org 4.1/i386 release.updates 無視 http://updates.vinelinux.org 4.1/$(ARCH)/base/mirrors 取得完了: 14B を 0s (80B/秒) ファイル依存を処理しています... 完了 パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 apt-getコマンドによるパッケージのアップグレード 既にインストールされているパッケージのアップデートを行なうには apt-get upgradeを用います。 この場合は、パッケージが他のものと入れ替わる場合や、消えると言った場合には保留されますので、完全なアップグレードをすることはできません。 $ sudo apt-get upgrade [sudo] password for username: パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下のパッケージがアップグレードされます: emacs emacsen-common 2 個のアップグレードパッケージ, 0 個の新規パッケージ, 0 個の削除/リプレースパッケージ, 0 個の保留パッケージがあります。 取得パッケージ: 21.0MB のアーカイブを取得します。インストール後は 564kB が使用されます。 続行しますか? [Y/n] オプションあるいはapt-getの後に指定すると、実際にはアップグレード動作は行ないません。 通常は、まずこのオプションを指定して、どのパッケージがアップグレードされるか確認してから行うと良いでしょう。 パッケージが入れ替わる場合などの依存関係の解決が必要な場合は、 を用います。OS全体のバージョンアップを行う場合はこちらを使用します。 $ sudo apt-get dist-upgrade apt-getコマンドによるパッケージのインストール 特定のパッケージをインストールしたりアップグレードする場合は、 apt-get installを用います。 $ sudo apt-get install (パッケージ名) パッケージ名には複数のパッケージを空白で区切って指定することができます。 パッケージに依存関係がある場合は、自動的に解決され必要となるパッケージもインストールやアップグレードされます。 例えば、パッケージxemacsの場合は、以下のようになります。 $ sudo apt-get install xemacs [sudo] password for username: パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下の追加パッケージがインストールされます: xemacs-sumo 以下のパッケージが新たにインストールされます: xemacs xemacs-sumo 0 個のアップグレードパッケージ, 2 個の新規パッケージ, 0 個の削除/リプレースパッケージ, 32 個の保留パッケージがあります。 取得パッケージ: 0B/21.0MB のアーカイブを取得します。インストール後は 61.0MB が使用されます。 続行しますか? [Y/n]y RPM コマンドを実行しています (-U)... xemacs-sumo ################################################## xemacs ################################################## 以下省略 apt-getコマンドによるパッケージの削除 特定のパッケージを削除する場合は、apt-get removeを用います。 $ sudo apt-get remove (パッケージ名) パッケージ名には複数のパッケージを空白で区切って指定することができます。 apt-getコマンドによるアーカイブファイルの削除 apt-getコマンドにより取得されたrpmファイルは、/var/cache/apt/archives/以下に蓄積されていきます。 これらのファイルを一括して削除する場合は、を用います。 $ sudo apt-get clean apt-cacheコマンドによるパッケージ情報の表示 パッケージの情報を知りたい場合は、apt-cacheコマンドを用います。 man apt-cacheapt-cache --help で使い方を見ることができます。参照 困ったときには まず、で情報を収集しておきます。 $ sudo apt-cache gencaches apt-getコマンドで update,upgrade,install,remove などを実行した場合には apt-cache gencaches と同じ処理が行われるので、apt-cache gencaches を頻繁に実行する必要はありません。 個別のパッケージ情報を知りたい場合は、apt-cache show (パッケージ名)を用います。apt 自身の場合、以下のように表示されます。 $ apt-cache show apt Package: apt Section: Applications/Administration Installed Size: 2523758 Packager: Daisuke SUZUKI <daisuke@linux.or.jp> Version: 0.5.15lorg3.2-0vl8.1 Pre-Depends: fileutils, ldconfig, sed, /bin/sh, /bin/sh Depends: rpm >= 4.0.4, gnupg, bzip2, readline >= 4.3, vine-keyring, /bin/sh, /bi n/sh, libapt-pkg-libc6.3-5.so.2, libbz2.so.1, libc.so.6, libc.so.6(GLIBC_2.0), l ibc.so.6(GLIBC_2.1), libc.so.6(GLIBC_2.1.3), libc.so.6(GLIBC_2.2), libc.so.6(GLI BC_2.2.3), libc.so.6(GLIBC_2.3), libc.so.6(GLIBC_2.3.4), libdl.so.2, libdl.so.2( GLIBC_2.0), libdl.so.2(GLIBC_2.1), libgcc_s.so.1, libgcc_s.so.1(GCC_3.0), libm.s o.6, libm.so.6(GLIBC_2.0), libncurses.so.5, libpopt.so.0, libreadline.so.5, libr pm-4.4.so, librpmdb-4.4.so, librpmio-4.4.so, libstdc++.so.5, libstdc++.so.5(GLIB CPP_3.2), libxml2.so.2, libz.so.1 Provides: libapt-pkg-libc6.3-5.so.2, apt = 0.5.15lorg3.2-0vl8.1 Architecture: i386 Size: 1007108 MD5Sum: e250f6a02202d097fb536b19c3d494f9 Filename: apt-0.5.15lorg3.2-0vl8.1.i386.rpm Summary: RPM を扱える Debian のパッケージツール apt(Advanced Packaging Tool) Description: これはrpm対応の apt です。 apt-getは簡単かつ安全にパッケージ のアップグレード,インストールがおこなえるコマンドです。 apt は依存関係の解決、インストール順序の補完などさまざまな特 徴があります。 Group: Applications/Administration であるべきところが Section: Applications/Administration となっていますが、これは現在の仕様です。 パッケージの依存関係などを知りたい場合は、apt-cache showpkg (パッケージ名)を用います。 $ apt-cache showpkg apt Package: apt Versions: 0.5.15lorg3.2-0vl8.1.i386(/var/state/apt/lists/Vine%20Linux%204.1_Vine_base_pkgl ist.main)(/var/lib/rpm/Packages) 0.5.15lorg3.2-0vl7.i386(/var/state/apt/lists/updates.vinelinux.org_apt_4.1_i386_ base_pkglist.main) Reverse Depends: tiny-buildfarm,apt 0.3.19.cnc.52 cron-apt,apt apt-listchanges,apt 0.5.4.cnc.9 apt-cron,apt synaptic,apt 0.5.15lorg3.2-0vl7 apt-devel,apt 0.5.15lorg3.2-0vl7 synaptic,apt 0.5.5 Dependencies: 0.5.15lorg3.2-0vl8.1 - fileutils (0 (null)) ldconfig (0 (null)) sed (0 (null)) r pm (2 4.0.4) gnupg (2 (null)) bzip2 (2 (null)) readline (2 4.3) vine-keyring (2 (null)) /bin/sh (2 (null)) /bin/sh (2 (null)) /bin/sh (2 (null)) /bin/sh (2 (nul l)) libapt-pkg-libc6.3-5.so.2 (2 (null)) libbz2.so.1 (2 (null)) libc.so.6 (2 (nu ll)) libc.so.6(GLIBC_2.0) (2 (null)) libc.so.6(GLIBC_2.1) (2 (null)) libc.so.6(G LIBC_2.1.3) (2 (null)) libc.so.6(GLIBC_2.2) (2 (null)) libc.so.6(GLIBC_2.2.3) (2 (null)) libc.so.6(GLIBC_2.3) (2 (null)) libc.so.6(GLIBC_2.3.4) (2 (null)) libdl .so.2 (2 (null)) libdl.so.2(GLIBC_2.0) (2 (null)) libdl.so.2(GLIBC_2.1) (2 (null )) libgcc_s.so.1 (2 (null)) libgcc_s.so.1(GCC_3.0) (2 (null)) libm.so.6 (2 (null )) libm.so.6(GLIBC_2.0) (2 (null)) libncurses.so.5 (2 (null)) libpopt.so.0 (2 (n ull)) libreadline.so.5 (2 (null)) librpm-4.4.so (2 (null)) librpmdb-4.4.so (2 (n ull)) librpmio-4.4.so (2 (null)) libstdc++.so.5 (2 (null)) libstdc++.so.5(GLIBCP P_3.2) (2 (null)) libxml2.so.2 (2 (null)) libz.so.1 (2 (null)) 0.5.15lorg3.2-0vl7 - fileutils (0 (null)) ldconfig (0 (null)) sed (0 (null)) rpm (2 4.0.4) gnupg (2 (null)) bzip2 (2 (null)) readline (2 4.3) vine-keyring (2 (n ull)) /bin/sh (2 (null)) /bin/sh (2 (null)) /bin/sh (2 (null)) /bin/sh (2 (null) ) libapt-pkg-libc6.3-5.so.2 (2 (null)) libbz2.so.1 (2 (null)) libc.so.6 (2 (null )) libc.so.6(GLIBC_2.0) (2 (null)) libc.so.6(GLIBC_2.1) (2 (null)) libc.so.6(GLI BC_2.1.3) (2 (null)) libc.so.6(GLIBC_2.2) (2 (null)) libc.so.6(GLIBC_2.2.3) (2 ( null)) libc.so.6(GLIBC_2.3) (2 (null)) libc.so.6(GLIBC_2.3.4) (2 (null)) libdl.s o.2 (2 (null)) libdl.so.2(GLIBC_2.0) (2 (null)) libdl.so.2(GLIBC_2.1) (2 (null)) libgcc_s.so.1 (2 (null)) libgcc_s.so.1(GCC_3.0) (2 (null)) libm.so.6 (2 (null)) libm.so.6(GLIBC_2.0) (2 (null)) libncurses.so.5 (2 (null)) libpopt.so.0 (2 (nul l)) libreadline.so.5 (2 (null)) librpm-4.4.so (2 (null)) librpmdb-4.4.so (2 (nul l)) librpmio-4.4.so (2 (null)) libstdc++.so.5 (2 (null)) libstdc++.so.5(GLIBCPP_ 3.2) (2 (null)) libxml2.so.2 (2 (null)) libz.so.1 (2 (null)) Provides: 0.5.15lorg3.2-0vl8.1 - apt libapt-pkg-libc6.3-5.so.2 0.5.15lorg3.2-0vl7 - apt libapt-pkg-libc6.3-5.so.2 Reverse Provides: apt 0.5.15lorg3.2-0vl7 apt 0.5.15lorg3.2-0vl8.1 ソースパッケージの情報を知りたい場合は、apt-cache showsrc (パッケージ名)を用います。 一般的に package-devel-(バージョン)-(リリース番号).(アーキテクチャ).rpm のソースパッケージは package-(バージョン)-(リリース番号).src.rpm ですが、このように -(バージョン) より前の部分の名前が異なる場合は では表示されません。 $ apt-cache showsrc apt Package: apt Section: Applications/Administration Installed Size: 1119612 Packager: Daisuke SUZUKI <daisuke@linux.or.jp> Version: 0.5.15lorg3.2-0vl8.1 Architecture: i386 Size: 1042699 MD5Sum: a670ca043b1668c96e6f5d7496c08047 Filename: apt-0.5.15lorg3.2-0vl7.src.rpm Summary: RPM を扱える Debian のパッケージツール apt(Advanced Packaging Tool) Description: これはrpm対応の apt です。 apt-getは簡単かつ安全にパッケージ のアップグレード,インストールがおこなえるコマンドです。 apt は依存関係の解決、インストール順序の補完などさまざまな特 徴があります。 apt-cacheコマンドによるパッケージの検索 apt-cache search (キーワード)を用いると、パッケージの検索ができます。 キーワードを元にパッケージを検索することができます。 検索には日本語のキーワードも使用できます ただし、日本語のキーワードよりも英語のキーワードで検索したほうが、多くのパッケージを探せます。 参照 2.4. GUI環境での日本語入力 「オフィス」というキーワードを含むパッケージを検索してみます。 $ apt-cache search オフィス koffice - KDE 向け統合オフィススイート openoffice.org - OpenOffice.org オフィススイート openoffice.org-i18n - OpenOffice.org 国際化対応パッケージ openoffice.org-libs - OpenOffice.org 共有ライブラリ このようにkofficeopenoffice.orgといったパッケージがあることがわかります。 さらに詳細を知りたい場合は、オプションを付けて実行します。 検索にひっかかったパッケージそれぞれについてと同じように出力されます。 パッケージの含むすべてのファイル名が検索対象になっているわけではありませんが、 ライブラリの名前など具体的なファイル名で検索してもパッケージ名を調べることができる場合もあります。 「ld-linux.so.2」というキーワードを含むパッケージを検索してみます。 $ apt-cache search ld-linux.so.2 glibc - GNU libc ライブラリ このようにglibcというパッケージがあることがわかります。 トラブルシューティング apt-get update が失敗します。 $ sudo apt-get update [sudo] password for username: 取得:1 http://updates.vinelinux.org 4.1/i386 release [2255B] エラー http://updates.vinelinux.org 4.1/i386 release File was not signed with a known key. Check if the proper gpg key was imported to your keyring. 2255B を 0s 秒で取得しました (7707B/s) 以下の取得に失敗しました: http://updates.vinelinux.org/apt/4.1/i386/base/release File was not signed with a known key. Check if the proper gpg key was imported to your keyring. パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 E: いくつかのインデックスファイルのダウンロードに失敗、無視、あるいは古いものが 使用されました。 これは PC の時計が狂っていることが原因で発生するエラーです。 Vine Linux をインストールするときに、時計の確認をしなかった、そして日時が大幅に狂ったままインストールしてしまった、という場合には、時計が狂っていることでなんらかの悪影響が出ている可能性もあるので、時計を修正したうえで、Vine Linux そのものをインストールし直したほうがいいかもしれません。 時計を修正しても、電源を切って入れ直すとまた狂っているという場合には、マザーボードの電池が消耗しているということも考えられます。その場合には、電池を交換する必要があるかもしれません。パソコンやマザーボードの取り扱い説明書などを確認してください。 PC の時計を確認します。 $ date 1970年 1月 1日 日曜日 01:23:45 JST 狂っていたら date コマンドで修正します。 date 月日時分西暦年 という書式です。 2007年5月22日12時34分にするには次のようにします。 $ sudo date 052212342007 2007年 5月 22日 月曜日 12:34:00 JST 時計が修正され、年月日曜日時分が出力されます。 apt-get update を実行して正常に動作するか確認してください。 apt-get コマンドが終了しません。 apt-get コマンドや rpm コマンドでパッケージのインストールやアンインストールなどを行ったときに 変更を適用しています... 準備中... ########################################### [100%] といった状態で停止して、いつまで待っても処理が終わりません。 synaptic が起動していないか確認して、起動していたら synaptic を終了してください。 synaptic でパッケージの更新やインストールやアンインストールなど、なんらかの作業を行った後、synaptic を起動したままにしていると、rpm のデータベース(どのパッケージがインストールされているかなどの情報)を synaptic がロックしたままになっていて、他のコマンドは順番待ちの状態になります。 synaptic を終了すると、ロックが解除され、apt-get コマンドや rpm コマンドが続きの処理を行うことができるようになり、コマンドの処理が再開します。 パッケージが見付かりません。 $ sudo apt-get install firefox パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 E: パッケージ firefox が見付かりません 一度も apt-get update を実行していない状態では、用意されているパッケージであっても見付かりません。 apt-get installapt-get upgrade を実行する前には、 を実行してください。 パッケージの名前を間違っていないか確認したり、 を実行してください。なお、パッケージが用意されていない場合もあります。 コマンドやオプションが長すぎて入力が大変です。 Vine Plus にある zsh のような高度な補完ができるシェルを利用すれば、コマンドの後のオプションなども TABキー 等で補完することができます。 また、標準の bash でも alias や function を利用してある程度入力を簡単にすることができます。function や alias などについては man bash などを参照してください。 筆者は、~/.bashrc に次のような function を定義して利用しています。 # set aliases として alias がいくつか定義されているその下に # set functions などとして下のようなものを追加してみるといいかもしれません。 ~/.bashrcに書いておくfunctionの例 # functions for apt,rpm function aptsearch () { /usr/bin/apt-cache search "$1" ;} function aptsearchname () { /usr/bin/apt-cache search --names-only "$1" ;} function aptsearchpkgnames () { /usr/bin/apt-cache pkgnames "$1" ;} function aptshow () { /usr/bin/apt-cache show "$1" ;} function aptshowpkg () { /usr/bin/apt-cache showpkg "$1" ;} function aptshowsrc () { /usr/bin/apt-cache showsrc "$1" ;} function aptcategory () { /usr/bin/apt-cache showpkg "$1" | /bin/grep -e "Package" -e "/lists/" ;} function aptsrc () { /usr/bin/apt-get source "$1" ;} function aptsrc-d () { /usr/bin/apt-get source -d "$1" ;} function slrpmqf () { /usr/bin/slocate "$1" | /usr/bin/xargs rpm -qf ;} function whichrpmqf () { which "$1" ; which "$1" | /usr/bin/xargs rpm -qf ;} function rpmlogh () { /bin/rpm -q --changelog "$1" | /usr/bin/head ;} function rpmlogh-p () { /bin/rpm -q --changelog -p "$1" | /usr/bin/head ;} function rpmlogl () { /bin/rpm -q --changelog "$1" | /usr/bin/lv ;} function rpmlogl-p () { /bin/rpm -q --changelog -p "$1" | /usr/bin/lv ;} RPM - RPM Package Manager rpmパッケージのインストール (rpm -i) パッケージpackage-1-2vl3.i386.rpmをインストールするには、オプション(Install;インストール)を用います。 $ sudo rpm -ivh package-1-2vl3.i386.rpm オプション(verbose)と(hash)を用いるとインストール中にハッシュマーク(#)が出て、インストールの進む様子がわかります。 依存関係(dependency)の解決 パッケージをインストールしようとしたときに、 libdepend.so.1 is needed by package-1-2vl3 sometool is needed by package-1-2vl3 もしくは、 libdepend.so.1 が package-1-2vl3 に必要です sometool が package-1-2vl3 に必要です などというエラーが出ることがあります。 これは「パッケージ package-1-2vl3の中に、 libdepend.so.1というライブラリやsometoolというパッケージを必要とするファイルがあるにもかかわらず、 libdepend.so.1やsometoolがシステムにインストールされていない」ことによるエラーです。 このときには、 ライブラリlibdepend.so.1を含むパッケージや、パッケージsometoolを探してきてインストールして下さい。 を参照してください。 もし、このような依存性を無視してインストールしたいときには、オプション を用いてインストールします。 $ sudo rpm -i --nodeps package-1-2vl3.i386.rpm とします。ただし、この場合にはインストールしたパッケージが正常に動作しない可能性があります。 競合(conflict)の解決 package-1-2vl3.i386.rpmのインストール時に、 /usr/bin/cmd conflicts with file from another-3-4vl5 もしくは、 /usr/bin/cmd は another-3-4vl5 のファイルと競合します というエラーが出た場合には、package-1-2vl3のファイル/usr/bin/cmdが、 すでにインストール済みのパッケージ another-3-4vl5のファイル/usr/bin/cmdと競合するために、 インストールできないことを示します。 もし、無理矢理インストールしたいときには、オプションを用います。 $ sudo rpm -ivh --force package-1-2vl3.i386.rpm しかし、この場合には、元からあったanother-3-4vl5のファイル/usr/bin/cmdは、 package-1-2vl3によって上書きされてしまうので、取扱には注意が必要です。 rpmパッケージのアップグレード (rpm -F) すでに、package-1-1vl1.i386.rpmがインストールされていて、 新しいpackage-1-2vl3.i386.rpmにバージョンアップしたいときには、オプション (Freshen;新しいものに変える)を用います。 古いバージョンのパッケージがインストールされている場合にのみパッケージを更新します。 新しいバージョンのパッケージがインストールされ、古いバージョンのパッケージは削除されます。 $ sudo rpm -Fvh package-1-2vl3.i386.rpm ここで、オプションの役割はインストールの時と同じです。 rpmパッケージのインストールとアップグレード (rpm -U) インストール -i に アップグレード -F も追加したものです。 古いバージョンのパッケージが、インストールされていなければ -i としてインストールし、 インストールされていれば -F として更新します。 新しいバージョンのパッケージがインストールされ、古いバージョンのパッケージは削除されます。 (Update;更新)を用います。 $ sudo rpm -Uvh package-1-2vl3.i386.rpm オプションの役割はインストールの時と同じです。 また、古いバージョンpackage-1-1vl1.i386.rpmに戻したいときには、オプション を用います。 $ sudo rpm -Uvh --oldpackage package-1-1vl1.i386.rpm rpmパッケージの削除 (rpm -e) インストールしたパッケージを削除(アンインストール)したくなったら、オプション (erase;削除)を用います。 $ sudo rpm -e package ここで、バージョン番号やリリース番号は要りませんが、明示して $ sudo rpm -e package-1-2vl3 とすることもできます。ただし, パッケージpackageに含まれるファイル somefileが他のパッケージで利用されている場合には、 removing these packages would break dependencies: somefile is needed by another_pkg もしくは、 これらのパッケージを必要としているパッケージがあります: somefile が another_pkg に必要です などというエラーメッセージが出て削除できません。 無視して削除したいときには, オプションを用います。 $ sudo rpm -e --nodeps package しかし、この場合は パッケージanother_pkgが動かなくなる可能性がありますので注意が必要です。 rpmパッケージに関する情報を得る (rpm -q) インストールされているrpmパッケージの情報を得る パッケージをインストールしたけれでも、バージョンを忘れてしまったので知りたいと言うときには、 オプション(query)を用います。例えば、 パッケージ soxについて知りたい場合を示します。 $ rpm -q sox (soxのバージョンを知りたいとき) sox-12.18.1-0vl2 また、オプション (information;情報)を併用して、 $ rpm -qi sox Name : sox Relocations: (not relocatable) Version : 12.18.1 Vendor: (none) Release : 0vl2 Build Date: 2006年09月04日 14時02分44秒 Install Date: 2006年10月18日 00時56分44秒 Build Host: windy.local.dicey.org Group : Applications/Multimedia Source RPM: sox-12.18.1-0vl2.src.rpm Size : 675803 License: LGPL Signature : DSA/SHA1, 2006年09月04日 14時02分44秒, Key ID 90bf4c0974322cb0 Packager : Daisuke SUZUKI <daisuke@linux.or.jp> URL : http://sox.sourceforge.net/ Summary : 汎用サウンドファイル変換ツール Description : SoX (Sound eXchange) は Linux, UNIX, DOS PC 用サウンドファイルフォーマット 変換ツールです.SoX は「サウンドツール界のスイスアーミーナイフ」で, 様々なデジタルサウンドフォーマットを相互に変換したり, 簡単なサウンドエフェクト等の処理も行うことが出来ます. このように、パッケージに関するいろいろな情報を得ることができます。さらに オプション(list;一覧)を用いると、パッケージに含まれるファイル一覧が表示されます。 $ rpm -ql sox /usr/bin/libst-config /usr/bin/play /usr/bin/rec /usr/bin/sox /usr/bin/soxmix /usr/bin/soxplay /usr/share/doc/sox-12.18.1 /usr/share/doc/sox-12.18.1/Changelog /usr/share/doc/sox-12.18.1/INSTALL /usr/share/doc/sox-12.18.1/README /usr/share/doc/sox-12.18.1/TODO /usr/share/man/man1/rec.1.gz /usr/share/man/man1/sox.1.gz /usr/share/man/man1/soxexam.1.gz /usr/share/man/man1/soxmix.1.gz これらのオプションを全て付けることもできます。表示が多い場合はページャ lessを用いると便利です。(参考:) $ rpm -qil package | less また、grepコマンドを用いれば、探したいパターンpatternを検索することができます。 $ rpm -qil package | grep pattern 持ってきたrpmファイルに関する情報を得る インストールされているパッケージでなく、持ってきたパッケージ package-1.0-2vl3.i386.rpmの情報やファイル一覧を知りたいときには、オプション (package)を併用します。この場合は〜i386.rpmまでを含むファイル名全体を指定します。 $ rpm -qilp package-1.0-2vl3.i386.rpm さらにオプション(verbose)も使って $ rpm -qilvp package-1.0-2vl3.i386.rpm とすると、各ファイルの属性なども表示されます。 インストールされているファイルの属するパッケージ名を知る インストールされているファイル/usr/bin/playが、どのパッケージに含まれているものなのかを知りたいときには、 オプション(file;ファイル)を用いるとパッケージ名が表示されます。 $ rpm -qf /usr/bin/play sox-12.18.1-0vl2 ソースパッケージからバイナリパッケージを再構築(rebuild)する。 バイナリパッケージを apt-get や rpm -i や rpm -U でうまくインストールできない場合は、ソースパッケージ(src.rpm)からバイナリパッケージを作成する必要があります。 また、お使いのVine Linux用に用意されたパッケージ以外(Fedora 向けや Vine Linux の他のバージョン向けのパッケージなど)をインストールする場合は必ずソースパッケージから再構築して下さい。 root で作業する危険性 root ユーザーは全ての権限をもっています。 そのために、パッケージ再構築時の "操作ミス" や、"パッケージに含まれるミス" によって、 重要なファイルを書き換えたり削除して、システム全体に致命的なダメージを与えたり、 登録されているユーザーやグループを削除してしまったりすることがあるかもしれません。 また、パッケージに "悪意のあるコード" が含まれていれば、ネットワークを通じてユーザー情報を漏洩させたり、外部からあなたのPCを自由に操作できるようにしてしまうことがあるかもしれません。 これらの危険を避けるために、root 権限が必要となるインストール、アンインストール以外の作業は全て一般ユーザーで行って下さい。 Vine Linux で提供しているパッケージについては、再構築時に root 権限が必要となるものはないはずです。 また、Vine Linux 3.0 からは、パッケージングに関する指針に従って、パッケージに GnuPG による署名が施されるようになりました。 もし、Vine Linux で提供しているパッケージのミスなどが見つかった場合には、BTSメーリングリスト等を通じて報告して下さい。 ミスの発見の情報だけでも歓迎され、パッケージが改善されるでしょう。 環境設定 開発環境のインストール ソースパッケージを rebuild するためには、rpmbuild というコマンドが必要になります。rpm Version 4 で 再構築等にかかわる rpm -b や rpm --rebuild が rpm 本体のパッケージから分離され rpm-build のパッケージとなり、コマンドも rpmbuild -b , rpmbuild --rebuild となりました。過去との互換性のためにVine Linux では、rpm-build のパッケージがインストールされていれば、rpm -b や rpm --rebuild も使えますが、今後はrpmbuildを使う様にしてください。このコマンドは rpm-build というパッケージに含まれています。 また、圧縮されたファイルを展開するためのコマンドや、コンパイル作業に必要となるコマンドなどを含んださまざまなパッケージが必要となります。 Vine Linux では、これらのパッケージをまとめてインストールするために、build-essential というパッケージが用意されています。root ユーザーでインストールしてください。 $ sudo apt-get install build-essential rpm-build,gcc,gcc-c++,glibc-devel,libstdc++3-devel,make,gzip,bzip2,tar,patch,findutils,coreutils,file,libtool, automake,autoconf,gettext などがインストールされます。 最低限の開発環境はインストールされましたが、パッケージによってはその他にもライブラリ等のパッケージが必要になる場合があります。詳細は、で説明します。 必要なディレクトリやファイルの準備 一般ユーザーの権限で src.rpm を rebuild するために、パッケージを展開し、構築するための場所が用意されています。 このディレクトリは ~/rpm となっています。もし、ホームディレクトリ(~)にこのディレクトリがなければ以下のようにして作成してください。 $ cd $ mkrpmdir . mkrpmdir コマンドを実行すると、必要なディレクトリと 設定ファイル ~/.rpmmacros を作成してくれます。 手動でディレクトリを作成するには、以下のようにします。 $ mkdir -p ~/rpm/{BUILD,SOURCES,SPECS,SRPMS,RPMS/{i386,i586,i686,noarch}} また、~/.rpmmacros に設定を記述しておく必要があります。以下のようにしてください。 $ echo "%_topdir $HOME/rpm" > ~/.rpmmacros 再構築に必要なパッケージ インストール時に必要なパッケージ 再構築しようとしているパッケージが、再構築後のインストール時に他のパッケージを必要とする場合があります。 apt-get install に -s オプション(simulateのs)をつけて、インストールを試行すると確認できます。 他のパッケージの再構築も行うなら、確認しておきましょう。 root 権限で行ってください。 $ sudo apt-get -s install パッケージ名 xemacs の場合は次のようになります。 $ sudo apt-get -s install xemacs パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下の追加パッケージがインストールされます: xemacs-sumo 以下のパッケージが新たにインストールされます: xemacs xemacs-sumo アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 0 個 以下省略 xemacs をインストールするには、xemacs-sumo も必要なことがわかりました。 再構築に必要なライブラリ等のインストール ソースパッケージを再構築する場合には、開発用のパッケージを必要とするものがあります。 必要なコンパイラーやdevelパッケージは以下のようにするとインストールすることができます。 root で実行してください。 $ sudo apt-get build-dep パッケージ名 xemacs の場合は次のようになります。 $ sudo apt-get build-dep xemacs パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下のパッケージが新たにインストールされます: Canna-devel XOrg-devel autoconf213 faces-devel libdnd-devel libjpeg-devel libpng-devel libtiff-devel libwnn6-devel openMotif-devel xemacs-sumo 略 xemacs の再構築に、xemacs-sumo も必要なようです。xemacs-sumo は再構築せずにインストールしてしまうことにします。xemacs-sumo も再構築する場合は、xemacs より先に再構築して、インストールしてください。 ソースパッケージの入手方法 特定のコマンドのソースを読みたい場合など、どのパッケージに含まれているかを知りたい場合は、を参照してください。 apt-get コマンドによる src.rpm の入手 Vine Linux 向けに用意されているパッケージのソースパッケージは apt-get コマンドで簡単に入手できます。 $ apt-get source パッケージ名 コマンドを実行したディレクトリにソースパッケージがダウンロードされ、設定ファイル(~/.rpmmacros)で設定されているディレクトリ(~/rpm 以下)にソースパッケージがインストールされます。 といったオプションをつけるとソースパッケージのダウンロードのみで、インストールは行われません。 xemacs のソースパッケージを入手する $ apt-get source xemacs パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 9192kB のソースアーカイブを取得します。 取得:1 http://updates.vinelinux.org 4.1/i386/plus xemacs 21.4.19-0vl5 (srpm) [9192kB] 9192kB を 2s 秒で取得しました (3126kB/s) 1:xemacs ########################################### [100%] ftp サイトなどからの src.rpm の入手 Vine Linuxを配布しているftpサイトにアクセスすると Vine-バージョン/SRPMS/ というディレクトリがあり、そこにソースパッケージがあります。 また、Errata 等で更新されたパッケージについては、Vine-バージョン/updates/SRPMS/ にソースパッケージが置かれています。 VinePlus のパッケージは VinePlus/バージョン/ の中にあり、3.0からカテゴリによって、SRPMS.extras/、SRPMS.nonfree/、SRPMS.orphaned/、SRPMS.plus/、SRPMS.task/ のようにわけられています。 ftp サイトによって、多少ディレクトリの構成が異なるかもしれませんが、SRPMS というところを探していけば見付けることができます。 具体的なパッケージ名がわかっている場合には、apt-get コマンドを利用したほうが簡単に入手できます。 ソースパッケージの再構築 apt-get コマンドによる再構築 apt-getコマンドでソースパッケージを再構築するには、sourceコマンドにオプションを付加します。 $ apt-get -b source パッケージ名 カレントディレクトリにソースパッケージがあるかどうかチェックが行われ、無い場合はダウンロードされます。既にダウンロードしている場合は、パッケージ名の代わりにソースパッケージ名でも構いません。 再構築が完了すると 書き込み完了: ファイル名 と表示されるのでメッセージを頼りにできあがったバイナリRPMをインストールしてください。 xemacs の再構築 $ apt-get -b source xemacs パッケージリストを読みこんでいます... 依存情報ツリーを作成しています... 9192kB のソースアーカイブを取得します。 取得:1 http://updates.vinelinux.org 4.1/i386/plus xemacs 21.4.19-0vl5 (srpm) [8846kB] 1B を 0s 秒で取得しました (1B/s) xemacs-21.4.19-0vl5.src.rpm をインストール中 実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.66891   略 書き込み完了: /home/user/rpm/RPMS/i386/xemacs-21.4.19-0vl5.i386.rpm 書き込み完了: /home/user/rpm/RPMS/i386/xemacs-el-21.4.19-0vl5.i386.rpm   略 + umask 022 + rm -rf xemacs-21.4.19 + exit 0 rpmbuild コマンドによる再構築 FedoraやTurbo Linuxなど、他のディストリビューション向けに配布されているパッケージを利用する場合は、そのソースパッケージを取得して再構築する必要があります。 この場合、apt-getによる再構築はできませんのでrpmコマンドを使って再構築する必要があります。 $ rpmbuild --rebuild ソースパッケージ パッケージの再構築に関するQ&A 他のディストリビューションのソースパッケージはどこにありますか? できるだけ Vine Linux 向けに作成されたパッケージの使用をお薦めしますが、Vine Linux 向けのパッケージが用意されていない場合など他のディストリビューション向けのパッケージを探したい場合は、それぞれのディストリビューションの公式サイトやRpmfindなどを利用してください。また、目的のアプリケーションの公式サイトにソースパッケージ(*.src.rpm)が用意されている場合もあります。 ソースパッケージの再構築に失敗します。 いくつかの原因が考えられます。いずれの場合にしろ、RPMパッケージを作成するための知識が必要になりますのでRPMパッケージの作成を参照してください。 ビルドに必要なパッケージの名前が、使用中のVine Linuxのバージョンでは異なった名前になっている。 必要なパッケージを再構築するために必要なパッケージをインストールしようとしたが、見つからない場合、パッケージ名が異なっている場合があります。例えば、Vine Linux 2.6 では docbook-dtd41-sgml と呼ばれていたパッケージは、3.0以降 docbook-dtds に統合されています。この様な場合は、specファイルの修正が必須になります。当然、該当するパッケージもインストールしておく必要があります。 ビルドに必要なパッケージの情報が不足している。 パッケージを作成した環境にインストールされていたためにパッケージ開発者がspecファイルへの記述を忘れてしまったパッケージが存在する場合があります。パッケージの再構築に失敗する直前のエラーメッセージなどを参考に必要なパッケージをインストールし、できるだけspecファイルを修正してください。 ビルドに必要なパッケージのバージョンに問題がある。 過去のバージョンで依存パッケージに互換性のない仕様変更が行われており、specファイルでバージョンの制限に問題があるために再構築に失敗する場合が考えられます。この場合は、古いバージョンをインストールするためのパッケージがないか、逆に新しいバージョンに対応したソースRPMがないか探してください。例えば、PNGフォーマットを扱うためのライブラリであるlibpngには、libpng10という古いlibpngをインストールするためのパッケージが存在します。 *.tar.gzや*.tar.bz2という形式のソースアーカイブからRPMパッケージを作成したいのですが。 基本的には、RPMパッケージの作成を参照してください。 ただし、それらの圧縮ファイルにspecファイルが含まれているとrpmbuildコマンドのを利用して再構築できる場合があります。 $ rpmbuild -ta packagename-version.tar.gz この例の場合は、再構築が成功した場合、バイナリRPMとソースRPMの両方が作成されます。 『RPMパッケージの作成』を読みましたが、よく分かりません。個人的に使うアプリケーションを簡単にRPMパッケージにする方法はありませんか? 将来のメンテナンスを考えると個人的に使うアプリケーション等であってもRPMの管理下に置いた方が便利でしょう。 rpm で配布されていないもの、spec ファイルの無いもの でも、インストール用のシェルスクリプト や Makefile が用意されているものなら、CheckInstall を利用すると rpm としてインストールできます。ソースアーカイブにインストール用の Makefile や シェルスクリプト があっても、アンインストール用のものは用意されていないことも多いですが、CheckInstall を利用すると、アンインストールが簡単にできるようになります。 CheckInstallは、VinePlusに用意されていますのでroot権限で以下のコマンドを実行してください。 $ sudo apt-get install checkinstall 使い方は、$ sudo make installとする代わりに$ sudo checkinstallを実行する場合や$ sudo sh install.shの代わりに$ sudo checkinstall sh install.shを実行する場合などがあります。詳細については、CheckInstallに付属のドキュメントを参照してください。