トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

debian

Linuxディストリビューションのひとつ。
どちらかというと新しい技術にすぐ飛びつかず、数多くのハードに対応する。

debian fam
http://debian.fam.cx/index.php?TopPage

2000年頃のハードにインストールして使うならdebianがオヌヌメ。

インストール

ネットインストール用のCDから、なるべく最小の状態でdebianをインストールし、足らない物を後から追加していくことにするので、ここではnetinst.isoを取得してCDに焼く。

Debian を入手するには
http://www.debian.org/distrib/

下記の情報はdebian-7.1で確認したものなので、参考にする場合は注意のこと。

まずここで使うのは2000年頃のパソコンで、Pentium3の550MHz、512MBのメモリ、40GBのハードディスクという構成。

USBのキーボードを繋いでCDブートしたら、netinstだとデバイスすら組み込んでくれないようで最初っから操作不能(汗)。
ps/2の変換プラグが見つからないので泣く泣く古いキーボードを引っ張り出していざトライ。

まず起動画面から

Install

で進めて「日本語」を3〜4つ連続で選ぶと追加コンポーネントのインストールが始まり、このコンポーネントでUSBが認識するので、その後はUSBキーボードも使えるようになる。

以降、ホスト名、ドメイン名、ネットワーク設定、ルートパスワード、ユーザー設定は割愛。
パーテーションも推奨のままでインストールを進める。

