Linux Basics Chapter2 ソフトウェア管理 - careerbeat/dit-ehime GitHub Wiki

  • キーワード
  • コマンドとかコードではない
  • けど、覚えないといけない単語

メモ

・キーワードではないけど

・覚えておいたほうが良い

コマンド・ソース
ターミナルで使うコマンドやキーワード

ソフトウェア管理

パッケージとは

  • パッケージ
  • ファイルデータベース
  • ディペンデンシー(依存関係)
  • チェックサム
  • アップグレード・アンインストール
  • バイナリーパッケージ

RPM

RPMのディストリビューションとコンベンション

  • GPL
  • Mandriva, Yellow Dog (Red Hat)
  • SUSE
  • RPMパッケージのネーミングコンベンション
packagename-a.b.c-x.arch.rpm

・ディストリビューション次第でRPMが使えない場合がある

TODO残りの説明をここに

rpm コマンドセット

rpm [オペレーション][オプション] [パッケージファイル|パッケージ名]

オプション(一部紹介)

-i
-U
-F か --freshen
 -q 
-V か --verify
-e
-b
--rebuild
--rebuilddbs
--root dir
--force
-h か --hash
-v
--nodeps
--test
--prefix パス
-a か --all
-f ファイル か --file ファイル
-p パッケージファイル
-i
-R か --requires
-l か --list

パッケージ名例

samba-3.6.5-86.fc17.1.x86_64.rpm

インストール例

# rpm -Uvh samba-3.6.5-86.fc17.1.x86_64.rpm

インストールの確認

rpm -qi

$ rpm -qi samba

RPMからデータ抽出

cpio
rpm2cpio

オプション

-i
--make-directories

$ rpm2cpio samba-3.6.5-86.fc17.1.src.rpm > samba-3.6.5-86.fc17.1.src.cpio
$ cpio -i --make-directories < samba-3.6.5-86.fc17.1.src.cpio

または、

$ rpm2cpio samba-3.6.5-86.fc17.1.src.rpm | cpio -i --make-directories

YUM

http://yum.baseurl.org

  • APT
yum [オプション] [コマンド] [パッケージ...]

コマンド

install
update
check-updte
upgrade
remove か erase
list
provides か whatprovides
search
info
clean
shell
resolvedep
localinstall
localupdate
deplist

その他便利機能

yumdownloader
yum install kyum

TOOD EXerciseをここに記載

RPMとYUMの設定

・RPMもYumも通常は設定不要

・最適化したい時は良い

・通常とは違うソフト用のYumレポジトリーの時など

RPM

設定ファイル箇所

/usr/lib/rpm/rpmrc

※CPU最適化 ※ソースパッケージのコンパイル用

編集したい場合は

/etc/rpmrc

※グローバル

~/.rpmrc

※ユーザー毎

ソースをCPUに最適化する場合、optflagsを使用

optflags

optflags: athlon -O2 -g -march=i686
YUM

YUMの設定ファイル箇所

/etc/yum.conf
/etc/yum.repos.d/

※前者は触らないほうが良い

  • Liva
  • KDE Red Hat
  • Fresh RPMs

RPMと他のパッケージ比較

・柔軟性が高い

Debianと比較

・Debianのパッケージマネージャーに似てる

・Debianに比べ、一番の違いは遍在性

・RPMをベースとしたパッケージは多いため、コンフリクトする場合が多い→面倒

tarballsと比較

・tarballsよりも機能豊富

・RPMはlinuxによく使われる、tarballsはunix

・他のプラットフォームのためのプログラムの場合はパッケージマネージャーも要検討

Debianパッケージ

dpkg
dselect
apt-get

Debianの配信とネーミングルール

・DebianのパッケージはDebianOSの配信がもと

・その後、Ubuntu, Linux, Mint, Xandrosでも使用

・そのため、DebianのためのパッケージはDebianベースのシステも使用可能

・GUIが多いので、初心者向け

・バグフリーを目指しているため、GUIへは力を入れてない

・オープンソース

・ネーミングはRPMに似ている

dpkgコマンドセット

dpkg [オプション][アクション] [パッケージファイル|パッケージ名]

主なアクション

-i か --install
--configure
-r か --remove
-P か --purge
--get-selections
-p か --print-avail
-I か --info
-l パターン か --list パターン
-L か --listfiles
-S パターン か --search パターン
-C か --audit

オプション

--root=ディレクトリーパス
-B か --auto-deconfigure
--force-things
--ignore-depends=パッケージ
--no-act
--recursive
-G
-E か --skip-same-version

# dpkg -i samba_2:3.6.3-2ubuntu2.3_amd64.deb
# dpkg -r samba
$ dpkg -p samba

apt-cache

apt-cache

パッケージ情報

showpkg

apt-cache showpkg samba

パッケージ詳細

apt-cache stats

ディペンデンシー齟齬

apt-cache unmet

ディペンデンシー表示

depends

apt-cache depends samba

全パッケージ

pkgnames

apt-cache pkgnames sa

apt-get

apt-get [オプション][コマンド] [パッケージ名]

パッケージの取得元

/etc/apt/sources.list

/etc/apt/sources.list からの情報をもとにウップグレードとインストールを行う

最近のパッケージをダウンロード

# apt-get update
# apt-get dist-upgrade

コマンド

update
upgrade
dselect-upgrade
dist-upgrade
install
remove
source
check clean
autoclean

オプション

-d か --download- only
-f か --fix-broken
-m か --ignore-missing か --fix-missing
-q か --quiet
-s か --simulate か --just-print か --dry-run か --recon か --no-act
-y か --yes か --assume-yes
-b か --compile か --build
--no-upgrade

