Чим install -c відрізняється від cp


20

Яка різниця між install -c та cp? Більшість установок, як правило, використовують install -c, але зі сторінки man це не здається, що це робить щось інше, ніж cp (за винятком, можливо, встановлення дозволів). Коли я повинен використовувати install -c і коли cp?

Відповіді:


18

Важливою відмінністю є те, що cp скорочує цільовий файл і починає копіювати дані з джерела у файл призначення.

інсталяція, з іншого боку, спочатку видаляє цільовий файл.

Це важливо, тому що якщо файл призначення вже використовується, погані речі можуть трапитися, коли хто використовує цей файл у випадку, якщо над ним cpз'явиться новий файл. наприклад, перезапис виконуваного виконуваного файлу може не вдатися. Обрізання файлу даних, до якого існуючий процес зайнятий читанням / записом, може спричинити досить дивну поведінку. Якщо ви просто вилучіть цільовий файл спочатку, як це робиться при встановленні, все продовжується як звичайно - видалений файл фактично не видаляється, поки всі процеси не закриють цей файл.


3
Гарна відповідь. Але дивіться також cp --remove-destinationосновні елементи GNU.
Пітер Ейзентрав

7

Технічно різниця між install -cі cpполягає в тому, що installвстановлює дозволи на цільовий файл rwxr-xr-x. cpзберігає дозволи вихідного файлу за вирахуванням umask. Ці поведінки за замовчуванням корисні в різних ситуаціях. Очевидно, що з усіма варіантами, які cpі installпропонують сьогодні, функціонали зблизилися.

У наш час installзазвичай використовується в makefiles, і cpскрізь. Ця відмінність іноді корисна, оскільки деякі операційні системи або інсталяційні системи дозволяють підключитись до installпрограми для реєстрації встановлених пакетів. Сучасні системи управління пакетами роблять цей вид застарілим, але деякі люди все ще використовують його. Також дуже зручною є можливість встановлення дозволів на цільові файли в одному русі.


4

installУтиліта, на її основі, є фантазією cp. Але оскільки інструмент спеціально встановлюється, він містить кілька функцій, яких cpнемає. Мій /usr/bin/installвід GNU Coreutils не тільки копія, але і може змінити завивки / власність як ARG прапори (економія chgrp, chown, chmodзаклинання) варіант для смуги налагоджувальної інформації (зберігаючи stripвиклик) , а також деякі харизми для SELinux контексту.

Він просто забезпечує зручні дії, корисні для встановлення програмного забезпечення. Жоден не змінюється життя, всі корисні та роблять ваші сценарії більш чистими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.