パーテーション設定後はベースシステムのインストールが開始され、タイムゾーン、リポジトリの選択〜(略で大まかなソフトウェアの選択へ。

  • SSHサーバ
  • 標準システムユーティリティ

だけを選んでインストールを進める。

コンソールで文字化け

インストール時に日本語を選んで進めると、コンソールでログインしたときに文字化けする。
調べたところによると、デスクトップ環境をインストールしてれば日本語表示に必要なパッケージがインストールされるらしい。

現在の状態は

# echo $LANG
ja_JP.UTF-8

以前はja_JP.EUC-JPがデフォルトだった気がするが、debian-7.1ではja_JP.UTF-8となった模様。

それはさておき、どうしてもコンソールで日本語表示したければ

コンソールで日本語の表示をするには
http://debian.fam.cx/index.php?Japanese#x1589390

必要無ければ英語で再設定する。

# LANG=C
# dpkg-reconfigure locales

でen_US.UTF-8を選択、ja_JP.UTF-8を解除。次の画面でen_US.UTF-8を選択する。

一旦exitしてログインし直し

# echo $LANG
en_US.UTF-8

になれば英語切替完了。

dpkg-reconfigureを使わずに手動設定するなら

Locales in Debian
http://people.debian.org/~schultmc/locales.html

IPの設定

インストール時はとりあえずDHCPで進めたので、固定IPを割り振る。

現在の状態は

# ifconfig

設定を変更するには

# vi /etc/network/interfaces

で対象のethを編集する。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.0.xx
netmask 255.255.255.0
gateway 192.168.0.1

終わったら再起動。

# /etc/init.d/networking restart

以降はLAN経由でSSHクライアント(puttyjp)から操作する。

IPv6の無効化

sysctlに設定を追記。

# vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1

設定をリロード。

# sysctl -p

リロードは良いがリブートでダメな場合。
raspbian(wheezy)で再起動時にsysctl.confが効かない(sysctlの設定が無視される)症状に出くわした。

After reboot debian box ignore sysctl.conf values
http://serverfault.com/questions/355520/after-reboot-debian-box-ignore-sysctl-conf-values

とりあえず例にならって

# /etc/rc.local
/etc/init.d/procps restart

exit 0

とすることで再設定。

SSHクライアントから接続

debianは初期設定でファイアーウォール(iptables)が無いので、puttyjp等のSSHクライアントより、先に設定したIPアドレスに接続できるはず(多分)。

userの追加と削除

# adduser username
または
# useradd -m username

# deluser --remove-home username

.bashrcが読み込まれない

作ったユーザーで.bashrcが読み込まれないのでおかしいなぁと思ったら

$ echo $SHELL
/bin/sh

shだったでござる(汗)。

$ chsh
Password:
Changing the login shell for ryusendo
Enter the new value, or press ENTER for the default
        Login Shell [/bin/sh]: /bin/bash
$ exit

でログインし直せば読まれるはず。

SSHの設定

rootのログインを禁止し、ログイン可能なユーザーを限定(例ではhogehogeのみ)にする。

# vim /etc/ssh/sshd_config

PermitRootLogin no
AllowUsers hogehoge

hogehogeでログインしてからsuかsudoでrootの作業を行うことになる。

sudoの設定

sudoがインストールされていない場合。

# apt-get install sudo

設定にはvisudoコマンドを使用する。

# visudo

Defaults        rootpw
hogehoge        ALL=(ALL:ALL) ALL

上記はhogehogeユーザーがsudoでroot権限を持ち、パスワードはrootのものを要求する。

ユーザー        ホスト=(権限) コマンド
user            host=(user:group) command  
%group...

みたいな感じ。

dpkgとapt-getとaptitude

最小構成の状態で

# free -m
             total       used       free
Mem:           502         46        456
# df -h
Filesystem   Size  Used Avail Use%
rootfs        36G  791M   34G   3%

みたいな状態。

ここに使いたいパッケージを随時インストールしていくのだが、インストールコマンドは以下の3つ。

  • dpkg…パッケージ管理(依存関係はチェックしない)
  • apt-get…dpkgを操作(依存関係をチェックする)
  • aptitude…apt-getを操作(依存関係をチェックする)
第2章 Debian パッケージ管理
http://www.debian.org/doc/manuals/debian-reference/ch02.ja.html
# aptitude

とすると管理画面みたいなのが出てきて、キーボードでパッケージを選択して操作できるが、コマンドラインのapt-getとaptitudeとは別のパッケージ管理(ログ?)を持っている模様。
これは使わない方が無難。

コマンドラインで

# apt-get install <package>
# aptitude remove <package>
# aptitude install <package>
# apt-get autoremove <package>

という感じに使っている分には大丈夫そう。

今後はコマンドラインから

# aptitude install <package>

でインストールを進める。

とりあえずapt-getとaptitudeでupdateしておく。

# apt-get update
# aptitude update

下記はapt-getで玄人っぽく操作する場合のコマンドを少々(※debian-7.1)。

パッケージ一覧を更新する。

# apt-get update

更新されたパッケージ一覧から<package>を検索。

# apt-cache search <package>

<package>をインストール。

# apt-get install <package>

インストールしたパッケージの更新。

# apt-get upgrade

<package>のみをアンインストール。

# apt-get remove <package>

<package>の依存関係をチェックしてアンインストール。<package>を指定しなかった場合は、どこからも参照されなくなったパッケージをすべて削除。

# apt-get autoremove <package>
# aptitude remove <package> ←同等

<package>のアンインストール時に設定ファイルも削除。

# apt-get purge <package>

ファイル一覧をカラーで表示させる

lsコマンドを使用した時、Fedoraとかではディレクトリとファイルがカラーで区別されて見やすいが、debianは色が付かない。

ホームディレクトリの.bashrcにコマンドがあるのでコメントアウトする。

# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'

vimで色が付かない

debianの最小構成でもviが入っているが、色が付かないと見づらいのでvimを入れた。

# aptitude install vim

インストールされたパッケージは下記のとおり。

  • vim
  • vim-runtime{a}

それでも色が付かなかったので調べたら、デフォルトでは色が付かない設定らしい(汗)。

/etc/vim/vimrcのsyntax行のコメントアウトを外す

syntax on

もしくはユーザー単位で設定したいなら

# cp /etc/vim/vimrc /home/user/.vimrc

のようにコピーしておいてsyntaxを有効にする。

iptablesの設定

初期状態でiptablesの設定が無い模様(iptables自体はインストールされている)。

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

とりあえず必要なパッケージをインストール。

# aptitude install iptables-persistent

インストールされたパッケージは下記のとおり。

  • iptables-persistent

/etc/iptablesに設定ファイルができるのでip4用のrules.v4を編集。

内容は

iptables - Debian Wiki
https://wiki.debian.org/iptables

をパクる。
一時ファイルrulesを作成。

# cd /etc/iptables
# vim rules

内容は下記のとおり。

*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 8080 -j ACCEPT

# Allows SSH connections 
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT

# Now you should read up on iptables rules and consider whether ssh access 
# for everyone is really desired. Most likely you will only allow access from certain IPs.

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

保存したらiptablesに読み込ませる。

# iptables-restore < rules

読み込んだ状態を確認。

# iptables -L

iptables-persistentで読み込まれるrules.v4に設定を書き戻す。

# iptables-save > rules.v4

再起動。

# /etc/init.d/iptables-persistent restart

ちなみにiptables-persistentっていうのは、/etc/iptables/rules.v4とrules.v6を読み込む起動スクリプト。

あとは自分の環境に合わせて設定を行う。
debian8では起動スクリプトがnetfilter-persistentになった模様。

# /etc/init.d/netfilter-persistent restart

cronとddns設定

VALUE DOMAINのDDNS自鯖のIPアドレスを更新するコマンド。

$ wget http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=[domain]&p=[password]&h=*

h=*の部分はvalue domain側の設定と合わせること。

cronの設定は

# vim /etc/crontab
*/15 * * * * wget -O - 'http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=sample.com&p=password&h=*' > /dev/null 2>&1

初期状態でcronログが無効になっているのでコメントアウトを外す。

# vim /etc/rsyslog.conf
cron.*     /var/log/cron.log
# /etc/init.d/rsyslog restart

apacheのインストール

# aptitude install apache2

とやるとapache2-mpm-workerをインストールしようとするので

# aptitude install apache2-mpm-prefork

と明示的に指示する必要がある(PHP5/libapache2-mod-php5がpreforkに依存しているため)。
インストールされたパッケージは下記のとおり。

  • apache2-mpm-prefork
  • apache2-utils{a}
  • apache2.2-bin{a}
  • apache2.2-common{a}
  • libapr1{a} libaprutil1{a}
  • libaprutil1-dbd-sqlite3{a}
  • libaprutil1-ldap{a}
  • ssl-cert{a}

debianのapache2にssl接続できない

こんなエラーで接続不能(汗)。

SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)

