bashスクリプトでapt-getが失敗するのですか?

bashスクリプトでapt-getが失敗するのですか?

同じ方法で構成する必要がある複数のシステム(Ubuntu LTS 12.4 64ビット実行)があるため、システムが最初に起動したときに自動的に実行されるシェルスクリプトを作成しました。ほとんどの場合はうまくいきますが、apt-get呼び出しは失敗します。たとえば、実行したい2つのコマンドがあります。

debconf-set-selections ./files/ldap.preseed
apt-get -y install ldap-auth-client

この行を直接入力すると、結果は次のようになります。

root@spare:/tmp/scripts# debconf-set-selections ./files/ldap.preseed
root@spare:/tmp/scripts# apt-get -y install ldap-auth-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be installed:
  ldap-auth-config libnss-ldap libpam-ldap
The following NEW packages will be installed:
  ldap-auth-client ldap-auth-config libnss-ldap libpam-ldap
0 upgraded, 4 newly installed, 0 to remove and 67 not upgraded.
Need to get 0 B/200 kB of archives.
After this operation, 877 kB of additional disk space will be used.
Preconfiguring packages...
[and so on...]

ただし、次の行のみを含むシェルスクリプトを実行すると、次のことが発生します。

root@spare:/tmp/scripts# ./ldap.cr
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ldap-auth-client

sudoを使用してスクリプトを実行したとき、または最初にrootとしてchownしたときにも同じことが起こります。プログラムを直接呼び出すか、シェルスクリプトを介して呼び出す場合の違いは何ですか?別の方法で説得することは可能ですか?

編集:追加情報:

root@spare:/tmp/scripts# apt-cache policy ldap-auth-client
ldap-auth-client:
  Installed: (none)
  Candidate: 0.5.3
  Version table:
    0.5.3.0
       500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

ベストアンサー1

実行する前にdos2unixを介してスクリプトを実行すると、機能します。私はapt-getがパッケージ名の一部として行末の追加\ rを読み込んでいるので、ldap-auth-clientの代わりにldap-auth-client \ r(存在しない)を探しているようです。 (はい)

おすすめ記事