LinuxでCUPSプリンタを簡単に共有する方法は?

LinuxでCUPSプリンタを簡単に共有する方法は?

私は2台のコンピュータでArch Linuxを実行しています。クライアントコンピュータがサーバーに印刷できるように、サーバーに接続されているUSBプリンタを共有しようとしました。

ここで見つけた指示に従ってください。https://www.cups.org/doc/sharing.html、プリンタを共有するには、サーバーで次のコマンドを実行します。

cupsctl --share-printers
lpadmin -p printer -o printer-is-shared=true

これにより、CUPS Webインターフェイスの「利用可能なプリンタのリスト」を介してクライアントコンピュータでプリンタを表示できます。ただし、プリンタを追加してPPDを選択してテストページを印刷しようとすると、エラーが発生します。

"Unable to locate printer "server_name.local"."

~によるとこの投稿mDNSが言及されていますが、私が無効になっている可能性があると思いましたsystemd-resolvedNSCDの中断そして私に別の問題を引き起こしました。ただし、クライアントとサーバーの両方で起動すると、同じエラーが発生します。

/etc/cups/printers.confプリンタの「DeviceURI」を変更するために編集するとき

dnssd://name%20of%20local%20printer._ipp._tcp.local/cups?uuid=f7c17874-8003-30ee-40b0-7f21f5f107c3

到着

lpd://server_name/name_of_printer_queue

テストページを印刷しようとすると接続が確立されましたが、最終的に「プリンタが使用中です」というエラーメッセージが表示されます。

「プリンタの追加> LPD / LPRホストまたはプリンタ」を介して新しいプリンタを作成し、「はい」の下のURIに従って、次のようなさまざまなデバイスURIを試しました。

ipp://server_name:631/ipp/name_of_printer_queue

これにより、「プリンタが正しく設定されていないか、プリンタが存在しなくなりました」などのエラーが発生します。または「フィルタの失敗」。

私の考えでは、この技術は過去のある時点で効果があったようです。 Linuxから他のCUPSサーバーに確実に印刷する方法は?

答え1

先ほど説明した内容を試した後、URLの一番下にあることがわかりました。https://www.cups.org/doc/sharing.html説明する:

クライアントコンピュータを設定する最も面倒な方法は、lpadmin(8)コマンドを使用して各リモートキューを手動で設定することです。lpadmin -p printer -E -v ipp://server/printers/printer -m everywhere

以前に「新しいプリンタを検索」ボタンで作成したプリンタを変更するために、このコマンドを実行しました。まったく退屈ではありません。プリンタからテストページを印刷すると、すぐに印刷されます。

答え2

問題は、CUPSが.local名を解決できないが、それを使用してプリンタを見つけることができる理由です。

CUPSはavahi / snmpの助けを借りてローカルネットワークプリンタを見つけます。プリンタのURLのみを提供します。

ただし、CUPSはホスト名自体を解決しません。内部的には glibc(?) を使ってホストのソケットを開くようです。

その後、URL を DNS に送信します。しかし、DNSは「.local」について知りません。彼は、この特別な「.local」ドメインについて知らないか、または知るように構成されていません。したがって、お客様の場合はDNSを確認することはできず、エラーを返し、中止されます。

gnuネームサービススイッチ(nss)を使用すると、nss-mdns(すべての「.local」用)やlibnss-winbind(「hostname」専用の拡張用)などの拡張機能を提供できます。

nss-mdnsパッケージ+スイッチエントリをインストールした後、カップの問題と.local名前解決の問題が消えました。

関連情報