ネット検索すると「VirtualHostにきちんとポート設定していないからだ」みたいな解説が多いが、debian-7.1のデフォルトだと/etc/apache2/ports.confに

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

/etc/sites-available/defaultとdefault-sslに

<VirtualHost *:80>
        ServerAdmin ...
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
        ServerAdmin ...

となっている。
で、いろいろ調べたらdefault-sslが有効になっていなかった(汗)。
/etc/apache2/sites-enabledにdefaultに対するシンボリックリンクがあり、これで初めて有効になる模様。デフォルトではdefault-sslのシンボリックリンクが無かった。

# a2ensite
Your choices are: default default-ssl
Which site(s) do you want to enable (wildcards ok)?
default default-ssl
Site default already enabled
Site default-ssl already enabled

同様にmods-availableからsslを有効にするには

# a2enmod ssl

とすると、mods-availableのssl.confとssl.loadに対するシンボリックリンクがmods-enabledに作成される。

要するにdebianのapacheでは

*a2enmod、a2dismod
*a2ensite、a2dissite

で設定するらしい。

設定後に再起動を忘れずに。

# /etc/init.d/apache2 restart

それにしてもdebianのapacheは設定ファイルが変?に分割されててわかりづらい(汗)。

PHPのインストール

とりあえず最小構成でインストールしておく。

# aptitude install php5

インストールされたパッケージは下記のとおり。

  • libapache2-mod-php5{a}
  • libonig2{a}
  • libqdbm14{a}
  • php5
  • php5-cli{a}
  • php5-common{a}

勝手にリロードしてくれるので、/var/www/phpinfo.phpを作成し、動作を確認する。

# vim /var/www/phpinfo.php
<?php
phpinfo();

LAN上のクライアント(ブラウザ)から

http://192.168.0.xx/phpinfo.php

にアクセスしてphpinfoが表示されればOK。
ちなみにdebian-7.1のPHP

# php -v
PHP 5.4.4-14+deb7u4 (cli) (built: Aug 26 2013 07:40:51)

mysqlのインストール

# aptitude install mysql-server-5.5
  • libaio1{a}
  • libdbd-mysql-perl{a}
  • libdbi-perl{a}
  • libhtml-template-perl{a}
  • libmysqlclient18{a}
  • libnet-daemon-perl{a}
  • libplrpc-perl{a}
  • mysql-client-5.5{a}
  • mysql-common{a}
  • mysql-server-5.5
  • mysql-server-core-5.5{a}

これだけだとPHPMySQLが利用できないので

# aptitude install php5-mysql

とすると、php-mysql、php-mysqli、php-pdo_mysqlが利用できるようになる。

  • php5-mysql

ちなみにdebian-7.1のMySQL5は

