SambaとCUPSと各種プリンター（CUPS・プリンタ編）

# 目標
1. プリンタはCUPSで管理する。
1. Samba経由でプリンタを共有する。
1. LAN内で使用するため、セキュリティはそれほど気にしない。

# 環境
## CentOS 7.2
言わずともしれたOS。minimumインストール。

- CentOS Linux release 7.2.1511 (Core)
- Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

## Samba
LinuxとWindowsの橋渡しをしてくれる。

- 4.2.3-11

## CUPS
Common Unix Printing System. Linuxでプリンタを使えるようにしてくれる。

- 1.6.3-22

# 前準備
1. `yum update`
 初期インストールされている各種パッケージのアップデート。

2. `yum install epel-release`
3. `yum install wget`
4. `ip addr show` IPアドレスを確認 

# インストール＆設定 (CUPS編)
## CUPSのインストール＆設定 Part.1 (CUI)
- `yum install cups cups-devel`
- 印刷関連のパッケージをインストール。
- 外部から接続できるように`/etc/cups/cupsd.conf`を書き換える。

```/etc/cups/cupsd.conf
# Only listen for connections from the local machine.
# Listen localhost:631    # ←コメントアウト
Listen 631                # ←追加
Listen /var/run/cups/cups.sock

～～～～ 中略 ～～～～

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow From All          # ←追加
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow From All          # ←追加
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow From All          # ←追加
</Location>

～～～～ 後略 ～～～～
```
- `systemctl start cups` CUPSを起動

## Firewalld (Part.1)
- ファイヤーウォールに`IPP(Port:631)`の穴を開ける。
- Firewalldで定義されているサービスを確認。

```
# firewall-cmd --get-services
 RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps
 freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap
 ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s 
 postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client
 transmission-client vdsm vnc-server wbem-https
```

- IPPの定義はされているので、コマンドを叩いてサービスを追加   

```
# firewall-cmd --add-service=ipp --permanent
# firewall-cmd --reload
```

## CUPSのインストール＆設定 Part.2 (GUI)

1. ブラウザを開いて `http://サーバアドレス:631`にアクセス。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/cb1dd537-f719-b359-c06e-3ccc41253767.png)
1. 管理者向けの「プリンターとクラスの追加」を選択。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/80207b72-b43e-bd9e-993a-be360113b970.png)
3. 「プリンターの追加」を選択。
4. そのままアクセスすると怒られます。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/4e94f922-d7a3-067c-5468-30606e0cfeb5.png)
1. 改めて、表示されているアドレスを選択。
2. 改めて、「プリンターの追加」を選択。
3. rootアカウント情報が必要になるので入力。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/452960d8-4526-3f69-16b5-a91343cb23fb.png)
1. プリンターの追加。プリンタに接続しているポートを選択。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/30f3c924-dbb9-8b55-9e1a-959f4b429c0a.png)
1. 大抵の場合、USB接続されたプリンタかネットワーク経由でつなげるプリンタのどちらかになると思います。とりあえず、「インターネット印刷プロトコル (ipp) 」を選択。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/7c0446a0-7a5d-417f-5c41-9a7db5913f54.png)
1. プリンタの接続方法を記述します。   
 ここが鬼門。どの方法でつなげるか悩むことになります。Windowsから使えるプリンタの場合だと、`socket://プリンタのアドレス:9100`のパターンで、うまくいくことが多かったです。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/d67c7981-e58e-4d7b-68a2-84b6c112bc7c.png)
1. 新しいプリンターの追加をします。
<dl>
  <dt>名前</dt>
  <dd>プリンタ名。共有時、この名前が使われます。</dd>
  <dt>説明</dt>
  <dd>プリンタの説明。</dd>
  <dt>場所</dt>
  <dd>プリンタの場所。</dd>
  <dt>接続</dt>
  <dd>前のページで設定した接続方式</dd>
  <dt>共有</dt>
  <dd>このプリンターを共有する。共有したいのでチェックをON</dd>
</dl>
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/81bf970e-75c8-4462-6f91-ba558948292e.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/e6910246-05fd-6b8c-805d-f0655c5f9bf3.png)
1. プリンタのドライバを選択していきます。
2. メーカー・モデルを選択していきます。リストの中にプリンタが掲載されていればラッキー。掲載されていない場合は、一工夫 必要です。
3. プリンタのメーカー・モデルを選択が終わったら、「プリンターの追加」を選択
4. この後、プリンタの初期設定値を入力して行く画面になっていきます。
5. おおまかに言ってしまうと、この状態でプリンタの共有はできています。プリンタをWindowsから共有するとき、`https://サーバアドレス:631/printers/プリンタ名`を指定すれば繋がります。