dselect, aptitude, Synaptic△

パッケージ管理ツール(パッケージマネージャ)

dselect

/etc/apt/sources.listを参照し

・インストールするパッケージの選択

・インストール済みのパッケージ参照

・パッケージのアンインストール

・パッケージのアップグレード

dselect
aptitude

パッケージリストのアップデート

aptitude update

ソフトウェアのインストール

install

aptitude install zsh

アンインストール

aptitude install zsh-
または
aptitude remove zsh

アップグレード

full-upgrade
safe-upgrade

検索

search

ダウンロード済みだが未配信を消去

autoclean

全てを削除

clean

ヘルプ

aptitude help
Synaptic

dselect と aptitude に似たGUI X-ベースのプログラム

パッケージの初期化△

dpkg-reconfigure

# dpkg-reconfigure samba

Debianと他のパッケージを比較

Debianは複数ファイルがグループされたもの

・ソースtarballs

・パッチファイル

・.dscファイル

これを全部含んだものがDebianのバイナリーパッケージ

Debianは1パッチファイル

RPMは複数のパッチファイル

DebianのほうがRPMより探しづらい(プログラムによっては)

・Debianはこちらで管理http://www.debian.org/ distrib/packages

Debianパッケージツールの設定△

設定ファイル

/etc/dpkg/dpkg.cfg
もしくは
 /.dpkg.cfg
no-act

パッケージ変換△

パッケージファイルが望んでいるものと違っていた場合

Debian配信のものに対してtarballかRPMファイルのパッケージしかない対処 ・該当するフォーマットをひたすら探す ・フォーマット違いに対応するツールをインストール ・RPMかDebianからtarballをもとにパッケージを自作 ・alienを使ってパッケージフォーマットの変換

alien [オプション] ファイル[...]

apt-get install alien

オプション

--to-deb
--to-rpm
--to-slp
--to-tgz

※Debian, RPM, Stampede と tarball への変換

# alien --to-rpm someprogram-1.2.3-4_i386.deb
# alien --install binary-tarball.tar.gz

パッケージディペンデンシー(依存関係)コンフリクト(競合)

ディペンデンシーの原因

・ライブラリーやサポートプログラムがない

・ライブラリーやサポートプログラムが対応されていない

・ファイルと機能が重複している

・ネーミングが競合している

ディペンデンシーの解決案

強制的にインストール

--nodeps

# rpm -i apackage.rpm --nodeps
# rpm -i apackage.rpm --force

dpkgの場合

--ignore-depends=package
-force-depends
--force-conflicts

アップグレートか置き換え

上部に記載されているコマンドで実行

パッケージのリビルド

rpmbuild

# rpmbuild --rebuild packagename-version.src.rpm

別バージョンを探す

シェアドライブラリー管理

ライブラリーの原則

ライブラリーとは頻繁に使われるプログラムを分部分で統合したもの

cの場合

libc

widget sets

GTK+
Qt

問題点

・プログラムファイルの膨張

・RAMの圧迫

・コンパイルが何回も必要となる

ライブラリーファイルの箇所

システム全体にパス設定
/etc/ld.so.conf

ファイルに含む

include /etc/ld.so.conf.d/*.conf

*はワイルド、全ファイルという意味

/etc/env.d
env-update
パスを一時的に変更
LD_LIBRARY_PATH

$ export LD_LIBRARY_PATH=/usr/local/testlib:/opt/newlib
問題訂正
$ gimp

ライブラリの管理コマンド

シェアドライブラリ依存関係の表示

$ ldd /bin/ls
ライブラリキャッシュ

ライブラリーのロード管理設定箇所

/etc/ld.so.cache

ツール

ldconfig

オプション

ldconfig
-N
-n
-X
-f ファイル
-C ファイル
-r ディレクトリー
-p

プロセス管理

カーネル

uname

オプション

-n か --nodename
-s か --kernel-name
-v か --kernel-version
-r か --kernel-release
-m か --machine
-p か --processor
-i か --hardware-platform
-o か --operating-system
-a か --all

プロセスのリスト

psオプション
ps [オプション]

オプションのタイプ Unix98 Options: - BSD Options: GNU Long Options--

オプションをグループ

ps -a -f
↓
ps -af

環境変数

PS_PERSONALITY

設定値

posix
old
linux
bsd
sun
digital

その他

--help
-A
-e
x
-u ユーザー か U ユーザー か --User ユーザー
-f, -l, j, l, u, と v
-H, -f, と --forest
-w と w
ps出力の例
$ ps -u ユーザー名 --forest
ps u U ユーザー名

PS出力カラム名

  • USER
  • PID
  • %CPU
  • %MEM
  • VSZ
  • RSS
  • TTY
  • STAT
  • START
  • TIME
  • COMMAND
top:psの代理
top

オプション

-d 遅延秒数
-p プロセスID
-n 表示数
-b
h か ?
k
q
r
s
P
M
jobs:セッションに関連しているプロセス
jobs

フォアグラウンド・プロセスとバックグラウンド・プロセス

  • フォアグラウンド・プロセス
  • バックグラウンド・プロセス
Ctrl+Z
Ctrl+Z ls
fg
fg 2
bg
nedit

プロセスの優先順を管理

nice [引数] [コマンド [コマンド-引数]]

$ nice -12 number-crunch data.txt
$ nice -n 12 number-crunch data.txt
$ nice --adjustment=12 number-crunch data.txt
renice 優先順 [[-p] プロセスID] [[-g] グループID] [[-u] ユーザー]

プロセスの終了

kill -s シグナル プロセスID

終了可能のプロセスリスト

kill -l

全てに実行

killall [オプション] [--] プロセス名 [...]

$ killall -i vi