mysql > status
Server version:         5.5.31-0+wheezy1 (Debian)

my.cnfは

/etc/mysql/my.cnf

my.cnfのサンプルは

/usr/share/doc/mysql-server-5.5/examples

あたりにインストールされる。small以外はgz圧縮されているので解凍のこと。

# gzip -d my-medium.cnf.gz

tomcatのインストール

# aptitude install tomcat7
  • authbind{a}
  • ca-certificates-java{a}
  • dbus{a}
  • default-jre-headless{a}
  • icedtea-6-jre-cacao{a}
  • icedtea-6-jre-jamvm{a}
  • java-common{a}
  • libavahi-client3{a}
  • libavahi-common-data{a}
  • libavahi-common3{a}
  • libcommons-dbcp-java{a}
  • libcommons-pool-java{a}
  • libcups2{a}
  • libdbus-1-3{a}
  • libecj-java{a}
  • libgeronimo-jta-1.1-spec-java{a}
  • libjpeg8{a}
  • libnspr4{a}
  • libnss3{a}
  • libnss3-1d{a}
  • libpcsclite1{a}
  • libservlet3.0-java{a}
  • libsystemd-login0{a}
  • libtomcat7-java{a}
  • openjdk-6-jre-headless{a}
  • openjdk-6-jre-lib{a}
  • tomcat7
  • tomcat7-common{a}
  • tzdata-java{a}
http://192.168.0.xx:8080/

にアクセスして It Works! の画面が表示されればOK。

solrのインストール

検索エンジンのsolrをインストール。

# aptitude install solr-tomcat
  • curl{a}
  • fontconfig{a}
  • hicolor-icon-theme{a}
  • icedtea-netx{a}
  • icedtea-netx-common{a}
  • javascript-common{a}
  • libapache-mime4j-java{a}
  • libapache-pom-java{a}
  • libasound2{a}
  • libasyncns0{a}
  • libatk-wrapper-java{a}
  • libatk-wrapper-java-jni{a}
  • libatk1.0-0{a}
  • libatk1.0-data{a}
  • libavalon-framework-java{a}
  • libcairo2{a}
  • libcommons-beanutils-java{a}
  • libcommons-codec-java{a}
  • libcommons-collections3-java{a}
  • libcommons-compress-java{a}
  • libcommons-digester-java{a}
  • libcommons-fileupload-java{a}
  • libcommons-httpclient-java{a}
  • libcommons-io-java{a}
  • libcommons-lang-java{a}
  • libcommons-logging-java{a}
  • libcommons-parent-java{a}
  • libcurl3{a}
  • libdatrie1{a}
  • libexcalibur-logkit-java{a}
  • libffi5{a}
  • libflac8{a}
  • libgdk-pixbuf2.0-0{a}
  • libgdk-pixbuf2.0-common{a}
  • libgeronimo-stax-1.2-spec-java{a}
  • libgif4{a}
  • libglib2.0-0{a}
  • libglib2.0-data{a}
  • libgtk2.0-0{a}
  • libgtk2.0-bin{a}
  • libgtk2.0-common{a}
  • libguava-java{a}
  • libhttpclient-java{a}
  • libhttpcore-java{a}
  • libhttpmime-java{a}
  • libice6{a}
  • libicu4j-4.4-java{a}
  • libjasper1{a}
  • libjaxp1.3-java{a}
  • libjbig0
  • libjs-jquery{a}
  • libjson0{a}
  • libjsr305-java{a}
  • libknopflerfish-osgi-framework-java{a}
  • liblog4j1.2-java{a}
  • liblucene3-contrib-java{a}
  • liblucene3-java{a}
  • libmsv-java{a}
  • libogg0{a}
  • libpango1.0-0{a}
  • libpixman-1-0{a}
  • libpng12-0{a}
  • libportlet-api-2.0-spec-java{a}
  • libpulse0{a}
  • libregexp-java{a}
  • librelaxng-datatype-java{a}
  • librtmp0{a}
  • libservlet2.5-java{a}
  • libslf4j-java{a}
  • libsm6{a}
  • libsndfile1{a}
  • libsolr-java{a}
  • libssh2-1{a}
  • libstax-java{a}
  • libstax2-api-java{a}
  • libthai-data{a}
  • libthai0{a}
  • libtiff4{a}
  • libtomcat6-java{a}
  • libvorbis0a{a}
  • libvorbisenc2{a}
  • libwoodstox-java{a}
  • libx11-xcb1{a}
  • libxcb-render0{a}
  • libxcb-shm0{a}
  • libxcomposite1{a}
  • libxcursor1{a}
  • libxdamage1{a}
  • libxerces2-java{a}
  • libxfixes3{a}
  • libxft2{a}
  • libxi6{a}
  • libxinerama1{a}
  • libxml-commons-external-java{a}
  • libxml-commons-resolver1.1-java{a}
  • libxrandr2{a}
  • libxrender1{a}
  • libxtst6{a}
  • libxz-java{a}
  • openjdk-6-jre{a}
  • shared-mime-info{a}
  • solr-common{a}
  • solr-tomcat
  • tomcat6{a}
  • tomcat6-common{a}
  • ttf-dejavu-extra{a}
  • wwwconfig-common{a}