## CUPSへプリンタドライバ(Linux用)を追加する

各種プリンタードライバをインストールしていきます。手元にあるプリンタを片っ端から接続してみました。

### hp
1. [HP Linux Imaging and Printing](http://hplipopensource.com/hplip-web/index.html)にアクセス。
2. 「Download HPLIP」を選択
<dl>
  <dt>Step 1: Select Distribution</dt>
  <dd>Linuxのディストリビューションを選択。今回は`Red Hat Enterprise Linux`。</dd>
  <dt>Step 2: Select Version</dt>
  <dd>バージョン系統を選択。`7.0`。</dd>
  <dt>Step 3: Select Printer Type</dt>
  <dd>プリンタのシリーズを選択。`Officejet/Officejet Pro`。</dd>
  <dt>Step 4: Select Printer Model</dt>
  <dd>プリンタの機種を選択。`HP Officejet 7000 Wide Format Printer -- e809a`。</dd>
  <dt>Step 5: Click Next</dt>
  <dd>次へ</dd>
</dl>

3. HPLIP3のダウンロード。「包括ドライバーパックのようなものがあるので、そちらを使ってね」とのこと。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/0c097dd0-3d6d-3b57-73a1-32fb8652a73c.png)
4. 「NEXT >>」を選択
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/6a322497-2c27-2ee6-a998-f809b79f7ecd.png)
<dl>
  <dt>Step 6: Select Processor</dt>
  <dd>アーキテクチャーを選択</dd>
  <dt>Step 7: License Agreement</dt>
  <dd>ライセンスに同意しますか？</dd>
</dl>
5. 同意してダウンロード。
6. ダウンロードしたパッケージをインストールする。
7. 
```
# rpm -Uvh hplip-3.16.2_rhel-7.0.x86_64.rpm
エラー: 依存性の欠如:
        libnetsnmp.so.31()(64bit) は hplipfull-3.16.2-0.x86_64 に必要とされています
        libsane.so.1()(64bit) は hplipfull-3.16.2-0.x86_64 に必要とされています
```

7. パッケージが足りてないのでインストール。 
8. 
```
# yum install libsane-hpaio net-snmp-libs
# rpm -Uvh hplip-3.16.2_rhel-7.0.x86_64.rpm
準備しています...              ################################# [100%]
        ファイル /etc/hp/hplip.conf (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-common-3.13.7-6.el7.x86_64 からのファイルと競合しています。
        ファイル /usr/share/hplip/data (パッケージ hplipfull-3.16.2-0.x86_64 か ら) は、パッケージ hplip-common-3.13.7-6.el7.x86_64 からのファイルと競合しています。
        ファイル /usr/share/hplip/data/models (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-common-3.13.7-6.el7.x86_64 からのファイルと競合しています。
        ファイル /usr/share/hplip/data/models/models.dat (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-common-3.13.7-6.el7.x86_64 からのファ イルと競合しています。
        ファイル /usr/lib64/libhpip.so.0.0.1 (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-libs-3.13.7-6.el7.x86_64 からのファイルと競合して います。
        ファイル /usr/lib64/libhpmud.so.0.0.6 (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-libs-3.13.7-6.el7.x86_64 からのファイルと競合しています。
        ファイル /usr/lib64/python2.7/site-packages/cupsext.so (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-libs-3.13.7-6.el7.x86_64 からの ファイルと競合しています。
        ファイル /usr/lib64/python2.7/site-packages/hpmudext.so (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-libs-3.13.7-6.el7.x86_64 からのファイルと競合しています。
        ファイル /usr/lib64/python2.7/site-packages/pcardext.so (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-libs-3.13.7-6.el7.x86_64 からのファイルと競合しています。
        ファイル /usr/lib64/python2.7/site-packages/scanext.so (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ hplip-libs-3.13.7-6.el7.x86_64 からの ファイルと競合しています。
        ファイル /usr/lib64/sane/libsane-hpaio.so.1.0.0 (パッケージ hplipfull-3.16.2-0.x86_64 から) は、パッケージ libsane-hpaio-3.13.7-6.el7.x86_64 からのファ イルと競合しています。
```
1. 競合しまくり。パッケージを削除していく。
2. 
```
# yum remove libsane-hpaio
# yum remove hplip-libs
# yum remove hplip-common
```
1. 再度、パッケージをインストール。
2. 
```
# rpm -Uvh hplip-3.16.2_rhel-7.0.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:hplipfull-3.16.2-0               ################################# [100%]
```
1. 以上。


