2011-09-18 39 views
21

Tôi đang cố biên dịch gói deb cho máy chủ của mình. Khi tôi xây dựng, mọi thứ có vẻ tốt cho đến khi nó được chuyển đến dh_usrlocal Việc xây dựng dừng lại và trả về một lỗi. Vấn đề là tôi đang cố gắng này lần đầu tiên và tôi thực sự không biết nơi để tìm kiếm vấn đề.Tại sao dh_usrlocal ném lỗi xây dựng?

Đây là đầu ra từ đầu cuối của tôi, tôi cũng bao gồm lệnh tôi chạy ở cuối đầu ra.

make[2]: Leaving directory `/home/ian/Desktop/scst-2.1.0/src' 
make[1]: Leaving directory `/home/ian/Desktop/scst-2.1.0' 
    dh_install 
    dh_installdocs 
    dh_installchangelogs 
    dh_installexamples 
    dh_installman 
    dh_installcatalogs 
    dh_installcron 
    dh_installdebconf 
    dh_installemacsen 
    dh_installifupdown 
    dh_installinfo 
    dh_pysupport 
    dh_installinit 
    dh_installmenu 
    dh_installmime 
    dh_installmodules 
    dh_installlogcheck 
    dh_installlogrotate 
    dh_installpam 
    dh_installppp 
    dh_installudev 
    dh_installwm 
    dh_installxfonts 
    dh_bugfiles 
    dh_lintian 
    dh_gconf 
    dh_icons 
    dh_perl 
    dh_usrlocal 