どうやらtomcat6のsolrだったようで、以下は

     Remove the following packages:
1)     libtomcat7-java
2)     tomcat7
3)     tomcat7-common

Accept this solution? [Y/n/q/?] q

だそうな(汗)。
でも処理を進めたら4つ消えたけど良いの?

  • libservlet3.0-java{u}
  • libtomcat7-java{a}
  • tomcat7{a}
  • tomcat7-common{a}

動作確認は

http://192.168.0.xx:8080/solr/

Welcome to Solr! 画面が表示されればOK。
Solr AdminからInfoで確認すると

Solr Specification Version: 3.6.0.2012.06.21.14.28.59

solr4が使いたい場合は自分で入れるしかなさそうです(汗)。
ちなみにダウングレードされたtomcatのバージョンは

cd /usr/share/tomcat6/bin
./version.sh

Server version: Apache Tomcat/6.0.35

でした。
ついでにtomcatの動作確認もかねてjspを作成。

# cd /var/lib/tomcat6/webapps/ROOT
vim version.jsp

プログラムは下な感じ。

<%
out.println(application.getServerInfo());
%>

ブラウザからアクセスして表示されてばOK。

http://192.168.0.xx:8080/version.jsp

Apache Tomcat/6.0.35

postfixのインストール

debianでは既にexim4というsmtpサーバーが入っている模様。
設定とかわからないので、慣れたpostfixに変更する。

# aptitude install postfix

競合するということで、下記が削除される。

  • exim4
  • exim4-base
  • exim4-config
  • exim4-daemon-light

で、設定ファイルとかも削除されたのか疑問だったので

# aptitude purge exim4

を実行。その後findで確認してみたら

# find / -name "exim*"
/var/lib/dpkg/info/exim4-config.postrm
/var/lib/dpkg/info/exim4-config.list
/var/lib/dpkg/info/exim4-daemon-light.postrm
/var/lib/dpkg/info/exim4-base.postrm
/var/lib/dpkg/info/exim4-base.list
/var/lib/dpkg/info/exim4-daemon-light.list
/var/lib/exim4
/var/spool/exim4
/var/log/exim4
/usr/share/wwwconfig-common/exim-trust.sh
/usr/share/vim/vim73/syntax/exim.vim
/etc/default/exim4
/etc/logrotate.d/exim4-paniclog
/etc/logrotate.d/exim4-base
/etc/ppp/ip-up.d/exim4
/etc/init.d/exim4
/etc/exim4
/etc/exim4/exim4.conf.template
/etc/cron.daily/exim4-base
/run/exim4
/run/exim4/exim.pid

残骸がいっぱい残ってるみたい(汗)。
横着せずに全てpurgeしてみる。

# aptitude purge exim4 exim4-base exim4-config exim4-daemon-light

# find / -name "exim*"
/usr/share/wwwconfig-common/exim-trust.sh
/usr/share/vim/vim73/syntax/exim.vim

とりあえずほぼ消えたっぽいのでOKとする。

パッケージ管理

aptでダウンロードされたパッケージの保存先。

/var/cache/apt/archives

任意のパッケージがインストール済みかどうか調べる。

$ dpkg -l | grep mysql-common
ii  mysql-common                  5.5.44-0+deb8u1            all          MySQL database common files, e.g. /etc/mysql/my.cnf

パッケージのインストール先を調べる。

$ dpkg -L libshout3-dev

パッケージの情報を表示。

$ dpkg -s libshout3-dev

apt-cache

solrというワードが含まれたパッケージを検索する。

