aptitude
имеет свою собственную базу данных состояний пакета /var/lib/aptitude/pkgstates
, который, к сожалению, кажется, довольно не документирован. Это хранит блок как это для каждого пакета:
Package: bash
Architecture: amd64
Unseen: no
State: 1
Dselect-State: 1
Remove-Reason: 0
Я верю состоянию 1 средство installed
, белое состояние 3 средства not installed
. У меня также есть несколько пакетов с состоянием 4 в моей системе, но я не могу выяснить то, что это означает.
Я полагаю, что Вашей проблемой является результат на несоответствии между dpkg
база данных /var/lib/dpkg/status
и aptitude
база данных /var/lib/aptitude/pkgstates
. Согласно этому сообщению pkgstates
как предполагается, отражает "'намеченное' состояние пользователя для пакета [s]", таким образом, способность, вероятно, полагает, что пользователь хочет, чтобы эти пакеты были установлены даже при том, что склонный - добираются, только что удалил их.
Кажется, что лучшее решение для Вашей проблемы состоит в том, чтобы сделать то, что предлагает tripleee: использовать aptitude
если это установлено, и в противном случае отступите к apt-get
.
В некоторых специфических ситуациях имеет смысл сказать операционной системе, чтобы она ввела жесткие ограничения:
Не позволяйте этой программе использовать более 60% памяти.
Не позволяйте пользователям из этой группы использовать более 2 ядер.
Это обеспечивает реальную [118043]гибкость[118044]: ресурсы делятся между пользователями в соответствии с желаниями администратора и операционной системы.
net use S: \\SHIRE\Baggins <password> /USER:<domain>\<user> /SAVECRED /PERSISTENT:YES
Почему ручное размещение программы для подкачки не является хорошей идеей?
Вы в основном предполагаете, что вы лучше эвристики в ядре. Ядро уже само обрабатывает пространство подкачки. Если демон не был активирован долгое время и в операционной системе не хватает оперативной памяти, то в конце концов он будет помещен в swap.
AFAIK, swap не является исполняемым: перед исполнением содержимое swap должно быть извлечено в оперативную память. Так что если вы думаете о программах первого класса, выполняющихся из оперативной памяти, и программ второго класса, выполняющихся из swap: остановитесь сейчас, это не сработает.
"Да, но этот конкретный демон вызывается дважды в месяц. Мне он не нужен в оперативной памяти". Если это правда, то кернел вставит swap, если не хватает оперативной памяти.
Теперь, почему пользователь не может использовать волшебную командную строку, чтобы поместить программу в своп?
Непонятно, что нужно поместить в своп с точки зрения пользовательского пространства (неядерного). Ваша программа компонована с [118452]libmylib.so[118453], должна ли она также поместить это в обмен? А как насчет [118454]libc.so[118455]?
Как вы узнаете, что демон больше не используется и может быть снова безопасно помещен в обмен?
Одним словом, вам нужно ядро, чтобы обрабатывать его, и это именно то, что он делает. Для большинства нужд, подстройка подмены более чем достаточна для получения отзывчивой системы.
compiz-manager
Теперь, если вы действительно хотите.
(источник: [118457] freakoutnation.com[118458])[118067] , ядро предлагает эту "гибкость", используя [118068]cgroups[118069]. Вы можете получить то, что считаете нужным, установив max mem и max mem+swap для вашего демона в [118070]cgroups[118071]. Вы можете получить более резонансный результат, установив подкачки для каждой программы. Но в любом случае, это плохая идея и я не буду идти дальше [118072]this[118073] в качестве объяснения.[117616].