dh_usrlocal: debian/scst/usr/local/include/scst/scst.h is not a directory 
dh_usrlocal: debian/scst/usr/local/include/scst/scst_user.h is not a directory 
dh_usrlocal: debian/scst/usr/local/include/scst/Module.symvers is not a directory 
dh_usrlocal: debian/scst/usr/local/include/scst/scst_debug.h is not a directory 
dh_usrlocal: debian/scst/usr/local/include/scst/scst_const.h is not a directory 
dh_usrlocal: debian/scst/usr/local/include/scst/scst_sgv.h is not a directory 
rmdir: failed to remove `debian/scst/usr/local/include/scst': Directory not empty 
dh_usrlocal: rmdir debian/scst/usr/local/include/scst returned exit code 1 
make: *** [binary] Error 1 
dpkg-buildpackage: error: debian/rules binary gave error exit status 2 
[email protected]:~/Desktop/scst-2.1.0$ sudo dpkg-buildpackage -rfakeroot 

Mọi trợ giúp sẽ được đánh giá cao.

+0

Tôi biết tại sao nhưng tôi không biết cách làm việc xung quanh nó. Theo Debbie tài liệu debs nên đặt các tập tin vào/bin hoặc/usr/bin và rằng nó không nên đặt một tập tin trong/usr/local/ –

+0

Tôi thực sự tìm thấy một cách để khắc phục vấn đề, tôi modifed kịch bản perl 'dh_usrlocal' vấn đề không xảy ra. Nhưng trong khi làm như vậy tôi không chắc chắn nếu xây dựng khác sẽ làm việc. – ianc1215

+6

Sửa đổi 'dh_usrlocal' là * hoàn toàn * không phải là giải pháp phù hợp với điều này, trong trường hợp bất kỳ ai khác xảy ra ở đây. Giải pháp thích hợp là cho gói của bạn không cài đặt các tệp trong '/ usr/local', vì khu vực đó được dành riêng cho quản trị viên cục bộ sử dụng. Nếu bạn nhấn mạnh vào việc sử dụng '/ usr/local', thì đừng gọi' dh_usrlocal' trong 'debian/rules'. –

Trả lời

25

bạn nên bỏ qua chạy dh_usrlocal. để làm điều đó bạn chỉ cần thêm video này vào debian/rules: override_dh_usrlocal:

Theo cách nói chung nếu bạn gặp rắc rối với một mục tiêu cụ thể, bạn chỉ cần ghi đè lên nó bằng cách thêm override_ {target} trong debian của bạn/quy tắc.
ví dụ, bạn gặp sự cố với dh_icons. bạn chỉ cần thêm này trong debian của bạn/cai

override_dh_icons: 
    {insert your processing commands or do nothing to skip it when building package} 
+1

dh_usrlocal thực hiện một số fudging với tất cả các đường dẫn có liên quan đến/usr/local. Xem tại đây: http://man.he.net/man1/dh_usrlocal. Câu trả lời của tôi chỉ hoạt động khi tôi có cả thư mục/thư mục được chỉ định trong tệp '.install', nhưng điều đó có nghĩa là gói của tôi đã được cài đặt vào'/usr/usr/local/... 'và không thành công. – NuclearPeon

3

QUAN TRỌNG: Lỗi này chỉ xảy ra khi bạn cố gắng để cài đặt vào /usr/local/

tôi chuyển gói của tôi để cài đặt /usr/local/lib/python3/dist-packages/-/usr/lib/python3/dist-packages và lỗi biến mất. dh_usrlocal dường như bị hỏng hoặc gói của tôi không tuân theo các quy tắc mà nó mong đợi.


Tôi bắt đầu gặp lỗi sau khi thêm tệp package.install vào gói debian của mình để nó sao chép nội dung gói vào hệ thống tệp. (Tôi đã cài đặt để /usr/local/ vào thời điểm đó)

Nội dung cài đặt tập tin của tôi khi nó thất bại:

usr/* usr/ 

Nội dung khi nó hoạt động một cách chính xác: Cơ cấu

usr/ usr/ 

file của gói debian:

packagename-0.1/ 
    debian/ 
    usr/ 
    local/ 
     lib/ 
     python3/ 
      packagename/ 

Chỉnh sửa: Điều này dường như chỉ hoạt động khi sao chép thư mục gốc. Khi tôi cố gắng chỉ định sao chép quá khứ usr /, nó phá vỡ với cùng một lỗi. Xem phần đầu của câu trả lời để tìm giải pháp của tôi.

+1

bạn không nên làm điều đó vì gói của bạn không phải là một gói tiêu chuẩn. phần mềm của người dùng nên đi vào/usr/local/.... –

+1

Tôi hoàn toàn đồng ý với bạn. Tuy nhiên, việc xây dựng phá vỡ bất cứ khi nào tôi chỉ định đường dẫn đó. Tôi không chắc chắn về những gì cần thiết để thực hiện/usr/local/work và tôi chỉ nêu rõ những gì không có lỗi và giải quyết được vấn đề của tôi. Thật tốt khi bạn chỉ ra điều này, nhưng tôi đã dành hàng giờ chỉ để đến thời điểm này. Tôi có thể gửi một lỗi với Debian hoặc sift thông qua diễn đàn/danh sách gửi thư của họ sau này. – NuclearPeon

2

Gói Debian thích hợp không được phép tạo nội dung ở đó nhưng có thư mục trống. Đó là lý do tại sao nó phàn nàn rằng nó không thể xóa thư mục. Nó không mong đợi các tập tin được ở đó. Điều duy nhất bạn có thể có là một thư mục trong/usr/local và đó là những gì dh_usrlocal cố gắng xử lý nhưng bạn không cần phải có các tệp

Người dùng chỉ đặt tệp trong/usr/local /.

Ngoài ra tôi nghĩ rằng nếu bạn có tên usr/local trong đường dẫn thư mục của bạn, nó sẽ gây ra lỗi cũng giống như mặc dù nó không phải là usr/local chính xác. Một ví dụ về những gì có thể gây ra vấn đề. Tôi nghĩ rằng regex trong phần mềm xây dựng tìm kiếm usr/local.

/var/tmp/usr/local/ 

Tôi biết đây là một bài đăng cũ nhưng được xếp hạng # 1 trên google vì vậy cần câu trả lời tốt để mọi người giải quyết vấn đề này một cách nhanh chóng.

+0

Hầu hết phần mềm của bên thứ ba tự cài đặt trong thư mục/usr/local. Trong Debian, nó được dành riêng cho quản trị viên hệ thống sử dụng, vì vậy các gói không nên sử dụng các thư mục như/usr/local/bin, mà nên sử dụng các thư mục hệ thống như/usr/bin theo tiêu chuẩn phân cấp tệp (FHS). –

Các vấn đề liên quan