$ apt-cache search solr
chef-solr - manager for search indexes of Chef node attributes using Solr
dovecot-solr - Solr full text search support for Dovecot
libsolr-java - Enterprise search server based on Lucene - Java libraries
libwebservice-solr-perl - Perl interface for the Solr (Lucene) web service
python-pysolr - lightweight Python wrapper for quering Apache Solr
solr-common - Enterprise search server based on Lucene3 - common files
solr-jetty - Enterprise search server based on Lucene3 - Jetty integration
solr-tomcat - Enterprise search server based on Lucene3 - Tomcat integration

パッケージのバージョンを調べる。

$ apt-cache policy solr-tomcat
solr-tomcat:
  Installed: (none)
  Candidate: 3.6.0+dfsg-1+deb7u1
  Version table:
     3.6.0+dfsg-1+deb7u1 0
        500 http://ftp.jaist.ac.jp/raspbian/ wheezy/main armhf Packages
        500 http://mirrordirector.raspbian.org/raspbian/ wheezy/main armhf Packages

パッケージの詳細を調べる。

$ apt-cache show solr-tomcat
Package: solr-tomcat
Source: lucene-solr
Version: 3.6.0+dfsg-1+deb7u1
Installed-Size: 63
Maintainer: Debian Java Maintainers <pkg-java-maintainers@lists.alioth.debian.org>
Architecture: all
Depends: solr-common (= 3.6.0+dfsg-1+deb7u1), tomcat6
Conflicts: solr-jetty, solr-tomcat6
:

ライブラリの中の関数一覧を確認する

$ nm libhoge.so

目的の関数名でフィルタ

$ nm libhoge.so | grep some_function_name

任意のディレクトリの使用容量を調べる

$ du -m /path/to

オプションmでMB。

ポートスキャン

対象ホスト(またはIP)のポート(例では10-100)をスキャンする。

# netcat -z -v my.domain.jp 10-100
my.domain.jp [xxx.xxx.xxx.xxx] 80 (http) open
my.domain.jp [xxx.xxx.xxx.xxx] 53 (domain) open
my.domain.jp [xxx.xxx.xxx.xxx] 22 (ssh) open
my.domain.jp [xxx.xxx.xxx.xxx] 21 (ftp) open

netcatコマンドはnc(短縮)も可。
インストールされていないようなら

# apt-get install netcat

通常版?のtraditionalがインストールされる。
高機能版?のbsd版もある模様。

netcatで簡易クライアント

# echo -e "GET /path/to/file.php HTTP/1.0\r\n" | nc my.domain.jp 80

とかすればレスポンスが返ってくる。

USBメモリを使う

USBポートにUSBメモリを差し込んだらfdiskで確認。

$ fdisk -l

   :
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          47      507391      253672+   6  FAT16

/dev/sda1として認識したようなので/mntにマウント。マウント先のディレクトリを作成しておく。

# mkdir /mnt/usbmem
# mount -t vfat /dev/sda1 /mnt/usbmem

あとは/mnt/usbmemに対してcpしたりmvしたりrmしたり... みたいな。

NTFSでフォーマットされている場合は

# mount -t ntfs /dev/sda1 /media/usbmem

しかし権限(パーミッション)の設定が生きてるようで、書き込みできなかった(汗)。

外すときは

# umount /mnt/usbmem

Windowsで入力したmp3のタグをUTF-8に変換する

Windowsでタグを入力すると文字コードがsjisになるため、Linuxでは文字化けする。
Linux側で一括変換するのにmid3iconvを使うには、python-mutagenをインストール。

$ sudo apt-get install python-mutagen

その後、mp3を置いているディレクトリで

$ mid3iconv -e SHIFT_JIS -d *.mp3

変換結果が-dオプションにより画面上に出力されるため、問題なく表示されればOK。

Youtubeやニコニコ動画をダウンロードする

youtube-dlってのを使うとコマンドラインでダウンロードできる。

# apt-get install youtube-dl

オプションとか詳細は--helpで確認のこと。

Youtube動画から音楽だけ抽出してmp3で保存するには

$ youtube-dl -A -x --audio-format mp3 https://www.youtube.com/watch?v=nr688jE72mA

ニコ動からの場合は-uでメールアドレス、-pでパスワードを設定。

$ youtube-dl -u mail -p password -A -x --audio-format mp3 http://www.nicovideo.jp/watch/sm23144598

mp3に変換するのに結構時間がかかる。