### Epson
1. [ドライバーダウンロード](http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX)にアクセス。
2. 型番を入れて、OSを選択、検索。
3. 検索結果が出てくるので「ダウンロード」を選択。
4. 「エプソンのソフトウエア使用許諾契約」に同意しましょう。
5. アーキテクチャーにあったドライバーをダウンロード。CentOSのx86_64で使用するため、`epson-px-h7000-h9000-series-1.1.0-1lsb3.2.x86_64.rpm`を選択。
6. ダウンロードしたパッケージをインストールする。
7. 
```
# rpm -Uvh epson-px-h7000-h9000-series-1.1.0-1lsb3.2.x86_64.rpm
警告: epson-px-h7000-h9000-series-1.1.0-1lsb3.2.x86_64.rpm: ヘッダー V3 DSA/SHA1 Signature、鍵 ID 8aa65d56: NOKEY
エラー: 依存性の欠如:
        lsb >= 3.2 は epson-px-h7000-h9000-series-1.1.0-1lsb3.2.x86_64 に必要と されています
```

1. パッケージが足りてないのでインストール。
2. 
````
# yum install lsb
````

1. 再度、パッケージをインストール。
2. 
```
# rpm -Uvh epson-px-h7000-h9000-series-1.1.0-1lsb3.2.x86_64.rpm
警告: epson-px-h7000-h9000-series-1.1.0-1lsb3.2.x86_64.rpm: ヘッダー V3 DSA/SHA1 Signature、鍵 ID 8aa65d56: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:epson-px-h7000-h9000-series-1.1.0################################# [100%]
```
1. 以上。


### スター精密

1. [スター製品　サポートデータベース](http://sp-support.star-m.jp/Default.aspx)にアクセス。
2. 製品カテゴリ, シリーズ名, 機種名, インターフェース, OSを選択
3. 推奨ドライバーが表示されるので、ダウンロード。
6. ダウンロードしたパッケージをインストールする。

```
# rpm -Uvh starcupsdrv-3.5.0-1.i386.rpm
エラー: 依存性の欠如:
        libc.so.6 は starcupsdrv-3.5.0-1.i386 に必要とされています
        libc.so.6(GLIBC_2.0) は starcupsdrv-3.5.0-1.i386 に必要とされています
        libdl.so.2 は starcupsdrv-3.5.0-1.i386 に必要とされています
        libdl.so.2(GLIBC_2.0) は starcupsdrv-3.5.0-1.i386 に必要とされています
        libdl.so.2(GLIBC_2.1) は starcupsdrv-3.5.0-1.i386 に必要とされています
```
1. パッケージ足りないパターン。追加していく。

```
# yum install glibc-2.17-106.el7_2.4.i686
```

1. 追加後、足りないものがまだある。

```
# rpm -Uvh starcupsdrv-3.5.0-1.i386.rpm
準備しています...              ################################# [100%]
ls: /usr/lib/libcups.so* にアクセスできません: そのようなファイルやディレクトリ はありません
required library libcups.so not available
エラー: %pre(starcupsdrv-3.5.0-1.i386) スクリプトの実行に失敗しました。終了ステ ータス 1
エラー: starcupsdrv-3.5.0-1.i386: インストール 失敗
```

1. 更に追加

```
# yum install cups-devel
# rpm -Uvh starcupsdrv-3.5.0-1.i386.rpm
準備しています...              ################################# [100%]
ls: /usr/lib/libcups.so* にアクセスできません: そのようなファイルやディレクトリ はありません
required library libcups.so not available
エラー: %pre(starcupsdrv-3.5.0-1.i386) スクリプトの実行に失敗しました。終了ステ ータス 1
エラー: starcupsdrv-3.5.0-1.i386: インストール 失敗
```
1. アーキテクチャーの違いで、`cups-devel.i686`が必要らしい。
 
```
# yum install cups-devel.i686
# rpm -Uvh starcupsdrv-3.5.0-1.i386.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:starcupsdrv-3.5.0-1              ################################# [100%]
```
1. 以上。

## 現状
### hpの大量のプリンタドライバが選べるようになりました。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/0916cb91-6568-d6b0-81e8-68bbc2c8a947.png)

### Epsonのプリンタドライバが選べるようになりました。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/425c884b-e9ae-3312-f937-35dcf2c21b75.png)

### スター精密のプリンタドライバが選べるようになりました。
![image](https://qiita-image-store.s3.amazonaws.com/0/38845/20fa6f92-599c-33d2-4f45-04e8e600c668.png)

# Samba編に続く。
- [SambaとCUPSと各種プリンター（Samba編）](http://qiita.com/yyano/items/8cfc4a1d05f367d6e2de)


# 参考
- [CentOS7のfirewalldをまじめに使うはじめの一歩（systemdも少し）](http://qiita.com/shrkw/items/8410e9cb65eb789a40e1)